MCPcopy Create free account
hub / github.com/FreeCAD/FreeCAD / getFacesFromSubElement

Method getFacesFromSubElement

src/App/ComplexGeoDataPyImp.cpp:82–118  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

80}
81
82PyObject* ComplexGeoDataPy::getFacesFromSubElement(PyObject* args) const
83{
84 char* type;
85 unsigned long index;
86 if (!PyArg_ParseTuple(args, "sk", &type, &index)) {
87 return nullptr;
88 }
89
90 std::vector<Base::Vector3d> points;
91 std::vector<Base::Vector3d> normals;
92 std::vector<Data::ComplexGeoData::Facet> facets;
93 try {
94 std::unique_ptr<Data::Segment> segm(getComplexGeoDataPtr()->getSubElement(type, index));
95 getComplexGeoDataPtr()->getFacesFromSubElement(segm.get(), points, normals, facets);
96 }
97 catch (...) {
98 PyErr_SetString(PyExc_RuntimeError, "failed to get sub-element from object");
99 return nullptr;
100 }
101
102 Py::Tuple tuple(2);
103 Py::List vertex;
104 for (const auto& it : points) {
105 vertex.append(Py::asObject(new Base::VectorPy(it)));
106 }
107 tuple.setItem(0, vertex);
108 Py::List facet;
109 for (const auto& it : facets) {
110 Py::Tuple f(3);
111 f.setItem(0, Py::Long(int(it.I1)));
112 f.setItem(1, Py::Long(int(it.I2)));
113 f.setItem(2, Py::Long(int(it.I3)));
114 facet.append(f);
115 }
116 tuple.setItem(1, facet);
117 return Py::new_reference_to(tuple);
118}
119
120PyObject* ComplexGeoDataPy::getLinesFromSubElement(PyObject* args) const
121{

Callers

nothing calls this directly

Calls 4

new_reference_toFunction · 0.85
getSubElementMethod · 0.45
getMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected