明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2046|回复: 4

请问Coordinates可以更改一组坐标值吗?(附源码)

[复制链接]
发表于 2010-4-20 18:33:00 | 显示全部楼层 |阅读模式

请问Coordinates可以更改一组坐标值吗?我看vba帮助里说只能改一个坐标值,但我写了程序怎么能一次改好多坐标值啊?不知道有没有问题

Sub LWPolyLineCoors()

  On Error Resume Next

  ThisDrawing.SelectionSets("SS1").Delete

  Dim sSet As AcadSelectionSet
  Dim objLWPolyLine As AcadLWPolyline
  Dim FilterType(0) As Integer
  Dim FilterData(0) As Variant
 
  FilterType(0) = 0
  FilterData(0) = "LWPolyLine"

  Set sSet = ThisDrawing.SelectionSets.Add("SS1")
 
  sSet.SelectOnScreen FilterType, FilterData
 
  Dim oldCoors As Variant
  Dim newCoors As Variant
  Dim i As Integer
  For Each objLWPolyLine In sSet
    oldCoors = objLWPolyLine.Coordinates
    For i = 0 To UBound(oldCoors) Step 2
        MsgBox "原多义线坐标X=" & oldCoors(i) & "  Y=" & oldCoors(i + 1)
    Next i
   
    ReDim Preserve oldCoors(7)
   
    oldCoors(0) = 0
    oldCoors(1) = 0
    oldCoors(2) = 1
    oldCoors(3) = 1
    oldCoors(4) = 2
    oldCoors(5) = 2
    oldCoors(6) = 1
    oldCoors(7) = 0
   
    objLWPolyLine.Coordinates = oldCoors
   
  Next objLWPolyLine
 
  ThisDrawing.Regen True
 
  sSet.Delete
 
End Sub

发表于 2010-4-20 22:22:00 | 显示全部楼层
帮助中已经注明,不能改变顶点数,只能改各点的坐标值
 楼主| 发表于 2010-4-21 06:52:00 | 显示全部楼层

帮助中说“设置多段线的坐标时,如果用户提供了少于对象当前拥有的坐标数时,多段线将被缩短。任何用于被删除了的顶点上的拟合点也将被删除。如果用户提供了多于对象当前拥有的坐标数时,增加的顶点将被追加到多段线上。”

这也就是说,如果通过提供多于或少于对象当前拥有的坐标数的方法可以实现顶点数的改变!

在上面所发的源码里已经得到验证是可行的。

如果数据中有拟合点可能会有问题!请问mccad我的理解对否?

 楼主| 发表于 2010-4-23 20:11:00 | 显示全部楼层
怎么没人理会呢??高手给点建议
发表于 2010-4-23 23:25:00 | 显示全部楼层

不好意思,帮助中有自相矛盾的地方。

确实是可以同时修改多个顶点。

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

本版积分规则

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

GMT+8, 2024-11-26 01:29 , Processed in 0.149343 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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