lisp 多段线转面域_晓东CAD家园-论坛-晓东工具箱、编程申请-[编程申请]:批量面域转成闭合多段线!!!!-批量面域转成闭合多段线!!!! - Powered by Discuz!...

'将多个直线连成一条轻质多段线

Public Sub joinpoly(reg As AcadRegion)

reg.Explode

On Error Resume Next

Dim sset As AcadSelectionSet

If Not IsNull(ThisDrawing.SelectionSets.Item("joinpoly")) Then

Set sset = ThisDrawing.SelectionSets.Item("joinpoly")

sset.Delete

End If

Set sset = ThisDrawing.SelectionSets.Add("joinpoly")

Dim gpcode(1) As Integer

Dim datavalue(1) As Variant

gpcode(0) = 0

gpcode(1) = 8

datavalue(0) = "line"

datavalue(1) = reg.Layer

sset.Select acSelectionSetAll, , , gpcode, datavalue

Dim det As String

det = axSSet31spEnts(sset)

sset.Clear

ThisDrawing.SendCommand "_PEDIT" & vbCr & "M" & vbCr & det & vbCr & vbCr & "J" & vbCr & vbCr & vbCr

gpcode(0) = 0

gpcode(1) = 8

datavalue(0) = "LWPOLYLINE"

datavalue(1) = reg.Layer

sset.Select acSelectionSetAll, , , gpcode, datavalue

det = axSSet31spEnts(sset)

sset.Delete

ThisDrawing.SendCommand "_PEDIT" & vbCr & "M" & vbCr & det & vbCr & vbCr & "J" & vbCr & vbCr & vbCr '用 - pe方法

End Sub

Public Function axSSet31spEnts(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 = 0 To sset.Count - 1

entHandle = sset.Item(i).Handle

strEnts = strEnts & vbCr & "( handent" & Chr(34) & entHandle & Chr(34) & ")"

Next i

End If

axSSet31spEnts = strEnts

End Function

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值