Esempio n. 1
0
    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);
    }
Esempio n. 2
0
    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);
    }