倖福-吖-rao 发表于 2014-4-18 17:54:58

进来讨论一下如何合并多段线

小弟刚编完一个软件,是VBA编程的。做完后想把整个图形做一次多段线合并操作。查阅了不少资料,最后别人给我一段代码,原本
他那个都是三维多段线画的,我的是二维,就稍微改了下,可是运行程序也不能合并多段线,也不报错,希望有人能帮忙分析下我的
代码,看看哪里错了,谢谢哦!!

    Dim PlineObj As AcadLWPolyline
    Dim ss_line As AcadSelectionSet
    Dim ent As AcadEntity
    Dim line_code(0) As Integer
    Dim line_value(0) As Variant
    Dim coord As Variant
'    Dim i, j As Long
'    On Error GoTo errexit
    Set ss_line = AcadApp.ActiveDocument.SelectionSets.Add("sPolyLines")
    line_code(0) = 0
    line_value(0) = "POLYLINE"
    ss_line.Select acSelectionSetAll ', , , line_code, line_value
      For Each ent In ss_line
'            ent.color = acGreen
            If ent.ObjectName = "AcadLWPolyline" Then
                Dim PL2D() As Double
                Dim count As Integer
                Dim ent2D As AcadLWPolyline
                Set ent2D = ent
                ent.color = acGreen
                count = (UBound(ent2D.Coordinates) + 1) / 2
                ReDim Preserve PL2D(cuunt * 2 - 1) As Double
                For j = 0 To UBound(ent2D.Coordinates) / 2
                  PL2D(j * 2) = ent2D.Coordinates(j * 2)
                  PL2D(j * 2 + 1) = ent2D.Coordinates(j * 2 + 1)
                Next
      
                Set PlineObj = AcadApp.ActiveDocument.ModelSpace.AddLightWeightPolyline(PL2D)
                PlineObj.Closed = ent2D.Closed
                PlineObj.color = ent2D.color
                PlineObj.Linetype = ent2D.Linetype
                PlineObj.Layer = ent2D.Layer
                PlineObj.LinetypeScale = ent2D.LinetypeScale
                PlineObj.Lineweight = ent2D.Lineweight
                ent2D.Delete
            End If
            ent.Update
      Next
'errexit:
'    ss_line.Clear
    ss_line.Delete

俺就一粗人 发表于 2014-4-20 21:38:57

我知道cass有相邻的复合线连接的功能,你可以尝试。多段线一般不都是三维的吗,不过z为0而已。如果你说的是二维多段线,那个属性比较特别,目前还没学习到那,我一般都是把二维多段线转成轻量线再处理呢。

倖福-吖-rao 发表于 2014-4-21 15:38:41

俺就一粗人 发表于 2014-4-20 21:38 static/image/common/back.gif
我知道cass有相邻的复合线连接的功能,你可以尝试。多段线一般不都是三维的吗,不过z为0而已。如果你说的是 ...

你有做过的实例吗?可以指点一下吗?

zzyong00 发表于 2014-4-27 22:59:04

可以调用cad 的命令pedit

chbddzx12 发表于 2015-2-24 18:35:16

可以用么?

pmq 发表于 2015-2-24 21:17:10

我做了一个多段线连接,只能一条一条的选择,把第一条多段线与第二条多段连接。选第一条需要连接的多段线的一端,再选择第二条多段线要连接的一端,把两条从段线连接成一条。

ljrljr907 发表于 2018-3-26 17:08:55

学习了谢谢!!

jikasurvey 发表于 2018-9-18 21:38:15

If ent.ObjectName = "AcadLWPolyline" Then

轻量多段线的 objectName 是 AcDbPolyline ,你把名字写错了。
班上就没有个叫 AcadLWPolyline 的同学,所以老师怎么喊都没人答应!
页: [1]
查看完整版本: 进来讨论一下如何合并多段线