哪位高手有CAD对象按坐标排序的代码?
我自己用VB做了一个文字排列并调整间距的小程序,直接对选择集内对象逐一按坐标进行移动,会将原有顺序打乱 ,哪位高手有选择集内对象按坐标排序的代码(或者能够解决这个问题的方法),能否共享一下,非常感谢!http://bbs.mjtd.com/thread-111364-1-1.html 自己在教程里面找到了,感谢大家!!! zzyong00 发表于 2018-1-23 16:34
http://bbs.mjtd.com/thread-111364-1-1.html
虽然我已经在《AutoCAD VBA二次开发教程》中找到类似方法了,但仍然感谢您的回答,感谢您的原代码!!! zzyong00 发表于 2018-1-23 16:34
http://bbs.mjtd.com/thread-111364-1-1.html
程序大概看了一下,没怎么看明白,怎么感觉不是我想要的效果呢(可能是我水平有限,或者没说明清楚问题吧)。我要的是把文字对象排序后,移动文字,保证其初始顺序不变。如果你的函数可以实现,请告诉我一下我的选择集怎么和你的XY_soft函数(函数需要的参数是数组,我是不是要先把选择集转换成数组?)结合起来,谢谢了! zzyong00 发表于 2018-1-23 16:34
http://bbs.mjtd.com/thread-111364-1-1.html
我是要把选择集中的对象按坐标排序,然后对其进行移动,并同时调整间距,而不破坏原始先后顺序,即按插入点自动对齐。你的函数能实现吗? 本帖最后由 dong20030432 于 2018-1-23 17:31 编辑
zzyong00 发表于 2018-1-23 16:34
http://bbs.mjtd.com/thread-111364-1-1.html
这是我的代码,要实现文字按行对齐,即所有文字y坐标相同, x坐标等间距分布,帮忙看下怎么能保证文字对象初始相对顺序不乱序,谢谢!
On Error Resume Next
If Not IsNull(acadapp.ActiveDocument.SelectionSets.Item("ss1")) Then
Set sset = acadapp.ActiveDocument.SelectionSets.Item("ss1")
sset.Delete
End If
Set sset = acadapp.ActiveDocument.SelectionSets.Add("ss1")
Call CreateSSetFilter(fType, fDate, 0, "text")
AppActivate acadapp.Caption
sset.SelectOnScreen fType, fDate
Call ShowSelectionSetCrips(sset)
For i = 0 To sset.Count - 1
If sset.Count = 1 Then Exit Sub
If sset.Count > 1 Then
If i = 0 Then
myPoint = sset.Item(0).InsertionPoint
End If
If i > 0 Then
myPoint = sset.Item(i - 1).InsertionPoint
sset.Item(i).GetBoundingBox pMin, pMax
dyPoint = sset.Item(i).InsertionPoint
xPoint(0) = myPoint(0) + Val(m.Text4.Text) + pMax(0) - pMin(0)
xPoint(1) = myPoint(1)
xPoint(2) = dyPoint(2)
sset.Item(i).Move dyPoint, xPoint
sset.Item(i).Update
End If
End If
Next
sset.Delete
我的代码就是“对象按坐标排序的代码” zzyong00 发表于 2018-1-23 23:07
我的代码就是“对象按坐标排序的代码”
能帮忙看下你的代码和我的代码怎么组合成一段完整代码吗?我初学,不是很明白,麻烦您了!
页:
[1]