Skip to content
On this page

指定范围输出dwg

下面我们将介绍如何利用 mxcad 插件实现在CAD图纸中的指定范围输出dwg功能。该功能中用户可以自主选择图纸范围并导出dwg格式的图纸文件。指定范围输出dwg功能能够实现高效的文件压缩、帮助用户精确提取图纸种的设计信息,是一个非常实用的图纸剪切功能。

功能实现

  1. 指定范围

我们可以调用 MxCADUiPrPoint 方法获取导出dwg图纸的范围。

ts
// 选择导出范围.
let getPoint = new MxCADUiPrPoint();
getPoint.setMessage("\n指定输出范围第一点:");
// 获取范围的第一个角点
let pt1 = await getPoint.go();
if (!pt1) return;

getPoint.setMessage("\n指定输出范围第二点:");
// 设置选择范围动态填充样式
getPoint.setUserDraw((currentPoint: McGePoint3d, worldDraw) => {
    // 设置范围框颜色即位置
    worldDraw.setColor(0xFF0000);
    let pl = new McDbPolyline();
    pl.addVertexAt(pt1);
    pl.addVertexAt(new McGePoint3d(pt1.x, currentPoint.y))
    pl.addVertexAt(currentPoint);
    pl.addVertexAt(new McGePoint3d(currentPoint.x, pt1.y))
    pl.constantWidth = MxFun.screenCoordLong2Doc(2);
    pl.isClosed = true;
    worldDraw.drawMcDbEntity(pl);
    // 设置范围框内的填充样式
    let points = [];
    points.push(pt1.toVector3());
    points.push(new McGePoint3d(pt1.x, currentPoint.y).toVector3());
    points.push(currentPoint.toVector3());
    points.push(new McGePoint3d(currentPoint.x, pt1.y).toVector3())
    worldDraw.setColor(0x003244);
    worldDraw.drawSolid(points, 0.5)

});
// 设置禁用捕捉与正射追踪
getPoint.setDisableOsnap(true);
getPoint.setDisableOrthoTrace(true);
// 获取范围的第二个角点
let pt2 = await getPoint.go();
if (!pt2) return;
  1. 导出pdf

在上述步骤中我们已经获取到了pdf在图纸上的范围,因此接下来我们可以直接调用 McObject.saveFileToUrl() 方法来导出目标pdf。其中,如果不设置导出图纸范围则将默认导出所有的图纸内容。

ts
// 范围参数设置
let param = {
    bd_pt1_x: "" + pt1.x,
    bd_pt1_y: "" + pt1.y,
    bd_pt2_x: "" + pt2.x,
    bd_pt2_y: "" + pt2.y
};

// 把mxweb文件 ,保存到服务器上,再转成dwg。
// cutDwgUrl:后端请求接口
MxCpp.getCurrentMxCAD().saveFileToUrl(cutDwgUrl, (iResult: number, sserverResult: string) => {
    try {
    let ret = JSON.parse(sserverResult);
    if (ret.ret == "ok") {
        // filePath:下载文件的 URL 地址
        MxTools.downloadFileFromUrl(filePath, ret.file);
    }
    else {
        console.log(sserverResult);
    }
    } catch {
    console.log("Mx: sserverResult error");
    }
}, undefined, JSON.stringify(param));

TIP

注意: 将图纸按指定范围输出dwg需调用node.js后台服务,因此,在调用上述方法之前请先启动云图开发包中的后台服务。 如果您还不清楚如何使用云图开发包启动服务,请参考云图开发包入门教程

功能实践

实践效果如下:

  • 点击导出jpg按钮,执行导出jpg方法
  • 根据命令行提示点击鼠标左键开始拉框选择导出范围
  • 再次点击鼠标左键结束框选
  • 成功将目标范围的图纸内容导出为jpg格式的图片