Skip to content
On this page

动态绘制

CAD绘制图形的过程中我们需要能够动态观察到绘制过程,在该过程中的动态绘制不会改变图形类,但能动态设置图形的大小、方向等,可以帮助用户更快捷地绘制目标图形。

动态绘制函数

在上一节我们介绍到在绘制图形的过程中我们会使用 MxCADUiPrBase类 来实现UI交互,该类中提供了一个方法 setUserDraw(),该方法就是为了解决上述需求实现动态绘制的函数。

我们通过在 MxCADUiPrBase类 中调用 setUserDraw() 方法设置交互过程的动态绘制调用对象。其中,setUserDraw() 有两个回调参数:

  1. currentPoint:currentPoint为一个 McGePoint3d 三维点对象,返回值是当前鼠标所在点坐标。

  2. pWorldDraw:pWorldDraw为一个 McEdGetPointWorldDrawObject 动态绘制调用对象,可根据用户设置动态绘制目标图形,但使用该对象动态绘制的图像对象在结束调用时会全部清除。

ts
import { MxCADUiPrPoint, McDbLine } from "mxcad"

const getPoint = new MxCADUiPrPoint()
getPoint.go().then((point)=> {
  getPoint.setUserDraw((pt, pw)=> {
    // pt:currentPoint 就是鼠标所在图纸位置的坐标
    // pw:pWorldDraw 是提供了一些动态绘制方法的对象
    if(!point) return
    const line =new McDbLine(point ,pt)
    // 动态绘制了一条线
    pw.drawMcDbEntity(line)
  })
  // 等待鼠标点击期间会执行上面的动态绘制函数中的回调函数
  getPoint.go()
})

功能函数

我们可以直接从mxcad中导出以draw开头的函数, 每一个函数对应着一个动态绘制图形的功能。这些功能存在一些命令行交互(输入参数、关键词),类似大部分CAD中绘制图形的功能,我们可以通过默认的命令去调用这些函数,也可以选择导出调用,具体操作可参考命令行教程

mxcad 提供的交互绘制对应图形的函数以及命令列表:

函数命令说明
drawLineMx_Line绘制直线
drawArcMx_Arc绘制圆弧
drawCircleMx_Circle绘制圆
drawEllipseMx_Ellipse绘制椭圆
drawEllipticalArcMx_EllipseArc绘制椭圆弧
drawMText绘制多行文本
drawText绘制多行文本
drawPolygonMx_Polygon绘制正多边形
drawPolyLineMx_Pline绘制多义线
drawRectangMx_Rectang绘制矩形

提示

在ESM模块化的情况下,你需要引入对应的函数才能调用对应的命令。

演示

效果:

  • 在命令行输入“Mx_Arc”命令,点击enter键执行命令

  • 再根据命令行输出的提示步骤绘制圆弧