mxcad_2d API 文档 / 2d / McObject
Class: McObject
2d.McObject
McObject 是 MxCAD 的主控对象,负责承接 CAD 应用实例的核心能力。
Description
这个类不是普通的实体对象,而是整个 MxCAD 运行时的“控制器/入口”。 通过它可以完成:
- 获取当前 CAD 实例并操作图形数据库;
- 注册和处理各种事件(如选择变化、文件打开完成、数据库修改);
- 调用绘图、重绘、坐标转换、临时显示等能力;
- 设置全局显示和运行参数。
使用方式:
- 先通过 MxCpp.getCurrentMxCAD() 或 MxCpp.mxcad 获取当前CAD实例;
- 再调用其方法进行绘图、交互或状态监听;
- 若需要创建新的独立实例,则先 new McObject(),再调用 create(config) 初始化。
Example
import { MxCpp } from "mxcad";
const mxcad = MxCpp.getCurrentMxCAD();
// 读取当前打开文件名
console.log(mxcad.currentFileName);
// 注册选择变化事件
mxcad.on("selectChange", (ids) => {
console.log("选中对象数:", ids.length);
});Remarks
适用场景包括:
- 二次开发插件:监听对象选择、文件打开、数据库变化;
- 自定义绘制:临时高亮、动态预览、辅助标注;
- 图形操作:添加/修改实体、重绘视图、控制显示参数;
- 交互开发:与 MxDraw、MxCAD 事件体系对接。
Table of contents
Constructors
Accessors
- database
- drawColor
- drawColorIndex
- drawDimStyle
- drawLayer
- drawLineTypeScale
- drawLineWeight
- drawLineWidth
- drawLinetype
- drawPatternDefinition
- drawTextStyle
- drawUseDefaultProperties
- mxdraw
Methods
- AddTureTypeTextStyle
- GetDocumentFileName
- addCurrentSelect
- addDimStyle
- addImageDefine
- addLayer
- addLinetype
- addLinetypeEx
- addPatternDefinition
- addSystemVarNameForEvent
- addTextStyle
- cadCoord2View
- cadCoordLong2View
- cadToSmallcoord
- callEvent
- clearDwgBackground
- clearGripDisplay
- clearMxCurrentSelect
- create
- createLayout
- deleteLayout
- drawArc
- drawArc2
- drawArc3
- drawBlockReference
- drawCircle
- drawDimAligned
- drawDimAngular
- drawDimDiametric
- drawDimOrdinate
- drawDimRadial
- drawDimRotated
- drawEllipse
- drawEllipseArc
- drawEntity
- drawHatch
- drawImage
- drawLine
- drawLine3d
- drawMText
- drawPathToHatch
- drawPathToPolyline
- drawPathToSpline
- drawPoint
- drawSolid
- drawText
- endBlockEdit
- endViewPortEdit
- getAllLayoutName
- getBackgroundEntity
- getCooperate
- getCurrentDatabaseDrawColor
- getCurrentFileName
- getCurrentLayout
- getCurrentLayoutId
- getCurrentOpenFileMd5
- getCurrentOriginaFileName
- getDatabase
- getImp
- getMxCADViewSpinMatrix
- getMxCpp
- getMxDrawObject
- getSysVarDouble
- getSysVarLong
- getSysVarPoint
- getSysVarString
- getTempDraw
- getViewBackgroundColor
- getViewCADCoord
- iniAuthorizedService
- init
- initMxObject
- initRegist
- insertBlock
- isBlockEditing
- isTryVersion
- isUselessLayer
- isViewPortEditing
- layoutRename
- loadDwgBackground
- loadImage
- loadImageBase64
- makeCurrent
- newFile
- objectIdToObject
- off
- on
- openWebFile
- pathCircle
- pathLineTo
- pathLineToEx
- pathMakeClosed
- pathMakeExclude
- pathMoveTo
- pathMoveToEx
- redo
- regen
- regenBlockRecord
- saveFile
- saveFileToUrl
- setAttribute
- setBrowse
- setCurrentFileName
- setCurrentLayout
- setCurrentOriginaFileName
- setSysVarDouble
- setSysVarLong
- setSysVarPoint
- setSysVarPoint2d
- setSysVarString
- setViewBackgroundColor
- showLineWeight
- smallcoordToCad
- startBlockEdit
- startViewPortEdit
- undo
- undoIndexIncrease
- undoMark
- updateDisplay
- updateLayerDisplayStatus
- viewCoord2Cad
- viewCoordLong2Cad
- zoomAll
- zoomAngle
- zoomCenter
- zoomScale
- zoomW
Constructors
constructor
• new McObject(imp?)
创建 McObject 实例。
该构造函数通常只在你需要手动创建一个独立实例时使用。 如果只是要操作当前正在运行的 CAD 窗口,优先使用 MxCpp.getCurrentMxCAD() 或 MxCpp.mxcad。
Parameters
| Name | Type | Description |
|---|---|---|
imp? | any | 底层实现对象;通常由系统自动注入,开发者一般不需要手动传入。 |
Accessors
database
• get database(): McDbDatabase
返回数据库对象
Returns
drawColor
• get drawColor(): McCmColor
获取绘制颜色
Returns
返回绘制颜色
• set drawColor(val): void
设置绘制颜色
Parameters
| Name | Type | Description |
|---|---|---|
val | McCmColor | 绘制颜色 |
Returns
void
drawColorIndex
• get drawColorIndex(): number
设置绘制颜色索引
Returns
number
val 颜色索引类型
• set drawColorIndex(val): void
设置绘制颜色索引
Parameters
| Name | Type | Description |
|---|---|---|
val | number | 颜色索引类型 |
Returns
void
Example
import { MxCpp, ColorIndexType, McObject } from "mxcad" ;
const mxcad:McObject = MxCpp.App.getCurrentMxCAD();
mxcad.drawColorIndex = ColorIndexType.kMagenta;drawDimStyle
• get drawDimStyle(): string
获取当前绘制的标注样式
Returns
string
• set drawDimStyle(val): void
设置当前绘制的标注样式
Parameters
| Name | Type | Description |
|---|---|---|
val | string | 样式名称 |
Returns
void
drawLayer
• get drawLayer(): string
获取绘制图层
Returns
string
返回绘制图层
• set drawLayer(val): void
设置绘制图层
Parameters
| Name | Type | Description |
|---|---|---|
val | string | 绘制图层 |
Returns
void
Example
import { MxCpp, McObject } from 'mxcad'
const mxcad:McObject = MxCpp.getCurrentMxCAD();
mxcad.drawLayer = "MtextLayer";drawLineTypeScale
• get drawLineTypeScale(): number
获取绘制线型比例
Returns
number
返回绘制线型比例
• set drawLineTypeScale(val): void
设置绘制线型比例
Parameters
| Name | Type | Description |
|---|---|---|
val | number | 绘制线型比例 |
Returns
void
drawLineWeight
• get drawLineWeight(): LineWeight
获取绘制线宽
Returns
返回绘制线宽
• set drawLineWeight(val): void
设置绘制线宽
Parameters
| Name | Type | Description |
|---|---|---|
val | LineWeight | 绘制线宽 |
Returns
void
Example
import { MxCpp, McDb, McObject } from "mxcad" ;
const mxcad: McObject = MxCpp.getCurrentMxCAD();
mxcad.drawLineWeight(McDb.LineWeight.kLnWtByLayer)drawLineWidth
• get drawLineWidth(): number
获取当前绘制的线宽
Returns
number
• set drawLineWidth(val): void
设置当前绘制的线宽
Parameters
| Name | Type | Description |
|---|---|---|
val | number | 线宽 |
Returns
void
drawLinetype
• get drawLinetype(): string
获取绘制线型
Returns
string
返回绘制线型
• set drawLinetype(val): void
设置绘制线型
Parameters
| Name | Type | Description |
|---|---|---|
val | string | 绘制线型名 |
Returns
void
Example
import { MxCpp, McObject } from "mxcad" ;
const mxcad: McObject = MxCpp.getCurrentMxCAD();
mxcad.addLinetype("MyLineType3", "30,-10");
mxcad.drawLinetype = "MyLineType3";drawPatternDefinition
• get drawPatternDefinition(): string
获取当前绘制的线型定义
Returns
string
Example
import { MxCpp, McObject } from "mxcad"
const mxcad: McObject = MxCpp.getCurrentMxCAD()
//绘制另一个有图案的填充
//45, 0,0, 0,.25
//45, .176776695,0, 0,.25, .125,-.0625
mxcad.addPatternDefinition("MyHatchPattern2", "((45, 0,0, 0,0.25) (45, 0.176776695,0, 0,0.25, 0.125,-0.0625))");
mxcad.drawPatternDefinition = "MyHatchPattern2"
//定义一个路径的开始点
mxcad.pathMoveToEx(800, 3300, 0, 0, 0.3);
//路径的一下个点
mxcad.pathLineTo(900, 3300);
//路径的一下个点
mxcad.pathLineTo(900, 3400);
//路径的一下个点
mxcad.pathLineTo(800, 3300);
//把路径变成一个填充,80,是填充图案的缩放比例.
mxcad.drawPathToHatch(80);• set drawPatternDefinition(val): void
设置当前绘制的线型定义
Parameters
| Name | Type | Description |
|---|---|---|
val | string | 线型定义 |
Returns
void
drawTextStyle
• get drawTextStyle(): string
获取绘制文字样式
Returns
string
返回绘制文字样式名
• set drawTextStyle(val): void
设置绘制文字样式
Parameters
| Name | Type | Description |
|---|---|---|
val | string | 绘制文字样式名 |
Returns
void
Example
import { MxCpp, McObject } from "mxcad" ;
const mxcad: McObject = MxCpp.getCurrentMxCAD();
mxcad.addTextStyle("MyTextStyle", "italicc.shx", "gbcbig.shx", 0.7);
mxcad.drawTextStyle = "MyTextStyle";drawUseDefaultProperties
• get drawUseDefaultProperties(): boolean
返回调用draw开头的绘图数,使用数据库的当前默认属性。
Returns
boolean
• set drawUseDefaultProperties(val): void
设置调用draw开头的绘图数,使用数据库的当前默认属性
Parameters
| Name | Type | Description |
|---|---|---|
val | boolean | 线宽 |
Returns
void
mxdraw
• get mxdraw(): MxDrawObject
返回与MxCAD对象绑定的MxDraw对象。
Returns
MxDrawObject
MxDraw对象
Methods
AddTureTypeTextStyle
▸ AddTureTypeTextStyle(sName, sTrueTypeFontName?, dXScale?): McObjectId
添加使用TrueType字体的文字样式
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
sName | string | undefined | - |
sTrueTypeFontName | string | "" | TrueType字体名,为空使用默认TrueType字体. |
dXScale | number | 1.0 | X 方向缩放比例 |
Returns
Example
// 在MxCAD中使用TrueType字体的文字样式
import { MxCpp } from "mxcad"
function Mx_Test_TrueText() {
let mat: McGeMatrix3d = new McGeMatrix3d();
let mxcad = MxCpp.getCurrentMxCAD();
//清空当前显示内容
mxcad.newFile();
MxCpp.App.loadFonts([], [], ["syadobe", "simsun", "sysimsun"], () => {
mxcad.AddTureTypeTextStyle("ht_style", "syadobe");
mxcad.AddTureTypeTextStyle("st_style", "simsun");
mxcad.drawTextStyle = "ht_style";
mxcad.drawColor = new McCmColor(200, 255, 50);
let idText = mxcad.drawText(0, 3500, "绘图控件TrueType文字测试", 100, 0, 0, 1);
let ent = idText.getMcDbEntity();
if (ent) ent.textStyle = "st_style";
let txt: McDbText = ent as McDbText;
txt.adjustAlignment();
mxcad.zoomAll();
mxcad.regen();
mxcad.updateDisplay();
});
}GetDocumentFileName
▸ GetDocumentFileName(): string
得到当前openWebFile打开的文件,的文件名,如果打开是一个流数据,该变量会取服务器返回请求头的filename的值。
Returns
string
addCurrentSelect
▸ addCurrentSelect(id, isDisplayGrid?, fireSelectEvent?): void
把对象添加当前选择中
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
id | McObjectId | McObjectId[] | undefined | 对象id或者对象id数组 |
isDisplayGrid | boolean | true | 是否显示夹点,默认true |
fireSelectEvent | boolean | true | 是否触发选择事件,默认true |
Returns
void
void
Example
import { MxCpp, McObject } from "mxcad"
let mxcad:McObject = MxCpp.getCurrentMxCAD();
let id = mxcad.drawLine(0,0,1000,1000);
mxcad.addCurrentSelect(id);addDimStyle
▸ addDimStyle(pszName, pszDoubleData, pszIntData, pszStringData, pszIdData): McObjectId
添加标注样式
Parameters
| Name | Type | Description |
|---|---|---|
pszName | string | 样式名称 |
pszDoubleData | string | 双精度型数据 |
pszIntData | string | 整型数据 |
pszStringData | string | 字符串型数据 |
pszIdData | string | ID 型数据 |
Returns
Description
pszDoubleData 双精度型数据
| 系统变量 | 值 | 功能说明 |
|---|---|---|
| dimaltf | 143 | 控制换算单位的乘数 |
| dimasz | 41 | 控制尺寸线和引线箭头的大小。并控制基线的大小。 |
| dimcen | 141 | 控制圆或圆弧圆心标记以及中心线的绘制。 |
| dimdle | 46 | 当使用小斜线代替箭头进行标注时,设置尺寸线超出尺寸界线的距离。 |
| dimdli | 43 | 控制基线标注中尺寸线的间距。 |
| dimexe | 44 | 将命名标注样式及其设置输出到外部文件。 |
| dimexo | 42 | 指定尺寸界线偏离原点的距离。 |
| dimgap | 147 | 设置当打断尺寸线以符合标注文字时,标注文字周围的距离。 |
| dimlfac | 144 | 为线性标注测量值设置比例因子。 |
| dimrnd | 45 | 将所有标注距离舍入为指定值。 |
| dimscale | 40 | 设置应用于标注变量(用于指定尺寸、距离或偏移量)的全局比例因子。 |
| dimtfac | 146 | 与通过 DIMTXT 系统变量设置一样,指定分数和公差值的文字高度相对于标注文字高度的比例因子。 |
| dimtm | 48 | 为标注文字设置最小(即最低)公差限制。 |
| dimtp | 47 | 为标注文字设置最大(即最高)公差限制。 |
| dimtsz | 142 | DIMTSZ = 0使用标准的实心箭头,DIMTSZ > 0 标注的箭头被替换为倾斜线(建筑标记),而 DIMTSZ 的数值就是这条倾斜线的长度 |
| dimtvp | 145 | 控制标注文字在尺寸线上方或下方的垂直位置。 |
| dimtxt | 140 | 指定标注文字的高度(除非当前文字样式具有固定的高度)。 |
| dimaltrnd | 148 | 舍入换算标注单位。 |
Description
pszIntData 整型数据
| 系统变量 | 值 | 功能说明 |
|---|---|---|
| dimadec | 179 | 控制角度标注中显示的精度小数位数。 |
| dimalt | 170 | 控制标注中换算单位的显示。 |
| dimaltd | 171 | 控制换算单位中的小数位数。 |
| dimalttd | 274 | 设置换算标注单位中的公差值的小数位数。 |
| dimalttz | 286 | 控制对公差值的消零处理。 |
| dimaltu | 273 | 为所有标注子样式(角度标注除外)的换算单位设定单位格式。 |
| dimaltz | 285 | 控制对换算单位标注值的消零处理。 |
| dimaunit | 275 | 为角度标注设定单位格式。 |
| dimclrd | 176 | 为尺寸线、箭头和标注引线指定颜色。 |
| dimclre | 177 | 为尺寸界线、圆心标记和中心线指定颜色。 |
| dimclrt | 178 | 为标注文字指定颜色。 |
| dimdec | 271 | 设置标注主单位中显示的小数位数。 |
| dimfit | 287 | 尺寸界线内的空间不足以同时放下标注文字和箭头时,此系统变量将确定这两者的排列方式。 |
| dimjust | 280 | 控制标注文字的水平位置。 |
| dimlim | 72 | 生成标注界限作为默认文字。 |
| dimsah | 173 | 控制尺寸线箭头块的显示。 |
| dimsd1 | 281 | 控制是否隐去第一条尺寸线和箭头。 |
| dimsd2 | 282 | 控制是否隐去第二条尺寸线和箭头。 |
| dimse1 | 75 | 控制是否隐去第一条尺寸界线。 |
| dimse2 | 76 | 控制是否隐去第二条尺寸界线。 |
| dimsoxd | 175 | 如果尺寸界线内没有足够的空间,则隐去箭头。 |
| dimtad | 77 | 控制文字相对于尺寸线的垂直位置。 |
| dimtdec | 272 | 设置标注主单位的公差值中显示的小数位数。 |
| dimtih | 73 | 控制所有标注类型(坐标标注除外)的标注文字在尺寸界线内的位置。 |
| dimtix | 174 | 在尺寸界线之间绘制文字。 |
| dimtofl | 172 | 控制是否在尺寸界线之间绘制尺寸线(即使标注文字被放置在尺寸界线之外)。 |
| dimtoh | 74 | 控制标注文字在尺寸界线外的位置。 |
| dimtol | 71 | 将公差附在标注文字中。 |
| dimtolj | 283 | 设置公差值相对于表面标注文字的垂直对正方式。 |
| dimzin | 78 | 控制针对主单位值的消零处理。 |
| dimupt | 288 | 控制用户定位文字的选项。 |
| dimtzin | 284 | 控制对公差值的消零处理。 |
| dimfrac | 276 | 设置分数格式。 |
| dimlunit | 277 | 为所有标注类型(角度标注除外)设置单位。 |
| dimatfit | 289 | 尺寸界线内的空间不足以同时放下标注文字和箭头时,此系统变量将确定这两者的排列方式。 |
| dimtmove | 279 | 设置标注文字的移动规则。 |
| dimazin | 79 | 针对角度标注进行消零处理。 |
Description
pszStringData 字符串型数据
| 系统变量 | 值 | 功能说明 |
|---|---|---|
| dimapost | 4 | 指定用于所有标注类型(角度标注除外)的换算标注测量值的文字前缀或后缀(或两者都指定)。 |
| dimpost | 3 | 为标注测量值指定文字前缀或后缀(或两者)。 |
Description
pszIdData ID 型数据
| 系统变量 | 值 | 功能说明 |
|---|---|---|
| dimblk | 342 | 为尺寸线的第二个端点设置箭头 。 |
| dimblk1 | 343 | 为尺寸线的第一个端点设置箭头。 |
| dimblk2 | 344 | 为尺寸线的第二个端点设置箭头。 |
| dimldrblk | 341 | 指定引线箭头的类型。 |
| dimtxsty | 340 | 指定标注的文字样式。 |
Example
import { MxCpp, McObject } from "mxcad"
const mxcad:McObject = MxCpp.getCurrentMxCAD();
//清空当前显示内容
mxcad.newFile();
// 创建一个新的文字样式
let textId = mxcad.addTextStyle("我的标注字体", "txt.shx", "gbcbig.shx", 1);
// 创建一个新的标注样式
mxcad.addDimStyle("MyDimStyle", "41,0.18,141,0.09,40,200", "77,1,271,3", '3,"%%c<>"', `340,${textId.id}`);
mxcad.drawDimStyle = "MyDimStyle"
mxcad.drawDimAligned(0, 4000, 300, 4500, 150, 4600);
//把所有的实体都放到当前显示视区
mxcad.zoomAll();
//更新视区显示
mxcad.updateDisplay();addImageDefine
▸ addImageDefine(imageUrl, sName?, isConvertBase64?, sourceFileName?, sBase64Data?): McObjectId
将图片定义添加到 CAD 数据库中,供后续插入图片对象时复用。
该方法通常和 loadImage / drawImage 配合使用,先把图片资源加载到内存, 再把图片定义注册到数据库中,最后通过 drawImage 将图片真实插入到图纸中。
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
imageUrl | string | undefined | 图片地址。 |
sName | string | "" | 图片定义名称。 |
isConvertBase64 | boolean | false | 是否将图片转换为 Base64 数据。 |
sourceFileName | string | "" | 图片源文件名。 |
sBase64Data | string | "" | Base64 数据内容。 |
Returns
Example
import { MxCpp, McObject } from "mxcad";
const mxcad: McObject = MxCpp.getCurrentMxCAD();
const imagUrl = "https://cdn.pixabay.com/photo/2022/11/15/12/23/winter-7593872_960_720.jpg";
mxcad.loadImage(imagUrl, (imagedata) => {
if (!imagedata) {
console.log("loadImage failed");
return;
}
mxcad.addImageDefine(imagUrl, "winter-7593872_960_720.jpg", true);
mxcad.updateDisplay();
});addLayer
▸ addLayer(string): McObjectId
添加图层
Parameters
| Name | Type |
|---|---|
string | string |
Returns
Example
import { MxCpp, McObject } from "mxcad"
const mxcad:McObject = MxCpp.getCurrentMxCAD()
mxcad.addLayer("图层名称")addLinetype
▸ addLinetype(sName, sLineDefine): McObjectId
添加线型
Parameters
| Name | Type |
|---|---|
sName | string |
sLineDefine | string |
Returns
Example
import { MxCpp, McObject } from "mxcad"
const mxcad:McObject = MxCpp.getCurrentMxCAD()
//定义虚线数据据,"MyLineType"是线型名,"6,-8"是虚线的一个单位定义,6是实线长,-8是空格长。
mxcad.addLinetype("MyLineType", "6,-8");
//设计当前线型为"MyLineType"
mxcad.drawLinetype = "MyLineType";
// 绘制一个虚线
mxcad.drawLine(0, 30, 100, 30);
// 绘制一个斜虚线
mxcad.drawLine(200, 30, 300, 130);addLinetypeEx
▸ addLinetypeEx(sName, sLineDefine, sTextStyle?): McObjectId
添加线型
Parameters
| Name | Type | Default value |
|---|---|---|
sName | string | undefined |
sLineDefine | string | undefined |
sTextStyle | string | "" |
Returns
Example
import { MxCpp, McObject } from "mxcad"
const mxcad:McObject = MxCpp.getCurrentMxCAD()
//增加一个带有字体样式的线型
mxcad.addTextStyle("MyLineTypeTextStyle", "txt.shx", "hztxt.shx", 1);
mxcad.addLinetypeEx("MyLineType3", "(12.7,(\"T=MxDraw\",\"S=2.54\",\"L=-5.08\",\"R=0.0\",\"X=-2.54\",\"Y=-1.27\"),-10.08)", "MyLineTypeTextStyle");
mxcad.drawLinetype = "MyLineType3";
mxcad.drawLineWidth = 0;
//绘制一个带宽度的红色点划线。
mxcad.drawLine(350, 120, 600, 120);addPatternDefinition
▸ addPatternDefinition(sName, sDefinitionData): void
增加一个图案定义
Parameters
| Name | Type | Description |
|---|---|---|
sName | string | 图案名称 |
sDefinitionData | string | 图案默认定义数据 |
Returns
void
Example
import { MxCpp, McObject } from "mxcad"
const mxcad:McObject = MxCpp.getCurrentMxCAD()
//angle, x-origin,y-origin, delta-x,delta-y,dash-1,dash-2, …
//45 = angle 是图案线角度.
//0 = x-origin 是第一个填充线经过的点位置X坐标
//0 = y-origin 是第一个填充线经过的点位置Y坐标
//0 = delta-x 是下一个填充线相对前一个线的X方向偏移
//0.125 = delta-y 是下一个填充线相对前一个线的Y方向偏移
mxcad.addPatternDefinition("MyHatchPattern1", "((45, 0,0, 0,0.125))");
mxcad.drawPatternDefinition = "MyHatchPattern1";
//定义一个路径的开始点
mxcad.pathMoveToEx(600, 3300, 0, 0, 0.3);
//路径的一下个点
mxcad.pathLineTo(700, 3300);
//路径的一下个点
mxcad.pathLineTo(700, 3400);
//路径的一下个点
mxcad.pathLineTo(600, 3300);
//把路径变成一个填充,80,是填充图案的缩放比例.
mxcad.drawPathToHatch(80);addSystemVarNameForEvent
▸ addSystemVarNameForEvent(aryVarName): void
注册需要监听的系统变量名。
当这些系统变量被修改时,会触发 sysVarChanged 事件,适用于联动控制、 状态同步或自定义交互逻辑。
Parameters
| Name | Type | Description |
|---|---|---|
aryVarName | string[] | 系统变量名称数组。 |
Returns
void
Example
const mxcad = MxCpp.getCurrentMxCAD();
mxcad.addSystemVarNameForEvent(["GRIDMODE", "AUTOSNAP"]);addTextStyle
▸ addTextStyle(sName, sFileName, sBigFontFileName, dXScale?): McObjectId
添加文字样式
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
sName | string | undefined | - |
sFileName | string | undefined | - |
sBigFontFileName | string | undefined | - |
dXScale | number | 1.0 | X 方向缩放比例 |
Returns
Example
import { MxCpp, McObject } from "mxcad"
const mxcad:McObject = MxCpp.getCurrentMxCAD()
//按指定样式绘制文字
mxcad.addTextStyle("MyTextStyle", "italicc.shx", "gbcbig.shx", 0.7);
mxcad.drawTextStyle = "MyTextStyle";
mxcad.drawColor = new McCmColor(255, 0, 0);
mxcad.drawText(0, 3000, "绘图控件文字测试", 100, 0, 0, 1);cadCoord2View
▸ cadCoord2View(pt): McGePoint3d
cad坐标到视区坐标
Parameters
| Name | Type | Description |
|---|---|---|
pt | McGePoint3d | 点对象 |
Returns
转换后的点坐标
cadCoordLong2View
▸ cadCoordLong2View(l): number
CAD长度到视区长度
Parameters
| Name | Type | Description |
|---|---|---|
l | number | CAD长度 |
Returns
number
视区长度
cadToSmallcoord
▸ cadToSmallcoord(pt): McGePoint3d
cad坐标转绘图修正的小坐标系
Parameters
| Name | Type | Description |
|---|---|---|
pt | McGePoint3d | 点的对象 |
Returns
callEvent
▸ callEvent(sEventName, param?): boolean
触发一个系统事件的调用
Parameters
| Name | Type | Description |
|---|---|---|
sEventName | string | - |
param? | any | 事件参数 |
Returns
boolean
Example
import { MxCpp, McObject } from "mxcad"
// 手动触发init事件
const mxcad:McObject = MxCpp.getCurrentMxCAD();
mxcad.callEvent("init");clearDwgBackground
▸ clearDwgBackground(): void
清空当前背景绘制对象。
适用于关闭背景显示、切换参考图或重新加载背景资源时使用。
Returns
void
clearGripDisplay
▸ clearGripDisplay(): void
清除显示的夹点
Returns
void
clearMxCurrentSelect
▸ clearMxCurrentSelect(): void
清除当前所有选择
Returns
void
create
▸ create(config): void
创建并初始化一个 MxCAD 实例。
这个方法会根据传入的配置启动 CAD 运行时并完成初始化。 适用于你需要在页面中嵌入一个新的 CAD 容器、加载自定义文件、或者创建独立实例时使用。 如果只是操作当前页面已存在的 CAD 窗口,通常不需要手动调用此方法。
Parameters
| Name | Type | Description |
|---|---|---|
config | MxCadConfig | createMxCad 的初始化配置,通常包含 canvas、locateFile、fileUrl、fontspath 等信息。 |
Returns
void
Example
import { McObject } from "mxcad";
const mxcad = new McObject();
mxcad.create({
canvas: "#myCanvas",
locateFile: (fileName) => new URL(`/node_modules/mxcad/dist/wasm/2d/${fileName}`, import.meta.url).href,
fileUrl: new URL("../src/assets/test.mxweb", import.meta.url).href,
fontspath: new URL("node_modules/mxcad/dist/fonts", import.meta.url).href,
});createLayout
▸ createLayout(sName): McObjectId
创建布局
Parameters
| Name | Type |
|---|---|
sName | string |
Returns
deleteLayout
▸ deleteLayout(sName): boolean
删除布局
Parameters
| Name | Type |
|---|---|
sName | string |
Returns
boolean
drawArc
▸ drawArc(dCenterX, dCenterY, dRadius, dStartAng, dEndAng): McObjectId
绘制圆弧
Parameters
| Name | Type | Description |
|---|---|---|
dCenterX | number | 圆心 X 坐标 |
dCenterY | number | 圆心 Y 坐标 |
dRadius | number | 半径 |
dStartAng | number | 起始角度,单位为弧度 |
dEndAng | number | 结束角度,单位为弧度 |
Returns
成功返回 1,失败返回 0
drawArc2
▸ drawArc2(dStartPointX, dStartPointY, dMidPointX, dMidPointY, dEndPointX, dEndPointY): McObjectId
绘制圆弧
Parameters
| Name | Type | Description |
|---|---|---|
dStartPointX | number | 起始点 X 坐标 |
dStartPointY | number | 起始点 Y 坐标 |
dMidPointX | number | 中间点 X 坐标 |
dMidPointY | number | 中间点 Y 坐标 |
dEndPointX | number | 结束点 X 坐标 |
dEndPointY | number | 结束点 Y 坐标 |
Returns
drawArc3
▸ drawArc3(dStartPointX, dStartPointY, dEndPointX, dEndPointY, dBulge): McObjectId
绘制圆弧
Parameters
| Name | Type | Description |
|---|---|---|
dStartPointX | number | 起始点 X 坐标 |
dStartPointY | number | 起始点 Y 坐标 |
dEndPointX | number | 结束点 X 坐标 |
dEndPointY | number | 结束点 Y 坐标 |
dBulge | number | 凸度 |
Returns
drawBlockReference
▸ drawBlockReference(dPosX, dPosY, sBlkName, dScale, dAng): McObjectId
绘制块参照
Parameters
| Name | Type | Description |
|---|---|---|
dPosX | number | 参照位置 X 坐标 |
dPosY | number | 参照位置 Y 坐标 |
sBlkName | string | - |
dScale | number | 缩放比例 |
dAng | number | 旋转角度,单位为弧度 |
Returns
块对象id
drawCircle
▸ drawCircle(dCenterX, dCenterY, dRadius): McObjectId
绘制圆
Parameters
| Name | Type | Description |
|---|---|---|
dCenterX | number | 圆心 X 坐标 |
dCenterY | number | 圆心 Y 坐标 |
dRadius | number | 半径 |
Returns
drawDimAligned
▸ drawDimAligned(dExtLine1PointX, dExtLine1PointY, dExtLine2PointX, dExtLine2PointY, dTextPositionX, dTextPositionY): McObjectId
绘制对齐标注
Parameters
| Name | Type | Description |
|---|---|---|
dExtLine1PointX | number | 第一条尺线起点 X 坐标 |
dExtLine1PointY | number | 第一条尺线起点 Y 坐标 |
dExtLine2PointX | number | 第二条尺线起点 X 坐标 |
dExtLine2PointY | number | 第二条尺线起点 Y 坐标 |
dTextPositionX | number | 文本位置 X 坐标 |
dTextPositionY | number | 文本位置 Y 坐标 |
Returns
成功返回 1,失败返回 0
drawDimAngular
▸ drawDimAngular(dAngleVertexX, dAngleVertexY, dFirstEndPointX, dFirstEndPointY, dSecondEndPointX, dSecondEndPointY, dTextPointX, dTextPointY): McObjectId
绘制角度标注
Parameters
| Name | Type | Description |
|---|---|---|
dAngleVertexX | number | 角度顶点 X 坐标 |
dAngleVertexY | number | 角度顶点 Y 坐标 |
dFirstEndPointX | number | 第一条尺线起点 X 坐标 |
dFirstEndPointY | number | 第一条尺线起点 Y 坐标 |
dSecondEndPointX | number | 第二条尺线起点 X 坐标 |
dSecondEndPointY | number | 第二条尺线起点 Y 坐标 |
dTextPointX | number | 文本位置 X 坐标 |
dTextPointY | number | 文本位置 Y 坐标 |
Returns
成功返回 1,失败返回 0
drawDimDiametric
▸ drawDimDiametric(dChordPointX, dChordPointY, dFarChordPointX, dFarChordPointY, dLeaderLength): McObjectId
绘制直径标注
Parameters
| Name | Type | Description |
|---|---|---|
dChordPointX | number | 弦线端点 X 坐标 |
dChordPointY | number | 弦线端点 Y 坐标 |
dFarChordPointX | number | 弦线远端点 X 坐标 |
dFarChordPointY | number | 弦线远端点 Y 坐标 |
dLeaderLength | number | 引线长度 |
Returns
直径标注对象id
drawDimOrdinate
▸ drawDimOrdinate(dDefinitionPointX, dDefinitionPointY, dDeaderEndPointX, dDeaderEndPointY, isUseXAxis): McObjectId
绘制标注线性尺寸
Parameters
| Name | Type | Description |
|---|---|---|
dDefinitionPointX | number | 定义点 X 坐标 |
dDefinitionPointY | number | 定义点 Y 坐标 |
dDeaderEndPointX | number | 标注终点 X 坐标 |
dDeaderEndPointY | number | 标注终点 Y 坐标 |
isUseXAxis | boolean | 是否沿 X 轴方向标注 |
Returns
线性尺寸对象id
drawDimRadial
▸ drawDimRadial(dCenterX, dCenterY, dChordPointX, dChordPointY, dLeaderLength): McObjectId
绘制标注径向尺寸
Parameters
| Name | Type | Description |
|---|---|---|
dCenterX | number | 中心点 X 坐标 |
dCenterY | number | 中心点 Y 坐标 |
dChordPointX | number | 弦线端点 X 坐标 |
dChordPointY | number | 弦线端点 Y 坐标 |
dLeaderLength | number | 标注线长度 |
Returns
径向尺寸对象id
drawDimRotated
▸ drawDimRotated(dExtLine1PointX, dExtLine1PointY, dExtLine2PointX, dExtLine2PointY, dDimLineLocationX, dDimLineLocationY, dRotationAngle): McObjectId
绘制旋转标注
Parameters
| Name | Type | Description |
|---|---|---|
dExtLine1PointX | number | 第一条尺线起点 X 坐标 |
dExtLine1PointY | number | 第一条尺线起点 Y 坐标 |
dExtLine2PointX | number | 第二条尺线起点 X 坐标 |
dExtLine2PointY | number | 第二条尺线起点 Y 坐标 |
dDimLineLocationX | number | 标注线位置 X 坐标 |
dDimLineLocationY | number | 标注线位置 Y 坐标 |
dRotationAngle | number | 旋转角度,单位为弧度 |
Returns
旋转标注对象id
drawEllipse
▸ drawEllipse(dCenterX, dCenterY, dMajorAxisX, dMajorAxisY, dRadiusRatio): McObjectId
绘制椭圆
Parameters
| Name | Type | Description |
|---|---|---|
dCenterX | number | 椭圆中心 X 坐标 |
dCenterY | number | 椭圆中心 Y 坐标 |
dMajorAxisX | number | 长轴 X 坐标 |
dMajorAxisY | number | 长轴 Y 坐标 |
dRadiusRatio | number | 短轴与长轴的比例 |
Returns
成功返回 1,失败返回 0
drawEllipseArc
▸ drawEllipseArc(dCenterX, dCenterY, dMajorAxisX, dMajorAxisY, dRadiusRatio, dStartAng, dEndAng): McObjectId
绘制椭圆弧
Parameters
| Name | Type | Description |
|---|---|---|
dCenterX | number | 椭圆中心 X 坐标 |
dCenterY | number | 椭圆中心 Y 坐标 |
dMajorAxisX | number | 长轴 X 坐标 |
dMajorAxisY | number | 长轴 Y 坐标 |
dRadiusRatio | number | 短轴与长轴的比例 |
dStartAng | number | 起始角度,单位为弧度 |
dEndAng | number | 结束角度,单位为弧度 |
Returns
drawEntity
▸ drawEntity(entity, isUseDatabaseCurrentProperties?): McObjectId
绘制实体
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
entity | McDbEntity | undefined | 实体对象 |
isUseDatabaseCurrentProperties | boolean | false | - |
Returns
绘制结果
Example
import { McDbPolyline, MxCpp } from
let pl = new McDbPolyline();
pl.addVertexAt(new McGePoint3d(100, 100, 100));
pl.addVertexAt(new McGePoint3d(200, 100, 500));
pl.addVertexAt(new McGePoint3d(300, 400, 200));
MxCpp.getCurrentCAD().drawEntity(pl);drawHatch
▸ drawHatch(hatch, dPatternScale?): McObjectId
绘制填充对象
Parameters
| Name | Type | Default value |
|---|---|---|
hatch | McDbHatch | undefined |
dPatternScale | number | 1.0 |
Returns
绘制对象id
Example
import { MxCADUiPrPoint, MxCADUtility, MxCpp, McGePoint3d } from "mxcad";
async function Mx_TestDrawHatchFormPoint() {
const getPoint = new MxCADUiPrPoint();
getPoint.setMessage("\n指定填充区域内部一点:");
getPoint.disableAllTrace(true);
getPoint.setDisableOsnap(true);
let pt = (await getPoint.go()) as McGePoint3d;
if (!pt) return;
let hatch = MxCADUtility.builderHatchFromPoint(pt);
if (!hatch) {
MxFun.acutPrintf("\n 没有找到闭合区域")
return;
}
let mxcad = MxCpp.getCurrentMxCAD();
mxcad.addPatternDefinition("My图案", "((45, 0,0, 0,0.125))");
mxcad.drawPatternDefinition = "My图案";
mxcad.drawHatch(hatch, 5.0);
}drawImage
▸ drawImage(dPosX, dPosY, dWidth, dHeight, dAng, imageName, isConvertBase64?, dwgImageSizeWidth?, dwgImageSizeHeight?, imageUrl?, sImageBase64?): McObjectId
绘制一个图片
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
dPosX | number | undefined | 图片 X 坐标 |
dPosY | number | undefined | 图片 Y 坐标 |
dWidth | number | undefined | 图片宽度 |
dHeight | number | undefined | 图片高度 |
dAng | number | undefined | 图片角度,单位是度 |
imageName | string | undefined | - |
isConvertBase64 | boolean | false | - |
dwgImageSizeWidth | number | 1.0 | - |
dwgImageSizeHeight | number | 1.0 | - |
imageUrl | string | "" | 图片路径 |
sImageBase64 | string | "" | - |
Returns
Example
import { MxCpp } from "mxcad";
async function Mx_Test_DrawImageBase64() {
const getPoint = new MxCADUiPrPoint();
getPoint.setMessage("\n指定插入点:");
let pt = await getPoint.go();
if (!pt) return;
let mxcad = MxCpp.getCurrentMxCAD();
let imagData = "data:image/jpeg;base64,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";
mxcad.loadImageBase64(imagData, "test.jpg", (image) => {
if (!image) {
console.log("loadImage failed");
return;
}
let width = mxcad.mxdraw.viewCoordLong2Cad(100);
let height = (image.height / image.width) * width;
let viewAngle = 0.0;
let id = mxcad.drawImage((pt as any).x, (pt as any).y, width, height, viewAngle, "test.jpg", false, image.width, image.height);
let ent = id.getMcDbEntity();
if (ent) {
ent.trueColor = new McCmColor(255, 255, 255, 160);
}
mxcad.updateDisplay();
});
}drawLine
▸ drawLine(dX1, dY1, dX2, dY2): McObjectId
绘制二维直线
Parameters
| Name | Type | Description |
|---|---|---|
dX1 | number | 起点 X 坐标 |
dY1 | number | 起点 Y 坐标 |
dX2 | number | 终点 X 坐标 |
dY2 | number | 终点 Y 坐标 |
Returns
Example
import { MxCpp, McObject } from "mxcad"
const mxcad:McObject = MxCpp.getCurrentMxCAD()
mxcad.drawLine(0, 60, 100, 60);drawLine3d
▸ drawLine3d(dX1, dY1, dZ1, dX2, dY2, dZ2): McObjectId
绘制三维直线
Parameters
| Name | Type | Description |
|---|---|---|
dX1 | number | 起点 X 坐标 |
dY1 | number | 起点 Y 坐标 |
dZ1 | number | 起点 Z 坐标 |
dX2 | number | 终点 X 坐标 |
dY2 | number | 终点 Y 坐标 |
dZ2 | number | 终点 Z 坐标 |
Returns
drawMText
▸ drawMText(dPosX, dPosY, sContents, dHeight, dWidth, dRotation, iAttachment): McObjectId
绘制多行文本
Parameters
| Name | Type | Description |
|---|---|---|
dPosX | number | 文本位置 X 坐标 |
dPosY | number | 文本位置 Y 坐标 |
sContents | string | - |
dHeight | number | 文本高度 |
dWidth | number | 文本宽度 |
dRotation | number | 旋转角度,单位为弧度 |
iAttachment | AttachmentPoint | 对齐方式 |
Returns
多行文本对象id
Example
import { MxCpp, McObject } from "mxcad"
const mxcad:McObject = MxCpp.getCurrentMxCAD()
mxcad.drawMText(0, -100, "控件:\\P多行文字测试", 50, 400, 0, 1); let mxcad = MxCpp.getCurrentMxCAD();
mxcad.newFile();
mxcad.drawMText(0,0,"\\A1;平方方法下标: m{\\H0.7x;\\S^2;}",15,500,0.0,7);
mxcad.drawMText(0,30,"\\A2;平方方法上标: m{\\H0.3x;\\S 2^;}",15,500,0.0,7);
mxcad.zoomAll();
mxcad.updateDisplay();drawPathToHatch
▸ drawPathToHatch(dPatternScale?): McObjectId
将路径转换为填充图案
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
dPatternScale | number | 1.0 | 图案缩放比例 |
Returns
转换结果
Example
import { MxCADUiPrPoint, MxCADUiPrDist, MxCpp } from "mxcad";
// 实心圆
async function Mx_SolidCircle() {
const getCenter = new MxCADUiPrPoint();
getCenter.setMessage('请确定圆心位置\n');
const center = await getCenter.go();
if (!center) return;
const getRadius = new MxCADUiPrDist();
getRadius.setBasePt(center);// 设置距离基点为圆心
getRadius.setMessage('请输入圆半径');
getRadius.setUserDraw((pt, pw) => {
const r = pt.distanceTo(center);
const circle = new McDbCircle();
circle.center = center;
circle.radius = r;
pw.drawMcDbEntity(circle)
})
const radiusVal = await getRadius.go();
if (!radiusVal) return;
const radius = getRadius.value();
const mxcad = MxCpp.getCurrentMxCAD();
mxcad.pathCircle(center.x, center.y, radius);//设置圆路径
mxcad.drawPathToHatch();// 绘制实心圆
}drawPathToPolyline
▸ drawPathToPolyline(): McObjectId
将路径转换为折线
Returns
转换结果
Example
import { MxCpp } from "mxcad"
let mxcad = MxCpp.getCurrentMxCAD();
//绘制一个箭头
mxcad.pathMoveToEx(1000, 300, 10, 10, 0);
mxcad.pathLineToEx(1000, 500, 30, 0, 0);
mxcad.pathLineTo(1000, 580);
mxcad.drawPathToPolyline();drawPathToSpline
▸ drawPathToSpline(): McObjectId
将路径转换为样条曲线
Returns
转换结果
drawPoint
▸ drawPoint(dX, dY): McObjectId
绘制点
Parameters
| Name | Type | Description |
|---|---|---|
dX | number | X 坐标 |
dY | number | Y 坐标 |
Returns
drawSolid
▸ drawSolid(dX1, dY1, dX2, dY2, dX3, dY3, dX4, dY4): McObjectId
绘制实体
Parameters
| Name | Type | Description |
|---|---|---|
dX1 | number | 第一个点 X 坐标 |
dY1 | number | 第一个点 Y 坐标 |
dX2 | number | 第二个点 X 坐标 |
dY2 | number | 第二个点 Y 坐标 |
dX3 | number | 第三个点 X 坐标 |
dY3 | number | 第三个点 Y 坐标 |
dX4 | number | 第四个点 X 坐标 |
dY4 | number | 第四个点 Y 坐标 |
Returns
实体对象id
drawText
▸ drawText(dPosX, dPosY, pszText, dHeight, dRotation, horizontalMode, verticalMode): McObjectId
绘制单行文本
Parameters
| Name | Type | Description |
|---|---|---|
dPosX | number | 文本位置 X 坐标 |
dPosY | number | 文本位置 Y 坐标 |
pszText | string | 文本内容 |
dHeight | number | 文本高度 |
dRotation | number | 旋转角度,单位为弧度 |
horizontalMode | TextHorzMode | 横向对齐方式 |
verticalMode | TextVertMode | 纵向对齐方式 |
Returns
成功返回 1,失败返回 0
Example
import { MxCpp, McObject } from "mxcad"
const mxcad:McObject = MxCpp.getCurrentMxCAD()
mxcad.drawText(0, 1900, "绘图控件文字测试", 100, 0, 0, 1);endBlockEdit
▸ endBlockEdit(): boolean
退出块编辑状态
Returns
boolean
endViewPortEdit
▸ endViewPortEdit(): boolean
退出视口编辑状态
Returns
boolean
getAllLayoutName
▸ getAllLayoutName(): McGeStringArray
得到所有布局名
Returns
getBackgroundEntity
▸ getBackgroundEntity(): McDbBackgroundEntity
返回当前已加载的背景对象。
该对象可用于进一步控制背景图的显示、清空或修改样式。
Returns
当前背景对象实例。
getCooperate
▸ getCooperate(): MxCooperate
返回协同工作对象
Returns
getCurrentDatabaseDrawColor
▸ getCurrentDatabaseDrawColor(): Color
返回当前数据库中设置的绘制颜色,它会自动依据背景色,把黑白色转换。
Returns
Color
返回当前数据库中设置的绘制颜色,THREE.Color对象
getCurrentFileName
▸ getCurrentFileName(): string
获取当前文件名
Returns
string
当前文件名
getCurrentLayout
▸ getCurrentLayout(): string
得到当前布局名
Returns
string
getCurrentLayoutId
▸ getCurrentLayoutId(): McObjectId
得到当前布局ID
Returns
getCurrentOpenFileMd5
▸ getCurrentOpenFileMd5(): string
当回当前打开的文件的在md5码。
Returns
string
getCurrentOriginaFileName
▸ getCurrentOriginaFileName(): string
获取当前源文件名
Returns
string
当前源文件名
getDatabase
▸ getDatabase(): McDbDatabase
获取数据库对象
Returns
数据库对象
getImp
▸ getImp(): any
获取内部实现对象
Returns
any
内部实现对象
getMxCADViewSpinMatrix
▸ getMxCADViewSpinMatrix(): McGeMatrix3d
返回与MxCAD当前视区旋转矩阵
Returns
McGeMatrix3d对象
getMxCpp
▸ getMxCpp(): any
返回MxCpp对象,它会在MxDraw模块中调用。
Returns
any
getMxDrawObject
▸ getMxDrawObject(): MxDrawObject
返回与MxCAD对象绑定的MxDraw对象。
Returns
MxDrawObject
MxDraw对象
getSysVarDouble
▸ getSysVarDouble(varName): number
获取系统变量的浮点数值
Parameters
| Name | Type | Description |
|---|---|---|
varName | string | 变量名称 |
Returns
number
变量的浮点数值
getSysVarLong
▸ getSysVarLong(varName): number
获取系统变量的整数值
Parameters
| Name | Type | Description |
|---|---|---|
varName | string | 变量名称 |
Returns
number
变量的整数值
getSysVarPoint
▸ getSysVarPoint(varName): McGePoint3d
获取系统变量的点数值
Parameters
| Name | Type | Description |
|---|---|---|
varName | string | 变量名称 |
Returns
变量的点数值
getSysVarString
▸ getSysVarString(varName): string
获取系统变量的字符串值
Parameters
| Name | Type | Description |
|---|---|---|
varName | string | 变量名称 |
Returns
string
变量的字符串值
getTempDraw
▸ getTempDraw(): McObjectTempDraw
获取临时绘制管理器。
这个方法返回的对象用于在当前视口上进行“临时绘制”,例如高亮选中对象、显示拖拽预览、动态测量提示等。 它的特点是只在视图中显示,不会真正写入图形数据库,因此适合做 UI 反馈和辅助显示。
Returns
临时绘制对象,调用其 addLines / addTriangles / setDrawColor 等方法即可。
Example
import { MxCpp } from "mxcad";
const mxcad = MxCpp.getCurrentMxCAD();
const tempDraw = mxcad.getTempDraw();
tempDraw.clearAll();
tempDraw.setDrawColor(0xFF0000);
tempDraw.addLines(new McGePoint3dArray([new McGePoint3d(0, 0, 0), new McGePoint3d(100, 100, 0)]));getViewBackgroundColor
▸ getViewBackgroundColor(): number
返回视区的背景色,0XFF(red)FF(green)FF(blue)
Returns
number
getViewCADCoord
▸ getViewCADCoord(): Object
返回当前视区的显示范围,cad坐标。
Returns
Object
当前视区显示范围
| Name | Type |
|---|---|
pt1 | McGePoint3d |
pt2 | McGePoint3d |
pt3 | McGePoint3d |
pt4 | McGePoint3d |
iniAuthorizedService
▸ iniAuthorizedService(sUrl): void
初始化用户授权服务url.
Parameters
| Name | Type | Description |
|---|---|---|
sUrl | string | 授权服务url |
Returns
void
init
▸ init(imp): void
初始对象
Parameters
| Name | Type | Description |
|---|---|---|
imp | any | 对象实现,默认该函数会被系统自动调用。 |
Returns
void
initMxObject
▸ initMxObject(mxObject): void
初始化对象模型
Parameters
| Name | Type | Description |
|---|---|---|
mxObject | any | 初始化mxdraw 创建的绘图控件 |
Returns
void
Description
initRegist
▸ initRegist(sRegist): void
初始化用户注册数据.
Parameters
| Name | Type | Description |
|---|---|---|
sRegist | string | 注册数据 |
Returns
void
insertBlock
▸ insertBlock(sFileUrl, sBlkName, isWorkThread?, fetchAttributes?, isUpdataInsertBlock?, isUpdataSameNameBlock?): Promise<McObjectId>
插件图块文件
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
sFileUrl | string | undefined | 网络文件路径 该文件为mxweb格式 |
sBlkName | string | undefined | 插入的图块的块名 |
isWorkThread | boolean | true | 是否使用工作线程打开文件,默认为 true |
fetchAttributes | number | 0 | 1:EMSCRIPTEN_FETCH_LOAD_TO_MEMORY,把图纸数据加载内存中,0:EMSCRIPTEN_FETCH_LOAD_TO_MEMORY | EMSCRIPTEN_FETCH_PERSIST_FILE | EMSCRIPTEN_FETCH_APPEND,把图纸数据加到IndexedDB。 |
isUpdataInsertBlock | boolean | false | 是否更新已经存在的块,默认不会更新 |
isUpdataSameNameBlock | boolean | false | 是插入块的过程中,如果发现原数据库已经相同名称的块,是否也一同更新,默认不会更新 |
Returns
Example
import { McDbBlockReference, MxCADUiPrPoint, MxCpp } from "mxcad";
// 插入图块
async function MxTest_InsertBlock() {
let baseUrl = "http://localhost:3000/mxcad/"
// 设置图块路径
let blkFilePath = baseUrl + "tree.mxweb";
// 插入图块文件
let mxcad = MxCpp.App.getCurrentMxCAD();
let blkrecId = await mxcad.insertBlock(blkFilePath, "tree");
if (!blkrecId.isValid()) {
// 插入图块
return;
}
// 设置图块大小
let blkRef = new McDbBlockReference();
blkRef.blockTableRecordId = blkrecId;
let box = blkRef.getBoundingBox();
if (box.ret) {
let dLen = box.maxPt.distanceTo(box.minPt);
if (dLen > 0.00001) {
blkRef.setScale(mxcad.getMxDrawObject().screenCoordLong2Doc(100) / dLen);
}
}
// 指定插入基点
let getPoint = new MxCADUiPrPoint();
getPoint.setMessage("\指定插入基点");
// 动态绘制图块
getPoint.setUserDraw((v, worldDraw) => {
blkRef.position = v;
worldDraw.drawMcDbEntity(blkRef);
});
let pt = await getPoint.go();
if (!pt) return;
blkRef.position = pt;
// 绘制图块
let newBlkRefId = mxcad.drawEntity(blkRef);
if (!newBlkRefId.isValid) {
console.log("insert error");
return;
}
};isBlockEditing
▸ isBlockEditing(): boolean
当前是否正在块编辑
Returns
boolean
isTryVersion
▸ isTryVersion(): boolean
当前程序是否是试用版本.
Returns
boolean
isUselessLayer
▸ isUselessLayer(layerName): boolean
判断层是不是一个在使用的有用层,删除一个层之前调用该函数判断一下。
Parameters
| Name | Type | Description |
|---|---|---|
layerName | string | 层名 |
Returns
boolean
true: 有用层,false: 无用层
isViewPortEditing
▸ isViewPortEditing(): boolean
当前是否正视口编辑
Returns
boolean
layoutRename
▸ layoutRename(sName, sToName): boolean
布局改名
Parameters
| Name | Type | Description |
|---|---|---|
sName | string | 布局名称 |
sToName | string | 新布局名称 |
Returns
boolean
loadDwgBackground
▸ loadDwgBackground(sFileUrl, call, color?, isShow?): void
将另一个 DWG 文件作为当前图纸的背景对象加载。
常用于底图对比、参考图叠加、背景图显示等场景。加载成功后, 该背景对象会以当前图纸的背景方式参与显示。
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
sFileUrl | string | undefined | 背景文件地址。 |
call | (ret: boolean) => void | undefined | 加载完成后的回调,参数为布尔值,表示是否加载成功。 |
color | number | 0 | 背景对象显示颜色,默认为 0。 |
isShow | boolean | true | 是否显示背景对象。 |
Returns
void
Example
import { MxCpp } from "mxcad";
const mxcad = MxCpp.getCurrentMxCAD();
mxcad.loadDwgBackground("./demo/background.dwg.mxweb", (ret) => {
console.log("背景加载结果:", ret);
});loadImage
▸ loadImage(imageUrl, call, imageFileName?, fileType?): void
加载一个外部图片到当前上下文,方便后面使用。
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
imageUrl | string | undefined | 图片路径 |
call | (image: any) => void | undefined | 回调函数 |
imageFileName | string | "" | - |
fileType | string | "" | - |
Returns
void
Example
import { MxCpp, MxCADUiPrPoint } from "mxcad"
async function Mx_Test_DrawImage() {
const getPoint = new MxCADUiPrPoint();
getPoint.setMessage("\n指定插入点:");
let pt = await getPoint.go();
if (!pt) return;
let mxcad = MxCpp.getCurrentMxCAD();
let imagUrl = "https://cdn.pixabay.com/photo/2022/11/15/12/23/winter-7593872_960_720.jpg";
mxcad.loadImage(imagUrl, (image) => {
if (!image) {
console.log("loadImage failed");
return;
}
let width = mxcad.mxdraw.viewCoordLong2Cad(100);
let height = (image.height / image.width) * width;
//let viewAngle = mxcad.mxdraw.getViewAngle() * 180 / Math.PI;
//let viewAngle = mxcad.database.ucsMatrix.angleXYPlane() * 180 / Math.PI;
//let viewAngle = 15.0;
let viewAngle = 0.0;
let id = mxcad.drawImage((pt as any).x, (pt as any).y, width, height, viewAngle, imagUrl, true, image.width, image.height);
let ent = id.getMcDbEntity();
if (ent) {
ent.trueColor = new McCmColor(255, 255, 255, 160);
// ent.rotate(pt,45 * 3.14159265 / 180.0);
}
mxcad.updateDisplay();
});
}loadImageBase64
▸ loadImageBase64(sImageBase64, imageFileName, call): void
加载Base64图片。
Parameters
| Name | Type | Description |
|---|---|---|
sImageBase64 | string | - |
imageFileName | string | - |
call | (image: any) => void | 回调函数 |
Returns
void
Example
import { MxCpp } from "mxcad";
function selectLocalFile() {
return new Promise((resolve) => {
const input = document.createElement("input");
input.type = "file";
input.accept = "image/*";
input.onchange = (e) => resolve(e.target.files[0]);
input.click();
});
}
function fileToBase64(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = () => resolve(reader.result);
reader.onerror = reject;
reader.readAsDataURL(file);
});
}
const file = await selectLocalFile();
if (!file) return;
const imagData = await fileToBase64(file);
let mxcad = MxCpp.getCurrentMxCAD();
mxcad.loadImageBase64(imagData, "test.jpg", (image) => {
if (!image) {
console.log("loadImage failed");
return;
}
let width = mxcad.mxdraw.viewCoordLong2Cad(100);
let height = (image.height / image.width) * width;
let viewAngle = 0.0;
let id = mxcad.drawImage(100, 100, width, height, viewAngle, "test.jpg", true, image.width, image.height,"",imagData);
mxcad.updateDisplay();
})makeCurrent
▸ makeCurrent(): void
把mxcad设置当前的cad对象
Returns
void
newFile
▸ newFile(): boolean
清空当前图上内容,新建一个文件
Returns
boolean
objectIdToObject
▸ objectIdToObject(lIdIndex): null | McDbObject
将 lIdIndex 转换成 McDbObject 对象
Parameters
| Name | Type | Description |
|---|---|---|
lIdIndex | number | 对象 ID |
Returns
null | McDbObject
与 ID 对应的 McDbObject 对象,如果对象不存在则返回 null
off
▸ off(name, fun?): void
关闭事件监听
Parameters
| Name | Type | Description |
|---|---|---|
name | string | 监听事件名 |
fun? | Function | 监听事件 |
Returns
void
Example
import { MxCpp, McObject } from "mxcad"
const mxcad:McObject = MxCpp.getCurrentMxCAD();
// e:事件函数,这里指代在mxcad.on("selectChange", e)中注册的函数
mxcad.off("selectChange", e);on
▸ on(name, fun): void
监听对象选择事件
Parameters
| Name | Type |
|---|---|
name | "selectChange" |
fun | (ids: McObjectId[]) => void | (ids: McObjectId[]) => void[] |
Returns
void
Example
import { MxCpp, McObject, McObjectId } from "mxcad"
const mxcad:McObject = MxCpp.getCurrentMxCAD();
mxcad.on("selectChange", (ids: McObjectId[])=> {
if (ids.length == 0) return;
let id = ids[0]
let ent = id.getMcDbEntity()
if(!ent) return
console.log(ent.objectName)
})▸ on(name, fun): void
监听文件完全打开
Parameters
| Name | Type |
|---|---|
name | "openFileComplete" |
fun | () => void |
Returns
void
▸ on(name, fun): void
mxdraw mxcad程序已经加载,准备初始化cpp程序
Parameters
| Name | Type |
|---|---|
name | "init_cpp" |
fun | () => void |
Returns
void
▸ on(name, fun): void
mxdraw mxcad程序已经加载,准备创建mxdraw对象时触发
Parameters
| Name | Type |
|---|---|
name | "init" |
fun | () => void |
Returns
void
▸ on(name, fun): void
初化地图加载时调用,mxdad-app npm使用
Parameters
| Name | Type |
|---|---|
name | "init_map" |
fun | (init_param: { map: MxMap ; plugin: MxCADPluginBase }) => void |
Returns
void
▸ on(name, fun): void
地图图层加载时调用,mxdad-app npm使用
Parameters
| Name | Type |
|---|---|
name | "map_style.load" |
fun | (map: MxMap) => void |
Returns
void
▸ on(name, fun): void
mxdraw对象创建了,准备初始相关参数时触发
Parameters
| Name | Type |
|---|---|
name | "init_before_mxdraw" |
fun | (mxdraw: MxDrawObject) => void |
Returns
void
▸ on(name, fun): void
mxdraw对象创建后触发
Parameters
| Name | Type |
|---|---|
name | "init_mxdraw" |
fun | (mxdraw: MxDrawObject) => void |
Returns
void
▸ on(name, fun): void
mxcad对象创建后,已经准备完成时触发
Parameters
| Name | Type |
|---|---|
name | "init_mxcad" |
fun | (mxcad: McObject) => void |
Returns
void
▸ on(name, fun): void
监听数据库修改事件
Parameters
| Name | Type |
|---|---|
name | "databaseModify" |
fun | () => void |
Returns
void
▸ on(name, fun): void
系统变量被修改
Parameters
| Name | Type |
|---|---|
name | "sysVarChanged" |
fun | (name: string) => void |
Returns
void
▸ on(name, fun): void
图形数据库初始化
Parameters
| Name | Type |
|---|---|
name | "databaseInitialization" |
fun | () => void |
Returns
void
▸ on(name, fun): void
图层数据发生了变化
Parameters
| Name | Type |
|---|---|
name | "layerChanged" |
fun | () => void |
Returns
void
▸ on(name, fun): void
线型数据发生了变化
Parameters
| Name | Type |
|---|---|
name | "lineTypeChanged" |
fun | () => void |
Returns
void
▸ on(name, fun): void
对象被修改事件,默认不会通知,配制EnableObjectModificationEvent变量启用 status:1:删除,2:增加,0: 修改
Parameters
| Name | Type |
|---|---|
name | "objectModified" |
fun | (param: { cmd: string ; entitys: { erase: boolean ; id: McObjectId ; status: number }[] }) => void |
Returns
void
openWebFile
▸ openWebFile(sFileUrl, retCall?, isWorkThread?, obj_param?, fetchAttributes?, isFetchTzFile?): boolean
打开网络文件
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
sFileUrl | string | undefined | 网络文件路径 |
retCall? | (iRet: number) => void | undefined | 回调函数,可选参数,打开文件完成后的回调函数,参数为打开文件的结果,0表示成功,其他值表示失败 |
isWorkThread | boolean | true | 是否使用工作线程打开文件,默认为 true |
obj_param? | object | undefined | - |
fetchAttributes | number | 0 | 1:EMSCRIPTEN_FETCH_LOAD_TO_MEMORY,把图纸数据加载内存中,0:EMSCRIPTEN_FETCH_LOAD_TO_MEMORY | EMSCRIPTEN_FETCH_PERSIST_FILE | EMSCRIPTEN_FETCH_APPEND,把图纸数据加到IndexedDB。 |
isFetchTzFile | boolean | true | - |
Returns
boolean
是否成功打开文件
Example
import { MxCpp } from "mxcad";
const mxcad = MxCpp.getCurrentMxCAD();
mxcad.openWebFile("http://localhost:1337/mxcad/file/a9cbed3d3a351b79f24484e87bd78338.DWG.mxweb");pathCircle
▸ pathCircle(dCenX, dCenY, dR, dPrecision?, dWidth?): boolean
根据圆对象创建一个路径
Parameters
| Name | Type | Default value |
|---|---|---|
dCenX | number | undefined |
dCenY | number | undefined |
dR | number | undefined |
dPrecision | number | 0.0 |
dWidth | number | 0 |
Returns
boolean
pathLineTo
▸ pathLineTo(dX, dY): void
从当前位置画一条直线到指定位置
Parameters
| Name | Type | Description |
|---|---|---|
dX | number | X 坐标 |
dY | number | Y 坐标 |
Returns
void
pathLineToEx
▸ pathLineToEx(dX, dY, dStartWidth, dEndWidth, dBulge): void
从当前位置画一条直线到指定位置,同时指定起始宽度、终止宽度和凸度
Parameters
| Name | Type | Description |
|---|---|---|
dX | number | X 坐标 |
dY | number | Y 坐标 |
dStartWidth | number | 起始宽度 |
dEndWidth | number | 终止宽度 |
dBulge | number | 凸度 |
Returns
void
pathMakeClosed
▸ pathMakeClosed(): void
闭合路径
Returns
void
Example
import { MxCpp } from "mxcad"
let mxcad = MxCpp.getCurrentMxCAD();
//用Plyline显示绘制矩形框
//定义一个路径的开始点
mxcad.pathMoveTo(0, 300);
//路径的一下个点
mxcad.pathLineTo(100, 300);
//路径的一下个点
mxcad.pathLineTo(100, 400);
//路径的一下个点
mxcad.pathLineTo(0, 400);
//把路径设置成闭合
mxcad.pathMakeClosed();
//把路径闭合,生成一个矩形框
mxcad.drawPathToPolyline();pathMakeExclude
▸ pathMakeExclude(isExclude): void
把当前路径做上排除标记,主要用于填充的绘制,把这个路径组成的闭合区域在填充中挖去
Parameters
| Name | Type | Description |
|---|---|---|
isExclude | boolean | 是否排除 |
Returns
void
Example
//绘制一个实心有圆弧边界填充,中间挖去一块.
import { MxCpp, McObject } from "mxcad";
const mxcad:McObject = MxCpp.getCurrentMxCAD()
//定义一个路径的开始点
mxcad.pathMoveToEx(440, 3310, 0, 0, 0);
//路径的一下个点
mxcad.pathLineTo(480, 3310);
//路径的一下个点
mxcad.pathLineTo(480, 3360);
//路径的一下个点
mxcad.pathLineTo(450, 3340);
// 把上面定义的路径定义填充排除区域.
mxcad.pathMakeExclude(true);
//定义一个路径的开始点
mxcad.pathMoveToEx(400, 3300, 0, 0, 0.3);
//路径的一下个点
mxcad.pathLineTo(500, 3300);
//路径的一下个点
mxcad.pathLineTo(500, 3400);
//路径的一下个点
mxcad.pathLineTo(400, 3300);
mxcad.drawColor = new McCmColor(255, 25, 0);
//把路径变成一个填充
mxcad.drawPathToHatch(1);pathMoveTo
▸ pathMoveTo(dX, dY): void
将路径移动到指定位置
Parameters
| Name | Type | Description |
|---|---|---|
dX | number | X 坐标 |
dY | number | Y 坐标 |
Returns
void
pathMoveToEx
▸ pathMoveToEx(dX, dY, dStartWidth, dEndWidth, dBulge): void
移动路径到指定位置,同时指定起始宽度、终止宽度和凸度
Parameters
| Name | Type | Description |
|---|---|---|
dX | number | X 坐标 |
dY | number | Y 坐标 |
dStartWidth | number | 起始宽度 |
dEndWidth | number | 终止宽度 |
dBulge | number | - |
Returns
void
redo
▸ redo(): void
反回退,重做。
Returns
void
regen
▸ regen(delayTime?): void
重绘图上所有对象,在调用ZoomAll,ZoomW后,因为是异步执行,可能需要延迟调用Regen才会启作用。
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
delayTime | number | 0 | 执行时间 |
Returns
void
Example
import { MxCpp, McObject } from 'mxcad'
const mxcad:McObject = MxCpp.getCurrentMxCAD()
//绘制一个带有宽度的圆
mxcad.addLinetype("CircleLineType", "30,-5,7,-7");
//设计当前线型为"CircleLineType"
mxcad.drawLinetype = ("CircleLineType");
mxcad.drawLineWidth = 40;
mxcad.drawCircle(600, 800, 120);
mxcad.zoomAll();
mxcad.regen();
mxcad.updateDisplay();regenBlockRecord
▸ regenBlockRecord(idBlockRecord): boolean
重绘块表记录中的对象,在修改了块表记录中的对象后,显示效果没有及时更新时,需要调用一下这个函数。
Parameters
| Name | Type | Description |
|---|---|---|
idBlockRecord | McObjectId | 块表记录对象 |
Returns
boolean
boolean
saveFile
▸ saveFile(filename?, call?, isDownland?, isShowSaveFileDialog?, parameter?): boolean
保存文件
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
filename? | string | undefined | 另存为的新文件名称(另存为的文件均为 mxweb 格式) |
call? | (data: any) => void | undefined | 回调函数,可选参数,文件保存完成后的回调函数,参数为文件数据 |
isDownland | boolean | true | 是否下载文件,默认为 true |
isShowSaveFileDialog | boolean | true | 是否显示保存文件对话框,默认为 true |
parameter? | object | undefined | - |
Returns
boolean
是否成功保存文件
Example
import { MxCpp, McObject, MxTools } from "mxcad"
const mxcad:McObject = MxCpp.App.getCurrentMxCAD()
const fileName = mxcad.getCurrentFileName()
mxcad.saveFile(fileName, (data)=> {
const blob = new Blob([data.buffer], { type: "application/octet-stream" });
}, false, false)saveFileToUrl
▸ saveFileToUrl(sSaveProgramUrl, call, filename?, param?): boolean
将文件保存到服务器并转换为网络路径下载
Parameters
| Name | Type | Description |
|---|---|---|
sSaveProgramUrl | string | 后端 POST请求接口, 接口具体实现: 先下载MxDraw云图开发包https://www.mxdraw.com/download.html并解压 找到MxDrawCloudServer\Bin\MxDrawServer\Windows\routes\mxcad\upload.js 可以找到对应的实现接口"/savedwg", "/mxcad/savedwg":保存dwg文件到服务器 "/mxcad/savefile":保存mxweb文件到服务器 "/mxcad/savepdf":保存pdf文件到服务器 如果没有找到则在该项目下寻找这个接口的定义, 必须符合该接口的定义才能作为参数 |
call | (iResult: number, sServerResult: string) => void | 保存文件的结果回调 这里接收到的参数请自己根据接口定义中保存图纸的位置, ref.file 不是完整请求路径,只是保存后的图纸名称 |
filename? | string | - |
param? | any | - |
Returns
boolean
是否成功保存文件
Example
import { MxCpp, McObject } from "mxcad"
//保存dwg文件
const mxcad:McObject = MxCpp.getCurrentMxCAD()
MxCpp.getCurrentMxCAD().saveFileToUrl("http://localhost:1337/mxcad/savedwg", (iResult, sserverResult) => {
let ret = JSON.parse(sserverResult);
if (ret.ret == "ok") {
console.log(ret.file)
let saveFileUrl = "http://localhost:1337/mxcad/file/" + ret.file;
MxTools.downloadFileFromUrl(saveFileUrl, ret.file);
}
})
//保存pdf文件。
import { MxCpp, McObject, MxTools } from "mxcad"
const mxcad:McObject = MxCpp.getCurrentMxCAD()
MxCpp.getCurrentMxCAD().saveFileToUrl("http://localhost:1337/mxcad/savepdf", (iResult, sserverResult) => {
let ret = JSON.parse(sserverResult);
if (ret.ret == "ok") {
console.log(ret.file)
let saveFileUrl = "http://localhost:1337/mxcad/file/" + ret.file;
MxTools.downloadFileFromUrl(saveFileUrl, ret.file);
}
},"",JSON.stringify({ width: "2000", height: "2000" }));setAttribute
▸ setAttribute(val): boolean
设置全局显示和运行属性。
通过这个方法可以控制一些影响用户体验或运行行为的参数,常见用途包括:
- 打开/关闭撤销回退;
- 控制坐标轴显示;
- 调整显示精度;
- 切换黑白显示模式。
Parameters
| Name | Type | Description |
|---|---|---|
val | object | 属性配置对象,支持以下常见项: 1. DisplayPrecision:number 显示精度,取值 0 ~ 1000,数值越大越精细; 2. EnableUndo:boolean 是否启用撤销/重做; 3. ShowCoordinate:boolean 是否显示 XY 坐标轴; 4. BlackWhiteDisplay:boolean 是否启用黑白显示。 |
Returns
boolean
Example
import { MxCpp } from "mxcad";
//获取当前MxCAD对象
const mxcad = MxCpp.getCurrentMxCAD();
//设置全局属性:打开撤销功能并显示坐标轴
mxcad.setAttribute({ EnableUndo: true, ShowCoordinate: true });setBrowse
▸ setBrowse(browse): void
设置浏览模式 param browse 是否浏览模式,true为浏览模式,false为编辑模式
Parameters
| Name | Type |
|---|---|
browse | boolean |
Returns
void
setCurrentFileName
▸ setCurrentFileName(fileName): void
设置当前文件名
Parameters
| Name | Type | Description |
|---|---|---|
fileName | string | 当前文件名 |
Returns
void
setCurrentLayout
▸ setCurrentLayout(layoutName): boolean
设置当前布局名
Parameters
| Name | Type | Description |
|---|---|---|
layoutName | string | 布局名称 |
Returns
boolean
setCurrentOriginaFileName
▸ setCurrentOriginaFileName(fileName): void
设置当前源文件名
Parameters
| Name | Type | Description |
|---|---|---|
fileName | string | 当前源文件名 |
Returns
void
setSysVarDouble
▸ setSysVarDouble(varName, val): boolean
设置系统变量的浮点数值
Parameters
| Name | Type | Description |
|---|---|---|
varName | string | 变量名称 |
val | number | 变量的浮点数值 |
Returns
boolean
是否成功设置变量值
setSysVarLong
▸ setSysVarLong(varName, val): boolean
设置系统变量的整数值
Parameters
| Name | Type | Description |
|---|---|---|
varName | string | 变量名称 |
val | number | 变量的整数值 |
Returns
boolean
是否成功设置变量值
setSysVarPoint
▸ setSysVarPoint(varName, pt): boolean
设置系统变量的点数值
Parameters
| Name | Type | Description |
|---|---|---|
varName | string | 变量名称 |
pt | McGePoint3d | - |
Returns
boolean
是否成功设置变量值
setSysVarPoint2d
▸ setSysVarPoint2d(varName, pt): boolean
设置系统变量的2维点数值
Parameters
| Name | Type | Description |
|---|---|---|
varName | string | 变量名称 |
pt | McGePoint3d | - |
Returns
boolean
是否成功设置变量值
setSysVarString
▸ setSysVarString(varName, val): any
设置系统变量的字符串值
Parameters
| Name | Type | Description |
|---|---|---|
varName | string | 变量名称 |
val | string | 变量的字符串值 |
Returns
any
是否成功设置变量值
setViewBackgroundColor
▸ setViewBackgroundColor(red, green?, blue?): void
设置视区的背景色.
Parameters
| Name | Type | Description |
|---|---|---|
red | number | 红色分量 (0-255) |
green? | number | 绿色分量 (0-255) |
blue? | number | 蓝色分量 (0-255) |
Returns
void
Example
import { MxCpp, McObject } from "mxcad"
const mxcad:McObject = MxCpp.getCurrentMxCAD()
mxcad.setViewBackgroundColor(255, 255, 255)showLineWeight
▸ showLineWeight(isShow): boolean
控制当前视口是否显示线宽效果。
适用于需要查看线宽显示效果、调试绘图样式或在图纸中观察线宽是否生效的场景。 开启后会立即刷新当前视图,便于观察绘制结果。
Parameters
| Name | Type | Description |
|---|---|---|
isShow | boolean | 是否显示线宽。 |
Returns
boolean
执行结果。
Example
import { MxCpp } from "mxcad";
const mxcad = MxCpp.getCurrentMxCAD();
let showLineWeight = false;
function toggleLineWeight() {
showLineWeight = !showLineWeight;
mxcad.showLineWeight(showLineWeight);
}smallcoordToCad
▸ smallcoordToCad(pt): McGePoint3d
绘图修正的小坐标系转cad坐标
Parameters
| Name | Type | Description |
|---|---|---|
pt | McGePoint3d | 点对象 |
Returns
转换后的点坐标
startBlockEdit
▸ startBlockEdit(idBlockRecord): boolean
进入块编辑状态
Parameters
| Name | Type | Description |
|---|---|---|
idBlockRecord | McObjectId | 块记录的ID |
Returns
boolean
是否成功进入块编辑状态
Example
import { MxCpp, McDbBlockReference, MxCADUtility, MxCADResbuf, DxfCode } from "mxcad";
async function Mx_StartBlockEdit() {
let retIds = await MxCADUtility.selectEnt("选择需要被编辑的块引用", new MxCADResbuf([DxfCode.kEntityType, "INSERT"]));
if (retIds.length == 0) {
return;
}
let id = retIds[0];
let ent = id.getMcDbEntity();
if(ent instanceof McDbBlockReference){
MxCpp.mxcad.startBlockEdit((ent as McDbBlockReference).blockTableRecordId);
}
}startViewPortEdit
▸ startViewPortEdit(idBlockRecord): boolean
开始进入视口编辑状态
Parameters
| Name | Type | Description |
|---|---|---|
idBlockRecord | McObjectId | 视口记录对象id |
Returns
boolean
Example
import { MxCpp, McDbViewport, MxCADUtility, MxCADResbuf, DxfCode } from "mxcad";
async function Mx_StartViewPortEdit() {
let retIds = await MxCADUtility.selectEnt("选择需要编辑的视口", new MxCADResbuf([DxfCode.kEntityType, "VIEWPORT"]));
if (retIds.length == 0) {
return;
}
let id = retIds[0];
let ent = id.getMcDbEntity();
if(ent instanceof McDbViewport){
MxCpp.mxcad.startViewPortEdit(id);
}
}undo
▸ undo(): void
回退到上一个命令或标记处
Returns
void
undoIndexIncrease
▸ undoIndexIncrease(): void
回退标记索引加1. 在非命令函数里面修改数据据对象,需要回退标记索引加1,这样会记录修改,不然可能会认为上一次的命令修改,跳过当前修改回退记录. 在命令里面会自动回退标记索引加1
Returns
void
undoMark
▸ undoMark(): void
在当前设置一个回退标记.
Returns
void
updateDisplay
▸ updateDisplay(isImmediate?, delayTime?): void
更新显示
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
isImmediate | boolean | false | 是否立即更新 |
delayTime | number | 0 | 延迟更新时间 |
Returns
void
updateLayerDisplayStatus
▸ updateLayerDisplayStatus(): void
更新图层的显示
Returns
void
viewCoord2Cad
▸ viewCoord2Cad(pt): McGePoint3d
视区坐标到CAD坐标
Parameters
| Name | Type | Description |
|---|---|---|
pt | McGePoint3d | 点对象 |
Returns
转换后的点坐标
viewCoordLong2Cad
▸ viewCoordLong2Cad(l): number
视区长度到CAD长度
Parameters
| Name | Type | Description |
|---|---|---|
l | number | 视区长度 |
Returns
number
CAD长度
zoomAll
▸ zoomAll(autoRegen?): boolean
显示全部
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
autoRegen | boolean | false | 是否在方法执行后自动执行重绘方法 |
Returns
boolean
zoomAngle
▸ zoomAngle(viewangle): void
设置显示视区的角度,单位是PI.
Parameters
| Name | Type | Description |
|---|---|---|
viewangle | number | 旋转角度 Math.PI |
Returns
void
void
zoomCenter
▸ zoomCenter(dCenX, dCenY): void
把当前显示范围移到指定的位置,dCenX,dCenY是DWG图纸坐标。
Parameters
| Name | Type | Description |
|---|---|---|
dCenX | number | 视区中心点X坐标 |
dCenY | number | 视区中心点Y坐标 |
Returns
void
void
zoomScale
▸ zoomScale(scale): void
缩放当前显示范围,它是相对于当前显示范围进行缩放
Parameters
| Name | Type | Description |
|---|---|---|
scale | number | scale缩放比例 |
Returns
void
void
zoomW
▸ zoomW(minPt, maxPt): void
把当前显示范围移到指定的显示范围
Parameters
| Name | Type | Description |
|---|---|---|
minPt | McGePoint3d | 坐标1 McGePoint3d |
maxPt | McGePoint3d | 坐标2 McGePoint3d |
Returns
void
void
