明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2426|回复: 9

哪位高手有CAD对象按坐标排序的代码?

[复制链接]
发表于 2018-1-23 11:58 | 显示全部楼层 |阅读模式
5明经币
我自己用VB做了一个文字排列并调整间距的小程序,直接对选择集内对象逐一按坐标进行移动,会将原有顺序打乱 ,哪位高手有选择集内对象按坐标排序的代码(或者能够解决这个问题的方法),能否共享一下,非常感谢!

最佳答案

查看完整内容

http://bbs.mjtd.com/thread-111364-1-1.html
发表于 2018-1-23 11:58 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2018-1-23 12:11 | 显示全部楼层
自己在教程里面找到了,感谢大家!!!
回复

使用道具 举报

 楼主| 发表于 2018-1-23 16:52 | 显示全部楼层
zzyong00 发表于 2018-1-23 16:34
http://bbs.mjtd.com/thread-111364-1-1.html

虽然我已经在《AutoCAD VBA二次开发教程》中找到类似方法了,但仍然感谢您的回答,感谢您的原代码!!!
回复

使用道具 举报

 楼主| 发表于 2018-1-23 17:14 | 显示全部楼层
zzyong00 发表于 2018-1-23 16:34
http://bbs.mjtd.com/thread-111364-1-1.html

程序大概看了一下,没怎么看明白,怎么感觉不是我想要的效果呢(可能是我水平有限,或者没说明清楚问题吧)。我要的是把文字对象排序后,移动文字,保证其初始顺序不变。如果你的函数可以实现,请告诉我一下我的选择集怎么和你的XY_soft函数(函数需要的参数是数组,我是不是要先把选择集转换成数组?)结合起来,谢谢了!
回复

使用道具 举报

 楼主| 发表于 2018-1-23 17:21 | 显示全部楼层
zzyong00 发表于 2018-1-23 16:34
http://bbs.mjtd.com/thread-111364-1-1.html

我是要把选择集中的对象按坐标排序,然后对其进行移动,并同时调整间距,而不破坏原始先后顺序,即按插入点自动对齐。你的函数能实现吗?
回复

使用道具 举报

 楼主| 发表于 2018-1-23 17:26 | 显示全部楼层
本帖最后由 dong20030432 于 2018-1-23 17:31 编辑

这是我的代码,要实现文字按行对齐,即所有文字y坐标相同, x坐标等间距分布,帮忙看下怎么能保证文字对象初始相对顺序不乱序,谢谢!
  1. On Error Resume Next
  2.     If Not IsNull(acadapp.ActiveDocument.SelectionSets.Item("ss1")) Then
  3.     Set sset = acadapp.ActiveDocument.SelectionSets.Item("ss1")
  4.     sset.Delete
  5.     End If
  6.     Set sset = acadapp.ActiveDocument.SelectionSets.Add("ss1")
  7.     Call CreateSSetFilter(fType, fDate, 0, "text")
  8.     AppActivate acadapp.Caption
  9.     sset.SelectOnScreen fType, fDate
  10.     Call ShowSelectionSetCrips(sset)
  11.     For i = 0 To sset.Count - 1
  12.     If sset.Count = 1 Then Exit Sub
  13.         If sset.Count > 1 Then
  14.             If i = 0 Then
  15.             myPoint = sset.Item(0).InsertionPoint
  16.             End If
  17.             If i > 0 Then
  18.             myPoint = sset.Item(i - 1).InsertionPoint
  19.             sset.Item(i).GetBoundingBox pMin, pMax
  20.             dyPoint = sset.Item(i).InsertionPoint
  21.             xPoint(0) = myPoint(0) + Val(m.Text4.Text) + pMax(0) - pMin(0)
  22.             xPoint(1) = myPoint(1)
  23.             xPoint(2) = dyPoint(2)
  24.             sset.Item(i).Move dyPoint, xPoint
  25.             sset.Item(i).Update
  26.             End If
  27.         End If
  28.     Next
  29.     sset.Delete

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

发表于 2018-1-23 23:07 | 显示全部楼层
我的代码就是“对象按坐标排序的代码”

点评

http://bbs.mjtd.com/thread-176330-1-1.html 能给我看看这是怎么回事吗  发表于 2018-1-24 09:52
回复

使用道具 举报

 楼主| 发表于 2018-1-24 08:34 | 显示全部楼层
zzyong00 发表于 2018-1-23 23:07
我的代码就是“对象按坐标排序的代码”

能帮忙看下你的代码和我的代码怎么组合成一段完整代码吗?我初学,不是很明白,麻烦您了!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-11 10:43 , Processed in 0.183028 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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