yicol 发表于 2003-6-8 16:32:00

怎样去获取一个对象的相关属性[原创]

比如说:在一段程序里,
要获得一文字的高度,怎么样出现拾取框让用户去选择任意文字
这个拾取框的单选和多选怎么控制

mccad 发表于 2003-6-8 17:30:00

你需要看看对象模型

yicol 发表于 2003-6-8 17:48:00

请说明一下了,我用了,但都是多选的

Sub Ch4_AddToASelectionSet()
' 创建新的选择集
Dim sset As AcadSelectionSet
Set sset = ThisDrawing.SelectionSets.Add("SS1")

' 提示用户选择对象并将它们添加到选择集中。
' 要完成选择,按回车。
sset.SelectOnScreen

' 在选择集中循环并将每一对象的颜色改为蓝色。
Dim entry As AcadEntity
For Each entry In sset
entry.Color = acBlue
entry.Update
Next entry
End Sub

topirol 发表于 2003-6-8 18:08:00

看看这样



Dim retent As Object
Dim pnt As Variant
Thisdrawing.Utility.GetEntity retent, ont, "提示内容"

选择的对象赋值给retent

yicol 发表于 2003-6-8 18:45:00

可是可以,但有一个问题不能解决

当你没有点到对象时就会报错
如果用出错处理,也就是说你运行一次程序,就一定要选中对象,要不然
就要重新运行。我想这样,当你没有选中对象时可以再选 ,,
可不可以呀

mccad 发表于 2003-6-8 19:32:00

你需要在出错处理时让用户重新选择

yicol 发表于 2003-6-8 20:07:00

但如果要是用户取消了呢,怎么区分这个空值

那用户一旦运行了这个程序,就不能中途取消了,
这样也不完美吧

mccad 发表于 2003-6-8 20:22:00

除了通过出错编号来区分外,还需要根据命令行提示区分

在未选择到对象、或按了回车、或按了空格、或按了取消,出错编号都是-2147352567。
但命令行提示有些不同,如果按了取消则命令行多了*取消*这样的字符(注册如果英文版则为*Cancel*)。所以通过使用
ThisDrawing.GetVariable("lastprompt")
来取得命令行的最后一行就可以确认用户的操作了。

yicol 发表于 2003-6-9 11:35:00

ok

好好好
页: [1]
查看完整版本: 怎样去获取一个对象的相关属性[原创]