进来讨论一下如何合并多段线
小弟刚编完一个软件,是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
我知道cass有相邻的复合线连接的功能,你可以尝试。多段线一般不都是三维的吗,不过z为0而已。如果你说的是二维多段线,那个属性比较特别,目前还没学习到那,我一般都是把二维多段线转成轻量线再处理呢。 俺就一粗人 发表于 2014-4-20 21:38 static/image/common/back.gif
我知道cass有相邻的复合线连接的功能,你可以尝试。多段线一般不都是三维的吗,不过z为0而已。如果你说的是 ...
你有做过的实例吗?可以指点一下吗? 可以调用cad 的命令pedit 可以用么? 我做了一个多段线连接,只能一条一条的选择,把第一条多段线与第二条多段连接。选第一条需要连接的多段线的一端,再选择第二条多段线要连接的一端,把两条从段线连接成一条。 学习了谢谢!! If ent.ObjectName = "AcadLWPolyline" Then
轻量多段线的 objectName 是 AcDbPolyline ,你把名字写错了。
班上就没有个叫 AcadLWPolyline 的同学,所以老师怎么喊都没人答应!
页:
[1]