G4OCCT 0.1.0
Geant4 interface to Open CASCADE Technology (OCCT) geometry definitions
Loading...
Searching...
No Matches
TGeoOCCTSolidBridge.hh
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-2.1-or-later
2// Copyright (C) 2026 G4OCCT Contributors
3
6
7#ifndef G4OCCT_src_TGeoOCCTSolidBridge_hh
8#define G4OCCT_src_TGeoOCCTSolidBridge_hh
9
10#include <array>
11#include <cstdint>
12#include <memory>
13#include <string>
14#include <vector>
15
16class TopoDS_Shape;
17
18namespace g4occt::detail {
19
21public:
23
24 static double InfinityCm();
25
26 struct BoundsCm {
27 double dx{0.0};
28 double dy{0.0};
29 double dz{0.0};
30 std::array<double, 3> origin{0.0, 0.0, 0.0};
31 };
32
34 std::array<double, 3> p1{0.0, 0.0, 0.0};
35 std::array<double, 3> p2{0.0, 0.0, 0.0};
36 std::array<double, 3> p3{0.0, 0.0, 0.0};
37 };
38
40 std::vector<DisplayTriangleCm> triangles;
41 };
42
43 explicit TGeoOCCTSolidBridge(const TopoDS_Shape& shape);
45
46 static std::unique_ptr<TGeoOCCTSolidBridge> FromSTEP(const std::string& name,
47 const std::string& path);
48
51
52 const TopoDS_Shape& Shape() const;
53 void SetShape(const TopoDS_Shape& shape);
54
55 BoundsCm Bounds() const;
56 std::shared_ptr<const DisplayMeshCm> DisplayMesh() const;
57 std::uint64_t ShapeGeneration() const;
58 double CapacityCm3() const;
59 double SafetyCm(const double* point_cm, bool inside) const;
60 double DistFromOutsideCm(const double* point_cm, const double* dir,
61 double* safe_cm = nullptr) const;
62 double DistFromInsideCm(const double* point_cm, const double* dir, double* safe_cm = nullptr,
63 bool calcNorm = false, double* norm = nullptr,
64 bool* validNorm = nullptr) const;
65 PointClassification ClassifyCm(const double* point_cm) const;
66 void SurfaceNormalCm(const double* point_cm, double* norm) const;
67
68private:
69 class Impl;
70 std::unique_ptr<Impl> fImpl;
71};
72
73} // namespace g4occt::detail
74
75#endif // G4OCCT_src_TGeoOCCTSolidBridge_hh
double DistFromOutsideCm(const double *point_cm, const double *dir, double *safe_cm=nullptr) const
double SafetyCm(const double *point_cm, bool inside) const
void SurfaceNormalCm(const double *point_cm, double *norm) const
std::shared_ptr< const DisplayMeshCm > DisplayMesh() const
static std::unique_ptr< TGeoOCCTSolidBridge > FromSTEP(const std::string &name, const std::string &path)
PointClassification ClassifyCm(const double *point_cm) const
TGeoOCCTSolidBridge(const TGeoOCCTSolidBridge &)=delete
void SetShape(const TopoDS_Shape &shape)
double DistFromInsideCm(const double *point_cm, const double *dir, double *safe_cm=nullptr, bool calcNorm=false, double *norm=nullptr, bool *validNorm=nullptr) const
TGeoOCCTSolidBridge & operator=(const TGeoOCCTSolidBridge &)=delete