BIMHome v1.0.0
BIMHome接口文档说明
MeasurementTool.h
浏览该文件的文档.
1/************************************************************************
2* @file MeasurementTool.h
3*
4* @brief 测试工具类类
5*
6* @details 测试工具类类
7*
8* @author sunpeng
9*
10* @version 版本号 V0.1
11*
12* @date 2025-6-18
13*
14* @license 北京华科软科技有限公司
15*
16*************************************************************************/
17
18#ifndef PLATFORMALGORITHM_INTERFACE_MEASUREMENTTOOL_H
19#define PLATFORMALGORITHM_INTERFACE_MEASUREMENTTOOL_H
20
21#include <BHGlobal.h>
22#include <string>
23#include <vector>
24#include <memory>
25#include "Base/Matrix.h"
26#include "Base/Vector3D.h"
27
28namespace App {
29 class IDocument;
30 class IDocumentObject;
31}
32
33namespace Base
34{
35 class Curve;
36 class Curve2D;
37 class PolyLine;
38 class PolyLine2D;
39}
40
41namespace PlatformAlgorithm
42{
43 class PlatformAlgorithmEXPORTS MeasurementTool
44 {
45 public:
52 static double getCurveLength(std::shared_ptr<Base::Curve> curve);
53
60 static double getCurve2dLength(std::shared_ptr<Base::Curve2D> curve);
61
68 static double getCurvesLength(const Base::PolyLine& curve);
69
76 static double getCurve2dsLength(const Base::PolyLine2D& curve);
77
84 static double getCurveLength(std::vector<App::IDocumentObject*>& curveObjs);
85
92 static double getFacePerimeterOrEdgeWireLength(std::vector<App::IDocumentObject*>& faceObjs);
93
101
108 static double getFaceArea(std::vector<App::IDocumentObject*>& faceObjs);
109
117
124 static double getSolidVolume(std::vector<App::IDocumentObject*>& solidObjs);
125
133
141
150
160
169
178 static bool isCollision(App::IDocumentObject* objA, App::IDocumentObject* objB, double precision = 0.0);
179
186 static void getCurrentDocumentVisibleSolids(const char* name, std::vector<App::IDocumentObject*>& resultObjs);
187
194 static void getVisibleSolids(const std::vector<App::IDocumentObject*>& inputSolids, std::vector<App::IDocumentObject*>& resultObjs);
195
203 static void getCollisionSolids(const std::vector<App::IDocumentObject*>& inputSolids, std::vector<App::IDocumentObject*>& collisionSolids, double precision = 0.0);
204
212 static void checkSolidsCollision(const std::vector<App::IDocumentObject*>& selectionSolids, std::vector<App::IDocumentObject*>& collisionSolids, double precision = 0.0);
213
214
215
216 };
217}
218
219#endif //PLATFORMALGORITHM_INTERFACE_MEASUREMENTTOOL_H
Definition IDocumentObject.h:35
Matrix4D 类,表示一个 4x4 矩阵
Definition Matrix.h:53
Definition PolyLine2D.h:27
Definition PolyLine.h:27
static double getFacePerimeterOrEdgeWireLength(std::vector< App::IDocumentObject * > &faceObjs)
测量面的周长或线的总长
static void getCurrentDocumentVisibleSolids(const char *name, std::vector< App::IDocumentObject * > &resultObjs)
获取某一类型的App::DocumentObject*列表
static double getMinDistance(App::IDocumentObject *shapeA, App::IDocumentObject *shapeB)
获取两个形体的最短距离
static double getCurvesLength(const Base::PolyLine &curve)
获取多段线的总长度
static void getCollisionSolids(const std::vector< App::IDocumentObject * > &inputSolids, std::vector< App::IDocumentObject * > &collisionSolids, double precision=0.0)
根据给定精度获取一个形体对象集合中的碰撞对象列表
static double getCurve2dsLength(const Base::PolyLine2D &curve)
获取二维多段线的总长度
static bool isCollision(App::IDocumentObject *shapeA, App::IDocumentObject *shapeB)
判断两个形体是否碰撞
static bool isCollision(App::IDocumentObject *shapeA, App::IDocumentObject *shapeB, App::IDocumentObject *resultShape)
判断两个形体是否碰撞
static double getCurveLength(std::shared_ptr< Base::Curve > curve)
获取曲线的长度
static Base::Vector3d getFaceCenter(App::IDocumentObject *faceObj)
获取一个面形体的面心
static void checkSolidsCollision(const std::vector< App::IDocumentObject * > &selectionSolids, std::vector< App::IDocumentObject * > &collisionSolids, double precision=0.0)
根据给定精度和选中的对象列表检查当前文档中的碰撞对象列表
static Base::Vector3d getSolidCenter(App::IDocumentObject *solidObj)
获取一个形体的体心
static double getSolidVolume(std::vector< App::IDocumentObject * > &solidObjs)
获取形体的体积
static double getFaceArea(std::vector< App::IDocumentObject * > &faceObjs)
获取形体的面积
static double getCurveLength(std::vector< App::IDocumentObject * > &curveObjs)
测量曲线的长度
static Base::Matrix4D getMatrixOfInertia(App::IDocumentObject *solidObj)
获取一个形体的惯性矩
static void getVisibleSolids(const std::vector< App::IDocumentObject * > &inputSolids, std::vector< App::IDocumentObject * > &resultObjs)
获取某个列表中的可视对象
static Base::Vector3d getStaticMoments(App::IDocumentObject *solidObj)
获取一个形体的惯性积
static double getCurve2dLength(std::shared_ptr< Base::Curve2D > curve)
获取二维曲线的长度
static bool isCollision(App::IDocumentObject *objA, App::IDocumentObject *objB, double precision=0.0)
判断两个形体是否碰撞
Definition MeasurementTool.h:44
Definition BaseFigureFactory.h:28
Definition BaseFigureFactory.h:24
Definition BaseFigureFactory.h:33