乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 33|回复: 1

[求助]急!!关于获取pline线偏移后的坐标问题

[复制链接]

110

主题

324

帖子

10

银币

中流砥柱

Rank: 25

铜币
764
发表于 2010-5-11 08:50:00 | 显示全部楼层 |阅读模式
'我想获取pline线偏移后的实体(pline)坐标;下面的代码怎么无法实现呢?
'请高手赐教,谢谢!!!!!!!
  Sub LinetoBOX2()
      Dim returnObj As AcadObject
      Dim sset As AcadSelectionSet
      Dim COOR As Variant
      
      Dim CoorL As Variant
      Dim CoorR As Variant
      
      Dim xtype1 As Variant
      Dim xdata1 As Variant
      
   
      Dim objPl As AcadPolyline
      Dim objPlL As AcadPolyline
      Dim objPlR As AcadPolyline
      
      Dim obj As AcadObject
      Dim basepnt As Variant
      Dim offsetObjL As Variant
      Dim offsetObjR As Variant
    On Error Resume Next
      If Not IsNull(ThisDrawing.SelectionSets.Item("this")) Then
        Set sset = ThisDrawing.SelectionSets.Item("this")
        sset.Delete
      End If
      
      Set sset = ThisDrawing.SelectionSets.Add("this")
     
     sset.SelectOnScreen
     If sset.Count = 0 Then Exit Sub
      
      Dim s As String
      Dim S2 As String
      Dim offsetval As Double
    For Each obj In sset
      MsgBox obj.ObjectName
      If obj.ObjectName = "AcDbPolyline" Then
         
                Set objPl = obj
                'If obj.ConstantWidth > 0 Then
               ' offsetval = obj.ConstantWidth
                    '向左偏移
                    offsetObjL(0) = objPl.Offset(1.0)
                    Set objPlL = offsetObjL(0)
                    CoorL = objPlL.Coordinates
                    
                     For i = 0 To UBound(CoorL) 'Step 3
                       s = s + Format(CoorL(i), "0.000") + "," '+ Format(CoorL(i + 1), "0.000") + Format(CoorL(i + 2), "0.000") + vbCrLf
                     Next i
                     '向右偏移
                    offsetObjR(0) = objPl.Offset(-1.0)
                    Set objPlR = offsetObjR(0)
                    
                     CoorR = objPlR.Coordinates
                     
                      For i = 0 To UBound(CoorR) 'Step 3
                       S2 = S2 + Format(CoorR(i), "0.000") + "," '+ Format(CoorR(i + 1), "0.000") + Format(CoorR(i + 2), "0.000") + vbCrLf
                     Next i
                   MsgBox s + vbCrLf + "*************************************" + vbCrLf + S2
                  
                   'ThisDrawing.SendCommand "huan" & vbCr
                   'ThisDrawing.SendCommand "(command " & """huan""" & " "")"
                End If
             End If
         Next
        sset.Clear
        
          MsgBox "数据处理完毕!", vbInformation
          sset.Delete
         Exit Sub
line:
        MsgBox Err.Description, vbCritical
      
  End Sub
回复

使用道具 举报

110

主题

324

帖子

10

银币

中流砥柱

Rank: 25

铜币
764
发表于 2010-5-11 13:48:00 | 显示全部楼层
  已解决,谢谢各位
把    Dim objPl As AcadPolyline
      Dim objPlL As AcadPolyline
      Dim objPlR As AcadPolyline
改为
Dim objPl As AcadLWPolyline
      Dim objPlL As AcadLWPolyline
      Dim objPlR As AcadLWPolyline
即可
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-1 12:29 , Processed in 0.520345 second(s), 57 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表