take care of object's global placement when creating point cloud of it

This commit is contained in:
wmayer
2018-09-05 21:24:22 +02:00
parent 7d8e7b6d65
commit 7e3be9eb68

View File

@@ -208,6 +208,9 @@ void CmdPointsConvert::activated(int iMsg)
bool addedPoints = false;
for (std::vector<App::DocumentObject*>::iterator it = geoObject.begin(); it != geoObject.end(); ++it) {
Base::Placement globalPlacement = static_cast<App::GeoFeature*>(*it)->globalPlacement();
Base::Placement localPlacement = static_cast<App::GeoFeature*>(*it)->Placement.getValue();
localPlacement = globalPlacement * localPlacement.inverse();
const App::PropertyComplexGeoData* prop = static_cast<App::GeoFeature*>(*it)->getPropertyOfGeometry();
if (prop) {
const Data::ComplexGeoData* data = prop->getComplexData();
@@ -240,6 +243,7 @@ void CmdPointsConvert::activated(int iMsg)
for (std::vector<Base::Vector3d>::iterator pt = vertexes.begin(); pt != vertexes.end(); ++pt)
kernel.push_back(*pt);
fea->Points.setValue(kernel);
fea->Placement.setValue(localPlacement);
App::Document* doc = (*it)->getDocument();
doc->addObject(fea, "Points");