Gui: fix ViewProviderLink transform with scale
Fixes FreeCAD/FreeCAD#7113
This commit is contained in:
@@ -1819,7 +1819,7 @@ void ViewProviderLink::updateDataPrivate(App::LinkBaseExtension *ext, const App:
|
||||
if(canScale(v))
|
||||
pcTransform->scaleFactor.setValue(v.x,v.y,v.z);
|
||||
SbMatrix matrix = convert(ext->getTransform(false));
|
||||
linkView->renderDoubleSide(matrix.det3() < 0);
|
||||
linkView->renderDoubleSide(matrix.det3() < 1e-7);
|
||||
}
|
||||
}else if(prop == ext->getPlacementProperty() || prop == ext->getLinkPlacementProperty()) {
|
||||
auto propLinkPlacement = ext->getLinkPlacementProperty();
|
||||
@@ -1830,7 +1830,7 @@ void ViewProviderLink::updateDataPrivate(App::LinkBaseExtension *ext, const App:
|
||||
if(canScale(v))
|
||||
pcTransform->scaleFactor.setValue(v.x,v.y,v.z);
|
||||
SbMatrix matrix = convert(ext->getTransform(false));
|
||||
linkView->renderDoubleSide(matrix.det3() < 0);
|
||||
linkView->renderDoubleSide(matrix.det3() < 1e-7);
|
||||
}
|
||||
}else if(prop == ext->getLinkCopyOnChangeGroupProperty()) {
|
||||
if (auto group = ext->getLinkCopyOnChangeGroupValue()) {
|
||||
@@ -3407,6 +3407,30 @@ ViewProviderDocumentObject *ViewProviderLink::getLinkedViewProvider(
|
||||
return self;
|
||||
}
|
||||
|
||||
void ViewProviderLink::setTransformation(const Base::Matrix4D &rcMatrix)
|
||||
{
|
||||
inherited::setTransformation(rcMatrix);
|
||||
auto ext = getLinkExtension();
|
||||
if(ext) {
|
||||
if (ext->getScaleVectorProperty())
|
||||
updateDataPrivate(getLinkExtension(),ext->getScaleVectorProperty());
|
||||
else
|
||||
updateDataPrivate(getLinkExtension(),ext->getScaleProperty());
|
||||
}
|
||||
}
|
||||
|
||||
void ViewProviderLink::setTransformation(const SbMatrix &rcMatrix)
|
||||
{
|
||||
inherited::setTransformation(rcMatrix);
|
||||
auto ext = getLinkExtension();
|
||||
if(ext) {
|
||||
if (ext->getScaleVectorProperty())
|
||||
updateDataPrivate(getLinkExtension(),ext->getScaleVectorProperty());
|
||||
else
|
||||
updateDataPrivate(getLinkExtension(),ext->getScaleProperty());
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
namespace Gui {
|
||||
|
||||
@@ -268,6 +268,9 @@ public:
|
||||
return true;
|
||||
}
|
||||
|
||||
virtual void setTransformation(const Base::Matrix4D &rcMatrix) override;
|
||||
virtual void setTransformation(const SbMatrix &rcMatrix) override;
|
||||
|
||||
protected:
|
||||
bool setEdit(int ModNum) override;
|
||||
void setEditViewer(View3DInventorViewer*, int ModNum) override;
|
||||
|
||||
Reference in New Issue
Block a user