public acadobj as acadobject
public line as acadline
public sub auto()
dim startpt1 as variant
dim startpt2 as variant
set acadobj=thisdrawing.activedocument.modelspace.item(0)
set line=thisdrawing.activedocument.modelspace.item(0)
startpt1=line.startpoint(0)
startpt2=line.startpoint(1)
end sub
VB环境下,其中thisdrawing已是创建过的AutoCAD应用。
为什么我一将第1层设为当前层,在调用提取属性函数,提取的还是第0层的对象属性
使用ModelSpace枚举的实体都是在所有的层上,而跟当前层的设置没有关系,如果只对某一层的实体进行操作,要跟据实体的Layer属性来判断是哪一个层的。还有一种方法是使用选择集,当然还有过滤机制。具体的可以看帮助文件。下面是选择集的一个用法。之后可以使用像sstext.Item(0)来访问选择集中的实体。
Sub Ch4_FilterLayer()
Dim sstext As AcadSelectionSet
Dim FilterType(0) As Integer
Dim FilterData(0) As Variant
Set sstext = ThisDrawing.SelectionSets.Add("SS2")
FilterType(0) = 8 '代表层的组码
FilterData(0) = "1" '层的名称
sstext.SelectOnScreen FilterType, FilterData
End Sub