CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ActiveX 开发指南

关于插入块 (VBA/ActiveX)

2023-1-4 19:50| 发布者: admin| 查看: 774| 评论: 0|来自: AutoCAD

摘要: 可以使用 InsertBlock 方法将块或整个图形插入到当前图形中。

您可以使用该方法将块或整个图形插入到当前图形中。InsertBlock

该方法采用六个值作为输入:插入点、要插入的块或图形的名称、X 比例因子、Y 比例因子、Z 比例因子和旋转角度。InsertBlock

将整个图形插入到另一个图形中时,AutoCAD 会将插入的图形视为任何其他块参照。后续插入将引用具有不同位置、比例和旋转设置的块定义(其中包含块的几何描述)。如果在插入原始图形后对其进行更改,则更改对插入的块没有影响。如果希望插入的块反映对原始图形所做的更改,可以通过重新插入原始图形来重定义块。这可以通过该方法完成。InsertBlock

如果将图形作为块插入,则文件名将自动用作块的名称。创建块后,可以使用 Name 属性更改块的名称。

默认情况下,AutoCAD 使用坐标 (0, 0, 0) 作为插入图形的基点。可以通过打开原始图形并使用该方法为 INSBASE 系统变量指定不同的插入基点来更改图形的基点。AutoCAD 在下次插入图形时使用新基点。SetVariable

如果插入的图形包含对象,则这些对象不包括在当前图形的块定义中。要在另一个图形中使用对象,请打开原始图形并使用该方法将对象定义为块。可以将图形插入到图纸空间或模型空间中的另一个图形中。PaperSpacePaperSpaceAddPaperSpace

无法迭代块参照以查找组成它的原始对象。但是,您可以迭代原始块定义,也可以将块参照分解为其原始组件。

您还可以使用该方法插入块数组。此方法不会像 thew 那样在图形中插入单个块,而是插入指定块的数组。此方法返回一个对象。AddMInsertBlockInsertBlockMInsertBlock

定义块并将块插入到图形中

此示例定义一个块,并在块定义中添加一个圆。然后,它将块作为块参照插入到图形中。

Sub Ch10_InsertingABlock()
 ' Define the block
 Dim blockObj As AcadBlock
 Dim insertionPnt(0 To 2) As Double
 insertionPnt(0) = 0
 insertionPnt(1) = 0
 insertionPnt(2) = 0
 Set blockObj = ThisDrawing.Blocks.Add _
 (insertionPnt, "CircleBlock")

 ' Add a circle to the block
 Dim circleObj As AcadCircle
 Dim center(0 To 2) As Double
 Dim radius As Double
 center(0) = 0
 center(1) = 0
 center(2) = 0
 radius = 1
 Set circleObj = blockObj.AddCircle(center, radius)

 ' Insert the block
 Dim blockRefObj As AcadBlockReference
 insertionPnt(0) = 2
 insertionPnt(1) = 2
 insertionPnt(2) = 0
 Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock _
 (insertionPnt, "CircleBlock", 1#, 1#, 1#, 0)
 ZoomAll
 MsgBox "The circle belongs to " & blockRefObj.ObjectName
End Sub
注意:插入后,外部文件的 WCS 与当前图形中当前用户坐标系 (UCS) 的XY平面平行对齐。因此,外部文件中的块通过在插入之前设置 UCS 以空间中的任何方向插入。

路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-5-11 17:41

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部