BIMHome v1.0.0
BIMHome接口文档说明
BaseFigureFactory.h
浏览该文件的文档.
1/************************************************************************
2* @file BaseFigureFactory.h
3*
4* @brief 基础图元创建工厂类
5*
6* @details 主要创建各种基础图元
7*
8* @author sunpeng
9*
10* @version 版本号 V0.1
11*
12* @date 2023-12-14
13*
14* @license 北京华科软科技有限公司
15*
16*************************************************************************/
17
18#ifndef PLATFORMALGORITHM_BASEFIGUREFACTORY_H
19#define PLATFORMALGORITHM_BASEFIGUREFACTORY_H
20
21#include <string>
22#include <Base/Placement.h>
23#include <BHGlobal.h>
24namespace Base {
25 class Placement;
26}
27
28namespace App {
29 class IDocument;
30 class IDocumentObject;
31}
32
34
35 //注意:各个基本图元详细参数说明请看具体生成形体的类
36 class PlatformAlgorithmEXPORTS BaseFigureFactory
37 {
38 public:
39
40
51 static App::IDocumentObject* createVertex(double x, double y, double z, const std::string& objName = "Vertex", App::IDocument* pDoc = nullptr);
52
60 static void updateVertexParameters(App::IDocumentObject* pObj, double x, double y, double z);
61
62
73 static App::IDocumentObject* createBox(double dLength, double dHeight, double dWidth, const std::string& sObjname = "Box", App::IDocument* pIDoc = nullptr);
74
84 static void updateBoxParameters(App::IDocumentObject* pIObj, double dLength, double dHeight, double dWidth);
85
97 static App::IDocumentObject* createCuboid(double length, double height, double width, const std::string& objName = "Cuboid", const Base::Placement& placement = Base::Placement(), App::IDocument* pDoc = nullptr);
98
107 static void updateCuboidParameters(App::IDocumentObject* pObj, double length, double height, double width);
108
109
122 static App::IDocumentObject* createSphere(double radius, double angle1 = -90.0f, double angle2 = 90.0f, double angle3 = 360.0f, const std::string& objName = "Sphere", const Base::Placement& placement = Base::Placement(), App::IDocument* pDoc = nullptr);
123
133 static void updateSphereParameters(App::IDocumentObject* pObj, double radius, double angle1 = -90.0f, double angle2 = 90.0f, double angle3 = 360.0f);
134
146 static App::IDocumentObject* createCylinder(double radius, double height, double angle = 360.0f, const std::string& objName = "Cylinder", const Base::Placement& placement = Base::Placement(), App::IDocument* pDoc = nullptr);
147
156 static void updateCylinderParameters(App::IDocumentObject* pObj, double radius, double height, double angle = 360.0f);
157
170 static App::IDocumentObject* createCone(double radius1, double radius2, double height, double angle = 360.0f, const std::string& objName = "Cone", const Base::Placement& placement = Base::Placement(), App::IDocument* pDoc = nullptr);
171
181 static void updateConeParameters(App::IDocumentObject* pObj, double radius1, double radius2, double height, double angle = 360.0f);
182
196 static App::IDocumentObject* createTable(double tL1, double tL2, double lL1, double lL2, double h, const std::string& objName = "Table", const Base::Placement& placement = Base::Placement(), App::IDocument* pDoc = nullptr);
197
208 static void updateTableParameters(App::IDocumentObject* pObj, double tL1, double tL2, double lL1, double lL2, double h);
209
221 static App::IDocumentObject* createRing(double dr, double r, double rad, const std::string& objName = "Ring", const Base::Placement& placement = Base::Placement(), App::IDocument* pDoc = nullptr);
222
231 static void updateRingParameters(App::IDocumentObject* pObj, double dr, double r, double rad);
232
245 static App::IDocumentObject* createRectangularRing(double dr, double r, double length, double width, const std::string& objName = "RectangularRing", const Base::Placement& placement = Base::Placement(), App::IDocument* pDoc = nullptr);
246
256 static void updateRectangularRingParameters(App::IDocumentObject* pObj, double dr, double r, double length, double width);
257
274 double tl,
275 double tw,
276 double ll,
277 double lw,
278 double h,
279 double xOff,
280 double yOff,
281 const std::string& objName = "OffsetRectangularTable",
282 const Base::Placement& placement = Base::Placement(),
283 App::IDocument* pDoc = nullptr);
284
299 double tl,
300 double tw,
301 double ll,
302 double lw,
303 double h,
304 double xOff,
305 double yOff);
306
318 static App::IDocumentObject* createBendingCylindrical(double radius, double length, double rad, const std::string& objName = "BendingCylindrical", const Base::Placement& placement = Base::Placement(), App::IDocument* pDoc = nullptr);
319
328 static void updateBendingCylindricalParameters(App::IDocumentObject* pObj, double radius, double length, double rad);
329
344 double tr,
345 double br,
346 double h,
347 double topXOff,
348 double topYOff,
349 const std::string& objName = "EccentricTruncatedCone",
350 const Base::Placement& placement = Base::Placement(),
351 App::IDocument* pDoc = nullptr);
352
365 double tr,
366 double br,
367 double h,
368 double topXOff,
369 double topYOff);
370
382 static App::IDocumentObject* createEllipticRing(double dr, double length, double width, const std::string& objName = "EllipticRing", const Base::Placement& placement = Base::Placement(), App::IDocument* pDoc = nullptr);
383
392 static void updateEllipticRingParameters(App::IDocumentObject* pObj, double dr, double length, double width);
393
405 static App::IDocumentObject* createStretchedBody(const std::string& pointArrayStr, const std::string& vectorStr, double lenght, const std::string& objName = "StretchedBody", const Base::Placement& placement = Base::Placement(), App::IDocument* pDoc = nullptr);
406
415 static void updateStretchedBodyParameters(App::IDocumentObject* pObj, const std::string& pointArrayStr, const std::string& vectorStr, double lenght);
416
428 static App::IDocumentObject* createRotationalEllipsoid(double lr, double wr, double h, const std::string& objName = "RotationalEllipsoid", const Base::Placement& placement = Base::Placement(), App::IDocument* pDoc = nullptr);
429
438 static void updateRotationalEllipsoidParameters(App::IDocumentObject* pObj, double lr, double wr, double h);
439
440 };
441
442
443}
444
445
446#endif // PLATFORMALGORITHM_BASEFIGUREFACTORY_H
文档接口类
Definition IDocument.h:43
Definition IDocumentObject.h:35
Placement 类,表示三维空间中的位置和旋转
Definition Placement.h:34
static App::IDocumentObject * createBendingCylindrical(double radius, double length, double rad, const std::string &objName="BendingCylindrical", const Base::Placement &placement=Base::Placement(), App::IDocument *pDoc=nullptr)
弯折圆柱的创建
static App::IDocumentObject * createRing(double dr, double r, double rad, const std::string &objName="Ring", const Base::Placement &placement=Base::Placement(), App::IDocument *pDoc=nullptr)
圆环的创建
static App::IDocumentObject * createVertex(double x, double y, double z, const std::string &objName="Vertex", App::IDocument *pDoc=nullptr)
创建一个顶点对象
static void updateBoxParameters(App::IDocumentObject *pIObj, double dLength, double dHeight, double dWidth)
更新立方体
static void updateBendingCylindricalParameters(App::IDocumentObject *pObj, double radius, double length, double rad)
更新弯折圆柱参数
static void updateCylinderParameters(App::IDocumentObject *pObj, double radius, double height, double angle=360.0f)
更新圆柱体参数
static App::IDocumentObject * createStretchedBody(const std::string &pointArrayStr, const std::string &vectorStr, double lenght, const std::string &objName="StretchedBody", const Base::Placement &placement=Base::Placement(), App::IDocument *pDoc=nullptr)
拉伸体的创建
static App::IDocumentObject * createRotationalEllipsoid(double lr, double wr, double h, const std::string &objName="RotationalEllipsoid", const Base::Placement &placement=Base::Placement(), App::IDocument *pDoc=nullptr)
旋转椭球体的创建
static App::IDocumentObject * createBox(double dLength, double dHeight, double dWidth, const std::string &sObjname="Box", App::IDocument *pIDoc=nullptr)
创建立方体
static void updateRingParameters(App::IDocumentObject *pObj, double dr, double r, double rad)
更新圆环参数
static App::IDocumentObject * createEccentricTruncatedCone(double tr, double br, double h, double topXOff, double topYOff, const std::string &objName="EccentricTruncatedCone", const Base::Placement &placement=Base::Placement(), App::IDocument *pDoc=nullptr)
偏心圆台体的创建
static App::IDocumentObject * createCylinder(double radius, double height, double angle=360.0f, const std::string &objName="Cylinder", const Base::Placement &placement=Base::Placement(), App::IDocument *pDoc=nullptr)
圆柱体的创建
static void updateEllipticRingParameters(App::IDocumentObject *pObj, double dr, double length, double width)
更新椭圆环参数
static App::IDocumentObject * createCuboid(double length, double height, double width, const std::string &objName="Cuboid", const Base::Placement &placement=Base::Placement(), App::IDocument *pDoc=nullptr)
长方体的创建
static void updateVertexParameters(App::IDocumentObject *pObj, double x, double y, double z)
更新顶点参数
static App::IDocumentObject * createCone(double radius1, double radius2, double height, double angle=360.0f, const std::string &objName="Cone", const Base::Placement &placement=Base::Placement(), App::IDocument *pDoc=nullptr)
圆台体的创建
static void updateRectangularRingParameters(App::IDocumentObject *pObj, double dr, double r, double length, double width)
更新矩形环参数
static App::IDocumentObject * createRectangularRing(double dr, double r, double length, double width, const std::string &objName="RectangularRing", const Base::Placement &placement=Base::Placement(), App::IDocument *pDoc=nullptr)
矩形环的创建
static App::IDocumentObject * createOffsetRectangularTable(double tl, double tw, double ll, double lw, double h, double xOff, double yOff, const std::string &objName="OffsetRectangularTable", const Base::Placement &placement=Base::Placement(), App::IDocument *pDoc=nullptr)
偏移矩形台的创建
static void updateRotationalEllipsoidParameters(App::IDocumentObject *pObj, double lr, double wr, double h)
更新旋转椭球体参数
static void updateStretchedBodyParameters(App::IDocumentObject *pObj, const std::string &pointArrayStr, const std::string &vectorStr, double lenght)
更新拉伸体参数
static void updateTableParameters(App::IDocumentObject *pObj, double tL1, double tL2, double lL1, double lL2, double h)
更新棱台参数
static App::IDocumentObject * createEllipticRing(double dr, double length, double width, const std::string &objName="EllipticRing", const Base::Placement &placement=Base::Placement(), App::IDocument *pDoc=nullptr)
椭圆环的创建
static App::IDocumentObject * createSphere(double radius, double angle1=-90.0f, double angle2=90.0f, double angle3=360.0f, const std::string &objName="Sphere", const Base::Placement &placement=Base::Placement(), App::IDocument *pDoc=nullptr)
球体的创建
static void updateConeParameters(App::IDocumentObject *pObj, double radius1, double radius2, double height, double angle=360.0f)
更新圆台体参数
static void updateOffsetRectangularTableParameters(App::IDocumentObject *pObj, double tl, double tw, double ll, double lw, double h, double xOff, double yOff)
更新偏移矩形台参数
static void updateEccentricTruncatedConeParameters(App::IDocumentObject *pObj, double tr, double br, double h, double topXOff, double topYOff)
更新偏心圆台体参数
static void updateSphereParameters(App::IDocumentObject *pObj, double radius, double angle1=-90.0f, double angle2=90.0f, double angle3=360.0f)
更新球体参数
static void updateCuboidParameters(App::IDocumentObject *pObj, double length, double height, double width)
更新长方体参数
static App::IDocumentObject * createTable(double tL1, double tL2, double lL1, double lL2, double h, const std::string &objName="Table", const Base::Placement &placement=Base::Placement(), App::IDocument *pDoc=nullptr)
棱台的创建
Definition BaseFigureFactory.h:37
Definition BaseFigureFactory.h:28
Definition BaseFigureFactory.h:24
Definition BaseFigureFactory.h:33