Skip to content

mxcad_2d API 文档 / 2d / McObjectTempDraw

Class: McObjectTempDraw

2d.McObjectTempDraw

临时图形绘制管理器 (McObjectTempDraw)

Description

该类用于在 CAD 视图上进行高性能的临时图形绘制(Overlay)。 核心特点是“只读不写”:它允许你在屏幕上绘制图形(如高亮、辅助线、动态反馈), 但不会将这些图形实际保存到图形数据库中。常用于实现鼠标悬停高亮、拖拽预览或临时测量显示。

使用方法总结:

  1. 通过 MxCpp.mxcad.getTempDraw() 获取临时图形绘制对象;
  2. 调用 readyMcDbEntitysWorldDraw()setDrawColor() 等方法准备绘制上下文;
  3. 调用 worldDrawMcDbEntitys() 进行临时绘制,完成后使用 endMcDbEntitysWorldDraw() 结束绘制。

Example

ts
// 场景:选中实体后,将其临时加粗并变红显示(高亮效果)
import { MxCADUtility, MxCpp } from "mxcad";

async function highlightSelectedEntity() {
  // 1. 获取用户选择的实体 ID
  const retIds = await MxCADUtility.selectEnt("选择加粗显示对象");
  if (retIds.length == 0) return;

  const ent = retIds[0].getMcDbEntity();
  if (!ent) return;

  // 2. 获取临时绘制上下文
  const mxcad = MxCpp.getCurrentMxCAD();
  const tempDraw = mxcad.getTempDraw();

  // 3. 配置绘制样式(红色、线宽 0.60mm)
  tempDraw.clearAll(); // 清除旧绘制
  tempDraw.readyMcDbEntitysWorldDraw(); // 准备上下文
  tempDraw.setDrawColor(0xFF0000, 0xFF0000); // 设置颜色
  tempDraw.setLineWeightDisplay(true, McDb.LineWeight.kLnWt060); // 设置线宽

  // 4. 执行绘制
  tempDraw.worldDrawMcDbEntitys(ent as any);

  // 5. 结束绘制上下文
  tempDraw.endMcDbEntitysWorldDraw();
}

Note

  1. 绘制的内容仅存在于当前视图帧,刷新或重绘后可能会消失,需重新调用。
  2. 务必成对调用 readyMcDbEntitysWorldDrawendMcDbEntitysWorldDraw 以确保资源正确释放。

Table of contents

Constructors

Methods

Constructors

constructor

new McObjectTempDraw(imp)

构造函数

Parameters

NameTypeDescription
impany对象实现

Methods

addLines

addLines(vecLinePoints): void

添加临时绘制线条数据

Parameters

NameTypeDescription
vecLinePointsMcGePoint3dArray线条点数组

Returns

void


addTriangles

addTriangles(vecTrianglesPoints): void

添加临时绘制填充三角形数据

Parameters

NameTypeDescription
vecTrianglesPointsMcGePoint3dArray三角形点数组

Returns

void


clear

clear(): void

清除临时绘制数据

Returns

void


clearAll

clearAll(): void

清除所有临时绘制内容

Returns

void

Description

移除当前视图上所有通过此类绘制的临时图形。


clearMcDbEntitysDisplay

clearMcDbEntitysDisplay(): void

清除McDbEntitys临时绘制的数据

Returns

void


disableDepthTestMcDbEntitysDisplay

disableDepthTestMcDbEntitysDisplay(isDisable?): void

禁用McDbEntitys临时绘制的OpenGL的DepthTest

Parameters

NameTypeDefault valueDescription
isDisablebooleantrue是否禁用深度测试,默认为true

Returns

void


endMcDbEntitysWorldDraw

endMcDbEntitysWorldDraw(): void

结束对McDbEntitys的临时绘制的上下文,释放资源。

Returns

void


freeMcDbEntitysDisplay

freeMcDbEntitysDisplay(): void

释放对McDbEntitys的临时绘制上下文。

Returns

void


readyMcDbEntitysWorldDraw

readyMcDbEntitysWorldDraw(): void

准备对McDbEntitys的临时绘制上下文。

Returns

void


setDrawColor

setDrawColor(color, iMcDbEntityDrawColor?): void

设置Draw颜色

Parameters

NameTypeDefault valueDescription
colornumberundefined颜色值
iMcDbEntityDrawColornumber-2McDbEntity的绘制颜色

Returns

void


setDrawOrder

setDrawOrder(iDrawOrder, iMcDbEntityDrawOrder): void

设置显示顺序

Parameters

NameTypeDescription
iDrawOrdernumber绘制顺序
iMcDbEntityDrawOrdernumberMcDbEntity的绘制顺序

Returns

void


setLineWeightDisplay

setLineWeightDisplay(val?, iGlobalLineweight?): void

启用线重的显示。

Parameters

NameTypeDefault valueDescription
valbooleantrue是否启用线重显示
iGlobalLineweightnumber-1全局线宽,默认为-1表示使用默认线宽

Returns

void


worldDrawMcDbEntitys

worldDrawMcDbEntitys(ent): boolean

生成McDbEntitys临时绘制的数据

Parameters

NameTypeDescription
entMcDbEntityMcDbEntity对象

Returns

boolean