在BIMBase中,填充区域是由边界线封闭起来的、内部用某个样式填充的区域。填充区域用类BPHatch表示,BIMBase API中还提供了接口访问和修改填充样式,主要接口如表7-3所示。

表7-3 填充对象接口

属性/方法 描述
GeCurveArray hatchLoop 填充边界
GePoint3d originPt 填充原点
string patternName 填充图案名称
bool isSolidFill 是否实心填充
double angle 旋转角度
double scale 填充比例
short style 填充样式
Color customSheetColor 自定义填充颜色
getPatterns() 获取填充图案名称
GetUnitPatternScale(string patName) 获取填充比例
appendLoop(HatchLoopType loopType, List edgePtrs); 增加填充路径
appendSeedPoint(GePoint3d pt) 增加填充点
clearSeedPoints 清理填充点
getLoopAt(int loopIndex, ref List edgePtrs) 获取填充路径(节点号,边)
getLoopAt(int loopIndex, ref List vertices, ref List bulges) 获取填充路径(节点号,节点,系数)
getSeedPointAt(uint seedIndex); 获取填充点
loopTypeAt(int loopIndex) 获取填充路径类型
numLoops() 填充路径数
numSeedPoints() 填充点数

填充对象的创建首先需创建填充区域,此处需注意的是作为填充区域的CurveArray对象必须为ParityRegion类型,参见示例代码7-2。

BPDocument doc = BPApplication.singleton().activeDocument;
BPModel model = doc.modelManager.activeModel;
GePoint3d pointS = new GePoint3d(1000, 0, 0);
GePoint3d pointE = new GePoint3d(8000, 0, 0);
GePoint3d pointB = new GePoint3d(8000, 8000, 0);
GePoint3d pointT = new GePoint3d(1000, 8000, 0);
List<GePoint3d> points = new List<GePoint3d>();
points.Add(pointS);
points.Add(pointE); points.Add(pointB);
points.Add(pointT);
List<string> listPattern = BPHatch.getPatterns();
GeCurveArray curveArray = GeCurveArray.createLinestringArray(points, GeCurveArray.BoundaryType.Outer, false);
GeCurveArray curveList = GeCurveArray.create(GeCurveArray.BoundaryType.ParityRegion); curveList.add(curveArray);
string str = "";
BPHatch hatch = new BPHatch(listPattern[4], curveList, ref str);
BIMBaseCS.BPStatus sta = hatch.addToDocument(model);
base.onExcute(context);

代码7-2 创建填充对象(代码片段)

填充效果如图所示:

图7-1 填充范例效果图