コード例 #1
0
ファイル: DoubleLine.py プロジェクト: tkahng/caad4rhino
    def DrawDoubleLines(cls, layer, offsetType):
        # startPoint
        gp = Rhino.Input.Custom.GetPoint()
        gp.SetCommandPrompt("Pick first point")
        gp.Get()
        if gp.CommandResult() != Rhino.Commands.Result.Success:
            return gp.CommandResult()
        point1 = gp.Point()
        gp.Dispose()

        # secondPoint
        line00 = None
        line01 = None
        oldLayer = rs.CurrentLayer(layer)
        while True:
            gp = Rhino.Input.Custom.GetPoint()
            gp.SetCommandPrompt("Pick second point")
            gp.DrawLineFromPoint(point1, True)
            gp.EnableDrawLineFromPoint(True)
            gp.Get()
            if gp.CommandResult() != Rhino.Commands.Result.Success:
                rs.CurrentLayer(oldLayer)
                return gp.CommandResult()
            point2 = gp.Point()
            if point2:
                doubleLine = cls.MakeDoubleLine(config.DOUBLELINEWIDTH, point1,
                                                point2, offsetType)
                if (line00 != None) and (line01 != None):
                    line10, line11 = doubleLine.draw()
                    p0 = rs.LineLineIntersection(line00, line10)
                    p1 = rs.LineLineIntersection(line01, line11)
                    rs.AddLine(rs.CurveStartPoint(line00), p0[0])
                    rs.AddLine(rs.CurveStartPoint(line01), p1[0])
                    rs.DeleteObject(line00)
                    rs.DeleteObject(line01)
                    line00 = rs.AddLine(p0[1], rs.CurveEndPoint(line10))
                    line01 = rs.AddLine(p1[1], rs.CurveEndPoint(line11))
                    rs.DeleteObject(line10)
                    rs.DeleteObject(line11)
                else:
                    line00, line01 = doubleLine.draw()

                point1 = point2
            else:
                sc.errorhandler()
                break
            gp.Dispose()

        rs.CurrentLayer(oldLayer)
コード例 #2
0
def rampIntersection(route1, route2, width):
    edges = []
    offSeg1 = offsetLine(route1, width / 2)
    offSeg2 = offsetLine(route2, width / 2)
    test1 = rs.CurveCurveIntersection(offSeg1, offSeg2)
    if (test1 == None):
        side1 = False
    else:
        side1 = True
    offSeg3 = offsetLine(route1, -width / 2)
    offSeg4 = offsetLine(route2, -width / 2)
    rs.ObjectColor(offSeg3, [255, 0, 0])
    rs.ObjectColor(offSeg4, [255, 0, 0])
    test2 = rs.CurveCurveIntersection(offSeg3, offSeg4)
    if (test2 == None):
        side2 = False
    else:
        side2 = True
    if (side1):
        pivotPt = rs.LineLineIntersection(offSeg1, offSeg2)[0]
        perpPt1 = rs.EvaluateCurve(offSeg3,
                                   rs.CurveClosestPoint(offSeg3, pivotPt))
        perpPt2 = rs.EvaluateCurve(offSeg4,
                                   rs.CurveClosestPoint(offSeg4, pivotPt))
        edges.append(rs.AddLine(pivotPt, perpPt1))
        edges.append(rs.AddLine(pivotPt, perpPt2))
        elbowPt = rs.LineLineIntersection(offSeg3, offSeg4)[0]
    else:
        pivotPt = rs.LineLineIntersection(offSeg3, offSeg4)[0]
        perpPt1 = rs.EvaluateCurve(offSeg1,
                                   rs.CurveClosestPoint(offSeg1, pivotPt))
        perpPt2 = rs.EvaluateCurve(offSeg2,
                                   rs.CurveClosestPoint(offSeg2, pivotPt))
        edges.append(rs.AddLine(pivotPt, perpPt1))
        edges.append(rs.AddLine(pivotPt, perpPt2))
        elbowPt = rs.LineLineIntersection(offSeg1, offSeg2)[0]
    rs.DeleteObject(offSeg1)
    rs.DeleteObject(offSeg2)
    rs.DeleteObject(offSeg3)
    rs.DeleteObject(offSeg4)
    landing = rs.AddPolyline([pivotPt, perpPt1, elbowPt, perpPt2, pivotPt])
    return edges, landing
コード例 #3
0
 def setIntersectParallelLines(self, parallelLines, nodes):
     for parallelLine in parallelLines:
         if (self.no == parallelLine.no): continue
         for myLine in self.lines:
             for yourLine in parallelLine.lines:
                 pts = rs.LineLineIntersection([myLine.sPt, myLine.ePt],
                                               [yourLine.sPt, yourLine.ePt])
                 if pts is not None:
                     node = Node(pts[0], [myLine, yourLine])
                     node = self.checkNodes(node, nodes)
                     myLine.nodes.append(node)
コード例 #4
0
    def addExtlHandrail(self):
        hdrlPtList = []
        hdrlEndPt = rs.AddPoint(rs.CurveEndPoint(self.guideCrv))
        hdrlStPt = rs.AddPoint(rs.CurveStartPoint(self.guideCrv))
        hdrlVec = rs.VectorCreate(hdrlStPt, hdrlEndPt)
        projHdrlVec = rs.VectorUnitize([hdrlVec.X, hdrlVec.Y, 0])

        #Top Extension
        topExtEndPt = rs.CopyObject(hdrlEndPt)
        rs.MoveObject(topExtEndPt, rs.VectorScale(projHdrlVec, -.305))
        hdrlPtList.append(topExtEndPt)

        #Btm Extension (tread length method)
        btmExtEndPt = rs.CopyObject(hdrlStPt)
        btmPtExtTemp = rs.CopyObject(hdrlStPt)
        btmVertPtExtTemp = rs.CopyObject(hdrlStPt)

        rs.MoveObject(btmPtExtTemp, hdrlVec)
        angledLineTemp = rs.AddLine(hdrlStPt, btmPtExtTemp)

        rs.MoveObject(btmVertPtExtTemp, [0, 0, -1])
        vertLineTemp = rs.AddLine(btmVertPtExtTemp, hdrlStPt)
        rs.MoveObject(vertLineTemp,
                      rs.VectorScale(projHdrlVec, self.treadLength))

        btmExtPt = rs.LineLineIntersection(angledLineTemp, vertLineTemp)[0]
        hdrlPtList.append(hdrlEndPt)
        hdrlPtList.append(btmExtPt)

        #Make and move
        hdrlCrv = rs.AddPolyline(hdrlPtList)
        rs.MoveObject(hdrlCrv, [0, 0, self.hdrlHeight])

        #move away from wall
        widthVec = rs.VectorUnitize(
            rs.VectorCreate(rs.CurveEndPoint(self.stairWidthEdge),
                            rs.CurveStartPoint(self.stairWidthEdge)))
        rs.MoveObject(hdrlCrv, rs.VectorScale(widthVec, self.hdrlDistFromWall))

        #cleanup
        rs.DeleteObject(topExtEndPt)
        rs.DeleteObject(hdrlEndPt)
        rs.DeleteObject(hdrlStPt)
        rs.DeleteObject(btmPtExtTemp)
        rs.DeleteObject(btmVertPtExtTemp)
        rs.DeleteObject(angledLineTemp)
        rs.DeleteObject(vertLineTemp)
        rs.DeleteObject(btmExtEndPt)

        return hdrlCrv
コード例 #5
0
    def addIntlHandrail(self, minGapSize, riserHeight, extensionLength):
        innerGuideCrv = rs.CopyObject(self.guideCrv)
        ptList = []
        stairWidth = rs.CurveLength(self.stairWidthEdge)
        stairEdgeEnd = rs.CurveEndPoint(self.stairWidthEdge)
        stairEdgeStart = rs.CurveStartPoint(self.stairWidthEdge)
        widthVec = rs.VectorUnitize(
            rs.VectorCreate(stairEdgeEnd, stairEdgeStart))
        rs.MoveObject(
            innerGuideCrv,
            rs.VectorScale(widthVec, stairWidth - self.hdrlDistFromWall))

        guideCrvVec = rs.VectorUnitize(
            rs.VectorCreate(rs.CurveEndPoint(self.guideCrv),
                            rs.CurveStartPoint(self.guideCrv)))
        projGuideVec = rs.VectorUnitize([guideCrvVec.X, guideCrvVec.Y, 0])

        guideCrvStPt = rs.AddPoint(rs.CurveStartPoint(innerGuideCrv))  ######1
        guideCrvEndPt = rs.AddPoint(rs.CurveEndPoint(innerGuideCrv))

        #(1) Angled Extension
        angledEndPt = rs.MoveObject(rs.CopyObject(guideCrvStPt),
                                    rs.VectorScale(guideCrvVec, -1))
        angledLine = rs.AddLine(guideCrvStPt, angledEndPt)

        #(2) vertLine
        vertLineBtmPt = rs.MoveObject(rs.CopyObject(guideCrvStPt),
                                      [0, 0, -riserHeight])
        vertLine = rs.AddLine(vertLineBtmPt, guideCrvStPt)

        #intersection
        rs.MoveObject(vertLine,
                      rs.VectorScale(projGuideVec, -self.hdrlDistFromWall))
        rs.MoveObject(vertLineBtmPt,
                      rs.VectorScale(projGuideVec,
                                     -self.hdrlDistFromWall))  ######3
        extIntPt = rs.AddPoint(
            rs.LineLineIntersection(angledLine, vertLine)[0])  ######2

        #(3) Crosspiece
        crossPieceEnd = rs.MoveObject(
            rs.CopyObject(vertLineBtmPt),
            rs.VectorScale(widthVec,
                           (self.hdrlDistFromWall * 2) + minGapSize))  #####4

        #(4) topExtension
        topExtEndPt = rs.MoveObject(
            rs.CopyObject(guideCrvEndPt),
            rs.VectorScale(
                projGuideVec, extensionLength + self.hdrlDistFromWall +
                self.treadLength))  ####1

        #Create final line
        ptList.append(topExtEndPt)
        ptList.append(guideCrvEndPt)
        ptList.append(extIntPt)
        ptList.append(vertLineBtmPt)
        ptList.append(crossPieceEnd)
        finalLine = rs.AddPolyline(ptList)

        rs.MoveObject(finalLine, [0, 0, self.hdrlHeight])

        #cleanup
        rs.DeleteObjects([
            topExtEndPt, guideCrvEndPt, extIntPt, vertLineBtmPt, crossPieceEnd
        ])
        rs.DeleteObject(angledLine)
        rs.DeleteObject(vertLine)
        rs.DeleteObject(angledEndPt)
        rs.DeleteObject(guideCrvStPt)
        rs.DeleteObject(innerGuideCrv)
        return finalLine
コード例 #6
0
    def make(self):
        runVector = rs.VectorCreate(rs.CurveEndPoint(self.runLongEdge),
                                    rs.CurveStartPoint(self.runLongEdge))
        unitRunVec = rs.VectorUnitize(runVector)
        treadVec = rs.VectorScale(unitRunVec, self.treadLength)
        riseVec = rs.VectorCreate([0, 0, self.riserHeight], [0, 0, 0])

        newPt = [
            rs.CurveStartPoint(self.firstRiserEdge).X,
            rs.CurveStartPoint(self.firstRiserEdge).Y,
            rs.CurveStartPoint(self.firstRiserEdge).Z - self.deltaHeight
        ]

        ptList = []
        ptList.append(rs.AddPoint(newPt))
        for i in range(self.numRisers):
            tempPt = rs.CopyObject(ptList[-1])
            rs.MoveObject(tempPt, riseVec)
            ptList.append(tempPt)
            tempPt = rs.CopyObject(ptList[-1])
            rs.MoveObject(tempPt, treadVec)
            ptList.append(tempPt)

        #stringer construct offset line
        undersideLine = rs.AddLine(ptList[0], ptList[-1])
        closestPtParam = rs.CurveClosestPoint(undersideLine, ptList[1])
        closestPt = rs.EvaluateCurve(undersideLine, closestPtParam)
        perpVec = rs.VectorUnitize(rs.VectorCreate(ptList[1], closestPt))
        stringerBtm = rs.MoveObject(undersideLine,
                                    rs.VectorScale(perpVec, -self.thickness))
        cnstrLine = rs.ScaleObject(stringerBtm, rs.CurveMidPoint(stringerBtm),
                                   [2, 2, 2])

        #line going down
        btmPt = rs.MoveObject(ptList[0], [0, 0, -self.thickness])
        moveDir = rs.VectorCreate(ptList[2], ptList[1])
        btmPtMoved = rs.MoveObject(rs.CopyObject(btmPt),
                                   rs.VectorScale(moveDir, 3))
        btmLineCnstr = rs.AddLine(btmPt, btmPtMoved)
        ptIntersectBtm = rs.AddPoint(
            rs.LineLineIntersection(btmLineCnstr, cnstrLine)[0])  #yes

        #top lines
        topVec = rs.VectorScale(
            rs.VectorUnitize(rs.VectorCreate(ptList[-1], ptList[-2])),
            self.extenionLength)
        topPt1 = rs.MoveObject(ptList[-1], topVec)
        topPtDown = rs.MoveObject(rs.CopyObject(topPt1),
                                  [0, 0, -self.thickness])
        extLengthTemp = self.extenionLength
        if extLengthTemp < .1:
            extLengthTemp = .1
        topVec = rs.VectorScale(
            rs.VectorUnitize(rs.VectorCreate(ptList[-1], ptList[-2])),
            extLengthTemp)
        topPtTemp = rs.MoveObject(rs.CopyObject(topPtDown), topVec)
        topLine = rs.AddLine(topPtDown, topPtTemp)
        ptIntersectTop = rs.AddPoint(
            rs.LineLineIntersection(topLine, cnstrLine)[0])  #yes

        ptList.append(topPtDown)
        ptList.append(ptIntersectTop)
        ptList.append(ptIntersectBtm)

        stringer = rs.AddPolyline(ptList)
        closeCrv = rs.AddLine(rs.CurveStartPoint(stringer),
                              rs.CurveEndPoint(stringer))

        newStringer = rs.JoinCurves([stringer, closeCrv], True)

        stair = rs.ExtrudeCurve(newStringer, self.firstRiserEdge)

        rs.CapPlanarHoles(stair)

        #make handrail guide curve
        topOfNosing = rs.AddLine(ptList[1], ptList[-5])
        self.guideCrv = topOfNosing

        rs.DeleteObject(btmLineCnstr)
        rs.DeleteObject(btmPtMoved)
        rs.DeleteObject(btmLineCnstr)
        rs.DeleteObject(ptIntersectTop)
        rs.DeleteObject(undersideLine)
        rs.DeleteObject(topPtTemp)
        rs.DeleteObject(topLine)
        rs.DeleteObject(stringer)
        rs.DeleteObject(newStringer)
        rs.DeleteObjects(ptList)

        return stair
コード例 #7
0
def drawRhombusOnRegularOffsetLine(emblem):
    tmpObjs = []
    for rhomboid in emblem.rhomboids:
        objs = []

        # 中点長方形の対角四角形
        for i in range(len(rhomboid.midPts)):
            p0 = rhomboid.midPts[i]
            if (i == 0):
                nextMidPt = rhomboid.midPts[i + 1]
                prevtMidPt = rhomboid.midPts[len(rhomboid.midPts) - 1]
            elif (i == len(rhomboid.midPts) - 1):
                nextMidPt = rhomboid.midPts[0]
                prevtMidPt = rhomboid.midPts[i - 1]
            else:
                nextMidPt = rhomboid.midPts[i + 1]
                prevtMidPt = rhomboid.midPts[i - 1]
            p1 = rs.VectorAdd(p0, nextMidPt)
            p1 = rs.VectorDivide(p1, 2.0)
            p2 = rhomboid.ellipsePts[0]
            p3 = rs.VectorAdd(p0, prevtMidPt)
            p3 = rs.VectorDivide(p3, 2.0)
            pts = [p0, p1, p2, p3, p0]
            obj = rs.AddPolyline(pts)
            if (i % 2 == 0):
                rs.ObjectLayer(obj, "srf%s" % rhomboid.lines[1].no)
            else:
                rs.ObjectLayer(obj, "srf%s" % rhomboid.lines[0].no)
            objs.append(obj)

        # 外周面
        pts = []
        for pt in rhomboid.pts:
            pts.append(pt)
        pts.append(pts[0])
        obj = rs.AddPolyline(pts)
        rs.ObjectLayer(obj, "srfRhomboid")
        objs.append(obj)

        # 外周線
        for i in range(len(rhomboid.pts)):
            if (i == len(rhomboid.pts) - 1):
                obj = rs.AddLine(rhomboid.pts[i], rhomboid.pts[0])
            else:
                obj = rs.AddLine(rhomboid.pts[i], rhomboid.pts[i + 1])
            rs.ObjectLayer(obj, "lineBlack")
            objs.append(obj)

        # move to center
        objs = rs.MoveObjects(objs, [
            -rhomboid.ellipsePts[0][0], -rhomboid.ellipsePts[0][1],
            -rhomboid.ellipsePts[0][2]
        ])

        # rotate
        xform = rs.XformRotation2(rhomboid.rotateAng, [0, 0, 1], [0, 0, 0])
        rs.TransformObjects(objs, xform)

        # move
        pts = rs.LineLineIntersection(
            [rhomboid.lines[0].sPt, rhomboid.lines[0].ePt],
            [rhomboid.lines[1].sPt, rhomboid.lines[1].ePt])
        rs.MoveObjects(objs, pts[0])

        # tmpObjs
        for obj in objs:
            tmpObjs.append(obj)

    return tmpObjs
コード例 #8
0
rs.RotateObject(outterCircle, point, 90)
rs.RotateObject(innerCircle, point, 90)
dividedPoints = rs.DivideCurve(outterCircle, division, True)
dividedPointsInner = rs.DivideCurve(innerCircle, division, True)

lines1 = []
lines2 = []
lines3 = []
lines4 = []

for i in range(len(dividedPoints)):
    lines1.append(rs.AddLine(dividedPoints[i],dividedPoints[(i+3)%division]))
    lines2.append(rs.AddLine(dividedPoints[i],dividedPoints[(i+4)%division]))
    lines3.append(rs.AddLine(point, dividedPoints[i]))
for j in range(len(lines1)):
    intersection = rs.LineLineIntersection(lines1[j], lines1[(j+2)%division])
    rs.AddLine(point,intersection[0])

lines4.append(dividedPoints[0])
x = rs.LineLineIntersection(lines1[0],lines2[7])
lines4.append(rs.AddPoint(x[0]))
z = rs.LineLineIntersection(lines3[0],lines2[7])
lines4.append(rs.AddPoint(z[0]))
y = rs.LineLineIntersection(lines1[7], lines2[9])
lines4.append(rs.AddPoint(y[0]))
lines4.append(dividedPoints[0])

polylines = []
polyline = rs.AddCurve(lines4, 1)
polylines.append(polyline)
コード例 #9
0
ファイル: ramp.py プロジェクト: tmwarchitecture/PCPA_TOOLS
def MakeRampLandings(allLines, hdrlCtrOffset):
    landingGeo = []
    hdrls = []
    rs.DeleteObject(allLines[0])
    rs.DeleteObject(allLines[-1])
    del allLines[0]
    del allLines[-1]

    for i in range(0, len(allLines), 2):
        #TOP LINE
        stPt = rs.CurveStartPoint(allLines[i])
        endPt = rs.CurveEndPoint(allLines[i])
        tanVec = rs.CurveTangent(allLines[i], 0)

        perpVec = rs.VectorRotate(tanVec, 90, (0, 0, 1))

        stPtOffset = rs.CopyObject(stPt, perpVec)
        endPtOffset = rs.CopyObject(endPt, perpVec)
        stLine = rs.AddLine(stPt, stPtOffset)
        endLine = rs.AddLine(endPt, endPtOffset)

        #Bottom line
        allLines[i]
        stPtBtm = rs.CurveStartPoint(allLines[i + 1])
        endPtBtm = rs.CurveEndPoint(allLines[i + 1])
        tanVecBtm = rs.CurveTangent(allLines[i + 1], 0)

        perpVecBtm = rs.VectorRotate(tanVecBtm, -90, (0, 0, 1))

        stPtOffsetBtm = rs.CopyObject(stPtBtm, perpVecBtm)
        endPtOffsetBtm = rs.CopyObject(endPtBtm, perpVecBtm)
        stLineBtm = rs.AddLine(stPtBtm, stPtOffsetBtm)
        endLineBtm = rs.AddLine(endPtBtm, endPtOffsetBtm)

        #Intersection
        try:
            stInter = rs.AddPoint(
                rs.LineLineIntersection(stLineBtm, stLine)[0])
        except:
            stInter = stPt
        try:
            endInter = rs.AddPoint(
                rs.LineLineIntersection(endLineBtm, endLine)[0])
        except:
            endInter = endPt

        landingPts = [stPt, endPt, endInter, endPtBtm, stPtBtm, stInter, stPt]
        landingCrv = rs.AddPolyline(landingPts)
        landingGeo.append(rs.AddPlanarSrf(landingCrv))

        #Handrails
        hdrl1 = rs.AddPolyline([stPt, stInter, stPtBtm])
        hdrl1b = rs.OffsetCurve(hdrl1, endPt, hdrlCtrOffset, (0, 0, 1))
        hdrls.append(hdrl1b)
        hdrl2 = rs.AddPolyline([endPt, endInter, endPtBtm])
        hdrl2b = rs.OffsetCurve(hdrl2, stPt, hdrlCtrOffset, (0, 0, 1))
        hdrls.append(hdrl2b)

        rs.DeleteObject(hdrl1)
        rs.DeleteObject(hdrl2)

        rs.DeleteObject(landingCrv)
        rs.DeleteObject(stLine)
        rs.DeleteObject(endLine)
        rs.DeleteObject(stLineBtm)
        rs.DeleteObject(endLineBtm)
        try:
            rs.DeleteObjects([
                stPtOffset, endPtOffset, stPtOffsetBtm, endPtOffsetBtm,
                stInter, endInter
            ])
        except:
            rs.DeleteObjects(
                [stPtOffset, endPtOffset, stPtOffsetBtm, endPtOffsetBtm])
    rs.DeleteObjects(allLines)
    return landingGeo, hdrls
コード例 #10
0
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
#Practice 5 ####################################################################

import rhinoscriptsyntax as rs
startPoint = [1.0, 2.0, 0.0]
endPoint = [4.0, 5.0, 0.0]
line1 = [startPoint, endPoint]
line1ID = rs.AddLine(
    line1[0],
    line1[1])  # Adds a line to the Rhino Document and returns an ObjectID
startPoint2 = [1.0, 4.0, 0.0]
endPoint2 = [4.0, 2.0, 0.0]
line2 = [startPoint2, endPoint2]
line2ID = rs.AddLine(line2[0], line2[1])  # Returns another ObjectID
int1 = rs.LineLineIntersection(
    line1ID, line2ID)  # passing the ObjectIDs to the function.

#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
#Practice 6 ####################################################################

import rhinoscriptsyntax as rs
ptOrigin = rs.GetPoint("Plane origin")
ptX = rs.GetPoint("Plane X-axis", ptOrigin)
ptY = rs.GetPoint("Plane Y-axis", ptOrigin)
dX = rs.Distance(ptOrigin, ptX)
dY = rs.Distance(ptOrigin, ptY)
arrPlane = rs.PlaneFromPoints(ptOrigin, ptX, ptY)
rs.AddPlaneSurface(arrPlane, 1.0, 1.0)
rs.AddPlaneSurface(arrPlane, dX, dY)

#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
コード例 #11
0
__author__ = "billpower"
__version__ = "2020.01.28"

import rhinoscriptsyntax as rs
li = Lines
lst = []    #直线首尾点和交点
pls = []    #根据交点构建的直线
plsp = []   #用于临时放置循环每一步的交点
pl = []     #用于临时放置循环每一步的交点和首尾点

#嵌套循环得出所有直线交点
for i in range(len(li)):
    for p in li:
        point = rs.LineLineIntersection(li[i],p)
        if point and rs.IsPointOnCurve(li[i],point[0]) and rs.IsPointOnCurve(p,point[0]):
        #有交点且同时在两直线上
            lst.append(point[0])
            plsp.append(point[0])
    #取首尾点
    sta = rs.CurveStartPoint(li[i])
    end = rs.CurveEndPoint(li[i])
    #加入临时点列表
    pl = [sta]+plsp+[end]   #单个数据加[]改为列表
    #排序点并且连为折线
    pls.append(rs.AddPolyline(rs.SortPointList(pl)))
    plsp = []
    pl = []

print(lst)
print(PLS)
IntersectionPoints = lst