xxxtttxxx 发表于 2008-5-26 22:56:00

两个难题,请明总进来指导一下吧!

1、 SelectionSet.SelectOnScreen typeArray, dataArray 语句在运行过程中,能不能忘命令栏发送命令?
也就是用户开始选择对象,但是还没有选择完成的过程中,我希望在命令栏中发送" f ",实现栏选的功能.
2、 有一个带属性的块,属性文字显示为黄色,图层为0,如何修改这个块的属性文字的颜色和图层?
我发现通过blockref找到block,然后修改block中的所有对象,并不能修改blockref显示的属性文字的颜色和图层。
应该如何修改呢?

sailorcwx 发表于 2008-5-27 00:32:00

1.可以实现
2.不是不能修改,而是修改了没有显示出来,需要update或者regen

xxxtttxxx 发表于 2008-5-27 20:09:00

1. 请问如何实现?
2.修改完以后自动regen了,但是没有用。
双击属性看看属性文字的属性,仍然没有变化。
其实如果把这个属性块打碎,已经是修改过的了,但是不打碎,颜色和图层都没有变化。

xxxtttxxx 发表于 2008-5-27 20:23:00


不知道明总有没有遇到过类似问题呢?
请教。。。。

xxxtttxxx 发表于 2008-5-28 23:29:00

如果明总都没有遇到过这两个问题,那我就死心了。

mccad 发表于 2008-5-29 11:38:00

1.直接输入f后,就可以栏选了,与普通的选择对象是一样的操作。
2.属性块和属性块参照中,属性部分是在插入属性块后单独生成的,所以它们的特性在被单独修改过后,已经不能继承原属性块中的特性了。

sailorcwx 发表于 2008-5-29 11:48:00

Sub test()
Dim objBlockRef As AcadBlockReference
Dim varPoint As Variant
ThisDrawing.Utility.GetEntity objBlockRef, varPoint
Dim att As Variant
att = objBlockRef.GetAttributes
att(0).color = 1
End Sub
Sub test1()
On Error Resume Next
Dim filtertype(0) As Integer
Dim filterdata(0) As Variant
filtertype(0) = 0
filterdata(0) = "LINE"
Dim sset As AcadSelectionSet
Set sset = ThisDrawing.SelectionSets.Item("test")
sset.Delete
Set sset = ThisDrawing.SelectionSets.Add("test")
sset.SelectOnScreen filtertype, filterdata
End Sub

sailorcwx 发表于 2008-5-29 11:51:00




xxxtttxxx 发表于 2008-5-29 18:10:00


感谢明总和sailorcwx兄弟!
其实第一个问题我希望是程序“自动”会在cad的“选择对象”的提示后面加入f和回车,
sset.SelectOnScreen filtertype, filterdata
xxxx'一段代码能够sendcommand (“f”& vbcrlf)
这个看来希望不大,算了,还是手动输入f吧。
属性块中的颜色看来是直接对属性修改的。
再次感谢!
不知道sailorcwx兄用什么软件做的gif?

mccad 发表于 2008-5-29 19:41:00

那就用SelectByPolygon 方法,其中有acSelectionSetFence 模式,即是你想要的栏选方式。可惜点坐标不是手工选的,而是直接提供数组给它的。但也可以这样,先用画直线模拟选择过程,并把点的坐标用于该选择方法做为点数据。
页: [1]
查看完整版本: 两个难题,请明总进来指导一下吧!