mxcad_2d API 文档 / 2d / McDbDatabase
Class: McDbDatabase
2d.McDbDatabase
McDbDatabase 是 CAD 图纸数据库对象,承载图纸中所有数据和对象信息的总入口。
Description
该类表示当前图纸的数据库容器,保存着层表、线型表、文字样式表、块表、字典等核心数据结构。 通过它可以完成:
- 获取和管理图层、线型、样式、块表等表对象;
- 设置当前图层、当前颜色、当前文字样式和当前线型;
- 读写文件、插入块、创建组、处理命名对象字典;
- 对当前数据库的修改状态进行查询和重置。
使用方式:
- 通过 MxCpp.getCurrentMxCAD().getDatabase() 获取数据库实例;
- 调用 getLayerTable()、getBlockTable()、getTextStyleTable() 等方法访问各类表;
- 使用 setCurrentlyLayerName()、setCurrentlyTrueColor()、setCurrentlyTextStyle() 等设置当前绘图状态;
- 根据需要访问命名对象字典、创建组或保存/读取图纸文件。
总结:在实际开发中,McDbDatabase 是整个图纸数据的总入口,几乎所有图层、块、样式、字典和对象管理都需要从它开始。
Example
import { MxCpp, McDbDatabase } from "mxcad";
// 获取当前数据库并进行基本操作。
async function testDatabase() {
const mxcad = MxCpp.getCurrentMxCAD();
const database: McDbDatabase = mxcad.getDatabase();
const layerTable = database.getLayerTable();
console.log("图层表对象:", layerTable);
const blockTable = database.getBlockTable();
console.log("块表对象:", blockTable);
database.setCurrentlyLayerName("0");
console.log("当前图层:", database.getCurrentlyLayerName());
}Hierarchy
↳
McDbDatabase
Table of contents
Constructors
Properties
Accessors
- blockTable
- currentSpace
- currentSpaceId
- dimStyleTable
- dxf0
- isCurrentModelSpace
- layerTable
- linetypeTable
- modelSpaceId
- objectName
- textStyleTable
- ucsMatrix
- zeroLayerId
Methods
- CreateGroup
- GetGroupDictionary
- SetCurrentlyTextStyleId
- getBlockTable
- getCurrentlyColorIndex
- getCurrentlyDimStyleId
- getCurrentlyDrawColor
- getCurrentlyLayerId
- getCurrentlyLayerName
- getCurrentlyLineTypeName
- getCurrentlyLineTypeScale
- getCurrentlyLineWeight
- getCurrentlyLinetypeId
- getCurrentlyTextStyleId
- getCurrentlyTextStyleName
- getCurrentlyTrueColor
- getDimStyleTable
- getEntitiesInTheGroup
- getImp
- getJson
- getLayerTable
- getLinetypeTable
- getNamedObjectsDictionary
- getTextStyleTable
- handleToIdIndex
- initTempObject
- insert
- isKindOf
- isModifyed
- isNull
- readFile
- resetModificationStatus
- saveAs
- setCurrentlyColorIndex
- setCurrentlyDimStyleId
- setCurrentlyLayerId
- setCurrentlyLayerName
- setCurrentlyLineTypeName
- setCurrentlyLineTypeScale
- setCurrentlyLineWeight
- setCurrentlyLinetypeId
- setCurrentlyTextStyle
- setCurrentlyTrueColor
- setJson
- wblock
Constructors
constructor
• new McDbDatabase(imp?)
构造函数。
Parameters
| Name | Type | Description |
|---|---|---|
imp? | any | 内部实现对象。 |
Overrides
Properties
imp
• imp: any = 0
内部实现对象。
Inherited from
Accessors
blockTable
• get blockTable(): McDbBlockTable
获取块表
Returns
currentSpace
• get currentSpace(): McDbBlockTableRecord
返回当前空间块表记录
Returns
块表记录
Example
import { MxCpp } from "mxcad";
//获取当前图纸的实际显示范围
const mxcad = MxCpp.getCurrentMxCAD();
const {minPt, maxPt} = mxcad.getDatabase().currentSpace.getBoundingBox();currentSpaceId
• get currentSpaceId(): McObjectId
返回当前空间块表记录id
Returns
块表记录id
dimStyleTable
• get dimStyleTable(): McDbDimStyleTable
获取标注样式表。
Returns
线型表。
dxf0
• get dxf0(): string
得到对象的DXF组码的类型名,这个和AutoCAD中的DXF组码是一样。 比如直线的类型名为:McDbLine,DXF0组码值: LINE,DXF0组码值可以用来构造集时的类型过滤。
Returns
string
Inherited from
McRxObject.dxf0
isCurrentModelSpace
• get isCurrentModelSpace(): boolean
返回0层id
Returns
boolean
0层id
layerTable
• get layerTable(): McDbLayerTable
获取层表
Returns
linetypeTable
• get linetypeTable(): McDbLinetypeTable
获取线型表
Returns
modelSpaceId
• get modelSpaceId(): McObjectId
返回模型空间块表记录id
Returns
模型块表记录id
objectName
• get objectName(): string
获取对象名称。
Returns
string
返回对象名
Inherited from
McRxObject.objectName
textStyleTable
• get textStyleTable(): McDbTextStyleTable
获取文字样式表
Returns
ucsMatrix
• get ucsMatrix(): McGeMatrix3d
得到UCS用户坐标系变换矩阵
Returns
• set ucsMatrix(val): void
设置UCS用户坐标系变换矩阵
Parameters
| Name | Type |
|---|---|
val | McGeMatrix3d |
Returns
void
zeroLayerId
• get zeroLayerId(): McObjectId
返回0层id
Returns
0层id
Methods
CreateGroup
▸ CreateGroup(ids, name?): boolean
把一堆对象创建一个组
Parameters
| Name | Type | Default value |
|---|---|---|
ids | McObjectId[] | undefined |
name | string | "" |
Returns
boolean
boolean
Example
async function Mx_Test_CreateGroup(){
let ss = new MxCADSelectionSet();
if (!await ss.userSelect("选择要做成组的对象:")) return;
if (ss.count() == 0) return;
let mxcad = MxCpp.getCurrentMxCAD();
mxcad.getDatabase().CreateGroup(ss.getIds(),"GroupName");
let idGroup = mxcad.database.GetGroupDictionary().getAt("GroupName");
let group = idGroup.getMcDbGroup();
if(group){
console.log(group.getAllEntityId());
}
}GetGroupDictionary
▸ GetGroupDictionary(): McDbDictionary
得到图纸的组字典对象。
Returns
McDbDictionary
SetCurrentlyTextStyleId
▸ SetCurrentlyTextStyleId(id): boolean
设置当前文字样式id.
Parameters
| Name | Type |
|---|---|
id | McObjectId |
Returns
boolean
getBlockTable
▸ getBlockTable(): McDbBlockTable
获取块表。
Returns
块表。
Example
import { MxCpp, McDbDatabase } from "mxcad"
let mxcad = MxCpp.App.getCurrentMxCAD();
let blockTable = mxcad.getDatabase().getBlockTable();
let aryId = blockTable.getAllRecordId();
aryId.forEach((id) => {
let blkRec = id.getMcDbBlockTableRecord();
if (blkRec === null) return;
console.log(blkRec);
console.log("blkRec.name:" + blkRec.name);
console.log("blkRec.origin:" + blkRec.origin);
});getCurrentlyColorIndex
▸ getCurrentlyColorIndex(): number
获取当前颜色索引。
Returns
number
当前颜色索引(ColorIndexType)。
getCurrentlyDimStyleId
▸ getCurrentlyDimStyleId(): McObjectId
返回当前标注样式id.
Returns
getCurrentlyDrawColor
▸ getCurrentlyDrawColor(): Color
获取当前绘图使用的颜色
Returns
Color
getCurrentlyLayerId
▸ getCurrentlyLayerId(): McObjectId
返回当前层id.
Returns
getCurrentlyLayerName
▸ getCurrentlyLayerName(): string
获取当前层名称。
Returns
string
当前层名称。
getCurrentlyLineTypeName
▸ getCurrentlyLineTypeName(): string
获取当前线型名称。
Returns
string
当前线型名称。
getCurrentlyLineTypeScale
▸ getCurrentlyLineTypeScale(): number
获取当前线型比例。
Returns
number
当前线型比例。
getCurrentlyLineWeight
▸ getCurrentlyLineWeight(): LineWeight
返回当前使用的线重.
Returns
getCurrentlyLinetypeId
▸ getCurrentlyLinetypeId(): McObjectId
返回当前线型id.
Returns
getCurrentlyTextStyleId
▸ getCurrentlyTextStyleId(): McObjectId
返回当前文字样式id.
Returns
getCurrentlyTextStyleName
▸ getCurrentlyTextStyleName(): string
获取当前文字样式名称。
Returns
string
当前文字样式名称。
getCurrentlyTrueColor
▸ getCurrentlyTrueColor(): McCmColor
获取当前CAD颜色。
Returns
当前CAD颜色。
getDimStyleTable
▸ getDimStyleTable(): McDbDimStyleTable
获取标注样式表。
Returns
线型表。
getEntitiesInTheGroup
▸ getEntitiesInTheGroup(id): McObjectId[]
得到对象所在组中的所有对象id
Parameters
| Name | Type |
|---|---|
id | McObjectId |
Returns
McDbDictionary
getImp
▸ getImp(): any
获取内部实现对象。
Returns
any
内部实现对象。
Inherited from
getJson
▸ getJson(): string
获取 JSON 格式的字符串。
Returns
string
JSON 格式的字符串。
Inherited from
getLayerTable
▸ getLayerTable(): McDbLayerTable
获取层表。
Returns
层表。
Example
import { MxCADUiPrEntity, MxCpp } from "mxcad";
//隐藏目标对象所在图层
async function Mx_SelectEntitHideLayer() {
let selEntity1 = new MxCADUiPrEntity();
selEntity1.setMessage("选择要隐藏的对象")
let id = await selEntity1.go();
if (!id.isValid()) return;
let ent = id.getMcDbEntity();
let mxcad = MxCpp.getCurrentMxCAD();
let layerTable = mxcad.getDatabase().getLayerTable();
let layerId = layerTable.get(ent.layer);
let layerRec = layerId.getMcDbLayerTableRecord();
if (layerRec === null) return;
layerRec.isOff = true;
mxcad.updateLayerDisplayStatus();
mxcad.updateDisplay()
}getLinetypeTable
▸ getLinetypeTable(): McDbLinetypeTable
获取线型表。
Returns
线型表。
Example
import { MxCpp } from "mxcad"
//得所有线型
let mxcad = MxCpp.App.getCurrentMxCAD();
let linetypeTable = mxcad.getDatabase().getLinetypeTable();
let aryId = linetypeTable.getAllRecordId();
aryId.forEach((id) => {
let linetypeRec = id.getMcDbLinetypeTableRecord();
if (linetypeRec === null) return;
console.log(linetypeRec);
});getNamedObjectsDictionary
▸ getNamedObjectsDictionary(): McDbDictionary
得到图纸的字典对象。
Returns
McDbDictionary
Example
import { MxCpp, McDbDatabase } from "mxcad"
// 写扩展记录
let mxcad = MxCpp.getCurrentMxCAD();
let dict = mxcad.getDatabase().getNamedObjectsDictionary();
let sName = "MyDict";
let idDict = dict.getAt(sName);
if (idDict.isNull()) {
let newDict = new McDbDictionary;
idDict = dict.addObject(sName, newDict);
}
let myDict = idDict.getMcDbDictionary();
if (myDict) {
let xrec = new McDbXrecord();
let data = new MxCADResbuf();
data.AddString("TestData");
xrec.setData(data);
myDict.addObject("MyRecord", xrec);
console.log("write xrecord ok");
}getTextStyleTable
▸ getTextStyleTable(): McDbTextStyleTable
获取文字样式表。
Returns
文字样式表。
Example
//获取所有文字样式
import { MxCpp } from "mxcad"
let mxcad = MxCpp.getCurrentMxCAD();
let textSyleTable = mxcad.getDatabase().getTextStyleTable();
let aryId = textSyleTable.getAllRecordId();
aryId.forEach((id) => {
let textSyleRec = id.getMcDbTextStyleTableRecord();
if (textSyleRec === null) return;
let out: any = {};
out.name = textSyleRec.name;
out.font = textSyleRec.font();
out.fileName = textSyleRec.fileName;
out.bigFontFileName = textSyleRec.bigFontFileName;
out.textSize = textSyleRec.textSize;
out.xScale = textSyleRec.xScale;
console.log(out);
});handleToIdIndex
▸ handleToIdIndex(sHandle): McObjectId
根据对象的句柄返回对象id.
Parameters
| Name | Type |
|---|---|
sHandle | string |
Returns
Example
import { MxCpp, McDbDatabase } from "mxcad"
const dataBase:McDbDatabase = MxCpp.getCurrentMxCAD().getDatabase();
// 传入句柄并获取相应的对象 ID
const handle = "ABCD1234"; // 假设这是一个有效的句柄
const objectId = dataBase.handleToIdIndex(handle);
// 确保获取的对象 ID 是有效的
if (objectId) {
console.log("success", objectId);
} else {
console.log("error")
}initTempObject
▸ initTempObject(imp): void
初始化临时对象。
Parameters
| Name | Type | Description |
|---|---|---|
imp | any | 内部实现对象。 |
Returns
void
Inherited from
insert
▸ insert(database, sBlkName): McObjectId
插入图块
Parameters
| Name | Type |
|---|---|
database | McDbDatabase |
sBlkName | string |
Returns
isKindOf
▸ isKindOf(sObjectName): boolean
判断对象类型
Parameters
| Name | Type | Description |
|---|---|---|
sObjectName | string | 类型名 |
Returns
boolean
返回对象是否是目标类型
Inherited from
isModifyed
▸ isModifyed(): boolean
当前数据库是否被修改
Returns
boolean
返回布尔值
Example
import { MxCpp, McDbDatabase } from "mxcad"
const dataBase:McDbDatabase = MxCpp.getCurrentMxCAD().getDatabase();
const res = dataBase.isModifyed();
if(res){
console.log("已修改")
}else{
console.log("未修改")
}isNull
▸ isNull(): any
判断是否为空对象
Returns
any
Inherited from
readFile
▸ readFile(sFilePath): boolean
读取文件。
Parameters
| Name | Type |
|---|---|
sFilePath | string |
Returns
boolean
resetModificationStatus
▸ resetModificationStatus(): void
把当前数据库修改状态重置成未修改状态
Returns
void
saveAs
▸ saveAs(sFilePath, sJsonParam?): boolean
保存文件。
Parameters
| Name | Type | Default value |
|---|---|---|
sFilePath | string | undefined |
sJsonParam | string | "" |
Returns
boolean
setCurrentlyColorIndex
▸ setCurrentlyColorIndex(colorIndex): any
设置当前颜色索引(ColorIndexType)。
Parameters
| Name | Type | Description |
|---|---|---|
colorIndex | number | 颜色索引。 |
Returns
any
setCurrentlyDimStyleId
▸ setCurrentlyDimStyleId(id): boolean
设置当前标注样式id.
Parameters
| Name | Type |
|---|---|
id | McObjectId |
Returns
boolean
setCurrentlyLayerId
▸ setCurrentlyLayerId(id): boolean
设置当前标注样式id.
Parameters
| Name | Type |
|---|---|
id | McObjectId |
Returns
boolean
setCurrentlyLayerName
▸ setCurrentlyLayerName(sName): void
设置当前层名称。
Parameters
| Name | Type | Description |
|---|---|---|
sName | string | 层名称。 |
Returns
void
setCurrentlyLineTypeName
▸ setCurrentlyLineTypeName(sName): void
设置当前线型名称。
Parameters
| Name | Type | Description |
|---|---|---|
sName | string | 线型名称。 |
Returns
void
setCurrentlyLineTypeScale
▸ setCurrentlyLineTypeScale(val): number
设置当前线型比例。
Parameters
| Name | Type | Description |
|---|---|---|
val | number | 线型比例。 |
Returns
number
当前线型比例。
setCurrentlyLineWeight
▸ setCurrentlyLineWeight(lineWeight): void
设置当前使用的线重.
Parameters
| Name | Type |
|---|---|
lineWeight | LineWeight |
Returns
void
setCurrentlyLinetypeId
▸ setCurrentlyLinetypeId(id): boolean
设置当前标注样式id.
Parameters
| Name | Type |
|---|---|
id | McObjectId |
Returns
boolean
setCurrentlyTextStyle
▸ setCurrentlyTextStyle(sName): void
设置当前文字样式名称。
Parameters
| Name | Type | Description |
|---|---|---|
sName | string | 文字样式名称。 |
Returns
void
setCurrentlyTrueColor
▸ setCurrentlyTrueColor(color): any
设置当前CAD颜色。
Parameters
| Name | Type | Description |
|---|---|---|
color | McCmColor | CAD颜色。 |
Returns
any
setJson
▸ setJson(str): boolean
设置 JSON 格式的字符串。
Parameters
| Name | Type | Description |
|---|---|---|
str | string | JSON 格式的字符串。 |
Returns
boolean
是否设置成功。
Inherited from
wblock
▸ wblock(database, aryId, ptBase?, param?): boolean
写块
Parameters
| Name | Type |
|---|---|
database | McDbDatabase |
aryId | McObjectId[] |
ptBase? | McGePoint3d |
param? | object |
Returns
boolean
