Fix Detail highlight position for rotated DPGI

- highlight position calculation was not taking into account
  rotation of DPGI due to RotationVector property.
This commit is contained in:
wandererfan
2018-12-16 12:52:17 -05:00
committed by Yorik van Havre
parent c1fdc42fd6
commit bb0bbeef9a
8 changed files with 89 additions and 9 deletions

View File

@@ -207,12 +207,20 @@ App::DocumentObjectExecReturn *DrawViewDetail::execute(void)
if (dpgi != nullptr) {
viewAxis = dpgi->getViewAxis(shapeCenter, dirDetail);
vaBase = TechDrawGeometry::getViewAxis(shapeCenter,dirDetail,false);
if (!vaBase.Direction().IsEqual(viewAxis.Direction(), Precision::Angular())) {
Base::Vector3d vaDir(vaBase.Direction().X(),vaBase.Direction().Y(),vaBase.Direction().Z());
Base::Vector3d vabDir(vaBase.Direction().X(),vaBase.Direction().Y(),vaBase.Direction().Z());
double vaDot = vaDir.Dot(vabDir);
if (DrawUtil::fpCompare(vaDot,-1.0)) { //anti-parallel, flip
myShape = TechDrawGeometry::rotateShape(myShape,
viewAxis,
180.0);
}
if (!vaBase.XDirection().IsEqual(viewAxis.XDirection(), Precision::Angular())) {
Base::Vector3d vaxDir(vaBase.XDirection().X(),vaBase.XDirection().Y(),vaBase.XDirection().Z());
Base::Vector3d vabxDir(vaBase.XDirection().X(),vaBase.XDirection().Y(),vaBase.XDirection().Z());
double vaxDot = vaxDir.Dot(vabxDir);
if (DrawUtil::fpCompare(vaxDot,-1.0)) {
myShape = TechDrawGeometry::rotateShape(myShape,
viewAxis,
180.0);