明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5131|回复: 8

vba cad合并多段线

[复制链接]
发表于 2012-5-10 09:54:30 | 显示全部楼层 |阅读模式
在网上搜集合并多段线的代码,运行了,还是合并不了,估计问题出在选择对象上,希望大家指导下:
' 转换多个图元的函数
Public Function axSSet2lspEnts(ByVal SSet As AcadSelectionSet) As String
    If SSet.Count = 0 Then Exit Function

    Dim entHandle As String
    Dim strEnts As String
    entHandle = SSet.Item(0).Handle
    strEnts = "(handent " & Chr(34) & entHandle & Chr(34) & ")"

    If SSet.Count > 1 Then
        Dim i As Integer
        For i = 1 To SSet.Count - 1
            entHandle = SSet.Item(i).Handle
            strEnts = strEnts & vbCr & "(handent " & Chr(34) & entHandle & Chr(34) & ")"
        Next i
    End If

    axSSet2lspEnts = strEnts
End Function
' 连接多段线
Public Function EditPline(ByVal pt1 As Variant, ByVal pt2 As Variant) As AcadPolyline
On Error Resume Next
Dim det As Variant
Dim FilterType As Integer
Dim FilterData As Variant
FilterType = 0                                   '按类型选择
FilterData = "Polyline"

Dim SSet As AcadSelectionSet
    If Not IsNull(ThisDrawing.SelectionSets.Item("PLineSet")) Then
        Set SSet = ThisDrawing.SelectionSets.Item("PLineSet")
        SSet.Delete
    End If
    Set SSet = ThisDrawing.SelectionSets.Add("PLineSet")
SSet.Delete
    SSet.Select acSelectionSetCrossing, pt1, pt2, FilterType, FilterData

    det = axSSet2lspEnts(SSet)
    ' 使用SendCommand听后方法完成连接操作
    ThisDrawing.SendCommand "_PEDIT" & vbCr & "M" & vbCr & det & vbCr & "J" & vbCr & det & "0.000" & vbCr & vbCr
End Function

 楼主| 发表于 2012-5-11 15:10:42 | 显示全部楼层
自己顶一下咯
发表于 2012-5-11 16:26:55 | 显示全部楼层
strEnts = "(handent " & Chr(34) & entHandle & Chr(34) & ")"
strEnts = strEnts & vbCr & "(handent " & Chr(34) & entHandle & Chr(34) & ")" 转换过就是

strEnts = "(handent "    " entHandle "    ")"
strEnts = strEnts   回车   " (handent "   " entHandle"   ")   "
               "(handent "    " entHandle "    ")"  回车   " (handent "   " entHandle"   ")   "

是不是 "(handent "    " entHandle "    ")" 会是  " (  "handent "    " entHandle "    )" ?
 楼主| 发表于 2012-5-11 17:21:33 | 显示全部楼层
水平有限,没看懂是什么意思?
 楼主| 发表于 2012-5-11 17:24:03 | 显示全部楼层
crazylsp 发表于 2012-5-11 16:26
strEnts = "(handent " & Chr(34) & entHandle & Chr(34) & ")"
strEnts = strEnts & vbCr & "(handent "  ...

水平有限,没看懂是什么意思?
发表于 2012-5-11 17:24:07 | 显示全部楼层
关注
发表于 2013-1-10 13:24:45 | 显示全部楼层
用  ThisDrawing.SendCommand "_PEDIT"的方式只能合并首位重合的多段线.
发表于 2013-1-11 08:59:48 | 显示全部楼层
最后的晨露 该用户已被删除
发表于 2013-1-12 12:05:58 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 15:53 , Processed in 0.202542 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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