关于在对象层次结构中引用对象 (ActiveX)
您可以直接引用对象,也可以通过用户定义的变量引用对象。若要直接引用对象,请将对象包含在调用层次结构中。
例如,以下语句在模型空间中添加一行。请注意,层次结构以 开头,转到对象,然后调用该方法:ThisDrawingModelSpaceAddLine
- AutoLISP
-
(setq acadObj (vlax-get-acad-object)
doc (vla-get-ActiveDocument acadObj))
(setq startPoint (vlax-3d-point 0 0 0)
endPoint (vlax-3d-point 30 20 0))
(setq lineObj (vla-AddLine (vla-get-ModelSpace doc) startPoint endPoint))
- VBA(仅限 AutoCAD)
-
Dim startPoint(0 To 2) As Double, endPoint(0 To 2) As Double
Dim LineObj as AcadLine
startPoint(0) = 0: startPoint(1) = 0: startPoint(2) = 0
endPoint(0) = 30: endPoint(1) = 20: endPoint(2) = 0
Set LineObj = ThisDrawing.ModelSpace.AddLine(startPoint,endPoint)
若要通过用户定义的变量引用对象,请将变量定义为所需类型,然后将变量设置为适当的对象。例如,以下代码定义一个类型为 () 的变量,并将该变量设置为等于当前模型空间:moSpaceAcadModelSpace
- AutoLISP
-
(setq acadObj (vlax-get-acad-object)
doc (vla-get-ActiveDocument acadObj)
moSpace (vla-get-ModelSpace doc))
- VBA(仅限 AutoCAD)
-
Dim moSpace As AcadModelSpace
Set moSpace = ThisDrawing.ModelSpace
然后,以下语句使用用户定义的变量向模型空间添加一行:
- AutoLISP
-
(setq startPoint (vlax-3d-point 0 0 0)
endPoint (vlax-3d-point 30 20 0))
(setq lineObj (vla-AddLine moSpace startPoint endPoint))
- VBA(仅限 AutoCAD)
-
Dim startPoint(0 To 2) As Double, endPoint(0 To 2) As Double
Dim LineObj as AcadLine
startPoint(0) = 0: startPoint(1) = 0: startPoint(2) = 0
endPoint(0) = 30: endPoint(1) = 20: endPoint(2) = 0
Set LineObj = moSpace.AddLine(startPoint,endPoint)
检索模型空间中的第一个实体
下面的示例返回模型空间中的第一个实体对象。类似的代码可以对纸张空间实体执行相同的操作。请注意,所有图形对象都可以定义为对象:AcadEntity
- AutoLISP
-
(vl-load-com)
(defun c:Ch2_FindFirstEntity()
(setq acadObj (vlax-get-acad-object)
doc (vla-get-ActiveDocument acadObj)
moSpace (vla-get-ModelSpace doc))
(if (> (vla-get-Count moSpace) 0)
(progn
(setq entity (vla-Item moSpace 0))
(alert (strcat (vla-get-ObjectName entity)
" is the first entity in model space."
))
)
(alert "There are no objects in model space.")
)
)
- VBA(仅限 AutoCAD)
-
Sub Ch2_FindFirstEntity()
' This example returns the first entity in model space
On Error Resume Next
Dim entity As AcadEntity
If ThisDrawing.ModelSpace.count <> 0 Then
Set entity = ThisDrawing.ModelSpace.Item(0)
MsgBox entity.ObjectName + _
" is the first entity in model space."
Else
MsgBox "There are no objects in model space."
End If
End Sub
|