Skip to content
On this page

填充

实心填充

我们可以通过 mxcad 实例对象提供的 drawPathToHatch() 方法直接绘制实心填充图形。

点击 drawPathToHatch() 查看详细属性和方法说明。

ts
import { MxCpp, McCmColor} from "mxcad"

const mxcad = MxCpp.getCurrentMxCAD()
//绘制一个实心三角形填充.
//定义一个路径的开始点
mxcad.pathMoveTo(150, 3300);
//路径的一下个点
mxcad.pathLineTo(250, 3300);
//路径的一下个点
mxcad.pathLineTo(250, 3400);
//路径的一下个点
mxcad.pathLineTo(150, 3300);
//把路径拟合成一个样线
mxcad.drawColor = new McCmColor(255, 0, 0);
mxcad.drawPathToHatch(1);

图案填充

我们可以通过 mxcad 实例对象提供的 addPatternDefinition() 方法增加一个图案定义,并将该新定义的图案设置为 drawPatternDefinition 当前绘制的线型属性值,就能绘制图案填充图形。

点击 addPatternDefinition() 查看详细属性和方法说明。

ts
import { MxCpp, McCmColor} from "mxcad"
//angle, x-origin,y-origin, delta-x,delta-y,dash-1,dash-2, …
// "MyHatchPattern1" = 图案名称
//45 = angle 是图案线角度.
//0 = x-origin 是第一个填充线经过的点位置X坐标
//0 = y-origin 是第一个填充线经过的点位置Y坐标
//0 = delta-x   是下一个填充线相对前一个线的X方向偏移
//0.125 = delta-y   是下一个填充线相对前一个线的Y方向偏移
const mxcad = MxCpp.getCurrentMxCAD()
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(100);

选点填充

我们可以通过 MxCADUtilityClass 类结合交互绘图实现选点填充功能,该类提供了一系列与绘图相关的工具方法。其中提供的 builderHatchFromPoint() 方法就实现了通过一个点坐标填充对应位置实体的填充对象 McDbHatch ,若成功绘制填充对象则返回该填充对象,若未成功绘制则返回 null 。

此外,mxcad 中提供了设置填充对象 McDbHatch 的一系列方法和属性,你可以根据自身需求定义填充图形样式。

点击 MxCADUtilityClass()McDbHatch() 查看详细属性和方法说明。

ts
import { McGePoint3d, MxCADUiPrPoint, MxCADUtility, MxCpp } from "mxcad";

const getPoint = new MxCADUiPrPoint();
console.log("\n指定填充区域内部一点:");
getPoint.disableAllTrace(true);
getPoint.setDisableOsnap(true);
let pt = (await getPoint.go()) as McGePoint3d;
if (!pt) return;

let hatch = MxCADUtility.builderHatchFromPoint(pt);
if (!hatch) {
  console.log("没有找到闭合区域\n")
  return;
}
hatch.clearPatternDefinition();
hatch.addPatternDefinition(45, 1, 1, 1, 0.25, [45, 0.17677695, 0, 0, 0.25, 0.125, -0.0625])
hatch.setPattern(McDb.HatchPatternType.kCustomDefined, 'test')
hatch.trueColor = new McCmColor(0, 133, 122)
let mxcad = MxCpp.getCurrentMxCAD();
mxcad.drawEntity(hatch);