cxf11991 发表于 2004-5-20 10:44:00

判断直线

判断一个选取的物体是不是一条直线,写了这样一个条件,为什么不可以!         objselectionset as acadselectionset
选取直线         
set objselectionset=thisdrawing.selectionsets.add("sset")
      thisdrawing.utility.prompt"请选择作为边界的直线:"
objselectionset.selectonscreen
判断直线
while objselectionset.item(0).objectname"acadline"
               objselectionset.item(0).delete
               thisdrawing.utility.prompt"没有选择任何对象,或者不是直线对象,请重新选择:"
         objselectionset.selectonscreen
wend
这是乐筑天下强力推荐的 " vba 开发精彩实例"第134页的一个判断语句
不过我照抄过来,就是用不起来,每次都不能正确的判断直线,高手指教,特急,要做毕业设计用!

雪山飞狐_lzh 发表于 2004-5-20 10:54:00

直接用过滤器                       Dim ft(0) As Integer, fd(0)
                       ft(0) = 0: fd(0) = "Line"
                       ss.SelectOnScreen ft, fd

cxf11991 发表于 2004-5-20 11:01:00

过滤器是放在哪个语句里的啊??
帮我写一个判断语句,谢谢!!!
还有怎样移动一个选择好的物体:选择好了一个选择集,和移动基点,是用什么语句把这个选择集,按照这个基点,全部移动到另一个基点上,!
这两个问题是我毕业设计中我最搞不清楚的,谢谢指教

雪山飞狐_lzh 发表于 2004-5-20 11:05:00

过滤器不用判断语句,它只会选择过滤器指定条件的对象
ft(0) = 0: fd(0) = "Line"
表示只选择直线
可以直接调用“Move”命令移动选择集,或用
For Each i in ss
i.move p1,p2
next i

cxf11991 发表于 2004-5-20 11:05:00

谢谢,选取过滤直线可以了,呵呵!!!
不知道书上为什么错了,让我郁闷了很久!

雪山飞狐_lzh 发表于 2004-5-20 11:08:00

while objselectionset.item(0).objectname"acadline"
这里应该是
while objselectionset.item(0).objectname"AcDbLine"

cxf11991 发表于 2004-5-20 11:13:00

我也想到了用acdbline
不过效果还是不好,可能有错误,我试过了
不如过滤器好

cxf11991 发表于 2004-5-20 11:31:00

太感谢了,我也能移动物体了,呵呵!
就差一点了,在请教一下!
接着刚才移动之后,怎么自动剪切移动后相交的直线!
我的思路是判断相交点,不过我不知道怎么提取一条直线的方程,, 或者您有什么更好的方法思路,提点我一下,写上用什么语句!
在次感谢!!!!!!!!!!!!!!!!!
说实话导师都怎么不懂的,所以只有麻烦您了

雪山飞狐_lzh 发表于 2004-5-20 11:56:00

自动剪切移动后相交的直线?有条件么,最好有个图说明一下
以前的帖子里有介绍直线剪切的问题,你搜搜

cxf11991 发表于 2004-5-20 12:09:00

刚才我出现一个问题,就是!
我要两次选取物体,就是说创建两个选择集!
但是这样两个选择集有冲突,,因为我的程序里会把上次的选择集合清空!
如:i as integer: number as integer
'i = 0
        'number = ThisDrawing.SelectionSets.Count
'While i < number
        'Set objselectionset = ThisDrawing.SelectionSets.Item(0)
        'objselectionset.Delete
        'i = i + 1
        'Wend
我想知道,能不能在安全创建一次选择集后,在安全创建一个不同的选择集,而不冲突
页: [1]
查看完整版本: 判断直线