Skip to content

Commit 19b89a3

Browse files
committed
Workarounds for unstyled elements in tree and wrapper #4924
1 parent b73da04 commit 19b89a3

File tree

5 files changed

+92
-41
lines changed

5 files changed

+92
-41
lines changed

src/ifcgeom/kernels/opencascade/IfcGeomTree.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1976,11 +1976,11 @@ namespace IfcGeom {
19761976
TopoDS_Iterator it(compound);
19771977
for (; it.More(); it.Next(), ++git) {
19781978
// Assumption is that the number of styles is small, so the linear lookup time is not significant.
1979-
auto sit = std::find(styles_.begin(), styles_.end(), git->Style());
1979+
auto sit = std::find(styles_.begin(), styles_.end(), git->StylePtr());
19801980
size_t index;
19811981
if (sit == styles_.end()) {
19821982
index = styles_.size();
1983-
styles_.push_back(git->Style());
1983+
styles_.push_back(git->StylePtr());
19841984
} else {
19851985
index = std::distance(styles_.begin(), sit);
19861986
}
@@ -2058,15 +2058,15 @@ namespace IfcGeom {
20582058
enable_face_styles_ = b;
20592059
}
20602060

2061-
const std::vector<ifcopenshell::geometry::taxonomy::style>& styles() const {
2061+
const std::vector<ifcopenshell::geometry::taxonomy::style::ptr>& styles() const {
20622062
return styles_;
20632063
}
20642064

20652065
protected:
20662066
typedef TopTools_DataMapOfShapeInteger face_style_map_t;
20672067

20682068
face_style_map_t face_styles_;
2069-
std::vector<ifcopenshell::geometry::taxonomy::style> styles_;
2069+
std::vector<ifcopenshell::geometry::taxonomy::style::ptr> styles_;
20702070
};
20712071

20722072
}

src/ifcgeom/taxonomy.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -575,13 +575,13 @@ void ifcopenshell::geometry::taxonomy::colour::print(std::ostream& o, int indent
575575

576576
void ifcopenshell::geometry::taxonomy::style::print(std::ostream& o, int indent) const {
577577
o << std::string(indent, ' ') << "style" << std::endl;
578-
o << std::string(indent, ' ') << " " << "name" << (name) << std::endl;
578+
o << std::string(indent, ' ') << " " << "name " << (name) << std::endl;
579579
if (diffuse.components_) {
580-
o << std::string(indent, ' ') << " " << "diffuse" << (name) << std::endl;
580+
o << std::string(indent, ' ') << " " << "diffuse" << std::endl;
581581
diffuse.print(o, indent + 5 + 7);
582582
}
583583
if (specular.components_) {
584-
o << std::string(indent, ' ') << " " << "specular" << (name) << std::endl;
584+
o << std::string(indent, ' ') << " " << "specular" << std::endl;
585585
specular.print(o, indent + 5 + 8);
586586
}
587587
// @todo

src/ifcwrap/IfcGeomWrapper.i

Lines changed: 2 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -204,9 +204,6 @@ std::string taxonomy_item_repr(ifcopenshell::geometry::taxonomy::item::ptr i) {
204204
%include "../serializers/XmlSerializer.h"
205205
%include "../serializers/GltfSerializer.h"
206206

207-
%template(material_vector) std::vector<ifcopenshell::geometry::taxonomy::style::ptr>;
208-
%template(edge_vector) std::vector<ifcopenshell::geometry::taxonomy::edge::ptr>;
209-
210207
%extend ifcopenshell::geometry::taxonomy::style {
211208
size_t instance_id() const {
212209
if (self->instance == nullptr) {
@@ -251,7 +248,7 @@ std::string taxonomy_item_repr(ifcopenshell::geometry::taxonomy::item::ptr i) {
251248

252249

253250
%extend ifcopenshell::geometry::taxonomy::loop {
254-
std::vector<ifcopenshell::geometry::taxonomy::edge::ptr> children_() const {
251+
const std::vector<ifcopenshell::geometry::taxonomy::edge::ptr>& children_() const {
255252
return $self->children;
256253
}
257254

@@ -871,36 +868,7 @@ struct ShapeRTTI : public boost::static_visitor<PyObject*>
871868
%}
872869

873870
%typemap(out) ifcopenshell::geometry::taxonomy::item::ptr {
874-
using namespace ifcopenshell::geometry::taxonomy;
875-
auto kind = $1->kind();
876-
// @todo this is not automatically generated :(
877-
// we can probably use the dispatch mechanism for this we already have in the kernel
878-
if (kind == BSPLINE_CURVE) { $result = SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<bspline_curve>(std::static_pointer_cast<bspline_curve>($1))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__bspline_curve_t, 0 | SWIG_POINTER_OWN); }
879-
else if (kind == BSPLINE_SURFACE) { $result = SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<bspline_surface>(std::static_pointer_cast<bspline_surface>($1))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__bspline_surface_t, 0 | SWIG_POINTER_OWN); }
880-
else if (kind == CIRCLE) { $result = SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<circle>(std::static_pointer_cast<circle>($1))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__circle_t, 0 | SWIG_POINTER_OWN); }
881-
else if (kind == COLLECTION) { $result = SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<collection>(std::static_pointer_cast<collection>($1))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__collection_t, 0 | SWIG_POINTER_OWN); }
882-
else if (kind == COLOUR) { $result = SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<colour>(std::static_pointer_cast<colour>($1))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__colour_t, 0 | SWIG_POINTER_OWN); }
883-
else if (kind == CYLINDER) { $result = SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<cylinder>(std::static_pointer_cast<cylinder>($1))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__cylinder_t, 0 | SWIG_POINTER_OWN); }
884-
else if (kind == DIRECTION3) { $result = SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<direction3>(std::static_pointer_cast<direction3>($1))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__direction3_t, 0 | SWIG_POINTER_OWN); }
885-
else if (kind == EDGE) { $result = SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<edge>(std::static_pointer_cast<edge>($1))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__edge_t, 0 | SWIG_POINTER_OWN); }
886-
else if (kind == ELLIPSE) { $result = SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<ellipse>(std::static_pointer_cast<ellipse>($1))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__ellipse_t, 0 | SWIG_POINTER_OWN); }
887-
else if (kind == EXTRUSION) { $result = SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<extrusion>(std::static_pointer_cast<extrusion>($1))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__extrusion_t, 0 | SWIG_POINTER_OWN); }
888-
else if (kind == FACE) { $result = SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<face>(std::static_pointer_cast<face>($1))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__face_t, 0 | SWIG_POINTER_OWN); }
889-
else if (kind == LINE) { $result = SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<line>(std::static_pointer_cast<line>($1))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__line_t, 0 | SWIG_POINTER_OWN); }
890-
else if (kind == LOFT) { $result = SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<loft>(std::static_pointer_cast<loft>($1))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__loft_t, 0 | SWIG_POINTER_OWN); }
891-
else if (kind == LOOP) { $result = SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<loop>(std::static_pointer_cast<loop>($1))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__loop_t, 0 | SWIG_POINTER_OWN); }
892-
else if (kind == MATRIX4) { $result = SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<matrix4>(std::static_pointer_cast<matrix4>($1))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__matrix4_t, 0 | SWIG_POINTER_OWN); }
893-
else if (kind == NODE) { $result = SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<node>(std::static_pointer_cast<node>($1))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__node_t, 0 | SWIG_POINTER_OWN); }
894-
else if (kind == OFFSET_CURVE) { $result = SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<offset_curve>(std::static_pointer_cast<offset_curve>($1))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__offset_curve_t, 0 | SWIG_POINTER_OWN); }
895-
else if (kind == PIECEWISE_FUNCTION) { $result = SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<piecewise_function>(std::static_pointer_cast<piecewise_function>($1))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__piecewise_function_t, 0 | SWIG_POINTER_OWN); }
896-
else if (kind == PLANE) { $result = SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<plane>(std::static_pointer_cast<plane>($1))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__plane_t, 0 | SWIG_POINTER_OWN); }
897-
else if (kind == POINT3) { $result = SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<point3>(std::static_pointer_cast<point3>($1))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__point3_t, 0 | SWIG_POINTER_OWN); }
898-
else if (kind == REVOLVE) { $result = SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<revolve>(std::static_pointer_cast<revolve>($1))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__revolve_t, 0 | SWIG_POINTER_OWN); }
899-
else if (kind == SHELL) { $result = SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<shell>(std::static_pointer_cast<shell>($1))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__shell_t, 0 | SWIG_POINTER_OWN); }
900-
else if (kind == SOLID) { $result = SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<solid>(std::static_pointer_cast<solid>($1))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__solid_t, 0 | SWIG_POINTER_OWN); }
901-
else if (kind == SPHERE) { $result = SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<sphere>(std::static_pointer_cast<sphere>($1))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__sphere_t, 0 | SWIG_POINTER_OWN); }
902-
else if (kind == STYLE) { $result = SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<style>(std::static_pointer_cast<style>($1))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__style_t, 0 | SWIG_POINTER_OWN); }
903-
else if (kind == SURFACE_CURVE_SWEEP) { $result = SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<surface_curve_sweep>(std::static_pointer_cast<surface_curve_sweep>($1))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__surface_curve_sweep_t, 0 | SWIG_POINTER_OWN); }
871+
$result = item_to_pyobject($1);
904872
}
905873

906874
%{

src/ifcwrap/utils/type_conversion.i

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,3 +235,48 @@
235235
};
236236

237237
%}
238+
239+
%{
240+
241+
PyObject* item_to_pyobject(const ifcopenshell::geometry::taxonomy::item::ptr& i) {
242+
using namespace ifcopenshell::geometry::taxonomy;
243+
if (i == nullptr) {
244+
Py_INCREF(Py_None);
245+
return Py_None;
246+
}
247+
auto kind = i->kind();
248+
// @todo this is not automatically generated :(
249+
// we can probably use the dispatch mechanism for this we already have in the kernel
250+
if (kind == BSPLINE_CURVE) { return SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<bspline_curve>(std::static_pointer_cast<bspline_curve>(i))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__bspline_curve_t, 0 | SWIG_POINTER_OWN); }
251+
else if (kind == BSPLINE_SURFACE) { return SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<bspline_surface>(std::static_pointer_cast<bspline_surface>(i))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__bspline_surface_t, 0 | SWIG_POINTER_OWN); }
252+
else if (kind == CIRCLE) { return SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<circle>(std::static_pointer_cast<circle>(i))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__circle_t, 0 | SWIG_POINTER_OWN); }
253+
else if (kind == COLLECTION) { return SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<collection>(std::static_pointer_cast<collection>(i))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__collection_t, 0 | SWIG_POINTER_OWN); }
254+
else if (kind == COLOUR) { return SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<colour>(std::static_pointer_cast<colour>(i))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__colour_t, 0 | SWIG_POINTER_OWN); }
255+
else if (kind == CYLINDER) { return SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<cylinder>(std::static_pointer_cast<cylinder>(i))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__cylinder_t, 0 | SWIG_POINTER_OWN); }
256+
else if (kind == DIRECTION3) { return SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<direction3>(std::static_pointer_cast<direction3>(i))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__direction3_t, 0 | SWIG_POINTER_OWN); }
257+
else if (kind == EDGE) { return SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<edge>(std::static_pointer_cast<edge>(i))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__edge_t, 0 | SWIG_POINTER_OWN); }
258+
else if (kind == ELLIPSE) { return SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<ellipse>(std::static_pointer_cast<ellipse>(i))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__ellipse_t, 0 | SWIG_POINTER_OWN); }
259+
else if (kind == EXTRUSION) { return SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<extrusion>(std::static_pointer_cast<extrusion>(i))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__extrusion_t, 0 | SWIG_POINTER_OWN); }
260+
else if (kind == FACE) { return SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<face>(std::static_pointer_cast<face>(i))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__face_t, 0 | SWIG_POINTER_OWN); }
261+
else if (kind == LINE) { return SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<line>(std::static_pointer_cast<line>(i))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__line_t, 0 | SWIG_POINTER_OWN); }
262+
else if (kind == LOFT) { return SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<loft>(std::static_pointer_cast<loft>(i))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__loft_t, 0 | SWIG_POINTER_OWN); }
263+
else if (kind == LOOP) { return SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<loop>(std::static_pointer_cast<loop>(i))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__loop_t, 0 | SWIG_POINTER_OWN); }
264+
else if (kind == MATRIX4) { return SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<matrix4>(std::static_pointer_cast<matrix4>(i))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__matrix4_t, 0 | SWIG_POINTER_OWN); }
265+
else if (kind == NODE) { return SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<node>(std::static_pointer_cast<node>(i))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__node_t, 0 | SWIG_POINTER_OWN); }
266+
else if (kind == OFFSET_CURVE) { return SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<offset_curve>(std::static_pointer_cast<offset_curve>(i))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__offset_curve_t, 0 | SWIG_POINTER_OWN); }
267+
else if (kind == PIECEWISE_FUNCTION) { return SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<piecewise_function>(std::static_pointer_cast<piecewise_function>(i))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__piecewise_function_t, 0 | SWIG_POINTER_OWN); }
268+
else if (kind == PLANE) { return SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<plane>(std::static_pointer_cast<plane>(i))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__plane_t, 0 | SWIG_POINTER_OWN); }
269+
else if (kind == POINT3) { return SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<point3>(std::static_pointer_cast<point3>(i))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__point3_t, 0 | SWIG_POINTER_OWN); }
270+
else if (kind == REVOLVE) { return SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<revolve>(std::static_pointer_cast<revolve>(i))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__revolve_t, 0 | SWIG_POINTER_OWN); }
271+
else if (kind == SHELL) { return SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<shell>(std::static_pointer_cast<shell>(i))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__shell_t, 0 | SWIG_POINTER_OWN); }
272+
else if (kind == SOLID) { return SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<solid>(std::static_pointer_cast<solid>(i))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__solid_t, 0 | SWIG_POINTER_OWN); }
273+
else if (kind == SPHERE) { return SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<sphere>(std::static_pointer_cast<sphere>(i))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__sphere_t, 0 | SWIG_POINTER_OWN); }
274+
else if (kind == STYLE) { return SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<style>(std::static_pointer_cast<style>(i))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__style_t, 0 | SWIG_POINTER_OWN); }
275+
else if (kind == SURFACE_CURVE_SWEEP) { return SWIG_NewPointerObj(SWIG_as_voidptr(new std::shared_ptr<surface_curve_sweep>(std::static_pointer_cast<surface_curve_sweep>(i))), SWIGTYPE_p_std__shared_ptrT_ifcopenshell__geometry__taxonomy__surface_curve_sweep_t, 0 | SWIG_POINTER_OWN); }
276+
else {
277+
Py_INCREF(Py_None);
278+
return Py_None;
279+
}
280+
}
281+
282+
%}

src/ifcwrap/utils/typemaps_out.i

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,3 +161,41 @@ CREATE_VECTOR_TYPEMAP_OUT(IfcGeom::ConversionResultShape *)
161161
%typemap(out) std::pair<const char*, size_t> {
162162
$result = PyBytes_FromStringAndSize($1.first, $1.second);
163163
}
164+
165+
%define vector_of_item(item_name)
166+
167+
%typemap(out) const std::vector<item_name::ptr>& {
168+
$result = PyTuple_New((*$1).size());
169+
for (int i = 0; i < (*$1).size(); ++i) {
170+
PyTuple_SetItem($result, i, item_to_pyobject((*$1).at(i)));
171+
}
172+
};
173+
174+
%enddef
175+
176+
vector_of_item(ifcopenshell::geometry::taxonomy::bspline_curve)
177+
vector_of_item(ifcopenshell::geometry::taxonomy::bspline_surface)
178+
vector_of_item(ifcopenshell::geometry::taxonomy::circle)
179+
vector_of_item(ifcopenshell::geometry::taxonomy::collection)
180+
vector_of_item(ifcopenshell::geometry::taxonomy::colour)
181+
vector_of_item(ifcopenshell::geometry::taxonomy::cylinder)
182+
vector_of_item(ifcopenshell::geometry::taxonomy::direction3)
183+
vector_of_item(ifcopenshell::geometry::taxonomy::edge)
184+
vector_of_item(ifcopenshell::geometry::taxonomy::ellipse)
185+
vector_of_item(ifcopenshell::geometry::taxonomy::extrusion)
186+
vector_of_item(ifcopenshell::geometry::taxonomy::face)
187+
vector_of_item(ifcopenshell::geometry::taxonomy::line)
188+
vector_of_item(ifcopenshell::geometry::taxonomy::loft)
189+
vector_of_item(ifcopenshell::geometry::taxonomy::loop)
190+
vector_of_item(ifcopenshell::geometry::taxonomy::matrix4)
191+
vector_of_item(ifcopenshell::geometry::taxonomy::node)
192+
vector_of_item(ifcopenshell::geometry::taxonomy::offset_curve)
193+
vector_of_item(ifcopenshell::geometry::taxonomy::piecewise_function)
194+
vector_of_item(ifcopenshell::geometry::taxonomy::plane)
195+
vector_of_item(ifcopenshell::geometry::taxonomy::point3)
196+
vector_of_item(ifcopenshell::geometry::taxonomy::revolve)
197+
vector_of_item(ifcopenshell::geometry::taxonomy::shell)
198+
vector_of_item(ifcopenshell::geometry::taxonomy::solid)
199+
vector_of_item(ifcopenshell::geometry::taxonomy::sphere)
200+
vector_of_item(ifcopenshell::geometry::taxonomy::style)
201+
vector_of_item(ifcopenshell::geometry::taxonomy::surface_curve_sweep)

0 commit comments

Comments
 (0)