在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 填充范例效果图