在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 |
增加填充路径 |
| appendSeedPoint(GePoint3d pt) | 增加填充点 |
| clearSeedPoints | 清理填充点 |
| getLoopAt(int loopIndex, ref List |
获取填充路径(节点号,边) |
| getLoopAt(int loopIndex, ref List |
获取填充路径(节点号,节点,系数) |
| 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 填充范例效果图