dong20030432 发表于 2018-1-23 11:58:55

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

我自己用VB做了一个文字排列并调整间距的小程序,直接对选择集内对象逐一按坐标进行移动,会将原有顺序打乱 ,哪位高手有选择集内对象按坐标排序的代码(或者能够解决这个问题的方法),能否共享一下,非常感谢!

zzyong00 发表于 2018-1-23 11:58:56

http://bbs.mjtd.com/thread-111364-1-1.html

dong20030432 发表于 2018-1-23 12:11:17

自己在教程里面找到了,感谢大家!!!

dong20030432 发表于 2018-1-23 16:52:57

zzyong00 发表于 2018-1-23 16:34
http://bbs.mjtd.com/thread-111364-1-1.html

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

dong20030432 发表于 2018-1-23 17:14:23

zzyong00 发表于 2018-1-23 16:34
http://bbs.mjtd.com/thread-111364-1-1.html

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

dong20030432 发表于 2018-1-23 17:21:57

zzyong00 发表于 2018-1-23 16:34
http://bbs.mjtd.com/thread-111364-1-1.html

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

dong20030432 发表于 2018-1-23 17:26:26

本帖最后由 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:30

我的代码就是“对象按坐标排序的代码”

dong20030432 发表于 2018-1-24 08:34:32

zzyong00 发表于 2018-1-23 23:07
我的代码就是“对象按坐标排序的代码”

能帮忙看下你的代码和我的代码怎么组合成一段完整代码吗?我初学,不是很明白,麻烦您了!
页: [1]
查看完整版本: 哪位高手有CAD对象按坐标排序的代码?