Measure: Add X, Y and Z component properties to MeasureDistance
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user