Skip to content
On this page

图块

我们可以通过实例化 McDbBlockReference() 对象创建图块。图块就是多个图形集合成的一个对象,可以作为一个整体进行移动、复制或多次在图形中插入。在 mxcad 中可结合 McDbBlockTableRecord() 图块记录对象自定义创建图块,通过设置图块的基点 origin 、添加图块记录 appendAcDbEntity() 以及图块位置 position 等多种属性来定义图块。

点击 McDbBlockReference()McDbBlockTableRecord() 查看详细属性和方法说明。

ts
import { MxCpp, McDbBlockTableRecord, McDbBlockReference, McDbLine, McCmColor } from "mxcad"

let mxcad = MxCpp.getCurrentMxCAD();
// 先从数据库中得到图块表
let blkTable =  mxcad.getDatabase().getBlockTable();
// 将一个新的图块记录添加到图块表中
let blkRecId = blkTable.add(new McDbBlockTableRecord());

// 根据ObjectId再次得到刚刚添加的图块记录
let blkTableRecord:McDbBlockTableRecord = blkRecId.getMcDbBlockTableRecord()

// 添加两条线段再图块记录中 这里每条线段的具体属性比如开始点和结束点自行赋值
const line = new McDbLine(80, 80, 0, -80, -80, 0)
line.trueColor = new McCmColor(255, 0, 0)
const line1 = new McDbLine(-80, 80, 0, 80, -80, 0)
blkTableRecord.appendAcDbEntity(line);
blkTableRecord.appendAcDbEntity(line1);

// 设置图块的基点 一般是包围盒内的点, 可以任意指定
blkTableRecord.origin = new McGePoint3d(0,0,0);

// 实例化块参照 这里需要设置我们刚刚添加图块记录得到的ObjectId
let blkRef = new McDbBlockReference();
blkRef.blockTableRecordId = blkRecId;
// 最后设置位置 渲染图块
blkRef.position = new McGePoint3d(0,0,0);

mxcad.drawEntity(blkRef);