PartDesign: Fix use of App::Planes to create sketches (#20453)

This commit is contained in:
PaddleStroke
2025-04-07 17:34:13 +02:00
committed by GitHub
parent 35a9673a75
commit 5639728e8a
9 changed files with 190 additions and 62 deletions

View File

@@ -39,7 +39,7 @@ PROPERTY_SOURCE(App::DatumElement, App::GeoFeature)
PROPERTY_SOURCE(App::Plane, App::DatumElement)
PROPERTY_SOURCE(App::Line, App::DatumElement)
PROPERTY_SOURCE(App::Point, App::DatumElement)
PROPERTY_SOURCE(App::LocalCoordinateSystem, App::GeoFeature)
PROPERTY_SOURCE_WITH_EXTENSIONS(App::LocalCoordinateSystem, App::GeoFeature)
DatumElement::DatumElement(bool hideRole)
: baseDir{0.0, 0.0, 1.0}
@@ -125,7 +125,6 @@ Point::Point()
// ----------------------------------------------------------------------------
LocalCoordinateSystem::LocalCoordinateSystem()
: extension(this)
{
ADD_PROPERTY_TYPE(OriginFeatures,
(nullptr),
@@ -133,8 +132,11 @@ LocalCoordinateSystem::LocalCoordinateSystem()
App::Prop_Hidden,
"Axis and baseplanes controlled by the LCS");
Group.setStatus(Property::Transient, true);
setStatus(App::NoAutoExpand, true);
extension.initExtension(this);
GroupExtension::initExtension(this);
}
@@ -201,12 +203,6 @@ App::Point* LocalCoordinateSystem::getPoint(const char* role) const
throw Base::RuntimeError(err.str().c_str());
}
bool LocalCoordinateSystem::hasObject(const DocumentObject* obj) const
{
const auto& features = OriginFeatures.getValues();
return std::ranges::find(features, obj) != features.end();
}
short LocalCoordinateSystem::mustExecute() const
{
if (OriginFeatures.isTouched()) {
@@ -340,18 +336,7 @@ void LocalCoordinateSystem::migrateOriginPoint()
// ----------------------------------------------------------------------------
LocalCoordinateSystem::LCSExtension::LCSExtension(LocalCoordinateSystem* obj)
: obj(obj)
{
Group.setStatus(Property::Transient, true);
}
void LocalCoordinateSystem::LCSExtension::initExtension(ExtensionContainer* obj)
{
App::GroupExtension::initExtension(obj);
}
bool LocalCoordinateSystem::LCSExtension::extensionGetSubObject(DocumentObject*& ret,
bool LocalCoordinateSystem::extensionGetSubObject(DocumentObject*& ret,
const char* subname,
PyObject** pyobj,
Base::Matrix4D* mat,
@@ -380,7 +365,7 @@ bool LocalCoordinateSystem::LCSExtension::extensionGetSubObject(DocumentObject*&
}
try {
ret = obj->getDatumElement(name.c_str());
ret = getDatumElement(name.c_str());
if (!ret) {
return false;
}
@@ -399,3 +384,9 @@ bool LocalCoordinateSystem::LCSExtension::extensionGetSubObject(DocumentObject*&
return false;
}
}
bool LocalCoordinateSystem::hasObject(const DocumentObject* obj, [[maybe_unused]] bool recursive) const
{
const auto& features = OriginFeatures.getValues();
return std::ranges::find(features, obj) != features.end();
}