Measure: Add X, Y and Z component properties to MeasureDistance

This commit is contained in:
hlorus
2024-06-27 11:23:22 +02:00
committed by Chris Hennes
parent 92541f569d
commit 84ca0bfda4
2 changed files with 33 additions and 0 deletions

View File

@@ -51,6 +51,16 @@ MeasureDistance::MeasureDistance()
"Distance between the two elements");
Distance.setUnit(Base::Unit::Length);
ADD_PROPERTY_TYPE(DistanceX,(0.0),"Measurement",App::PropertyType(App::Prop_ReadOnly|App::Prop_Output),
"Distance in X direction");
DistanceX.setUnit(Base::Unit::Length);
ADD_PROPERTY_TYPE(DistanceY,(0.0),"Measurement",App::PropertyType(App::Prop_ReadOnly|App::Prop_Output),
"Distance in Y direction");
DistanceY.setUnit(Base::Unit::Length);
ADD_PROPERTY_TYPE(DistanceZ,(0.0),"Measurement",App::PropertyType(App::Prop_ReadOnly|App::Prop_Output),
"Distance in Z direction");
DistanceZ.setUnit(Base::Unit::Length);
ADD_PROPERTY_TYPE(Position1,(Base::Vector3d(0.0,0.0,0.0)),"Measurement", App::Prop_Hidden, "Position1");
ADD_PROPERTY_TYPE(Position2,(Base::Vector3d(0.0,1.0,0.0)),"Measurement", App::Prop_Hidden, "Position2");
@@ -197,7 +207,11 @@ App::DocumentObjectExecReturn *MeasureDistance::execute()
return new App::DocumentObjectExecReturn("Could not get extrema");
}
gp_Pnt delta = measure.PointOnShape2(1).XYZ() - measure.PointOnShape1(1).XYZ();
Distance.setValue(measure.Value());
DistanceX.setValue(fabs(delta.X()));
DistanceY.setValue(fabs(delta.Y()));
DistanceZ.setValue(fabs(delta.Z()));
gp_Pnt p1 = measure.PointOnShape1(1);
Position1.setValue(p1.X(), p1.Y(), p1.Z());
@@ -239,6 +253,16 @@ MeasureDistanceDetached::MeasureDistanceDetached()
"Distance between the two elements");
Distance.setUnit(Base::Unit::Length);
ADD_PROPERTY_TYPE(DistanceX,(0.0),"Measurement",App::PropertyType(App::Prop_ReadOnly|App::Prop_Output),
"Distance in X direction");
DistanceX.setUnit(Base::Unit::Length);
ADD_PROPERTY_TYPE(DistanceY,(0.0),"Measurement",App::PropertyType(App::Prop_ReadOnly|App::Prop_Output),
"Distance in Y direction");
DistanceY.setUnit(Base::Unit::Length);
ADD_PROPERTY_TYPE(DistanceZ,(0.0),"Measurement",App::PropertyType(App::Prop_ReadOnly|App::Prop_Output),
"Distance in Z direction");
DistanceZ.setUnit(Base::Unit::Length);
ADD_PROPERTY_TYPE(Position1,(Base::Vector3d(0.0,0.0,0.0)),"Measurement", App::Prop_None, "Position1");
ADD_PROPERTY_TYPE(Position2,(Base::Vector3d(0.0,1.0,0.0)),"Measurement", App::Prop_None, "Position2");
}
@@ -269,6 +293,9 @@ void MeasureDistanceDetached::recalculateDistance()
{
auto delta = Position1.getValue() - Position2.getValue();
Distance.setValue(delta.Length());
DistanceX.setValue(fabs(delta.x));
DistanceY.setValue(fabs(delta.y));
DistanceZ.setValue(fabs(delta.z));
}
void MeasureDistanceDetached::onChanged(const App::Property* prop)

View File

@@ -63,6 +63,9 @@ public:
App::PropertyLinkSub Element1;
App::PropertyLinkSub Element2;
App::PropertyDistance Distance;
App::PropertyDistance DistanceX;
App::PropertyDistance DistanceY;
App::PropertyDistance DistanceZ;
// Position properties for the viewprovider
App::PropertyVector Position1;
@@ -106,6 +109,9 @@ public:
~MeasureDistanceDetached() override;
App::PropertyDistance Distance;
App::PropertyDistance DistanceX;
App::PropertyDistance DistanceY;
App::PropertyDistance DistanceZ;
App::PropertyVector Position1;
App::PropertyVector Position2;