public List <LineSegment> new_get_lower_edge(Part Gpart) { List <LineSegment> lineSegmentList = new List <LineSegment>(); Point point1 = new Point(); Point point2 = new Point(); Point point3 = new Point(); Point point4 = new Point(); Point point5 = new Point(); Tekla.Structures.Model.Solid solid = Gpart.GetSolid(Tekla.Structures.Model.Solid.SolidCreationTypeEnum.PLANECUTTED); EdgeEnumerator edgeEnumerator = solid.GetEdgeEnumerator(); Point maximumPoint = solid.MaximumPoint; Point minimumPoint = solid.MinimumPoint; TransformationPlane transformationPlane = this.myModel.GetWorkPlaneHandler().GetCurrentTransformationPlane(); Point point6 = transformationPlane.TransformationMatrixToGlobal.Transform(maximumPoint); Point point7 = transformationPlane.TransformationMatrixToGlobal.Transform(minimumPoint); if (point6.Z > point7.Z) { point3 = minimumPoint; } else if (point6.Z < point7.Z) { point3 = maximumPoint; } if (solid != null) { while (edgeEnumerator.MoveNext()) { Edge current = edgeEnumerator.Current as Edge; if (current.StartPoint.Z - current.EndPoint.Z == 0.0 && current.StartPoint.Z == point3.Z) { LineSegment lineSegment = new LineSegment(current.StartPoint, current.EndPoint); lineSegmentList.Add(lineSegment); } } } return(lineSegmentList); }
public List <LineSegment> Get_Lower_face_edge(Part GPart) { this.myModel.GetWorkPlaneHandler().SetCurrentTransformationPlane(new TransformationPlane()); Tekla.Structures.Model.Solid solid = GPart.GetSolid(); EdgeEnumerator edgeEnumerator = solid.GetEdgeEnumerator(); List <LineSegment> lineSegmentList = new List <LineSegment>(); if (solid != null) { while (edgeEnumerator.MoveNext()) { Edge current = edgeEnumerator.Current as Edge; LineSegment lineSegment = new LineSegment(current.StartPoint, current.EndPoint); if (Math.Abs(lineSegment.Point1.Z - lineSegment.Point2.Z) < 1.0) { lineSegmentList.Add(lineSegment); } } for (int index1 = 0; index1 < lineSegmentList.Count; ++index1) { LineSegment lineSegment1 = lineSegmentList[index1]; for (int index2 = 0; index2 < lineSegmentList.Count; ++index2) { LineSegment lineSegment2 = lineSegmentList[index2]; if (Math.Abs(lineSegment1.Point1.X - lineSegment2.Point1.X) < 1.0 && Math.Abs(lineSegment1.Point1.Y - lineSegment2.Point1.Y) < 1.0 && lineSegment1.Point1.Z != lineSegment2.Point1.Z) { if (lineSegment2.Point1.Z > lineSegment1.Point1.Z) { lineSegmentList.Remove(lineSegment2); } else { lineSegmentList.Remove(lineSegment1); } } } } for (int index1 = 0; index1 < lineSegmentList.Count; ++index1) { LineSegment lineSegment1 = lineSegmentList[index1]; for (int index2 = 0; index2 < lineSegmentList.Count; ++index2) { LineSegment lineSegment2 = lineSegmentList[index2]; Point point1 = lineSegment2.Point1; LineSegment lineSegment3 = new LineSegment(lineSegment2.Point2, point1); if (Math.Abs(lineSegment1.Point1.X - lineSegment3.Point1.X) < 1.0 && Math.Abs(lineSegment1.Point1.Y - lineSegment3.Point1.Y) < 1.0 && lineSegment1.Point1.Z != lineSegment3.Point1.Z) { if (lineSegment3.Point1.Z > lineSegment1.Point1.Z) { lineSegmentList.Remove(lineSegment2); } else { lineSegmentList.Remove(lineSegment1); } } } } } return(lineSegmentList); }