#ifndef __EX_BREP_H_ #define __EX_BREP_H_ /** @brief 拡張 BREP ライブリラリ ヘッダ @file exBrep.h @author Fumi.Iseki (C) */ #ifdef WIN32 #pragma warning(disable:4251) #endif #include "Brep.h" #include "TVector.h" using namespace jbxl; class DllExport SOLID; class DllExport SHELL; class DllExport FACE; class DllExport CONTOUR; class DllExport WING; class DllExport EDGE; class DllExport VERTEX; //class DllExport std::basic_string,std::allocator>; DllExport void SetBrepZeroEPS(double eps); DllExport void SetBrepVertexTolerance(double tol); DllExport void SetBrepEdgeTolerance(double tol); DllExport void SetBrepFaceTolerance(double tol); DllExport void SetBrepCollisionTolerance(double tol); DllExport void SetBrepSINTolerance(double tol); DllExport void SetBrepAbsVertexTolerance(double tol); /********************************* SOLID *********************************/ class DllExport SOLID : public BREP_SOLID { public: BREP_CONTOUR_RING surplus_contours; BREP_WING_RING shortage_wings; std::string name; public: SOLID(); ~SOLID(); }; /********************************* SHELL *********************************/ class DllExport SHELL : public BREP_SHELL { public: public: SHELL(SOLID* pr_solid); ~SHELL(); }; /********************************* FACE *********************************/ class DllExport FACE : public BREP_FACE { public: bool deletable; ///< 削除可能 bool initdata; ///< 初期データ(読み込みデータ) public: FACE(SHELL* pr_shell); ~FACE(); }; /********************************* CONTOUR *********************************/ class DllExport CONTOUR : public BREP_CONTOUR { public: /// △QRS 三角Contour衝突検出用 TVector directR; TVector directS; TVector directRS; bool hasCollisionVector; bool collision; public: CONTOUR(FACE* pr_face); ~CONTOUR(); void DataCloseCallback(); void ComputeDirectRS(); }; /********************************* WING *********************************/ class DllExport WING : public BREP_WING { public: public: WING(VERTEX* vx); ~WING(); }; /********************************* EDGE *********************************/ class DllExport EDGE : public BREP_EDGE { public: public: EDGE(VERTEX* v1, VERTEX* v2); ~EDGE(); }; /********************************* VERTEX *********************************/ class DllExport VERTEX : public BREP_VERTEX { public: double distance2; BREP_VERTEX_RING* forbidden_ring; ///< お互いに Edgeを張ることを禁止された Vertexの Ring public: VERTEX(); ~VERTEX(); }; #endif