Skip to content

mxcad_2d API 文档 / 2d / McDbDatabase

Class: McDbDatabase ​

2d.McDbDatabase

McDbDatabase 是 CAD 图纸数据库对象,承载图纸中所有数据和对象信息的总入口。

Description

该类表示当前图纸的数据库容器,保存着层表、线型表、文字样式表、块表、字典等核心数据结构。 通过它可以完成:

  • 获取和管理图层、线型、样式、块表等表对象;
  • 设置当前图层、当前颜色、当前文字样式和当前线型;
  • 读写文件、插入块、创建组、处理命名对象字典;
  • 对当前数据库的修改状态进行查询和重置。

使用方式:

  1. 通过 MxCpp.getCurrentMxCAD().getDatabase() 获取数据库实例;
  2. 调用 getLayerTable()、getBlockTable()、getTextStyleTable() 等方法访问各类表;
  3. 使用 setCurrentlyLayerName()、setCurrentlyTrueColor()、setCurrentlyTextStyle() 等设置当前绘图状态;
  4. 根据需要访问命名对象字典、创建组或保存/读取图纸文件。

总结:在实际开发中,McDbDatabase 是整个图纸数据的总入口,几乎所有图层、块、样式、字典和对象管理都需要从它开始。

Example

ts
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 ​

Table of contents ​

Constructors ​

Properties ​

Accessors ​

Methods ​

Constructors ​

constructor ​

• new McDbDatabase(imp?)

构造函数。

Parameters ​

NameTypeDescription
imp?any内部实现对象。

Overrides ​

McRxObject.constructor

Properties ​

imp ​

• imp: any = 0

内部实现对象。

Inherited from ​

McRxObject.imp

Accessors ​

blockTable ​

• get blockTable(): McDbBlockTable

获取块表

Returns ​

McDbBlockTable


currentSpace ​

• get currentSpace(): McDbBlockTableRecord

返回当前空间块表记录

Returns ​

McDbBlockTableRecord

块表记录

Example

ts
import { MxCpp } from "mxcad";

//获取当前图纸的实际显示范围
const mxcad = MxCpp.getCurrentMxCAD();
const {minPt, maxPt} = mxcad.getDatabase().currentSpace.getBoundingBox();

currentSpaceId ​

• get currentSpaceId(): McObjectId

返回当前空间块表记录id

Returns ​

McObjectId

块表记录id


dimStyleTable ​

• get dimStyleTable(): McDbDimStyleTable

获取标注样式表。

Returns ​

McDbDimStyleTable

线型表。


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 ​

McDbLayerTable


linetypeTable ​

• get linetypeTable(): McDbLinetypeTable

获取线型表

Returns ​

McDbLinetypeTable


modelSpaceId ​

• get modelSpaceId(): McObjectId

返回模型空间块表记录id

Returns ​

McObjectId

模型块表记录id


objectName ​

• get objectName(): string

获取对象名称。

Returns ​

string

返回对象名

Inherited from ​

McRxObject.objectName


textStyleTable ​

• get textStyleTable(): McDbTextStyleTable

获取文字样式表

Returns ​

McDbTextStyleTable


ucsMatrix ​

• get ucsMatrix(): McGeMatrix3d

得到UCS用户坐标系变换矩阵

Returns ​

McGeMatrix3d

• set ucsMatrix(val): void

设置UCS用户坐标系变换矩阵

Parameters ​

NameType
valMcGeMatrix3d

Returns ​

void


zeroLayerId ​

• get zeroLayerId(): McObjectId

返回0层id

Returns ​

McObjectId

0层id

Methods ​

CreateGroup ​

▸ CreateGroup(ids, name?): boolean

把一堆对象创建一个组

Parameters ​

NameTypeDefault value
idsMcObjectId[]undefined
namestring""

Returns ​

boolean

boolean

Example

ts
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

McDbDictionary


SetCurrentlyTextStyleId ​

▸ SetCurrentlyTextStyleId(id): boolean

设置当前文字样式id.

Parameters ​

NameType
idMcObjectId

Returns ​

boolean


getBlockTable ​

▸ getBlockTable(): McDbBlockTable

获取块表。

Returns ​

McDbBlockTable

块表。

Example

ts
  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 ​

McObjectId


getCurrentlyDrawColor ​

▸ getCurrentlyDrawColor(): Color

获取当前绘图使用的颜色

Returns ​

Color


getCurrentlyLayerId ​

▸ getCurrentlyLayerId(): McObjectId

返回当前层id.

Returns ​

McObjectId


getCurrentlyLayerName ​

▸ getCurrentlyLayerName(): string

获取当前层名称。

Returns ​

string

当前层名称。


getCurrentlyLineTypeName ​

▸ getCurrentlyLineTypeName(): string

获取当前线型名称。

Returns ​

string

当前线型名称。


getCurrentlyLineTypeScale ​

▸ getCurrentlyLineTypeScale(): number

获取当前线型比例。

Returns ​

number

当前线型比例。


getCurrentlyLineWeight ​

▸ getCurrentlyLineWeight(): LineWeight

返回当前使用的线重.

Returns ​

LineWeight


getCurrentlyLinetypeId ​

▸ getCurrentlyLinetypeId(): McObjectId

返回当前线型id.

Returns ​

McObjectId


getCurrentlyTextStyleId ​

▸ getCurrentlyTextStyleId(): McObjectId

返回当前文字样式id.

Returns ​

McObjectId


getCurrentlyTextStyleName ​

▸ getCurrentlyTextStyleName(): string

获取当前文字样式名称。

Returns ​

string

当前文字样式名称。


getCurrentlyTrueColor ​

▸ getCurrentlyTrueColor(): McCmColor

获取当前CAD颜色。

Returns ​

McCmColor

当前CAD颜色。


getDimStyleTable ​

▸ getDimStyleTable(): McDbDimStyleTable

获取标注样式表。

Returns ​

McDbDimStyleTable

线型表。


getEntitiesInTheGroup ​

▸ getEntitiesInTheGroup(id): McObjectId[]

得到对象所在组中的所有对象id

Parameters ​

NameType
idMcObjectId

Returns ​

McObjectId[]

McDbDictionary


getImp ​

▸ getImp(): any

获取内部实现对象。

Returns ​

any

内部实现对象。

Inherited from ​

McRxObject.getImp


getJson ​

▸ getJson(): string

获取 JSON 格式的字符串。

Returns ​

string

JSON 格式的字符串。

Inherited from ​

McRxObject.getJson


getLayerTable ​

▸ getLayerTable(): McDbLayerTable

获取层表。

Returns ​

McDbLayerTable

层表。

Example

ts
  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 ​

McDbLinetypeTable

线型表。

Example

ts
   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

McDbDictionary

Example

ts
  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 ​

McDbTextStyleTable

文字样式表。

Example

ts
 //获取所有文字样式
 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 ​

NameType
sHandlestring

Returns ​

McObjectId

Example

ts
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 ​

NameTypeDescription
impany内部实现对象。

Returns ​

void

Inherited from ​

McRxObject.initTempObject


insert ​

▸ insert(database, sBlkName): McObjectId

插入图块

Parameters ​

NameType
databaseMcDbDatabase
sBlkNamestring

Returns ​

McObjectId


isKindOf ​

▸ isKindOf(sObjectName): boolean

判断对象类型

Parameters ​

NameTypeDescription
sObjectNamestring类型名

Returns ​

boolean

返回对象是否是目标类型

Inherited from ​

McRxObject.isKindOf


isModifyed ​

▸ isModifyed(): boolean

当前数据库是否被修改

Returns ​

boolean

返回布尔值

Example

ts
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 ​

McRxObject.isNull


readFile ​

▸ readFile(sFilePath): boolean

读取文件。

Parameters ​

NameType
sFilePathstring

Returns ​

boolean


resetModificationStatus ​

▸ resetModificationStatus(): void

把当前数据库修改状态重置成未修改状态

Returns ​

void


saveAs ​

▸ saveAs(sFilePath, sJsonParam?): boolean

保存文件。

Parameters ​

NameTypeDefault value
sFilePathstringundefined
sJsonParamstring""

Returns ​

boolean


setCurrentlyColorIndex ​

▸ setCurrentlyColorIndex(colorIndex): any

设置当前颜色索引(ColorIndexType)。

Parameters ​

NameTypeDescription
colorIndexnumber颜色索引。

Returns ​

any


setCurrentlyDimStyleId ​

▸ setCurrentlyDimStyleId(id): boolean

设置当前标注样式id.

Parameters ​

NameType
idMcObjectId

Returns ​

boolean


setCurrentlyLayerId ​

▸ setCurrentlyLayerId(id): boolean

设置当前标注样式id.

Parameters ​

NameType
idMcObjectId

Returns ​

boolean


setCurrentlyLayerName ​

▸ setCurrentlyLayerName(sName): void

设置当前层名称。

Parameters ​

NameTypeDescription
sNamestring层名称。

Returns ​

void


setCurrentlyLineTypeName ​

▸ setCurrentlyLineTypeName(sName): void

设置当前线型名称。

Parameters ​

NameTypeDescription
sNamestring线型名称。

Returns ​

void


setCurrentlyLineTypeScale ​

▸ setCurrentlyLineTypeScale(val): number

设置当前线型比例。

Parameters ​

NameTypeDescription
valnumber线型比例。

Returns ​

number

当前线型比例。


setCurrentlyLineWeight ​

▸ setCurrentlyLineWeight(lineWeight): void

设置当前使用的线重.

Parameters ​

NameType
lineWeightLineWeight

Returns ​

void


setCurrentlyLinetypeId ​

▸ setCurrentlyLinetypeId(id): boolean

设置当前标注样式id.

Parameters ​

NameType
idMcObjectId

Returns ​

boolean


setCurrentlyTextStyle ​

▸ setCurrentlyTextStyle(sName): void

设置当前文字样式名称。

Parameters ​

NameTypeDescription
sNamestring文字样式名称。

Returns ​

void


setCurrentlyTrueColor ​

▸ setCurrentlyTrueColor(color): any

设置当前CAD颜色。

Parameters ​

NameTypeDescription
colorMcCmColorCAD颜色。

Returns ​

any


setJson ​

▸ setJson(str): boolean

设置 JSON 格式的字符串。

Parameters ​

NameTypeDescription
strstringJSON 格式的字符串。

Returns ​

boolean

是否设置成功。

Inherited from ​

McRxObject.setJson


wblock ​

▸ wblock(database, aryId, ptBase?, param?): boolean

写块

Parameters ​

NameType
databaseMcDbDatabase
aryIdMcObjectId[]
ptBase?McGePoint3d
param?object

Returns ​

boolean