CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2019 开发者帮助

AddMInsertBlock 方法 (ActiveX)

2024-5-18 17:51| 发布者: admin| 查看: 98| 评论: 0|原作者: admin|来自: AutoCAD

AddMInsertBlock 方法 (ActiveX)

插入块数组。

支持的平台:仅限 Windows

签名

VBA:

RetVal = object.AddMInsertBlock(InsertionPoint, Name, XScale, YScale, ZScale, Rotation, NumRows, NumColumns, RowSpacing, ColumnSpacing [, Password])
对象

类型:模型空间纸空间

此方法应用到的对象。

插入点

访问:仅输入

类型:变体(双打的三元素阵列)

插入块数组的 3D WCS 坐标。

名字

访问:仅输入

类型:字符串

. 的名称MInsertBlock

注意:在插入过程中,不能在名称前面加上星号来分隔块的对象,就像使用标准块一样。MInsertBlock
XScale的

访问:仅输入

类型:

X 比例因子。

YScale(英语:YScale)

访问:仅输入

类型:

Y 比例因子。

ZScale(ZScale)

访问:仅输入

类型:

Z 比例因子。

旋转

访问:仅输入

类型:

以弧度为单位的旋转角度。

NumRows(数字行)

访问:仅输入

类型:

一个正整数,表示数组的行数。

NumColumns

访问:仅输入

类型:

一个正整数,表示数组的列数。

行间距

访问:仅输入

类型:

数组行之间的距离。

列间距

访问:仅输入

类型:

数组列之间的距离。

密码

访问:仅输入

类型:变体

打开和插入图形所需的密码。

返回值 (RetVal)

类型:MInsertBlock

新创建的块数组。

言论

下图显示了插入的块的数组。



原始块



插入块的数组

例子

VBA:

Sub Example_AddMInsertBlock()
    ' This example creates a new Block in the current drawing, adds a
    ' Circle object to the new block, and uses the newly created block
    ' to create a rectangular array of block references using AddMInsertBlock
    
    Dim circleObj As AcadCircle
    Dim centerPoint(0 To 2) As Double, InsertPoint(0 To 2) As Double
    Dim radius As Double
    Dim newMBlock As AcadMInsertBlock
    Dim newBlock As AcadBlock
    
    ' Define the Circle object that will be inserted into the block
    centerPoint(0) = 0: centerPoint(1) = 0: centerPoint(2) = 0
    InsertPoint(0) = 1: InsertPoint(1) = 1: InsertPoint(2) = 0
    radius = 0.5
    
    ' Create a new block to hold the Circle object
    Set newBlock = ThisDrawing.Blocks.Add(centerPoint, "CBlock")
    
    ' Add the Circle object to the new block object
    Set circleObj = ThisDrawing.Blocks("CBlock").AddCircle(centerPoint, radius)
    
    ' Create a rectangular array of Circles using the new block containing the Circle
    ' and the AddMInsertBlock method
    Set newMBlock = ThisDrawing.ModelSpace.AddMInsertBlock(InsertPoint, "CBlock", 1, 1, 1, 1, 2, 2, 1, 1)
        
    ThisDrawing.Application.ZoomAll
    
    MsgBox "A rectangular array has been created from the original block."

End Sub

可视化 LISP:

(vl-load-com)
(defun c:Example_AddMInsertBlock()
    ;; This example creates a new Block in the current drawing, adds a
    ;; Circle object to the new block, and uses the newly created block
    ;; to create a rectangular array of block references using AddMInsertBlock
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))
    
    ;; Define the Circle object that will be inserted into the block
    (setq centerPoint (vlax-3d-point 0 0 0)
          InsertPoint (vlax-3d-point 1 1 0)
          radius 0.5)
    
    ;; Create a new block to hold the Circle object
    (setq blocks (vla-get-Blocks doc))
    (setq newBlock (vla-Add blocks centerPoint "CBlock"))
    
    ;; Add the Circle object to the new block object
    (setq circleObj (vla-AddCircle newBlock centerPoint radius))
    
    ;; Create a rectangular array of Circles using the new block containing the Circle
    ;; and the AddMInsertBlock method
    (setq modelSpace (vla-get-ModelSpace doc))
    (setq newMBlock (vla-AddMInsertBlock modelSpace InsertPoint "CBlock" 1 1 1 1 2 2 1 1))
        
    (vla-ZoomAll acadObj)
    
    (alert "A rectangular array has been created from the original block.")
)

路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2025-1-19 07:27

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部