在建模过程中,建筑师和工程师并不需要对所有构件进行三维建模,也可通过创建标准详图,以说明如何构造较大项目中的材质。详图是对项目的重要补充,因为它们显示了材质应该如何相互连接。
本节将介绍在详图中使用的以及可以通过BIMBase API访问的详图线对象。详图线对象包括直线、圆、圆弧、多段线四类,如表7-1所示。
表7-1 详图线对象
直线对象 | BPModelLine |
---|---|
圆对象 | BPModelCircle |
圆弧对象 | BPModelArc3d |
多段线对象 | BPPolyLineEntity |
可通过调用相应接口创建详图线对象,示例代码7-1中通过构造函数创建了线(BPModelLine
)对象,并将线添加到活动模型空间上。
BPProjectP pProject = BPApplication::getInstance().getProjectManager()->getMainProject();
if (pProject == nullptr)
return;
BPModelBaseP pModel = pProject->getActiveModel();
if (pModel == nullptr)
return;
//创建线对象
BPModelLine line(GePoint3d::create(3000, 3000, 0), GePoint3d::create(4000, 4000, 0));
//将对象保存到model
::p3d::P3DStatus status = line.addToProject(*pProject, pModel->getModelId());
代码7-1:详图线对象的创建
表7-2 详图线对象接口
直线对象BPModelLine | Create(GePoint3dCR,GePoint3dCR,GeVec3dCR ) | 创建直线对象 |
GetStartPoint()const | 获得直线起始点 | |
SetStartPoint(GePoint3dCR) | 设置直线起始点 | |
GetMidPoint()const | 获得直线中点 | |
GetEndPoint()const | 获得直线末端点 | |
SetEndPoint(GePoint3dCR) | 设置直线末端点 | |
GetDirection() | 获得直线方向向量 | |
圆对象BPModelCircle | Create(GePoint3dCR center,GeVec3dCR normal, double radius) | 创建圆对象(圆心,方向向量,半径) |
GePoint3d GetCenter()const | 获得圆心点 | |
SetCenter(GePoint3dCR center) | 设置圆心点 | |
GeVec3d GetNormal()const | 方向向量 | |
double GetLength()const | 获得圆周长 | |
double GetArea()const | 获得圆面积 | |
圆弧对象BPModelArc3d | Create(GePoint3dCR startPoint, GePoint3dCR middlePoint, GePoint3dCR endPoint) | 创建圆弧对象(三点确定圆弧) |
GePoint3d GetStartPoint()const | 获得圆弧起始点 | |
GePoint3d GetEndPoint()const | 获得圆弧终止点 | |
GePoint3d GetMidPoint()const | 获得圆弧中间点 | |
GePoint3d GetCenter()const | 获得圆弧圆心点 | |
double Length()const | 获得圆弧长度 | |
GeVec3d GetXDir()const | X方向向量 | |
GeVec3d GetYDir()const | Y方向向量 | |
GeVec3d GetNormal()const | 方向向量 | |
多段线对象BPPolyLineEntity | addVertex(GePoint3d&, GePoint3d&, bool isArc, double startWidth, double endWidth) | 添加点 |
int numVerts() | 获取点的数量 | |
getVertex(int index, GePoint3d& pt, GePoint3d& ptOhter, bool& isArc, double& startWidth, double& endWidth) | 获取点的信息 | |
clearVertexs() | 清空所有点的信息 | |
setClosed(bool closed) | 设置是否闭合 | |
bool closed() | 获得是否闭合 | |
setSegments(list& segments) | 设置多段线list | |
getSegments(list& segments) | 获得多段线list | |
CreatePolylineCurveVec(bool isClosed, const list&segments,vector& curveArrays) | 创建多段线的GeCurveArray |