明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3380|回复: 7

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

[复制链接]
发表于 2014-4-18 17:54 | 显示全部楼层 |阅读模式
小弟刚编完一个软件,是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 | 显示全部楼层
我知道cass有相邻的复合线连接的功能,你可以尝试。多段线一般不都是三维的吗,不过z为0而已。如果你说的是二维多段线,那个属性比较特别,目前还没学习到那,我一般都是把二维多段线转成轻量线再处理呢。
 楼主| 发表于 2014-4-21 15:38 | 显示全部楼层
俺就一粗人 发表于 2014-4-20 21:38
我知道cass有相邻的复合线连接的功能,你可以尝试。多段线一般不都是三维的吗,不过z为0而已。如果你说的是 ...

你有做过的实例吗?可以指点一下吗?
发表于 2014-4-27 22:59 | 显示全部楼层
可以调用cad 的命令pedit
发表于 2015-2-24 18:35 | 显示全部楼层
可以用么?
发表于 2015-2-24 21:17 | 显示全部楼层
我做了一个多段线连接,只能一条一条的选择,把第一条多段线与第二条多段连接。选第一条需要连接的多段线的一端,再选择第二条多段线要连接的一端,把两条从段线连接成一条。
发表于 2018-3-26 17:08 | 显示全部楼层
学习了谢谢!!
发表于 2018-9-18 21:38 | 显示全部楼层
If ent.ObjectName = "AcadLWPolyline" Then

轻量多段线的 objectName 是 AcDbPolyline ,你把名字写错了。
班上就没有个叫 AcadLWPolyline 的同学,所以老师怎么喊都没人答应!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-26 22:21 , Processed in 0.260328 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表