//Shows the beam's extremes in the coordinates of the reference model object private void ShowExtremesInOtherObjectCoordinates(ModelObject ReferenceObject, Beam Beam) { //Set the transformation plane to use the beam's coordinate system in order to get the beam's extremes in the local coordinate system TransformationPlane CurrentTP = _Model.GetWorkPlaneHandler().GetCurrentTransformationPlane(); _Model.GetWorkPlaneHandler().SetCurrentTransformationPlane(new TransformationPlane(Beam.GetCoordinateSystem())); //Update the beam's extremes to the new transformation plane Beam.Select(); T3D.Point LocalStartPoint = Beam.StartPoint; T3D.Point LocalEndPoint = Beam.EndPoint; //Get the beam's extremes in the reference object's coordinates Matrix TransformationMatrix = MatrixFactory.ByCoordinateSystems(Beam.GetCoordinateSystem(), ReferenceObject.GetCoordinateSystem()); //Transform the extreme points to the new coordinate system T3D.Point BeamStartPoint = TransformationMatrix.Transform(LocalStartPoint); T3D.Point BeamEndPoint = TransformationMatrix.Transform(LocalEndPoint); _Model.GetWorkPlaneHandler().SetCurrentTransformationPlane(CurrentTP); //Transform the points where to show the texts to current work plane coordinate system Matrix TransformationToCurrent = MatrixFactory.FromCoordinateSystem(ReferenceObject.GetCoordinateSystem()); T3D.Point BeamStartPointInCurrent = TransformationToCurrent.Transform(BeamStartPoint); T3D.Point BeamEndPointInCurrent = TransformationToCurrent.Transform(BeamEndPoint); //Display results DrawCoordinateSytem(ReferenceObject.GetCoordinateSystem()); GraphicsDrawer.DrawText(BeamStartPointInCurrent, FormatPointCoordinates(BeamStartPoint), TextColor); GraphicsDrawer.DrawText(BeamEndPointInCurrent, FormatPointCoordinates(BeamEndPoint), TextColor); }