BIMHome v1.0.0
BIMHome接口文档说明
SurfaceFactory.h
浏览该文件的文档.
1/************************************************************************
2* @file SurfaceFactory.h
3*
4* @brief 创建曲面工厂类
5*
6* @details 创建曲面工厂类 -- 通过各种方式创建平面,曲面对象
7*
8* @author sunpeng
9*
10* @version 版本号 V0.1
11*
12* @date 2025-6-13
13*
14* @license 北京华科软科技有限公司
15*
16*************************************************************************/
17
18#ifndef PLATFORMALGORITHM_INTERFACE_SURFACEFACTORY_H
19#define PLATFORMALGORITHM_INTERFACE_SURFACEFACTORY_H
20
21#include <BHGlobal.h>
22#include <string>
23#include <vector>
24#include <memory>
25#include "Base/Vector3D.h"
26
27namespace App {
28 class IDocument;
29 class IDocumentObject;
30}
31
32namespace Base {
33 class Curve;
34 class PolyLine;
35}
36
37namespace PlatformAlgorithm
38{
39 class PlatformAlgorithmEXPORTS SurfaceFactory
40 {
41 public:
42
53 static App::IDocumentObject* createFaceByThreePoint(const Base::Vector3d& point1, const Base::Vector3d& point2, const Base::Vector3d& point3, const std::string& objName = "ThreePointFace", App::IDocument* pParentDoc = nullptr);
54
64 static void updateFaceByThreePoint(App::IDocumentObject* pFaceObj, const Base::Vector3d& point1, const Base::Vector3d& point2, const Base::Vector3d& point3);
65
66 //多个点构造面---(目前算法是点集依次相连接生成闭合Wire,再生成面(平面),有问题,未解决)
67 static App::IDocumentObject* createPlane(const std::vector<Base::Vector3d>& points, const std::string& objName = "Plane", App::IDocument* pParentDoc = nullptr);
68
77 static App::IDocumentObject* createSurfaceBySegmentLines(const std::vector<App::IDocumentObject*>& segmentLines, const std::string& objName = "Surface", App::IDocument* pParentDoc = nullptr);
78
87 static App::IDocumentObject* createSurfaceByCurveDatas(const std::vector<std::shared_ptr<Base::Curve>>& curveList, const std::string& objName = "Surface", App::IDocument* pParentDoc = nullptr);
88
89
98 static App::IDocumentObject* createSurfaceByPolylineDatas(const std::vector<std::shared_ptr<Base::PolyLine>>& polylineList, const std::string& objName = "Surface", App::IDocument* pParentDoc = nullptr);
99
100
109 static App::IDocumentObject* createSurfaceByWire(App::IDocumentObject* wire, const std::string& objName = "Surface", App::IDocument* pParentDoc = nullptr);
110
119 static App::IDocumentObject* createSurfaceByCurve(const std::shared_ptr<Base::Curve> curve, const std::string& objName = "Surface", App::IDocument* pParentDoc = nullptr);
120
121 //两条线构造直纹曲面组
131 static App::IDocumentObject* createRuledSurface(App::IDocumentObject* pCurve1, App::IDocumentObject* pCurve2, const std::string& objName = "RuledSurface", App::IDocument* pParentDoc = nullptr);
132
133 //创建带孔的面
143 static App::IDocumentObject* createPlaneWithHoles(App::IDocumentObject* pOuterContour, const std::vector<App::IDocumentObject*>& interContourList, const std::string& objName = "PlaneWithHoles", App::IDocument* pParentDoc = nullptr);
144
154 static App::IDocumentObject* createSurfaceByPointAndDirection(const Base::Vector3d point, const Base::Vector3d direction, const std::string& objName = "Surface", App::IDocument* pParentDoc = nullptr);
155
156
167 App::IDocument* pDoc,
168 std::vector<App::IDocumentObject*> shapeList,
169 std::vector<std::string> shapeListNames,
170 const std::string& objName = "Sections"
171 );
172
189 App::IDocument* pDoc,
190 App::IDocumentObject* centerVertex,
191 const std::string& centerPointName,
192 const std::string& axis,
193 double radius,
194 double latitudeStartAngle,
195 double latitudeEndAngle,
196 double longitudeStartAngle,
197 double longitudeEndAngle,
198 const std::string& objName = "SphereSurface"
199 );
200
216 App::IDocument* pDoc,
217 App::IDocumentObject* pOriginObj,
218 const std::string& originObjName,
219 const std::string& axisStr,
220 const double radius,
221 const double length1,
222 const double length2,
223 bool isReverse,
224 const std::string& objName = "FeatureCylindricalFace"
225 );
226 };
227}
228
229#endif //PLATFORMALGORITHM_INTERFACE_SURFACEFACTORY_H
文档接口类
Definition IDocument.h:43
Definition IDocumentObject.h:35
static App::IDocumentObject * createSurfaceBySegmentLines(const std::vector< App::IDocumentObject * > &segmentLines, const std::string &objName="Surface", App::IDocument *pParentDoc=nullptr)
通过线段集合创建曲面
static App::IDocumentObject * createFaceByThreePoint(const Base::Vector3d &point1, const Base::Vector3d &point2, const Base::Vector3d &point3, const std::string &objName="ThreePointFace", App::IDocument *pParentDoc=nullptr)
三点创建平面
static App::IDocumentObject * createSurfaceByCurve(const std::shared_ptr< Base::Curve > curve, const std::string &objName="Surface", App::IDocument *pParentDoc=nullptr)
通过单条曲线创建曲面
static App::IDocumentObject * createPlane(const std::vector< Base::Vector3d > &points, const std::string &objName="Plane", App::IDocument *pParentDoc=nullptr)
static App::IDocumentObject * createSphereSurface(App::IDocument *pDoc, App::IDocumentObject *centerVertex, const std::string &centerPointName, const std::string &axis, double radius, double latitudeStartAngle, double latitudeEndAngle, double longitudeStartAngle, double longitudeEndAngle, const std::string &objName="SphereSurface")
球面创建
static App::IDocumentObject * createSurfaceByPolylineDatas(const std::vector< std::shared_ptr< Base::PolyLine > > &polylineList, const std::string &objName="Surface", App::IDocument *pParentDoc=nullptr)
通过多个Polyline数据创建一个曲面
static App::IDocumentObject * createPlaneWithHoles(App::IDocumentObject *pOuterContour, const std::vector< App::IDocumentObject * > &interContourList, const std::string &objName="PlaneWithHoles", App::IDocument *pParentDoc=nullptr)
根据一个外轮廓和若干内轮廓(孔洞)创建一个带孔洞的平面对象
static App::IDocumentObject * createRuledSurface(App::IDocumentObject *pCurve1, App::IDocumentObject *pCurve2, const std::string &objName="RuledSurface", App::IDocument *pParentDoc=nullptr)
根据两条曲线创建直纹曲面
static App::IDocumentObject * createSurfaceByWire(App::IDocumentObject *wire, const std::string &objName="Surface", App::IDocument *pParentDoc=nullptr)
通过线框对象创建曲面
static App::IDocumentObject * createCylindricalFace(App::IDocument *pDoc, App::IDocumentObject *pOriginObj, const std::string &originObjName, const std::string &axisStr, const double radius, const double length1, const double length2, bool isReverse, const std::string &objName="FeatureCylindricalFace")
柱面创建
static App::IDocumentObject * createSections(App::IDocument *pDoc, std::vector< App::IDocumentObject * > shapeList, std::vector< std::string > shapeListNames, const std::string &objName="Sections")
通过多条曲线生成多截面曲面
static App::IDocumentObject * createSurfaceByCurveDatas(const std::vector< std::shared_ptr< Base::Curve > > &curveList, const std::string &objName="Surface", App::IDocument *pParentDoc=nullptr)
通过曲线数据创建曲面
static void updateFaceByThreePoint(App::IDocumentObject *pFaceObj, const Base::Vector3d &point1, const Base::Vector3d &point2, const Base::Vector3d &point3)
根据已有的三个点更新平面面对象
static App::IDocumentObject * createSurfaceByPointAndDirection(const Base::Vector3d point, const Base::Vector3d direction, const std::string &objName="Surface", App::IDocument *pParentDoc=nullptr)
通过一个基点和一个方向向量创建曲面
Definition SurfaceFactory.h:40
Definition BaseFigureFactory.h:28
Definition BaseFigureFactory.h:24
Definition BaseFigureFactory.h:33