Message 1 of 9
Not applicable
06-19-2020
08:06 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hello,
I have a scene in autocad, composed mostly from triangles.
I want to export all triangles from autocad structures very fast for further processing.
I use this api which is very, slow when i have around 300 000 triangles, which is not much.
Moreover if i start to process independent calls to this on several cores i get crashes.
Please advise. Thank you
// conditionally set the mesh controls based on surface type
AcBrMesh2dControl meshCtrl;
meshCtrl.setElementShape(AcBr::kAllTriangles);
// make the mesh filter from the topology entity and the mesh controls
const AcBrEntity* meshEnt = (AcBrEntity*)&face;
AcBrMesh2dFilter meshFilter;
meshFilter.insert(make_pair(meshEnt, (const AcBrMesh2dControl)meshCtrl));
// generate the mesh, display any errors and attempt to dump all
// generated elements (most errors are not fatal so we want to do
// the best we can with whatever subset of the face was meshed).
AcBrMesh2d faceMesh;
if(faceMesh.generate(meshFilter) != eOk)
return false;
// traverse elements (triangles)
TVectorN<D3, 3> aPt;
AcBrMesh2dElement2dTraverser meshElemTrav;
meshElemTrav.setMesh(faceMesh);
for(; !meshElemTrav.done(); meshElemTrav.next())
{
// traverse nodes (points)
AcBrElement2dNodeTraverser elemNodeTrav;
elemNodeTrav.setElement(meshElemTrav);
aPt.setSize(0);
for(; !elemNodeTrav.done(); elemNodeTrav.next())
{
AcBrNode node;
elemNodeTrav.getNode(node);
AcGePoint3d p;
node.getPoint(p);
aPt.add().setValue(p.x, p.y, p.z);
}
//add triangle here
addTr(mesh, aPt[0], aPt[1], aPt[2]);
}
Solved! Go to Solution.