24#ifndef OCCTL_HPP_TOPO_HPP
25#define OCCTL_HPP_TOPO_HPP
55 explicit NodeId(const ::occtl_node_id_t theId) noexcept
68 return myId.
bits != 0;
73 return myId.
bits == theOther.myId.bits;
78 return myId.
bits != theOther.myId.bits;
93 explicit RefId(const ::occtl_ref_id_t theId) noexcept
106 return myId.
bits != 0;
111 return myId.
bits == theOther.myId.bits;
116 return myId.
bits != theOther.myId.bits;
130 explicit RepId(const ::occtl_rep_id_t theId) noexcept
143 return myId.
bits != 0;
148 return myId.
bits == theOther.myId.bits;
153 return myId.
bits != theOther.myId.bits;
165 explicit JointId(const ::occtl_joint_id_t theId) noexcept
178 return myId.
bits != 0;
183 return myId.
bits == theOther.myId.bits;
188 return myId.
bits != theOther.myId.bits;
283 double length_unit_to_meter = 1.0;
284 std::string name =
"m";
291 int32_t has_density = 0;
292 double density = 0.0;
293 int32_t has_diffuse_color = 0;
356 using iterator_category = std::input_iterator_tag;
358 using difference_type = std::ptrdiff_t;
399 if (myDone && theOther.myDone)
403 return myIter == theOther.myIter && myDone == theOther.myDone;
413 if (myDone || myIter ==
nullptr)
428 ::occtl::check(aStatus);
439 NodeIter() noexcept = default;
446 NodeIter(
const NodeIter&) =
delete;
447 NodeIter& operator=(
const NodeIter&) =
delete;
451 : myIter(theOther.myIter)
453 theOther.myIter =
nullptr;
459 if (
this != &theOther)
462 myIter = theOther.myIter;
463 theOther.myIter =
nullptr;
487 using iterator_category = std::input_iterator_tag;
489 using difference_type = std::ptrdiff_t;
511 const NodeId& operator*()
const noexcept {
return myCurrent; }
513 const NodeId* operator->()
const noexcept {
return &myCurrent; }
521 void operator++(
int) { advance(); }
523 bool operator==(
const iterator& theOther)
const noexcept
525 if (myDone && theOther.myDone)
529 return myIter == theOther.myIter && myDone == theOther.myDone;
532 bool operator!=(
const iterator& theOther)
const noexcept {
return !(*
this == theOther); }
537 if (myDone || myIter ==
nullptr)
552 ::occtl::check(aStatus);
574 : myIter(theOther.myIter)
576 theOther.myIter =
nullptr;
579 SelectIter& operator=(SelectIter&& theOther)
noexcept
581 if (
this != &theOther)
584 myIter = theOther.myIter;
585 theOther.myIter =
nullptr;
592 iterator begin() noexcept {
return iterator(myIter); }
594 iterator end() noexcept {
return iterator(); }
607 using iterator_category = std::input_iterator_tag;
609 using difference_type = std::ptrdiff_t;
631 const SelectGroupView& operator*()
const noexcept {
return myCurrent; }
633 const SelectGroupView* operator->()
const noexcept {
return &myCurrent; }
641 void operator++(
int) { advance(); }
643 bool operator==(
const iterator& theOther)
const noexcept
645 if (myDone && theOther.myDone)
649 return myIter == theOther.myIter && myDone == theOther.myDone;
652 bool operator!=(
const iterator& theOther)
const noexcept {
return !(*
this == theOther); }
657 if (myDone || myIter ==
nullptr)
672 ::occtl::check(aStatus);
694 : myIter(theOther.myIter)
696 theOther.myIter =
nullptr;
699 SelectGroupIter& operator=(SelectGroupIter&& theOther)
noexcept
701 if (
this != &theOther)
704 myIter = theOther.myIter;
705 theOther.myIter =
nullptr;
712 iterator begin() noexcept {
return iterator(myIter); }
714 iterator end() noexcept {
return iterator(); }
727 using iterator_category = std::input_iterator_tag;
729 using difference_type = std::ptrdiff_t;
751 const AxisHit& operator*()
const noexcept {
return myCurrent; }
753 const AxisHit* operator->()
const noexcept {
return &myCurrent; }
761 void operator++(
int) { advance(); }
763 bool operator==(
const iterator& theOther)
const noexcept
765 if (myDone && theOther.myDone)
769 return myIter == theOther.myIter && myDone == theOther.myDone;
772 bool operator!=(
const iterator& theOther)
const noexcept {
return !(*
this == theOther); }
777 if (myDone || myIter ==
nullptr)
792 ::occtl::check(aStatus);
814 : myIter(theOther.myIter)
816 theOther.myIter =
nullptr;
819 AxisHitIter& operator=(AxisHitIter&& theOther)
noexcept
821 if (
this != &theOther)
824 myIter = theOther.myIter;
825 theOther.myIter =
nullptr;
832 iterator begin() noexcept {
return iterator(myIter); }
834 iterator end() noexcept {
return iterator(); }
847 using iterator_category = std::input_iterator_tag;
849 using difference_type = std::ptrdiff_t;
871 const TouchHit& operator*()
const noexcept {
return myCurrent; }
873 const TouchHit* operator->()
const noexcept {
return &myCurrent; }
881 void operator++(
int) { advance(); }
883 bool operator==(
const iterator& theOther)
const noexcept
885 if (myDone && theOther.myDone)
889 return myIter == theOther.myIter && myDone == theOther.myDone;
892 bool operator!=(
const iterator& theOther)
const noexcept {
return !(*
this == theOther); }
897 if (myDone || myIter ==
nullptr)
912 ::occtl::check(aStatus);
934 : myIter(theOther.myIter)
936 theOther.myIter =
nullptr;
939 TouchIter& operator=(TouchIter&& theOther)
noexcept
941 if (
this != &theOther)
944 myIter = theOther.myIter;
945 theOther.myIter =
nullptr;
952 iterator begin() noexcept {
return iterator(myIter); }
954 iterator end() noexcept {
return iterator(); }
967 using iterator_category = std::input_iterator_tag;
969 using difference_type = std::ptrdiff_t;
991 const NodeId& operator*()
const noexcept {
return myCurrent; }
993 const NodeId* operator->()
const noexcept {
return &myCurrent; }
1001 void operator++(
int) { advance(); }
1003 bool operator==(
const iterator& theOther)
const noexcept
1005 if (myDone && theOther.myDone)
1009 return myIter == theOther.myIter && myDone == theOther.myDone;
1012 bool operator!=(
const iterator& theOther)
const noexcept {
return !(*
this == theOther); }
1017 if (myDone || myIter ==
nullptr)
1026 myCurrent =
NodeId(aNode);
1032 ::occtl::check(aStatus);
1054 : myIter(theOther.myIter)
1056 theOther.myIter =
nullptr;
1059 IntersectionIter& operator=(IntersectionIter&& theOther)
noexcept
1061 if (
this != &theOther)
1064 myIter = theOther.myIter;
1065 theOther.myIter =
nullptr;
1072 iterator begin() noexcept {
return iterator(myIter); }
1074 iterator end() noexcept {
return iterator(); }
1094 : myBatch(theOther.myBatch),
1095 myGraph(theOther.myGraph)
1097 theOther.myBatch =
nullptr;
1098 theOther.myGraph =
nullptr;
1104 if (
this != &theOther)
1107 myBatch = theOther.myBatch;
1108 theOther.myBatch =
nullptr;
1109 myGraph = theOther.myGraph;
1110 theOther.myGraph =
nullptr;
1127 if (myBatch !=
nullptr)
1138 if (myBatch !=
nullptr)
1150 : myBatch(theBatch),
1159 void silentAbort() noexcept
1161 if (myBatch !=
nullptr)
1190 using iterator_category = std::input_iterator_tag;
1192 using difference_type = std::ptrdiff_t;
1214 const Item& operator*()
const noexcept {
return myCurrent; }
1216 const Item* operator->()
const noexcept {
return &myCurrent; }
1224 void operator++(
int) { advance(); }
1226 bool operator==(
const iterator& theOther)
const noexcept
1228 if (myDone && theOther.myDone)
1232 return myIter == theOther.myIter && myDone == theOther.myDone;
1235 bool operator!=(
const iterator& theOther)
const noexcept {
return !(*
this == theOther); }
1240 if (myDone || myIter ==
nullptr)
1248 const ::occtl_status_t aStatus =
1258 ::occtl::check(aStatus);
1280 : myIter(theOther.myIter)
1282 theOther.myIter =
nullptr;
1285 ExplorerIter& operator=(ExplorerIter&& theOther)
noexcept
1287 if (
this != &theOther)
1290 myIter = theOther.myIter;
1291 theOther.myIter =
nullptr;
1298 iterator begin() noexcept {
return iterator(myIter); }
1300 iterator end() noexcept {
return iterator(); }
1322 using iterator_category = std::input_iterator_tag;
1324 using difference_type = std::ptrdiff_t;
1346 const Item& operator*()
const noexcept {
return myCurrent; }
1348 const Item* operator->()
const noexcept {
return &myCurrent; }
1356 void operator++(
int) { advance(); }
1358 bool operator==(
const iterator& theOther)
const noexcept
1360 if (myDone && theOther.myDone)
1364 return myIter == theOther.myIter && myDone == theOther.myDone;
1367 bool operator!=(
const iterator& theOther)
const noexcept {
return !(*
this == theOther); }
1372 if (myDone || myIter ==
nullptr)
1388 ::occtl::check(aStatus);
1410 : myIter(theOther.myIter)
1412 theOther.myIter =
nullptr;
1415 RelatedIter& operator=(RelatedIter&& theOther)
noexcept
1417 if (
this != &theOther)
1420 myIter = theOther.myIter;
1421 theOther.myIter =
nullptr;
1428 iterator begin() noexcept {
return iterator(myIter); }
1430 iterator end() noexcept {
return iterator(); }
1461 if (thePtr ==
nullptr)
1465 return Graph(thePtr);
1473 : myPtr(theOther.myPtr)
1475 theOther.myPtr =
nullptr;
1481 if (
this != &theOther)
1484 myPtr = theOther.myPtr;
1485 theOther.myPtr =
nullptr;
1578 std::vector<::occtl_uid_t> aRaw(aCount);
1583 std::vector<UID> aOut;
1584 aOut.reserve(aRaw.size());
1585 for (const ::occtl_uid_t& aUid : aRaw)
1587 aOut.emplace_back(aUid);
1634 std::vector<::occtl_ref_uid_t> aUids(aCount);
1635 std::vector<::occtl_ref_id_t> aRefs(aCount);
1641 std::vector<std::pair<RefUID, RefId>> aResult;
1642 aResult.reserve(aCount);
1643 for (
size_t anIndex = 0; anIndex < aCount; ++anIndex)
1645 aResult.emplace_back(
RefUID(aUids[anIndex]),
RefId(aRefs[anIndex]));
1740 std::vector<::occtl_topo_check_issue_t> anIssues(aCount);
1744 anIssues.resize(aCount);
1777 double aFirst = 0.0, aLast = 0.0;
1779 return {aFirst, aLast};
1892 double& theVMax)
const
1940 double aParam = 0.0;
2025 double aParam = 0.0;
2035 double aFirst = 0.0, aLast = 0.0;
2037 return {aFirst, aLast};
2122 const double theU)
const
2135 const double theU)
const
2148 const uint32_t theN)
const
2187 const double theU)
const
2217 const double theV)
const
2227 std::tuple<Point3, Vector3, Vector3, Vector3, Vector3, Vector3>
face_eval_d2(
2230 const double theV)
const
2250 tuple<Point3, Vector3, Vector3, Vector3, Vector3, Vector3, Vector3, Vector3, Vector3, Vector3>
2288 const uint32_t theNu,
2289 const uint32_t theNv)
const
2300 uint32_t aCount = 0;
2309 uint32_t aCount = 0;
2318 uint32_t aCount = 0;
2327 uint32_t aCount = 0;
2337 uint32_t aCount = 0;
2346 uint32_t aCount = 0;
2355 uint32_t aCount = 0;
2364 uint32_t aCount = 0;
2373 uint32_t aCount = 0;
2383 uint32_t aCount = 0;
2393 uint32_t aCount = 0;
2403 uint32_t aCount = 0;
2424 std::vector<OrientedNode> aResult(aCount);
2432 aResult.resize(aCount);
2441 const ::occtl_topo_child_explorer_config_t*
const theConfig =
nullptr)
const
2452 const ::occtl_topo_parent_explorer_config_t*
const theConfig =
nullptr)
const
2507 const double theMinParameter,
2508 const double theMaxParameter,
2509 const double theTolerance)
const
2526 const double theTolerance)
const
2541 std::vector<::occtl_node_id_t> aRaw(aCount);
2552 std::vector<NodeId> aResult;
2553 aResult.reserve(aCount);
2554 for (
size_t anI = 0; anI < aCount; ++anI)
2556 aResult.push_back(
NodeId(aRaw[anI]));
2568 std::vector<::occtl_node_id_t> aRaw(aCount);
2574 std::vector<NodeId> aResult;
2575 aResult.reserve(aCount);
2576 for (
size_t anI = 0; anI < aCount; ++anI)
2578 aResult.push_back(
NodeId(aRaw[anI]));
2590 std::vector<::occtl_node_id_t> aRaw(aCount);
2596 std::vector<NodeId> aResult;
2597 aResult.reserve(aCount);
2598 for (
size_t anI = 0; anI < aCount; ++anI)
2600 aResult.push_back(
NodeId(aRaw[anI]));
2612 std::vector<::occtl_node_id_t> aRaw(aCount);
2619 std::vector<NodeId> aResult;
2620 aResult.reserve(aCount);
2621 for (
size_t anI = 0; anI < aCount; ++anI)
2623 aResult.push_back(
NodeId(aRaw[anI]));
2635 std::vector<::occtl_node_id_t> aRaw(aCount);
2642 std::vector<NodeId> aResult;
2643 aResult.reserve(aCount);
2644 for (
size_t anI = 0; anI < aCount; ++anI)
2646 aResult.push_back(
NodeId(aRaw[anI]));
2654 const std::vector<NodeId>& theSources,
2655 const NodeId theTarget)
const
2657 std::vector<::occtl_node_id_t> aRawSources;
2658 aRawSources.reserve(theSources.size());
2659 for (
const NodeId& aSource : theSources)
2661 aRawSources.push_back(aSource.get());
2664 int32_t aDistance = -1;
2678 const ::occtl_node_id_t aSource = theSource.
get();
2679 int32_t aDistance = -1;
2689 const double theTolerance)
const
2701 const double theTolerance,
2702 const bool theIncludeBoundary =
true)
const
2709 theIncludeBoundary ? 1 : 0,
2810 const char*
const theTag,
2811 const size_t theTagLen)
2914 std::vector<::occtl_node_id_t> aRaw(aCount);
2920 std::vector<NodeId> aResult;
2921 aResult.reserve(aCount);
2922 for (
size_t anI = 0; anI < aCount; ++anI)
2924 aResult.push_back(
NodeId(aRaw[anI]));
2943 size_t aRemoved = 0;
3088 return Batch(aBatch, myPtr);
3203 const ::occtl_point2_t& theUvLo,
3204 const ::occtl_point2_t& theUvHi)
3217 return Graph(aClone);
3322 std::vector<::occtl_node_id_t> aNodes(aCount);
3323 std::vector<::occtl_color_rgba_t> aColors(aCount);
3329 std::vector<std::pair<NodeId, ::occtl_color_rgba_t>> aEntries;
3330 aEntries.reserve(aCount);
3331 for (
size_t anIndex = 0; anIndex < aCount; ++anIndex)
3333 aEntries.emplace_back(
NodeId(aNodes[anIndex]), aColors[anIndex]);
3342 void name_set(
const NodeId theTarget,
const char*
const theName,
const size_t theNameLen)
3353 size_t aRequired = 0;
3359 std::string aResult(aRequired - 1,
'\0');
3375 std::vector<::occtl_node_id_t> aRaw(aCount);
3381 std::vector<NodeId> aNodes;
3382 aNodes.reserve(aCount);
3383 for (
size_t anIndex = 0; anIndex < aCount; ++anIndex)
3385 aNodes.emplace_back(aRaw[anIndex]);
3404 size_t aRequired = 0;
3410 aMaterial.name.assign(aRequired - 1,
'\0');
3414 aMaterial.name.data(),
3415 aMaterial.name.size() + 1,
3427 aMaterial.name.clear();
3431 aMaterial.density = anInfo.
density;
3453 std::vector<::occtl_node_id_t> aRaw(aCount);
3459 std::vector<NodeId> aNodes;
3460 aNodes.reserve(aCount);
3461 for (
size_t anIndex = 0; anIndex < aCount; ++anIndex)
3463 aNodes.emplace_back(aRaw[anIndex]);
3472 const char*
const theName,
3473 const size_t theNameLen)
3484 size_t aRequired = 0;
3488 aUnits.name.clear();
3491 aUnits.name.assign(aRequired - 1,
'\0');
3493 &aUnits.length_unit_to_meter,
3495 aUnits.name.size() + 1,
3504 const char*
const theKey,
3505 const size_t theKeyLen,
3506 const char*
const theValue,
3507 const size_t theValueLen)
3521 const char*
const theKey,
3522 const size_t theKeyLen)
const
3524 size_t aRequired = 0;
3536 std::string aResult(aRequired - 1,
'\0');
3555 std::vector<::occtl_metadata_key_view_t> aViews(aCount);
3556 if (!aViews.empty())
3565 std::vector<std::string> aKeys;
3566 aKeys.reserve(aCount);
3567 for (const ::occtl_metadata_key_view_t& aView : aViews)
3569 aKeys.emplace_back(aView.key, aView.key_len);
3581 std::vector<::occtl_node_id_t> aRaw(aCount);
3587 std::vector<NodeId> aNodes;
3588 aNodes.reserve(aCount);
3589 for (
size_t anIndex = 0; anIndex < aCount; ++anIndex)
3591 aNodes.emplace_back(aRaw[anIndex]);
3600 const size_t theKeyLen,
3601 const char*
const theValue,
3602 const size_t theValueLen)
3612 size_t aRequired = 0;
3618 std::string aResult(aRequired - 1,
'\0');
3635 std::vector<::occtl_metadata_key_view_t> aViews(aCount);
3636 if (!aViews.empty())
3641 std::vector<std::string> aKeys;
3642 aKeys.reserve(aCount);
3643 for (const ::occtl_metadata_key_view_t& aView : aViews)
3645 aKeys.emplace_back(aView.key, aView.key_len);
3668 void tag_add(
const NodeId theTarget,
const char*
const theTag,
const size_t theTagLen)
3684 bool tag_has(
const NodeId theTarget,
const char*
const theTag,
const size_t theTagLen)
const
3699 std::vector<::occtl_tag_view_t> aViews(aCount);
3700 if (!aViews.empty())
3705 std::vector<std::string> aTags;
3706 aTags.reserve(aCount);
3707 for (const ::occtl_tag_view_t& aView : aViews)
3709 aTags.emplace_back(aView.tag, aView.tag_len);
3716 std::vector<NodeId>
tag_nodes(
const char*
const theTag =
nullptr,
3717 const size_t theTagLen = 0)
const
3722 std::vector<::occtl_node_id_t> aRaw(aCount);
3728 std::vector<NodeId> aNodes;
3729 aNodes.reserve(aCount);
3730 for (
size_t anIndex = 0; anIndex < aCount; ++anIndex)
3732 aNodes.emplace_back(aRaw[anIndex]);
3753 JointInfo anInfo = OCCTL_JOINT_INFO_INIT;
3770 std::vector<::occtl_joint_id_t> aIds(aCount);
3775 std::vector<JointId> aResult;
3776 aResult.reserve(aIds.size());
3777 for (const ::occtl_joint_id_t& anId : aIds)
3779 aResult.emplace_back(anId);
3835 double aValue = 0.0;
3877 std::vector<::occtl_node_id_t> aIds(aCount);
3886 std::vector<NodeId> aResult;
3887 aResult.reserve(aIds.size());
3888 for (const ::occtl_node_id_t& anId : aIds)
3890 aResult.emplace_back(anId);
3902 std::vector<::occtl_node_id_t> aIds(aCount);
3911 std::vector<NodeId> aResult;
3912 aResult.reserve(aIds.size());
3913 for (const ::occtl_node_id_t& anId : aIds)
3915 aResult.emplace_back(anId);
3927 std::vector<::occtl_node_id_t> aIds(aCount);
3936 std::vector<NodeId> aResult;
3937 aResult.reserve(aIds.size());
3938 for (const ::occtl_node_id_t& anId : aIds)
3940 aResult.emplace_back(anId);
3952 std::vector<::occtl_node_id_t> aIds(aCount);
3962 std::vector<NodeId> aResult;
3963 aResult.reserve(aIds.size());
3964 for (const ::occtl_node_id_t& anId : aIds)
3966 aResult.emplace_back(anId);
3978 std::vector<::occtl_node_id_t> aIds(aCount);
3984 std::vector<NodeId> aResult;
3985 aResult.reserve(aIds.size());
3986 for (const ::occtl_node_id_t& anId : aIds)
3988 aResult.emplace_back(anId);
4000 std::vector<::occtl_node_id_t> aIds(aCount);
4006 std::vector<NodeId> aResult;
4007 aResult.reserve(aIds.size());
4008 for (const ::occtl_node_id_t& anId : aIds)
4010 aResult.emplace_back(anId);
4020 double aDistance = 0.0;
4041 const ::occtl_transform_t& thePlacement)
4051 const ::occtl_transform_t& thePlacement)
4059 return NodeId(anOccurrence);
4066 const NodeId theChildProduct,
4067 const ::occtl_transform_t& thePlacement,
4071 theParentProduct.
get(),
4072 theChildProduct.
get(),
4074 theParentOccurrence.get()));
4081 const NodeId theParentProduct,
4082 const NodeId theChildProduct,
4083 const ::occtl_transform_t& thePlacement,
4088 theParentProduct.
get(),
4089 theChildProduct.
get(),
4091 theParentOccurrence.get(),
4093 return NodeId(anOccurrence);
4126 const NodeId theOccurrence)
const
4131 theOccurrence.
get(),
4140 const ::occtl_orientation_t theOrientation)
4156 std::vector<::occtl_node_id_t> aRaw;
4157 aRaw.reserve(theHoles.size());
4158 for (
const NodeId& aHole : theHoles)
4160 aRaw.push_back(aHole.get());
4164 aRaw.empty() ?
nullptr : aRaw.data(),
4179 std::vector<::occtl_node_id_t> aRaw;
4180 aRaw.reserve(theHoles.size());
4181 for (
const NodeId& aHole : theHoles)
4183 aRaw.push_back(aHole.get());
4187 aRaw.empty() ?
nullptr : aRaw.data(),
4195 const ::occtl_orientation_t theOrientation)
4211 const ::occtl_orientation_t theOrientation)
4281 const ::occtl_rep_id_t thePcurveId,
4282 const double theFirst,
4283 const double theLast,
4284 const ::occtl_orientation_t theOrientation)
4299 const NodeId theFaceB)
const
4351 const ::occtl_orientation_t theOrientation)
const
4401 const double theUMin,
4402 const double theUMax,
4403 const double theVMin,
4404 const double theVMax,
4429 std::pair<Graph, NodeId>
fillet(const ::occtl_topo_fillet_options_t& theOpts)
4445 const std::vector<NodeId>& theEdges,
4446 const ::occtl_topo_edge_blend_options_t& theOpts)
const
4448 std::vector<::occtl_node_id_t> aEdges;
4449 aEdges.reserve(theEdges.size());
4450 for (
const NodeId& anEdge : theEdges)
4452 aEdges.push_back(anEdge.get());
4457 aOpts.
edges = aEdges.data();
4469 const std::vector<NodeId>& theEdges,
4470 const double theRadius)
const
4473 aOpts.
radius = theRadius;
4481 const std::vector<NodeId>& theEdges,
4482 const double theDist1,
4483 const double theDist2)
const
4496 const std::vector<NodeId>& theEdges,
4497 const ::occtl_topo_max_fillet_radius_options_t& theOpts)
const
4499 std::vector<::occtl_node_id_t> aEdges;
4500 aEdges.reserve(theEdges.size());
4501 for (
const NodeId& anEdge : theEdges)
4503 aEdges.push_back(anEdge.get());
4508 aOpts.
edges = aEdges.data();
4511 double aRadius = 0.0;
4532 const ::occtl_topo_project_on_face_options_t& theOpts)
const
4543 std::pair<Graph, NodeId>
wrap_on_face(const ::occtl_topo_wrap_on_face_options_t& theOpts)
const
4555 const ::occtl_topo_project_face_direction_options_t& theOpts)
const
4566 std::pair<Graph, NodeId>
face_to_arcs(const ::occtl_topo_face_to_arcs_options_t& theOpts)
const
4578 std::pair<Graph, HlrCategoryRoots>
hlr_project(const ::occtl_topo_hlr_options_t& theOpts)
const
4597 std::pair<Graph, NodeId>
draft_faces(const ::occtl_topo_draft_faces_options_t& theOpts)
const
4613 const std::vector<NodeId>& theSelections,
4614 const bool theParallel =
false)
const
4616 std::vector<::occtl_node_id_t> aSelections;
4617 aSelections.reserve(theSelections.size());
4618 for (
const NodeId& aSelection : theSelections)
4620 aSelections.push_back(aSelection.get());
4627 aOpts.
parallel = theParallel ? 1 : 0;
4638 std::pair<Graph, NodeId>
remove_features(const ::occtl_topo_defeature_options_t& theOpts)
const
4655 const std::vector<NodeId>& theSelections,
4656 const double theSelectionOffset,
4657 const double theBaseOffset = 0.0)
const
4659 std::vector<::occtl_node_id_t> aSelections;
4660 aSelections.reserve(theSelections.size());
4661 for (
const NodeId& aSelection : theSelections)
4663 aSelections.push_back(aSelection.get());
4683 const ::occtl_topo_offset_features_options_t& theOpts)
const
4694 std::pair<Graph, NodeId>
make_filling(const ::occtl_topo_filling_options_t& theOpts)
const
4706 const ::occtl_topo_filling_patch_options_t& theOpts)
const
4723 const double theAngle)
const
4731 const double theFactor)
const
4744 const ::occtl_point3_t& thePoint,
4745 const ::occtl_direction3_t& theNormal)
const
4760 const ::occtl_topo_split_by_plane_options_t& theOpts)
const
4775 const ::occtl_topo_section_by_planes_options_t& theOpts)
const
4789 const ::occtl_topo_extrude_faces_options_t& theOpts)
const
4806 const ::occtl_topo_linear_pattern_options_t& theOpts)
const
4823 const ::occtl_topo_circular_pattern_options_t& theOpts)
const
4832 template <
typename Fn>
4833 void for_each(
const uint64_t theKindMask, Fn theFn)
const
4838 template <
typename Fn>
4839 void for_each_ref(
const uint64_t theRefKindMask, Fn theFn)
const
4844 template <
typename Fn>
4845 void for_each_rep(
const uint64_t theRepKindMask, Fn theFn)
const
4850 template <
typename Fn>
4851 void for_each_related(
const NodeId theNode, Fn theFn)
const
4858 template <
typename Fn>
4859 struct VisitorBridge
4862 std::exception_ptr exc;
4865 template <
typename Fn>
4866 static ::occtl_status_t OCCTL_CALL visitorTrampoline(const ::occtl_node_id_t theId,
4867 void*
const theUser)
4869 VisitorBridge<Fn>*
const aBridge =
static_cast<VisitorBridge<Fn>*
>(theUser);
4872 if constexpr (std::is_invocable_r_v<bool, Fn&, NodeId>)
4878 (*aBridge->fn)(NodeId(theId));
4884 aBridge->exc = std::current_exception();
4889 template <
typename Fn>
4893 std::exception_ptr exc;
4896 template <
typename Fn>
4897 static ::occtl_status_t OCCTL_CALL refTrampoline(const ::occtl_ref_id_t theId,
4898 void*
const theUser)
4900 RefBridge<Fn>*
const aBridge =
static_cast<RefBridge<Fn>*
>(theUser);
4903 if constexpr (std::is_invocable_r_v<bool, Fn&, ::occtl_ref_id_t>)
4909 (*aBridge->fn)(theId);
4915 aBridge->exc = std::current_exception();
4920 template <
typename Fn>
4924 std::exception_ptr exc;
4927 template <
typename Fn>
4928 static ::occtl_status_t OCCTL_CALL repTrampoline(const ::occtl_rep_id_t theId,
4929 void*
const theUser)
4931 RepBridge<Fn>*
const aBridge =
static_cast<RepBridge<Fn>*
>(theUser);
4934 if constexpr (std::is_invocable_r_v<bool, Fn&, ::occtl_rep_id_t>)
4940 (*aBridge->fn)(theId);
4946 aBridge->exc = std::current_exception();
4951 template <
typename CFn,
typename Fn>
4952 void driveVisitor(CFn theCFn, Fn& theFn)
const
4954 VisitorBridge<Fn> aBridge{&theFn,
nullptr};
4955 const ::occtl_status_t aSt = theCFn(myPtr, &visitorTrampoline<Fn>, &aBridge);
4958 std::rethrow_exception(aBridge.exc);
4963 template <
typename CFn,
typename Fn>
4964 void driveChildVisitor(CFn theCFn,
const NodeId theParent, Fn& theFn)
const
4966 VisitorBridge<Fn> aBridge{&theFn,
nullptr};
4967 const ::occtl_status_t aSt = theCFn(myPtr, theParent.get(), &visitorTrampoline<Fn>, &aBridge);
4970 std::rethrow_exception(aBridge.exc);
4975 template <
typename CFn,
typename Fn>
4976 void driveVisitorMask(CFn theCFn,
const uint64_t theMask, Fn& theFn)
const
4978 VisitorBridge<Fn> aBridge{&theFn,
nullptr};
4979 const ::occtl_status_t aSt = theCFn(myPtr, theMask, &visitorTrampoline<Fn>, &aBridge);
4982 std::rethrow_exception(aBridge.exc);
4987 template <
typename CFn,
typename Fn>
4988 void driveRefVisitor(CFn theCFn,
const uint64_t theMask, Fn& theFn)
const
4990 RefBridge<Fn> aBridge{&theFn,
nullptr};
4991 const ::occtl_status_t aSt = theCFn(myPtr, theMask, &refTrampoline<Fn>, &aBridge);
4994 std::rethrow_exception(aBridge.exc);
4999 template <
typename CFn,
typename Fn>
5000 void driveRepVisitor(CFn theCFn,
const uint64_t theMask, Fn& theFn)
const
5002 RepBridge<Fn> aBridge{&theFn,
nullptr};
5003 const ::occtl_status_t aSt = theCFn(myPtr, theMask, &repTrampoline<Fn>, &aBridge);
5006 std::rethrow_exception(aBridge.exc);
5017 std::vector<UID> fetch_history(
const HistoryAccessor theAccessor,
const UID theInputUid)
const
5020 check(theAccessor(myPtr, theInputUid.get(),
nullptr, 0, &aCount));
5021 std::vector<::occtl_uid_t> aRaw(aCount);
5024 check(theAccessor(myPtr, theInputUid.get(), aRaw.data(), aCount, &aCount));
5026 std::vector<UID> aOut;
5027 aOut.reserve(aRaw.size());
5028 for (const ::occtl_uid_t& aUid : aRaw)
5030 aOut.emplace_back(aUid);
RAII range adapter wrapping occtl_topo_axis_hit_iter_t.
Definition topo.hpp:722
RAII handle for a batched graph mutation scope. Mirrors occtl_batch_t.
Definition topo.hpp:1087
Batch & operator=(Batch &&theOther) noexcept
Move assignment — releases any previously-owned batch.
Definition topo.hpp:1102
~Batch() noexcept
Calls abort on destruction if the batch has not been committed. Swallows the abort status so the dest...
Definition topo.hpp:1117
void abort()
Aborts the batch, discarding all deferred mutations. NULL-tolerant; idempotent.
Definition topo.hpp:1136
::occtl_graph_t * graph() noexcept
Returns a borrowed pointer to the graph this batch is scoped over.
Definition topo.hpp:1120
Batch(Batch &&theOther) noexcept
Move constructor — takes ownership from theOther.
Definition topo.hpp:1093
void commit()
Commits all deferred mutations in the batch to the graph. After this call the batch handle is freed; ...
Definition topo.hpp:1125
Exception thrown by the veneer on any non-OK status code.
Definition core.hpp:45
RAII range adapter wrapping occtl_topo_explorer_iter_t.
Definition topo.hpp:1177
RAII handle for a topology graph. Mirrors occtl_graph_t.
Definition topo.hpp:1444
void remove_ref(const RefId &theRefId)
Removes a reference entry by its RefId.
Definition topo.hpp:3237
void occurrence_transform_set(const NodeId theOccurrence, const ::occtl_transform_t &theTransform)
Sets the local transform of a uniquely referenced occurrence node.
Definition topo.hpp:4107
NodeId node_id_from_uid(const UID theUid) const
Resolves a persistent UID to its current NodeId.
Definition topo.hpp:1545
Graph & operator=(Graph &&theOther) noexcept
Move-assigns, releasing any previously-owned graph.
Definition topo.hpp:1479
std::pair< Point3, Vector3 > edge_eval_d1(const NodeId theEdge, const double theU) const
Evaluates the 3D point and first derivative on an edge at parameter theU.
Definition topo.hpp:2166
void shell_remove_face(const NodeId theShell, const NodeId theFace)
Removes a face from a shell (the face definition remains in the graph).
Definition topo.hpp:4147
std::vector< NodeId > adjacent_faces(const NodeId theFace) const
Returns faces adjacent to theFace through shared edges.
Definition topo.hpp:2585
void graph_metadata_unset(const char *const theKey, const size_t theKeyLen)
Removes one graph-level metadata key. Idempotent.
Definition topo.hpp:3652
Batch begin_batch()
Opens a batched mutation scope on this graph.
Definition topo.hpp:3084
RefUID ref_uid_from_ref_id(const RefId theId) const
Returns the persistent RefUID for a RefId.
Definition topo.hpp:1603
bool wire_is_outer(const NodeId theWire) const
Returns whether a wire is the outer wire of its parent face.
Definition topo.hpp:2089
bool face_has_surface(const NodeId theFace) const
Returns whether a face has a surface.
Definition topo.hpp:1900
void tag_add(const NodeId theTarget, const char *const theTag, const size_t theTagLen)
Adds a UTF-8 tag to a target node.
Definition topo.hpp:3668
std::tuple< Point3, Vector3, Vector3, Vector3, Vector3, Vector3, Vector3, Vector3, Vector3, Vector3 > face_eval_d3(const NodeId theFace, const double theU, const double theV) const
Evaluates the 3D point and first three partial derivatives on a face.
Definition topo.hpp:2251
size_t solid_count() const
Active solid count.
Definition topo.hpp:1650
size_t product_count() const
Active product count.
Definition topo.hpp:1713
NodeIter compounds() const
Range-for adapter over all active compounds.
Definition topo.hpp:2756
bool edge_has_continuity(const NodeId theEdge, const NodeId theFaceA, const NodeId theFaceB) const
Returns true if continuity is recorded between two faces at the edge.
Definition topo.hpp:4309
std::pair< Graph, NodeId > offset_features(const NodeId theRoot, const std::vector< NodeId > &theSelections, const double theSelectionOffset, const double theBaseOffset=0.0) const
Offsets selected features of theRoot.
Definition topo.hpp:4654
std::string name_get(const NodeId theTarget) const
Retrieves the name of a target node. Returns empty string if unset.
Definition topo.hpp:3351
std::tuple< Point3, Vector3, Vector3, Vector3, Vector3, Vector3 > face_eval_d2(const NodeId theFace, const double theU, const double theV) const
Evaluates the 3D point and first two partial derivatives on a face.
Definition topo.hpp:2227
NodeIter faces() const
Range-for adapter over all active faces.
Definition topo.hpp:2728
::occtl_rep_kind_t rep_id_kind(const RepId theId) const
Returns the kind of a rep ID.
Definition topo.hpp:1535
size_t occurrence_count() const
Active occurrence count.
Definition topo.hpp:1720
NodeIter edges() const
Range-for adapter over all active edges.
Definition topo.hpp:2742
DistancePair distance_pair(const NodeId theNodeA, const NodeId theNodeB) const
Computes the closest-distance pair between two graph nodes.
Definition topo.hpp:2470
NodeIter shells_of_solid(const NodeId theSolid) const
Range-for adapter over the shells of a solid.
Definition topo.hpp:2828
bool edge_is_seam_on_face(const NodeId theEdge, const NodeId theFace) const
Returns whether an edge is a seam edge on a given face.
Definition topo.hpp:1993
uint32_t edge_vertex_count(const NodeId theEdge) const
Returns the number of vertices on an edge.
Definition topo.hpp:2371
void set_vertex_tolerance(const NodeId theVertex, const double theTol)
Sets the tolerance of a vertex.
Definition topo.hpp:3104
bool edge_same_parameter(const NodeId theEdge) const
Returns whether an edge has the same parameterisation on every face it bounds.
Definition topo.hpp:1957
std::vector< UID > history_deleted_all() const
Returns all graph-owned deleted history input UIDs.
Definition topo.hpp:1574
NodeIter vertices_of_edge(const NodeId theEdge) const
Range-for adapter over the vertices of an edge.
Definition topo.hpp:2863
NodeIter products() const
Range-for adapter over all active products.
Definition topo.hpp:2777
std::vector< UID > history_modified(const UID theInputUid) const
Returns graph-owned Modified history images for an input UID.
Definition topo.hpp:1562
::occtl_color_rgba_t color_get(const NodeId theTarget) const
Retrieves the colour of a target node, or opaque white if unset.
Definition topo.hpp:3300
bool face_has_triangulation(const NodeId theFace) const
Returns whether a face has a triangulation.
Definition topo.hpp:2071
void joint_remove(const JointId theJoint)
Removes an assembly joint record. Missing joints are a no-op.
Definition topo.hpp:3761
void tag_remove(const NodeId theTarget, const char *const theTag, const size_t theTagLen)
Removes a UTF-8 tag from a target node. Idempotent.
Definition topo.hpp:3676
NodeIter occurrences_of_product(const NodeId theProduct) const
Range-for adapter over the occurrences of a product.
Definition topo.hpp:2870
void set_wire_ref_is_outer(const RefId &theRefId, const bool theFlag)
Sets the IsOuter flag on a wire reference.
Definition topo.hpp:3284
bool edge_is_degenerated(const NodeId theEdge) const
Returns whether an edge is degenerated.
Definition topo.hpp:1793
NodeId make_compound(const ::occtl_topo_make_compound_info_t &theInfo)
Creates a compound node from a span of oriented children.
Definition topo.hpp:3063
uint32_t edge_face_count(const NodeId theEdge) const
Returns the number of faces referencing an edge.
Definition topo.hpp:2316
std::pair< Graph, NodeId > wrap_on_face(const ::occtl_topo_wrap_on_face_options_t &theOpts) const
Wraps a planar edge, wire, or face onto a target face.
Definition topo.hpp:4543
NodeIter solids() const
Range-for adapter over all active solids.
Definition topo.hpp:2714
void link_product_to_topology(const NodeId theProduct, const NodeId theRoot, const ::occtl_transform_t &thePlacement)
Links an existing product to a topology root with a placement.
Definition topo.hpp:4039
size_t wire_fix_degenerate_edges(const WireFixDegenerateEdgesOptions &theOptions)
Removes degenerate edge usages from a wire in place.
Definition topo.hpp:2941
SurfaceKind face_surface_kind(const NodeId theFace) const
Returns the surface kind carried by a face.
Definition topo.hpp:1910
uint32_t face_wire_count(const NodeId theFace) const
Returns the number of wires on a face.
Definition topo.hpp:2298
std::vector<::occtl_topo_check_issue_t > check_issues() const
Runs graph validation and returns all reported issues.
Definition topo.hpp:1736
void set_wire_is_closed(const NodeId theWire, const bool theFlag)
Sets the is-closed flag on a wire.
Definition topo.hpp:3168
void remove_occurrence(const RefId &theOccurrenceRef)
Removes an occurrence reference from the graph.
Definition topo.hpp:4099
bool shell_is_closed(const NodeId theShell) const
Returns whether a shell is topologically closed (watertight).
Definition topo.hpp:1928
NodeIter wires() const
Range-for adapter over all active wires.
Definition topo.hpp:2735
std::vector< std::string > graph_metadata_keys() const
Lists UTF-8 metadata keys stored on the graph itself.
Definition topo.hpp:3630
NodeIter compsolids() const
Range-for adapter over all active compsolids.
Definition topo.hpp:2763
std::vector< NodeId > material_nodes() const
Lists nodes that have explicit material-lite data.
Definition topo.hpp:3448
void replace_face_surface(const NodeId theFace, const ::occtl_rep_id_t theSurfaceId)
Replaces a face's surface.
Definition topo.hpp:4265
bool is_inside(const NodeId theSolid, const Point3 &thePoint, const double theTolerance, const bool theIncludeBoundary=true) const
Returns whether a point is inside a solid node.
Definition topo.hpp:2699
EdgeSplitResult edge_split(const NodeId theEdge, const double theParameter)
Splits an edge at the given parameter and returns the two new sub-edges. The original edge is soft-re...
Definition topo.hpp:4234
RefId ref_id_from_ref_uid(const RefUID theUid) const
Resolves a persistent RefUID to its current RefId.
Definition topo.hpp:1594
double measure_get(const NodeId theNode, const SelectMeasureKind theKind)
Returns one computed OCCT mass-property scalar.
Definition topo.hpp:3833
std::string graph_metadata_get(const char *const theKey, const size_t theKeyLen) const
Retrieves UTF-8 metadata from the graph itself.
Definition topo.hpp:3610
RelatedIter related(const NodeId theNode) const
Creates a related-iterator over the semantic neighbours of theNode.
Definition topo.hpp:2461
std::vector< NodeId > descendant_edges_get(const NodeId theNode)
Returns computed descendant Edge nodes for a root node.
Definition topo.hpp:3898
std::vector< OrientedNode > wire_order_edges(const NodeId theWire) const
Returns wire edges in endpoint-chaining order with coedge orientation.
Definition topo.hpp:2419
Point3 vertex_point(const NodeId theVertex) const
Returns the 3D point of a vertex.
Definition topo.hpp:1756
void compound_view(const NodeId theCompound, ::occtl_compound_view_t &theView) const
Fills theView with the current scalar state of theCompound.
Definition topo.hpp:3017
void set_edge_same_range(const NodeId theEdge, const bool theFlag)
Sets the same-range flag on an edge.
Definition topo.hpp:3144
NodeId make_face(const ::occtl_topo_make_face_info_t &theInfo)
Creates a face node from a surface, outer wire, and optional inner wires.
Definition topo.hpp:2969
NodeIter shells() const
Range-for adapter over all active shells.
Definition topo.hpp:2721
std::pair< double, double > edge_range(const NodeId theEdge) const
Returns the parametric range of an edge's 3D curve.
Definition topo.hpp:1775
int32_t graph_distance(const NodeId theRoot, const std::vector< NodeId > &theSources, const NodeId theTarget) const
Returns same-kind topological hop distance under theRoot, or -1 if disconnected.
Definition topo.hpp:2653
void set_face_tolerance(const NodeId theFace, const double theTol)
Sets the tolerance of a face.
Definition topo.hpp:3120
Vector2 coedge_pcurve_eval_dn(const NodeId theCoedge, const double theU, const uint32_t theN) const
Evaluates the Nth derivative on a coedge pcurve at parameter theU.
Definition topo.hpp:2146
std::tuple< Point2, Vector2, Vector2 > coedge_pcurve_eval_d2(const NodeId theCoedge, const double theU) const
Evaluates the PCurve UV point and first two derivatives on a coedge at parameter theU.
Definition topo.hpp:2121
void graph_metadata_set(const char *const theKey, const size_t theKeyLen, const char *const theValue, const size_t theValueLen)
Sets UTF-8 metadata on the graph itself.
Definition topo.hpp:3599
int32_t graph_distance(const NodeId theRoot, const NodeId theSource, const NodeId theTarget) const
Returns same-kind topological hop distance from one source under theRoot.
Definition topo.hpp:2676
double pair_distance_get(const NodeId theFirst, const NodeId theSecond)
Returns computed OCCT minimum distance between two nodes.
Definition topo.hpp:4018
void link_products(const NodeId theParentProduct, const NodeId theChildProduct, const ::occtl_transform_t &thePlacement, const NodeId theParentOccurrence=NodeId(OCCTL_NODE_ID_INVALID))
Links two products via a parent-child occurrence.
Definition topo.hpp:4065
void color_unset(const NodeId theTarget)
Removes the colour associated with a target node. Idempotent.
Definition topo.hpp:3310
SurfaceKind face_surface_kind_get(const NodeId theFace)
Returns computed surface-kind classification for a Face node.
Definition topo.hpp:3863
size_t compsolid_count() const
Active compsolid count.
Definition topo.hpp:1699
void material_set(const NodeId theTarget, const MaterialInfo &theInfo)
Sets material-lite data on a target node.
Definition topo.hpp:3393
void set_vertex_point(const NodeId theVertex, const ::occtl_point3_t &thePoint)
Sets the 3D point of a vertex.
Definition topo.hpp:3095
void node_metadata_unset(const NodeId theTarget, const char *const theKey, const size_t theKeyLen)
Removes one metadata key from a target node. Idempotent.
Definition topo.hpp:3660
::occtl_ref_kind_t ref_id_kind(const RefId theId) const
Returns the kind of a ref ID.
Definition topo.hpp:1517
void set_ref_orientation(const RefId &theRefId, const Orientation theOrientation)
Sets the orientation of a reference entry.
Definition topo.hpp:3268
NodeId make_compsolid(const ::occtl_topo_make_compsolid_info_t &theInfo)
Creates a compsolid node from a span of oriented solids.
Definition topo.hpp:3053
NodeIter coedges() const
Range-for adapter over all active coedges.
Definition topo.hpp:2770
std::pair< Graph, NodeId > extrude_faces_to_solids(const ::occtl_topo_extrude_faces_options_t &theOpts) const
Thickens one or more Face nodes into prism solids.
Definition topo.hpp:4788
AxisHitIter faces_intersected_by_axis(const NodeId theRoot, const Axis1Placement &theAxis, const double theMinParameter, const double theMaxParameter, const double theTolerance) const
Returns ordered face intersections with an axis under a graph root.
Definition topo.hpp:2505
size_t node_count() const
Total active node count across all kinds.
Definition topo.hpp:1727
void edge_remove_vertex(const NodeId theEdge, const NodeId theVertex)
Removes a vertex (boundary or internal) from an edge.
Definition topo.hpp:4251
std::string node_metadata_get(const NodeId theTarget, const char *const theKey, const size_t theKeyLen) const
Retrieves UTF-8 metadata from a target node.
Definition topo.hpp:3520
std::vector< NodeId > common_vertices(const NodeId theNodeA, const NodeId theNodeB) const
Returns vertex nodes common to two graph roots.
Definition topo.hpp:2536
::occtl_select_bbox_t bbox_get(const NodeId theNode)
Returns the computed axis-aligned bounding box for a node.
Definition topo.hpp:3803
double vertex_tolerance(const NodeId theVertex) const
Returns the tolerance of a vertex.
Definition topo.hpp:1766
NodeId face_chamfer_2d(const FaceChamfer2dOptions &theOptions)
Chamfers corners of a planar face and inserts the result into this graph.
Definition topo.hpp:2950
bool coedge_has_polygon_on_surface(const NodeId theCoedge) const
Returns true if the coedge has a polygon-on-surface discretization.
Definition topo.hpp:4391
NodeId link_products_with_occurrence(const NodeId theParentProduct, const NodeId theChildProduct, const ::occtl_transform_t &thePlacement, const NodeId theParentOccurrence=NodeId(OCCTL_NODE_ID_INVALID))
Links two products and returns the new occurrence.
Definition topo.hpp:4080
std::vector< NodeId > connected_faces(const NodeId theSeedFace) const
Returns all faces connected to theSeedFace through shared edges.
Definition topo.hpp:2630
uint32_t vertex_edge_count(const NodeId theVertex) const
Returns the number of edges that reference a vertex.
Definition topo.hpp:2335
::occtl_shape_continuity_t edge_continuity(const NodeId theEdge, const NodeId theFaceA, const NodeId theFaceB) const
Returns the geometric continuity between two faces at their shared edge.
Definition topo.hpp:4297
double max_fillet_radius(const NodeId theRoot, const std::vector< NodeId > &theEdges, const ::occtl_topo_max_fillet_radius_options_t &theOpts) const
Estimates the largest selected-edge constant fillet radius accepted by OCCT.
Definition topo.hpp:4495
std::pair< Graph, NodeId > scaled(const NodeId theRoot, const Point3 &theCenter, const double theFactor) const
Creates a uniformly scaled copy of the shape rooted at theRoot.
Definition topo.hpp:4729
size_t coedge_count() const
Active coedge count.
Definition topo.hpp:1706
NodeId coedge_seam_pair(const NodeId theCoedge) const
Returns the paired coedge for a seam edge, or an invalid NodeId for non-seam coedges.
Definition topo.hpp:2053
void color_set(const NodeId theTarget, const ::occtl_color_rgba_t &theColor)
Sets a colour on a target node.
Definition topo.hpp:3292
std::vector< NodeId > descendants_get(const NodeId theNode, const NodeKind theKind)
Returns computed descendant nodes of one requested kind.
Definition topo.hpp:3948
size_t compound_count() const
Active compound count.
Definition topo.hpp:1692
void set_edge_is_closed(const NodeId theEdge, const bool theFlag)
Sets the is-closed flag on an edge.
Definition topo.hpp:3160
std::pair< Graph, NodeId > draft_faces(const ::occtl_topo_draft_faces_options_t &theOpts) const
Applies a draft angle to selected faces of a shape.
Definition topo.hpp:4597
void set_edge_same_parameter(const NodeId theEdge, const bool theFlag)
Sets the same-parameter flag on an edge.
Definition topo.hpp:3136
::occtl_point3_t vertex_point_in_usage(const NodeId theVertex, const NodeId theParent) const
Returns the vertex point with a parent's accumulated Location applied.
Definition topo.hpp:4364
NodeId edge_find_coedge_on_face_oriented(const NodeId theEdge, const NodeId theFace, const ::occtl_orientation_t theOrientation) const
Finds the coedge for an (edge, face, orientation) triple. Disambiguates seam edges.
Definition topo.hpp:4349
void clear_cached(const NodeId theNode)
Clears graph-owned computed data related to one node.
Definition topo.hpp:3787
std::pair< Graph, NodeId > mirror(const NodeId theRoot, const ::occtl_point3_t &thePoint, const ::occtl_direction3_t &theNormal) const
Creates a mirrored copy of the shape rooted at theRoot.
Definition topo.hpp:4743
NodeId make_vertex(const ::occtl_topo_make_vertex_info_t &theInfo)
Creates a vertex node from a point and tolerance.
Definition topo.hpp:2879
void set_edge_tolerance(const NodeId theEdge, const double theTol)
Sets the tolerance of an edge.
Definition topo.hpp:3112
std::pair< Graph, NodeId > face_to_arcs(const ::occtl_topo_face_to_arcs_options_t &theOpts) const
Converts planar face or wire boundaries to line and circular-arc edges.
Definition topo.hpp:4566
SelectGroupIter select_groups(const SelectOptions &theSelectOptions, const SelectGroupOptions &theGroupOptions)
Groups selected graph nodes matching theSelectOptions by theGroupOptions.
Definition topo.hpp:2820
void solid_add_shell(const NodeId theSolid, const NodeId theShell, const ::occtl_orientation_t theOrientation)
Adds a shell to a solid with the given orientation.
Definition topo.hpp:4193
NodeId wire_face_of(const NodeId theWire) const
Returns the face a wire belongs to.
Definition topo.hpp:2080
std::pair< Point2, Vector2 > coedge_pcurve_eval_d1(const NodeId theCoedge, const double theU) const
Evaluates the PCurve UV point and first derivative on a coedge at parameter theU.
Definition topo.hpp:2109
size_t vertex_count() const
Active vertex count.
Definition topo.hpp:1685
std::pair< Graph, NodeId > chamfer_edges(const NodeId theRoot, const std::vector< NodeId > &theEdges, const double theDist1, const double theDist2) const
Applies a selected-edge 3D chamfer to theRoot.
Definition topo.hpp:4480
bool coedge_is_seam(const NodeId theCoedge) const
Returns whether a coedge is a seam (closed-surface) edge.
Definition topo.hpp:1840
std::pair< Graph, NodeId > fillet(const ::occtl_topo_fillet_options_t &theOpts)
Applies a 3D fillet or chamfer to all solids and shells in this graph.
Definition topo.hpp:4429
static Graph from_pointer_unsafe(::occtl_graph_t *const thePtr)
Wraps an existing owned handle; throws on NULL.
Definition topo.hpp:1459
void solid_remove_shell(const NodeId theSolid, const NodeId theShell)
Removes a shell from a solid (the shell definition remains in the graph).
Definition topo.hpp:4202
Vector3 edge_eval_dn(const NodeId theEdge, const double theU, const uint32_t theN) const
Evaluates the Nth derivative on an edge at parameter theU.
Definition topo.hpp:2197
void coedge_uv_points(const NodeId theCoedge, ::occtl_point2_t &theUVStart, ::occtl_point2_t &theUVEnd) const
Returns the UV points at the start and end of a coedge.
Definition topo.hpp:2043
void face_remove_holes(const NodeId theFace)
Removes all inner wires from a face.
Definition topo.hpp:4170
void shell_view(const NodeId theShell, ::occtl_shell_view_t &theView) const
Fills theView with the current scalar state of theShell.
Definition topo.hpp:3035
std::vector< NodeId > name_nodes() const
Lists nodes that have explicit names.
Definition topo.hpp:3370
::occtl_transform_t occurrence_world_transform(const NodeId theRoot, const NodeId theOccurrence) const
Returns an occurrence transform accumulated from a traversal root.
Definition topo.hpp:4125
size_t face_count() const
Active face count.
Definition topo.hpp:1664
void set_edge_param_range(const NodeId theEdge, const double theFirst, const double theLast)
Sets the parametric range of an edge's 3D curve.
Definition topo.hpp:3128
std::tuple< Point3, Vector3, Vector3 > face_eval_d1(const NodeId theFace, const double theU, const double theV) const
Evaluates the 3D point, D1U, and D1V on a face at UV parameters (theU, theV).
Definition topo.hpp:2215
std::pair< Graph, NodeId > make_filling_patch(const ::occtl_topo_filling_patch_options_t &theOpts) const
Builds a filling patch from edge, support-face, and point constraints.
Definition topo.hpp:4705
std::pair< Graph, NodeId > remove_features(const NodeId theRoot, const std::vector< NodeId > &theSelections, const bool theParallel=false) const
Removes selected features from theRoot.
Definition topo.hpp:4612
NodeId wire_offset_2d(const WireOffset2dOptions &theOptions)
Creates a planar offset wire in this graph.
Definition topo.hpp:2931
Graph(::occtl_graph_t *const thePtr) noexcept
Wraps an existing handle (takes ownership).
Definition topo.hpp:1453
void replace_edge_curve(const NodeId theEdge, const ::occtl_rep_id_t theCurveId)
Replaces an edge's 3D curve.
Definition topo.hpp:4258
CurveKind edge_curve_kind_get(const NodeId theEdge)
Returns computed curve-kind classification for an Edge node.
Definition topo.hpp:3853
std::vector< NodeId > adjacent_edges(const NodeId theEdge) const
Returns edges adjacent to theEdge through shared vertices.
Definition topo.hpp:2563
std::pair< Graph, NodeId > linear_pattern(const NodeId theRoot, const ::occtl_topo_linear_pattern_options_t &theOpts) const
Creates count linearly-spaced copies of a shape.
Definition topo.hpp:4804
NodeIter faces_of_shell(const NodeId theShell) const
Range-for adapter over the faces of a shell.
Definition topo.hpp:2835
void set_coedge_uv_box(const NodeId theCoedge, const ::occtl_point2_t &theUvLo, const ::occtl_point2_t &theUvHi)
Sets the UV box of a coedge.
Definition topo.hpp:3202
std::pair< Graph, NodeId > circular_pattern(const NodeId theRoot, const ::occtl_topo_circular_pattern_options_t &theOpts) const
Creates count angularly-spaced copies of a shape.
Definition topo.hpp:4821
ExplorerIter child_explorer(const NodeId theRoot, const ::occtl_topo_child_explorer_config_t *const theConfig=nullptr) const
Creates a child explorer for accumulated-location/orientation downward traversal.
Definition topo.hpp:2439
void graph_units_set(const double theLengthUnitToMeter, const char *const theName, const size_t theNameLen)
Sets graph-level length-unit metadata.
Definition topo.hpp:3471
std::vector< NodeId > edges_to_wires(const EdgesToWiresOptions &theOptions)
Connects unordered edges into wire nodes.
Definition topo.hpp:2909
std::vector< NodeId > connected_edges(const NodeId theSeedEdge) const
Returns all edges connected to theSeedEdge through shared vertices.
Definition topo.hpp:2607
NodeIter occurrences() const
Range-for adapter over all active occurrences.
Definition topo.hpp:2784
std::pair< Graph, NodeId > project_face_along_direction(const ::occtl_topo_project_face_direction_options_t &theOpts) const
Projects a face onto target boundary faces along a fixed direction.
Definition topo.hpp:4554
uint32_t compound_child_count(const NodeId theCompound) const
Returns the number of children in a compound.
Definition topo.hpp:2391
::occtl_shape_continuity_t edge_max_continuity(const NodeId theEdge) const
Returns the maximum continuity across all face pairs at the edge.
Definition topo.hpp:4322
std::pair< Graph, HlrCategoryRoots > hlr_project(const ::occtl_topo_hlr_options_t &theOpts) const
Projects a shape with OCCT hidden-line removal.
Definition topo.hpp:4578
::occtl_graph_t * get() const noexcept
Borrows-it pointer to the underlying C handle, for direct ABI calls.
Definition topo.hpp:1494
NodeId make_face_from_wires_auto(const MakeFaceFromWiresAutoOptions &theOptions)
Creates a face from candidate wires using automatic outer-loop detection.
Definition topo.hpp:2978
std::vector< NodeId > descendant_vertices_get(const NodeId theNode)
Returns computed descendant Vertex nodes for a root node.
Definition topo.hpp:3873
void set_edge_start_vertex(const NodeId theEdge, const NodeId theVertex)
Rebinds an edge's start vertex to a different vertex.
Definition topo.hpp:3252
std::vector< std::pair< RefUID, RefId > > ref_uid_table() const
Returns active RefUID to RefId pairs for all references in the graph.
Definition topo.hpp:1630
std::vector< std::string > tag_list(const NodeId theTarget) const
Lists UTF-8 tags stored on a target node.
Definition topo.hpp:3694
void node_metadata_set(const NodeId theTarget, const char *const theKey, const size_t theKeyLen, const char *const theValue, const size_t theValueLen)
Sets UTF-8 metadata on a target node.
Definition topo.hpp:3503
uint32_t product_occurrence_count(const NodeId theProduct) const
Returns the number of occurrences of a product.
Definition topo.hpp:2381
uint32_t wire_edge_count(const NodeId theWire) const
Returns the number of edges in a wire.
Definition topo.hpp:2362
void add_pcurve(const NodeId theEdge, const NodeId theFace, const ::occtl_rep_id_t thePcurveId, const double theFirst, const double theLast, const ::occtl_orientation_t theOrientation)
Adds a pcurve binding between an edge and a face, creating a new coedge.
Definition topo.hpp:4279
NodeId face_outer_wire(const NodeId theFace) const
Returns the outer wire of a face.
Definition topo.hpp:1879
void remove(const NodeId theId)
Removes a node from the graph.
Definition topo.hpp:3072
std::tuple< Point3, Vector3, Vector3 > edge_eval_d2(const NodeId theEdge, const double theU) const
Evaluates the first two derivatives on an edge at parameter theU.
Definition topo.hpp:2176
void name_set(const NodeId theTarget, const char *const theName, const size_t theNameLen)
Sets a human-readable name on a target node.
Definition topo.hpp:3342
NodeId coedge_face_of(const NodeId theCoedge) const
Returns the parent face of a coedge.
Definition topo.hpp:1860
NodeId edge_start_vertex(const NodeId theEdge) const
Returns the start vertex of an edge.
Definition topo.hpp:1821
::occtl_node_kind_t uid_kind(const UID theUid) const
Returns the kind embedded in a UID.
Definition topo.hpp:1508
NodeId edge_find_coedge_on_face(const NodeId theEdge, const NodeId theFace) const
Finds the coedge for an (edge, face) pair.
Definition topo.hpp:4340
double vertex_pcurve_parameter(const NodeId theVertex, const NodeId theCoedge) const
Returns the 2D parameter of a vertex on a coedge's pcurve.
Definition topo.hpp:4373
double vertex_parameter(const NodeId theVertex, const NodeId theEdge) const
Returns the parameter of a vertex on an edge.
Definition topo.hpp:1938
std::pair< Graph, NodeId > translated(const NodeId theRoot, const Vector3 &theDelta) const
Creates a translated copy of the shape rooted at theRoot.
Definition topo.hpp:4715
void shell_add_face(const NodeId theShell, const NodeId theFace, const ::occtl_orientation_t theOrientation)
Adds a face to a shell with the given orientation.
Definition topo.hpp:4138
JointId joint_create(const JointInfo &theInfo)
Creates an assembly joint record in the graph.
Definition topo.hpp:3741
bool wire_is_closed(const NodeId theWire) const
Returns whether a wire is topologically closed.
Definition topo.hpp:1919
std::pair< Graph, NodeId > blend_edges(const NodeId theRoot, const std::vector< NodeId > &theEdges, const ::occtl_topo_edge_blend_options_t &theOpts) const
Applies a selected-edge 3D fillet or chamfer to theRoot.
Definition topo.hpp:4444
uint32_t shell_face_count(const NodeId theShell) const
Returns the number of faces in a shell.
Definition topo.hpp:2353
::occtl_node_kind_t node_id_kind(const NodeId theId) const
Returns the kind of a node ID.
Definition topo.hpp:1498
NodeId make_shell(const ::occtl_topo_make_shell_info_t &theInfo)
Creates a shell node from a span of oriented faces.
Definition topo.hpp:2988
bool is_valid() const
Returns true when graph validation reports no issues.
Definition topo.hpp:1751
std::vector< std::string > node_metadata_keys(const NodeId theTarget) const
Lists UTF-8 metadata keys stored on a target node.
Definition topo.hpp:3550
std::pair< Graph, NodeId > rotated(const NodeId theRoot, const Axis1Placement &theAxis, const double theAngle) const
Creates a rotated copy of the shape rooted at theRoot.
Definition topo.hpp:4721
::occtl_ref_kind_t ref_uid_kind(const RefUID theUid) const
Returns the kind embedded in a RefUID.
Definition topo.hpp:1526
::occtl_orientation_t coedge_orientation(const NodeId theCoedge) const
Returns the full TopAbs orientation of a coedge.
Definition topo.hpp:4331
void solid_view(const NodeId theSolid, ::occtl_solid_view_t &theView) const
Fills theView with the current scalar state of theSolid.
Definition topo.hpp:3008
std::tuple< Point3, Vector3, Vector3, Vector3 > edge_eval_d3(const NodeId theEdge, const double theU) const
Evaluates the first three derivatives on an edge at parameter theU.
Definition topo.hpp:2186
Point2 vertex_parameters(const NodeId theVertex, const NodeId theFace) const
Returns the UV parameters of a vertex on a face.
Definition topo.hpp:1948
void remove_rep(const RepId &theRepId)
Removes a representation entry by its RepId.
Definition topo.hpp:3242
void set_shell_is_closed(const NodeId theShell, const bool theFlag)
Sets the is-closed flag on a shell.
Definition topo.hpp:3176
bool edge_same_range(const NodeId theEdge) const
Returns whether an edge has the same range in 3D and on its pcurves.
Definition topo.hpp:1966
void replace_coedge_pcurve(const NodeId theCoedge, const ::occtl_rep_id_t thePcurveId)
Replaces a coedge's pcurve.
Definition topo.hpp:4272
NodeId make_wire(const ::occtl_topo_make_wire_info_t &theInfo)
Creates a wire node from an ordered span of oriented edges.
Definition topo.hpp:2899
std::tuple< Point2, Vector2, Vector2, Vector2 > coedge_pcurve_eval_d3(const NodeId theCoedge, const double theU) const
Evaluates the PCurve UV point and first three derivatives on a coedge at parameter theU.
Definition topo.hpp:2134
bool coedge_is_reversed(const NodeId theCoedge) const
Returns whether a coedge is reversed.
Definition topo.hpp:2003
void compound_remove_child(const NodeId theCompound, const NodeId theChild)
Removes a child from a compound (the child definition remains in the graph).
Definition topo.hpp:4219
Point2 coedge_pcurve_eval(const NodeId theCoedge, const double theU) const
Evaluates the PCurve UV point on a coedge at parameter theU.
Definition topo.hpp:2099
GraphUnits graph_units_get() const
Retrieves graph-level length-unit metadata.
Definition topo.hpp:3481
void compound_add_child(const NodeId theCompound, const NodeId theChild, const ::occtl_orientation_t theOrientation)
Adds a child entity to a compound with the given orientation.
Definition topo.hpp:4209
Graph()
Creates an empty graph.
Definition topo.hpp:1447
NodeId make_solid(const ::occtl_topo_make_solid_info_t &theInfo)
Creates a solid node from a span of oriented shells.
Definition topo.hpp:2998
NodeId link_product_to_topology_with_occurrence(const NodeId theProduct, const NodeId theRoot, const ::occtl_transform_t &thePlacement)
Links an existing product to a topology root and returns the new occurrence.
Definition topo.hpp:4049
void set_edge_is_degenerate(const NodeId theEdge, const bool theFlag)
Sets the is-degenerate flag on an edge.
Definition topo.hpp:3152
CurveKind edge_curve_kind(const NodeId theEdge) const
Returns the 3D curve kind carried by an edge.
Definition topo.hpp:1812
std::vector< NodeId > adjacent_edges_get(const NodeId theEdge)
Returns computed adjacent Edge nodes for an Edge node.
Definition topo.hpp:3996
uint32_t wire_distinct_edge_count(const NodeId theWire) const
Returns the number of distinct edges in a wire.
Definition topo.hpp:2325
std::vector< NodeId > tag_nodes(const char *const theTag=nullptr, const size_t theTagLen=0) const
Lists nodes that have tags, optionally filtered by exact tag.
Definition topo.hpp:3716
NodeIter edges_of_wire(const NodeId theWire) const
Range-for adapter over the edges of a wire.
Definition topo.hpp:2856
void set_edge_end_vertex(const NodeId theEdge, const NodeId theVertex)
Rebinds an edge's end vertex to a different vertex.
Definition topo.hpp:3260
std::pair< Graph, NodeId > split_by_plane(const ::occtl_topo_split_by_plane_options_t &theOpts) const
Splits a shape by a plane and returns selected side(s).
Definition topo.hpp:4759
void face_add_holes(const NodeId theFace, const std::vector< NodeId > &theHoles)
Adds selected wires as inner wires of a face.
Definition topo.hpp:4154
~Graph()
Releases the underlying graph.
Definition topo.hpp:1469
NodeIter wires_of_face(const NodeId theFace) const
Range-for adapter over the wires of a face.
Definition topo.hpp:2842
NodeId wire_chamfer_2d(const WireChamfer2dOptions &theOptions)
Chamfers corners of a planar wire and inserts the result into this graph.
Definition topo.hpp:2959
void remove_with_replacement(const NodeId theNode, const NodeId theReplacement)
Removes a node and reparents children to a replacement.
Definition topo.hpp:3229
SelectIter select_tagged(const SelectOptions &theOptions, const char *const theTag, const size_t theTagLen)
Selects graph nodes matching theOptions and carrying theTag.
Definition topo.hpp:2809
void compact()
Compacts the graph, reclaiming slots from removed nodes. Invalidates all NodeId and RefId values.
Definition topo.hpp:3224
RepUID rep_uid_from_rep_id(const RepId theId) const
Returns the persistent RepUID for a RepId.
Definition topo.hpp:1621
uint32_t solid_shell_count(const NodeId theSolid) const
Returns the number of shells in a solid.
Definition topo.hpp:2344
uint32_t wire_coedge_count(const NodeId theWire) const
Returns the number of coedges in a wire.
Definition topo.hpp:2307
static Graph create()
Creates an empty graph (naming-aligned alias).
Definition topo.hpp:1450
NodeIter wire_explorer(const NodeId theWire) const
Creates a wire explorer that visits coedges in geometric traversal order.
Definition topo.hpp:2410
std::pair< Graph, NodeId > fillet_edges(const NodeId theRoot, const std::vector< NodeId > &theEdges, const double theRadius) const
Applies a selected-edge constant-radius 3D fillet to theRoot.
Definition topo.hpp:4468
std::vector< NodeId > descendant_faces_get(const NodeId theNode)
Returns computed descendant Face nodes for a root node.
Definition topo.hpp:3923
Point3 face_eval(const NodeId theFace, const double theU, const double theV) const
Evaluates the 3D point on a face at UV parameters (theU, theV).
Definition topo.hpp:2206
RepId rep_id_from_rep_uid(const RepUID theUid) const
Resolves a persistent RepUID to its current RepId.
Definition topo.hpp:1612
std::vector< JointId > joint_list(const NodeId theNode=NodeId::invalid()) const
Lists all assembly joints or those attached to theNode.
Definition topo.hpp:3766
GraphMaterial material_get(const NodeId theTarget) const
Retrieves material-lite data from a target node.
Definition topo.hpp:3401
NodeId coedge_edge_of(const NodeId theCoedge) const
Returns the parent edge of a coedge.
Definition topo.hpp:1850
void remove_subgraph(const NodeId theId)
Recursively removes a node and its entire subgraph.
Definition topo.hpp:3076
std::pair< Graph, NodeId > section_by_planes(const ::occtl_topo_section_by_planes_options_t &theOpts) const
Sections a shape by one or more planes.
Definition topo.hpp:4774
size_t edge_count() const
Active edge count.
Definition topo.hpp:1678
JointInfo joint_get(const JointId theJoint) const
Retrieves an assembly joint record.
Definition topo.hpp:3751
std::pair< Graph, NodeId > project_on_face(const ::occtl_topo_project_on_face_options_t &theOpts) const
Projects an edge or wire onto a target face along face normals.
Definition topo.hpp:4531
::occtl_graph_uv_bounds_t face_uv_bounds_get(const NodeId theFace)
Returns computed UV parameter bounds for a Face node.
Definition topo.hpp:3823
double coedge_pcurve_parameter(const NodeId theCoedge, const NodeId theVertex) const
Returns the parameter of a vertex on the pcurve carried by a coedge.
Definition topo.hpp:2023
::occtl_transform_t occurrence_transform_get(const NodeId theOccurrence) const
Returns the local transform of a uniquely referenced occurrence node.
Definition topo.hpp:4115
double face_tolerance(const NodeId theFace) const
Returns the tolerance of a face.
Definition topo.hpp:1869
NodeId make_edge(const ::occtl_topo_make_edge_info_t &theInfo)
Creates an edge node.
Definition topo.hpp:2889
void material_unset(const NodeId theTarget)
Removes material-lite data from a target node. Idempotent.
Definition topo.hpp:3441
NodeIter root_products() const
Range-for adapter over all root products.
Definition topo.hpp:2791
std::vector< NodeId > adjacent_faces_get(const NodeId theFace)
Returns computed adjacent Face nodes for a Face node.
Definition topo.hpp:3974
void vertex_view(const NodeId theVertex, ::occtl_vertex_view_t &theView) const
Fills theView with the current scalar state of theVertex.
Definition topo.hpp:3044
NodeIter coedges_of_wire(const NodeId theWire) const
Range-for adapter over the coedges of a wire.
Definition topo.hpp:2849
bool tag_has(const NodeId theTarget, const char *const theTag, const size_t theTagLen) const
Tests whether a target node carries a UTF-8 tag.
Definition topo.hpp:3684
bool face_natural_restriction(const NodeId theFace) const
Returns whether a face has natural restriction.
Definition topo.hpp:2062
bool edge_is_boundary(const NodeId theEdge) const
Returns whether an edge is a boundary edge.
Definition topo.hpp:1984
void set_ref_location(const RefId &theRefId, const ::occtl_transform_t &theTransform)
Sets the local location of a reference entry.
Definition topo.hpp:3276
Point3 edge_eval(const NodeId theEdge, const double theU) const
Evaluates the 3D point on an edge at parameter theU.
Definition topo.hpp:2157
bool coedge_has_pcurve(const NodeId theCoedge) const
Returns whether a coedge has a pcurve.
Definition topo.hpp:2013
TouchIter touches(const NodeId theNodeA, const NodeId theNodeB, const RelationOptions *const theOptions=nullptr) const
Returns contact solutions between two graph nodes.
Definition topo.hpp:2479
bool is_same_geometry(const NodeId theNodeA, const NodeId theNodeB, const double theTolerance) const
Tests whether two edge or face nodes share geometric support.
Definition topo.hpp:2524
void wire_view(const NodeId theWire, ::occtl_wire_view_t &theView) const
Fills theView with the current scalar state of theWire.
Definition topo.hpp:3026
PointClass classify_point(const NodeId theSolid, const Point3 &thePoint, const double theTolerance) const
Classifies a point relative to a solid node.
Definition topo.hpp:2687
void edge_add_internal_vertex(const NodeId theEdge, const NodeId theVertex)
Adds an internal vertex to an edge.
Definition topo.hpp:4244
void face_uv_bounds(const NodeId theFace, double &theUMin, double &theUMax, double &theVMin, double &theVMax) const
Returns the UV parameter bounds of a face.
Definition topo.hpp:1888
size_t wire_count() const
Active wire count.
Definition topo.hpp:1671
SelectIter select(const SelectOptions &theOptions)
Selects graph nodes matching theOptions.
Definition topo.hpp:2800
bool edge_has_polygon3d(const NodeId theEdge) const
Returns true if the edge has a 3D polygon discretization.
Definition topo.hpp:4382
void face_remove_holes(const NodeId theFace, const std::vector< NodeId > &theHoles)
Removes selected inner wires from a face.
Definition topo.hpp:4177
std::vector< std::pair< NodeId, ::occtl_color_rgba_t > > color_entries() const
Lists explicit colour entries.
Definition topo.hpp:3317
std::vector< NodeId > node_metadata_nodes() const
Lists nodes that have at least one metadata key.
Definition topo.hpp:3576
void clear_cached(const RefId theRef)
Clears graph-owned computed data related to one reference.
Definition topo.hpp:3795
double edge_tolerance(const NodeId theEdge) const
Returns the tolerance of an edge.
Definition topo.hpp:1784
std::pair< Graph, NodeId > offset_features(const ::occtl_topo_offset_features_options_t &theOpts) const
Offsets selected features using a fully specified C options struct.
Definition topo.hpp:4682
bool edge_has_curve(const NodeId theEdge) const
Returns whether an edge has a 3D curve.
Definition topo.hpp:1802
Graph(Graph &&theOther) noexcept
Move-constructs, leaving theOther empty.
Definition topo.hpp:1472
::occtl_graph_mass_properties_t mass_properties_get(const NodeId theNode)
Returns computed combined OCCT mass properties for a node.
Definition topo.hpp:3843
::occtl_graph_obb_t obb_get(const NodeId theNode)
Returns the computed oriented bounding box for a node.
Definition topo.hpp:3813
std::pair< Graph, NodeId > remove_features(const ::occtl_topo_defeature_options_t &theOpts) const
Removes selected features using a fully specified C options struct.
Definition topo.hpp:4638
ExplorerIter parent_explorer(const NodeId theNode, const ::occtl_topo_parent_explorer_config_t *const theConfig=nullptr) const
Creates a parent explorer for accumulated-location/orientation upward traversal.
Definition topo.hpp:2450
Vector3 face_eval_dn(const NodeId theFace, const double theU, const double theV, const uint32_t theNu, const uint32_t theNv) const
Evaluates the (theNu, theNv) cross derivative on a face at UV parameters (theU, theV).
Definition topo.hpp:2285
UID uid_from_node_id(const NodeId theId) const
Returns the persistent UID for a NodeId.
Definition topo.hpp:1554
void cleanup_removed_refs()
Cleans up stale references after removal operations. Idempotent.
Definition topo.hpp:3247
uint32_t compsolid_solid_count(const NodeId theCompSolid) const
Returns the number of solids in a compsolid.
Definition topo.hpp:2401
Graph clone() const
Deep-clones this graph into a new, independent graph.
Definition topo.hpp:3213
IntersectionIter intersections(const NodeId theNodeA, const NodeId theNodeB, const RelationOptions *const theOptions=nullptr)
Inserts and returns generated intersection nodes for two graph nodes.
Definition topo.hpp:2490
NodeId edge_end_vertex(const NodeId theEdge) const
Returns the end vertex of an edge.
Definition topo.hpp:1830
std::vector< UID > history_generated(const UID theInputUid) const
Returns graph-owned Generated history images for an input UID.
Definition topo.hpp:1568
std::pair< Graph, NodeId > make_filling(const ::occtl_topo_filling_options_t &theOpts) const
Builds an N-side filling face from ordered boundary edges.
Definition topo.hpp:4694
bool edge_is_manifold(const NodeId theEdge) const
Returns whether an edge is manifold.
Definition topo.hpp:1975
std::pair< double, double > coedge_range(const NodeId theCoedge) const
Returns the parametric range of a coedge.
Definition topo.hpp:2033
NodeId make_product(const ::occtl_topo_make_product_info_t &theInfo)
Creates a product in the graph.
Definition topo.hpp:4029
void set_coedge_param_range(const NodeId theCoedge, const double theFirst, const double theLast)
Sets the parametric range of a coedge.
Definition topo.hpp:3193
NodeIter vertices() const
Range-for adapter over all active vertices.
Definition topo.hpp:2749
std::pair< Graph, NodeId > transformed(const NodeId theRoot, const Transform &theTransform) const
Creates a transformed copy of the shape rooted at theRoot.
Definition topo.hpp:4519
size_t shell_count() const
Active shell count.
Definition topo.hpp:1657
void face_uv_bounds_restricted(const NodeId theFace, const double theUMin, const double theUMax, const double theVMin, const double theVMax, const double theU, const double theV, ::occtl_point3_t &theOutPoint, ::occtl_vector3_t &theOutD1U, ::occtl_vector3_t &theOutD1V) const
Evaluates a face surface with its first partials inside a restricted UV box.
Definition topo.hpp:4400
void set_face_natural_restriction(const NodeId theFace, const bool theFlag)
Sets the natural-restriction flag on a face.
Definition topo.hpp:3184
RAII range adapter wrapping occtl_topo_intersection_iter_t.
Definition topo.hpp:962
Session-local identity of an assembly joint record. Mirrors occtl_joint_id_t.
Definition topo.hpp:162
static JointId invalid() noexcept
Returns the invalid sentinel (all-zero bits).
Definition topo.hpp:171
bool operator!=(const JointId &theOther) const noexcept
Bitwise inequality.
Definition topo.hpp:186
::occtl_joint_id_t get() const noexcept
Borrows-it view of the underlying C value type, for direct ABI calls.
Definition topo.hpp:174
bool operator==(const JointId &theOther) const noexcept
Bitwise equality.
Definition topo.hpp:181
bool is_valid() const noexcept
True when the ID is not the all-zero sentinel.
Definition topo.hpp:176
JointId(const ::occtl_joint_id_t theId) noexcept
Wraps an existing C value type (zero-cost).
Definition topo.hpp:165
Session-local identity of a graph node. Mirrors occtl_node_id_t.
Definition topo.hpp:52
::occtl_node_id_t get() const noexcept
Borrows-it view of the underlying C value type, for direct ABI calls.
Definition topo.hpp:64
NodeId(const ::occtl_node_id_t theId) noexcept
Wraps an existing C value type (zero-cost).
Definition topo.hpp:55
bool is_valid() const noexcept
True when the ID is not the all-zero sentinel.
Definition topo.hpp:66
bool operator==(const NodeId &theOther) const noexcept
Bitwise equality.
Definition topo.hpp:71
static NodeId invalid() noexcept
Returns the invalid sentinel (all-zero bits).
Definition topo.hpp:61
bool operator!=(const NodeId &theOther) const noexcept
Bitwise inequality.
Definition topo.hpp:76
iterator & operator++()
Advances to the next node and returns the iterator.
Definition topo.hpp:387
bool operator!=(const iterator &theOther) const noexcept
Returns true when iterators differ.
Definition topo.hpp:407
bool operator==(const iterator &theOther) const noexcept
Returns true when both iterators are at the same position or both are done.
Definition topo.hpp:397
const NodeId & operator*() const noexcept
Returns a reference to the current NodeId.
Definition topo.hpp:381
const NodeId * operator->() const noexcept
Returns a pointer to the current NodeId.
Definition topo.hpp:384
void operator++(int)
Advances to the next node (postfix).
Definition topo.hpp:394
RAII range adapter wrapping occtl_node_iter_t.
Definition topo.hpp:351
NodeIter(NodeIter &&theOther) noexcept
Move constructor — takes ownership of the iterator from theOther.
Definition topo.hpp:450
iterator end() noexcept
Returns the past-the-end sentinel iterator.
Definition topo.hpp:474
NodeIter & operator=(NodeIter &&theOther) noexcept
Move assignment — releases any previously owned iterator.
Definition topo.hpp:457
iterator begin() noexcept
Returns the begin iterator, which fetches the first node on construction.
Definition topo.hpp:471
Session-local identity of a reference entry. Mirrors occtl_ref_id_t.
Definition topo.hpp:90
bool operator!=(const RefId &theOther) const noexcept
Bitwise inequality.
Definition topo.hpp:114
bool is_valid() const noexcept
True when the ID is not the all-zero sentinel.
Definition topo.hpp:104
static RefId invalid() noexcept
Returns the invalid sentinel (all-zero bits).
Definition topo.hpp:99
RefId(const ::occtl_ref_id_t theId) noexcept
Wraps an existing C value type (zero-cost).
Definition topo.hpp:93
::occtl_ref_id_t get() const noexcept
Borrows-it view of the underlying C value type, for direct ABI calls.
Definition topo.hpp:102
bool operator==(const RefId &theOther) const noexcept
Bitwise equality.
Definition topo.hpp:109
Persistent identity surviving reference removal and graph compaction.
Definition uid.hpp:77
::occtl_ref_uid_t get() const noexcept
Borrows-it view of the underlying C value type, for direct ABI calls.
Definition uid.hpp:89
Identity of a representation (geometry / mesh data). Mirrors occtl_rep_id_t.
Definition topo.hpp:127
bool is_valid() const noexcept
True when the ID is not the all-zero sentinel.
Definition topo.hpp:141
::occtl_rep_id_t get() const noexcept
Borrows-it view of the underlying C value type, for direct ABI calls.
Definition topo.hpp:139
bool operator==(const RepId &theOther) const noexcept
Bitwise equality.
Definition topo.hpp:146
bool operator!=(const RepId &theOther) const noexcept
Bitwise inequality.
Definition topo.hpp:151
static RepId invalid() noexcept
Returns the invalid sentinel (all-zero bits).
Definition topo.hpp:136
RepId(const ::occtl_rep_id_t theId) noexcept
Wraps an existing C value type (zero-cost).
Definition topo.hpp:130
Persistent identity surviving representation removal and graph compaction.
Definition uid.hpp:132
::occtl_rep_uid_t get() const noexcept
Borrows-it view of the underlying C value type, for direct ABI calls.
Definition uid.hpp:144
RAII range adapter wrapping occtl_select_group_iter_t.
Definition topo.hpp:602
RAII range adapter wrapping occtl_select_iter_t.
Definition topo.hpp:482
RAII range adapter wrapping occtl_topo_touch_iter_t.
Definition topo.hpp:842
Persistent identity surviving node removal and graph compaction. Mirrors occtl_uid_t.
Definition uid.hpp:39
::occtl_uid_t get() const noexcept
Borrows-it view of the underlying C value type, for direct ABI calls.
Definition uid.hpp:51
C++ veneer for the core module.
void check(const ::occtl_status_t theStatus)
Throw on non-OK; otherwise a no-op.
Definition core.hpp:85
C++ veneer for the geom module.
struct occtl_uid occtl_uid_t
enum occtl_status occtl_status_t
enum occtl_rep_kind occtl_rep_kind_t
enum occtl_ref_kind occtl_ref_kind_t
@ OCCTL_OK
Definition occtl_core.h:133
@ OCCTL_INTERNAL
Definition occtl_core.h:149
@ OCCTL_INVALID_HANDLE
Definition occtl_core.h:136
@ OCCTL_NOT_FOUND
Definition occtl_core.h:137
@ OCCTL_CANCELLED
Definition occtl_core.h:146
#define OCCTL_UID_INVALID
Definition occtl_core.h:286
enum occtl_node_kind occtl_node_kind_t
@ OCCTL_CURVE_KIND_UNDEFINED
Definition occtl_curves_common.h:55
enum occtl_curve_kind occtl_curve_kind_t
@ OCCTL_SURFACE_KIND_UNDEFINED
Definition occtl_surfaces.h:65
enum occtl_surface_kind occtl_surface_kind_t
OCCT-Light: topology module public API.
occtl_status_t occtl_graph_units_set(occtl_graph_t *graph, double length_unit_to_meter, const char *name, size_t nameLen)
occtl_status_t occtl_graph_ref_uid_from_ref_id(const occtl_graph_t *graph, occtl_ref_id_t ref_id, occtl_ref_uid_t *out_ref_uid)
occtl_status_t occtl_graph_wire_iter_create(const occtl_graph_t *graph, occtl_node_iter_t **out_iter)
occtl_status_t occtl_graph_metadata_keys(const occtl_graph_t *graph, occtl_metadata_key_view_t *out_keys, size_t cap, size_t *out_count)
void occtl_shell_view_init(occtl_shell_view_t *view)
occtl_status_t occtl_topo_edge_start_vertex(const occtl_graph_t *graph, occtl_node_id_t edge, occtl_node_id_t *out_vertex)
struct occtl_node_iter occtl_node_iter_t
Definition occtl_topo.h:1951
occtl_status_t occtl_topo_edge_vertex_count(const occtl_graph_t *graph, occtl_node_id_t edge, uint32_t *out_count)
occtl_status_t occtl_graph_compound_iter_create(const occtl_graph_t *graph, occtl_node_iter_t **out_iter)
occtl_status_t occtl_topo_edge_eval_dn(const occtl_graph_t *graph, occtl_node_id_t edge, double u, uint32_t n, occtl_vector3_t *out_dn)
occtl_status_t occtl_topo_edge_curve_kind(const occtl_graph_t *graph, occtl_node_id_t edge, occtl_curve_kind_t *out_kind)
occtl_status_t occtl_topo_face_eval_dn(const occtl_graph_t *graph, occtl_node_id_t face, double u, double v, uint32_t nu, uint32_t nv, occtl_vector3_t *out_dn)
occtl_status_t occtl_graph_metadata_set(occtl_graph_t *graph, const char *key, size_t keyLen, const char *value, size_t valueLen)
occtl_status_t occtl_graph_name_get(const occtl_graph_t *graph, occtl_node_id_t target, char *buf, size_t bufSize, size_t *out_required)
occtl_status_t occtl_graph_material_set(occtl_graph_t *graph, occtl_node_id_t target, const occtl_material_info_t *info)
occtl_status_t occtl_graph_solid_iter_create(const occtl_graph_t *graph, occtl_node_iter_t **out_iter)
occtl_status_t occtl_topo_compound_child_count(const occtl_graph_t *graph, occtl_node_id_t compound, uint32_t *out_count)
occtl_status_t occtl_topo_compound_view(const occtl_graph_t *graph, occtl_node_id_t compound, occtl_compound_view_t *view)
occtl_status_t occtl_topo_occurrence_set_transform(occtl_graph_t *graph, occtl_node_id_t occurrence, occtl_transform_t transform)
occtl_status_t occtl_topo_coedge_is_reversed(const occtl_graph_t *graph, occtl_node_id_t coedge, int32_t *out_is_reversed)
occtl_status_t occtl_graph_metadata_get(const occtl_graph_t *graph, const char *key, size_t keyLen, char *buf, size_t bufSize, size_t *out_required)
occtl_status_t occtl_graph_occurrence_count(const occtl_graph_t *graph, size_t *out_count)
occtl_status_t occtl_graph_tag_nodes(const occtl_graph_t *graph, const char *tag, size_t tagLen, occtl_node_id_t *out_nodes, size_t cap, size_t *out_count)
occtl_status_t occtl_graph_history_modified(const occtl_graph_t *graph, occtl_uid_t input_uid, occtl_uid_t *out_buf, size_t cap, size_t *out_count)
occtl_status_t occtl_topo_edge_has_curve(const occtl_graph_t *graph, occtl_node_id_t edge, int32_t *out_has_curve)
occtl_status_t occtl_topo_coedge_is_seam(const occtl_graph_t *graph, occtl_node_id_t coedge, int32_t *out_is_seam)
occtl_status_t occtl_graph_name_set(occtl_graph_t *graph, occtl_node_id_t target, const char *name, size_t nameLen)
occtl_status_t occtl_topo_coedge_edge_of(const occtl_graph_t *graph, occtl_node_id_t coedge, occtl_node_id_t *out_edge)
occtl_status_t occtl_topo_solid_shell_count(const occtl_graph_t *graph, occtl_node_id_t solid, uint32_t *out_count)
occtl_status_t occtl_graph_product_iter_create(const occtl_graph_t *graph, occtl_node_iter_t **out_iter)
occtl_status_t occtl_joint_list(const occtl_graph_t *graph, occtl_node_id_t node, occtl_joint_id_t *out_joints, size_t cap, size_t *out_count)
occtl_status_t occtl_graph_edge_iter_create(const occtl_graph_t *graph, occtl_node_iter_t **out_iter)
occtl_status_t occtl_topo_for_each_related(const occtl_graph_t *graph, occtl_node_id_t node, occtl_node_visitor_t visitor, void *user_data)
occtl_status_t occtl_topo_face_surface_kind(const occtl_graph_t *graph, occtl_node_id_t face, occtl_surface_kind_t *out_kind)
occtl_status_t occtl_graph_tag_list(const occtl_graph_t *graph, occtl_node_id_t target, occtl_tag_view_t *out_tags, size_t cap, size_t *out_count)
occtl_status_t occtl_graph_color_get(const occtl_graph_t *graph, occtl_node_id_t target, occtl_color_rgba_t *out_color)
occtl_status_t occtl_topo_coedge_pcurve_eval_d3(const occtl_graph_t *graph, occtl_node_id_t coedge, double u, occtl_point2_t *out_uv, occtl_vector2_t *out_d1, occtl_vector2_t *out_d2, occtl_vector2_t *out_d3)
occtl_status_t occtl_topo_edge_is_manifold(const occtl_graph_t *graph, occtl_node_id_t edge, int32_t *out_is_manifold)
occtl_status_t occtl_topo_vertex_parameters(const occtl_graph_t *graph, occtl_node_id_t vertex, occtl_node_id_t face, occtl_point2_t *out_uv)
occtl_status_t occtl_graph_occurrence_iter_create(const occtl_graph_t *graph, occtl_node_iter_t **out_iter)
occtl_status_t occtl_topo_link_product(occtl_graph_t *graph, occtl_node_id_t product, occtl_node_id_t root, occtl_transform_t placement)
occtl_status_t occtl_topo_wire_face_of(const occtl_graph_t *graph, occtl_node_id_t wire, occtl_node_id_t *out_face)
occtl_status_t occtl_topo_coedges_of_wire_iter_create(const occtl_graph_t *graph, occtl_node_id_t wire, occtl_node_iter_t **out_iter)
occtl_status_t occtl_topo_vertex_view(const occtl_graph_t *graph, occtl_node_id_t vertex, occtl_vertex_view_t *view)
void occtl_solid_view_init(occtl_solid_view_t *view)
occtl_status_t occtl_topo_wires_of_face_iter_create(const occtl_graph_t *graph, occtl_node_id_t face, occtl_node_iter_t **out_iter)
occtl_status_t occtl_graph_rep_id_from_rep_uid(const occtl_graph_t *graph, occtl_rep_uid_t rep_uid, occtl_rep_id_t *out_rep_id)
occtl_status_t occtl_topo_face_eval_d1(const occtl_graph_t *graph, occtl_node_id_t face, double u, double v, occtl_point3_t *out_p, occtl_vector3_t *out_d1u, occtl_vector3_t *out_d1v)
occtl_status_t occtl_graph_tag_add(occtl_graph_t *graph, occtl_node_id_t target, const char *tag, size_t tagLen)
occtl_status_t occtl_graph_node_metadata_unset(occtl_graph_t *graph, occtl_node_id_t target, const char *key, size_t keyLen)
occtl_status_t occtl_topo_face_has_triangulation(const occtl_graph_t *graph, occtl_node_id_t face, int32_t *out_has_triangulation)
occtl_status_t occtl_topo_face_eval(const occtl_graph_t *graph, occtl_node_id_t face, double u, double v, occtl_point3_t *out_p)
occtl_status_t occtl_graph_node_metadata_set(occtl_graph_t *graph, occtl_node_id_t target, const char *key, size_t keyLen, const char *value, size_t valueLen)
occtl_status_t occtl_topo_edge_is_seam_on_face(const occtl_graph_t *graph, occtl_node_id_t edge, occtl_node_id_t face, int32_t *out_is_seam)
void occtl_wire_view_init(occtl_wire_view_t *view)
occtl_status_t occtl_topo_solid_view(const occtl_graph_t *graph, occtl_node_id_t solid, occtl_solid_view_t *view)
occtl_status_t occtl_topo_coedge_seam_pair(const occtl_graph_t *graph, occtl_node_id_t coedge, occtl_node_id_t *out_pair)
occtl_status_t occtl_graph_tag_has(const occtl_graph_t *graph, occtl_node_id_t target, const char *tag, size_t tagLen, int32_t *out_has_tag)
occtl_status_t occtl_joint_get(const occtl_graph_t *graph, occtl_joint_id_t joint, occtl_joint_info_t *out_info)
occtl_status_t occtl_topo_coedge_range(const occtl_graph_t *graph, occtl_node_id_t coedge, double *out_first, double *out_last)
occtl_status_t occtl_topo_occurrence_transform(const occtl_graph_t *graph, occtl_node_id_t occurrence, occtl_transform_t *out_transform)
occtl_status_t occtl_topo_shell_face_count(const occtl_graph_t *graph, occtl_node_id_t shell, uint32_t *out_count)
occtl_status_t occtl_topo_edge_tolerance(const occtl_graph_t *graph, occtl_node_id_t edge, double *out_tolerance)
occtl_status_t occtl_graph_metadata_unset(occtl_graph_t *graph, const char *key, size_t keyLen)
occtl_status_t occtl_graph_coedge_count(const occtl_graph_t *graph, size_t *out_count)
occtl_status_t occtl_graph_shell_count(const occtl_graph_t *graph, size_t *out_count)
occtl_status_t occtl_topo_coedge_has_pcurve(const occtl_graph_t *graph, occtl_node_id_t coedge, int32_t *out_has_pcurve)
occtl_status_t occtl_graph_color_set(occtl_graph_t *graph, occtl_node_id_t target, occtl_color_rgba_t color)
occtl_status_t occtl_topo_face_eval_d3(const occtl_graph_t *graph, occtl_node_id_t face, double u, double v, occtl_point3_t *out_p, occtl_vector3_t *out_d1u, occtl_vector3_t *out_d1v, occtl_vector3_t *out_d2u, occtl_vector3_t *out_d2v, occtl_vector3_t *out_d2uv, occtl_vector3_t *out_d3u, occtl_vector3_t *out_d3v, occtl_vector3_t *out_d3uuv, occtl_vector3_t *out_d3uvv)
occtl_status_t occtl_graph_vertex_iter_create(const occtl_graph_t *graph, occtl_node_iter_t **out_iter)
occtl_status_t occtl_graph_vertex_count(const occtl_graph_t *graph, size_t *out_count)
occtl_status_t occtl_graph_color_entries(const occtl_graph_t *graph, occtl_node_id_t *out_nodes, occtl_color_rgba_t *out_colors, size_t cap, size_t *out_count)
occtl_status_t occtl_topo_coedge_pcurve_eval_d2(const occtl_graph_t *graph, occtl_node_id_t coedge, double u, occtl_point2_t *out_uv, occtl_vector2_t *out_d1, occtl_vector2_t *out_d2)
occtl_status_t occtl_graph_history_generated(const occtl_graph_t *graph, occtl_uid_t input_uid, occtl_uid_t *out_buf, size_t cap, size_t *out_count)
void occtl_node_iter_free(occtl_node_iter_t *iter)
occtl_status_t occtl_graph_for_each(const occtl_graph_t *graph, uint64_t kind_mask, occtl_node_visitor_t visitor, void *user_data)
occtl_status_t occtl_topo_occurrences_of_product_iter_create(const occtl_graph_t *graph, occtl_node_id_t product, occtl_node_iter_t **out_iter)
occtl_status_t occtl_graph_ref_uid_table(const occtl_graph_t *graph, occtl_ref_uid_t *out_ref_uids, occtl_ref_id_t *out_refs, size_t cap, size_t *out_count)
occtl_status_t occtl_joint_remove(occtl_graph_t *graph, occtl_joint_id_t joint)
occtl_status_t occtl_topo_link_products_occurrence(occtl_graph_t *graph, occtl_node_id_t parentProduct, occtl_node_id_t childProduct, occtl_transform_t placement, occtl_node_id_t parentOccurrence, occtl_node_id_t *out_occurrence)
occtl_status_t occtl_topo_vertex_point(const occtl_graph_t *graph, occtl_node_id_t vertex, occtl_point3_t *out_point)
occtl_status_t occtl_graph_rep_kind(const occtl_graph_t *graph, occtl_rep_id_t id, occtl_rep_kind_t *out_kind)
occtl_status_t occtl_graph_node_id_from_uid(const occtl_graph_t *graph, occtl_uid_t uid, occtl_node_id_t *out_node_id)
occtl_status_t occtl_graph_wire_count(const occtl_graph_t *graph, size_t *out_count)
occtl_status_t occtl_graph_solid_count(const occtl_graph_t *graph, size_t *out_count)
occtl_status_t occtl_graph_node_metadata_nodes(const occtl_graph_t *graph, occtl_node_id_t *out_nodes, size_t cap, size_t *out_count)
occtl_status_t occtl_graph_uid_from_node_id(const occtl_graph_t *graph, occtl_node_id_t id, occtl_uid_t *out_uid)
occtl_status_t occtl_topo_shells_of_solid_iter_create(const occtl_graph_t *graph, occtl_node_id_t solid, occtl_node_iter_t **out_iter)
occtl_status_t occtl_topo_face_tolerance(const occtl_graph_t *graph, occtl_node_id_t face, double *out_tolerance)
occtl_status_t occtl_topo_edge_eval_d3(const occtl_graph_t *graph, occtl_node_id_t edge, double u, occtl_point3_t *out_p, occtl_vector3_t *out_d1, occtl_vector3_t *out_d2, occtl_vector3_t *out_d3)
occtl_status_t occtl_topo_wire_is_outer(const occtl_graph_t *graph, occtl_node_id_t wire, int32_t *out_is_outer)
occtl_status_t occtl_topo_coedge_pcurve_eval_d1(const occtl_graph_t *graph, occtl_node_id_t coedge, double u, occtl_point2_t *out_uv, occtl_vector2_t *out_d1)
occtl_status_t occtl_topo_face_uv_bounds(const occtl_graph_t *graph, occtl_node_id_t face, double *out_umin, double *out_umax, double *out_vmin, double *out_vmax)
occtl_status_t occtl_graph_compound_count(const occtl_graph_t *graph, size_t *out_count)
occtl_status_t occtl_graph_name_nodes(const occtl_graph_t *graph, occtl_node_id_t *out_nodes, size_t cap, size_t *out_count)
occtl_status_t occtl_graph_material_get(const occtl_graph_t *graph, occtl_node_id_t target, occtl_material_info_t *out_info, char *name_buf, size_t name_buf_size, size_t *out_name_required)
occtl_status_t occtl_topo_face_has_surface(const occtl_graph_t *graph, occtl_node_id_t face, int32_t *out_has_surface)
occtl_status_t occtl_topo_vertex_parameter(const occtl_graph_t *graph, occtl_node_id_t vertex, occtl_node_id_t edge, double *out_parameter)
occtl_status_t occtl_topo_compsolid_solid_count(const occtl_graph_t *graph, occtl_node_id_t compsolid, uint32_t *out_count)
occtl_status_t occtl_topo_wire_distinct_edge_count(const occtl_graph_t *graph, occtl_node_id_t wire, uint32_t *out_count)
occtl_status_t occtl_topo_edge_end_vertex(const occtl_graph_t *graph, occtl_node_id_t edge, occtl_node_id_t *out_vertex)
occtl_status_t occtl_graph_color_unset(occtl_graph_t *graph, occtl_node_id_t target)
occtl_status_t occtl_graph_root_product_iter_create(const occtl_graph_t *graph, occtl_node_iter_t **out_iter)
occtl_status_t occtl_topo_vertex_tolerance(const occtl_graph_t *graph, occtl_node_id_t vertex, double *out_tolerance)
occtl_status_t occtl_topo_face_wire_count(const occtl_graph_t *graph, occtl_node_id_t face, uint32_t *out_count)
occtl_status_t occtl_topo_face_natural_restriction(const occtl_graph_t *graph, occtl_node_id_t face, int32_t *out_has_natural_restriction)
occtl_status_t occtl_topo_coedge_pcurve_parameter(const occtl_graph_t *graph, occtl_node_id_t coedge, occtl_node_id_t vertex, double *out_parameter)
void occtl_compound_view_init(occtl_compound_view_t *view)
occtl_status_t occtl_topo_faces_of_shell_iter_create(const occtl_graph_t *graph, occtl_node_id_t shell, occtl_node_iter_t **out_iter)
occtl_status_t occtl_graph_shell_iter_create(const occtl_graph_t *graph, occtl_node_iter_t **out_iter)
occtl_status_t occtl_graph_rep_uid_from_rep_id(const occtl_graph_t *graph, occtl_rep_id_t rep_id, occtl_rep_uid_t *out_rep_uid)
occtl_status_t occtl_topo_edge_is_degenerated(const occtl_graph_t *graph, occtl_node_id_t edge, int32_t *out_is_degenerated)
void occtl_vertex_view_init(occtl_vertex_view_t *view)
occtl_status_t occtl_topo_wire_explorer_create(const occtl_graph_t *graph, occtl_node_id_t wire, occtl_node_iter_t **out_iter)
occtl_status_t occtl_graph_material_unset(occtl_graph_t *graph, occtl_node_id_t target)
occtl_status_t occtl_topo_edge_eval(const occtl_graph_t *graph, occtl_node_id_t edge, double u, occtl_point3_t *out_p)
occtl_status_t occtl_topo_coedge_face_of(const occtl_graph_t *graph, occtl_node_id_t coedge, occtl_node_id_t *out_face)
occtl_status_t occtl_graph_face_iter_create(const occtl_graph_t *graph, occtl_node_iter_t **out_iter)
occtl_status_t occtl_graph_create(occtl_graph_t **out_graph)
occtl_status_t occtl_graph_units_get(const occtl_graph_t *graph, double *out_length_unit_to_meter, char *name_buf, size_t name_buf_size, size_t *out_name_required)
occtl_status_t occtl_graph_compsolid_iter_create(const occtl_graph_t *graph, occtl_node_iter_t **out_iter)
occtl_status_t occtl_graph_product_count(const occtl_graph_t *graph, size_t *out_count)
occtl_status_t occtl_topo_face_eval_d2(const occtl_graph_t *graph, occtl_node_id_t face, double u, double v, occtl_point3_t *out_p, occtl_vector3_t *out_d1u, occtl_vector3_t *out_d1v, occtl_vector3_t *out_d2u, occtl_vector3_t *out_d2v, occtl_vector3_t *out_d2uv)
occtl_status_t occtl_topo_coedge_uv_points(const occtl_graph_t *graph, occtl_node_id_t coedge, occtl_point2_t *out_uv_start, occtl_point2_t *out_uv_end)
occtl_status_t occtl_graph_ref_kind(const occtl_graph_t *graph, occtl_ref_id_t id, occtl_ref_kind_t *out_kind)
occtl_status_t occtl_topo_shell_view(const occtl_graph_t *graph, occtl_node_id_t shell, occtl_shell_view_t *view)
occtl_status_t occtl_graph_ref_uid_kind(const occtl_graph_t *graph, occtl_ref_uid_t ref_uid, occtl_ref_kind_t *out_kind)
occtl_status_t occtl_topo_edge_eval_d2(const occtl_graph_t *graph, occtl_node_id_t edge, double u, occtl_point3_t *out_p, occtl_vector3_t *out_d1, occtl_vector3_t *out_d2)
occtl_status_t occtl_topo_edges_of_wire_iter_create(const occtl_graph_t *graph, occtl_node_id_t wire, occtl_node_iter_t **out_iter)
occtl_status_t occtl_topo_occurrence_world_transform(const occtl_graph_t *graph, occtl_node_id_t root, occtl_node_id_t occurrence, occtl_transform_t *out_transform)
occtl_status_t occtl_topo_link_products(occtl_graph_t *graph, occtl_node_id_t parentProduct, occtl_node_id_t childProduct, occtl_transform_t placement, occtl_node_id_t parentOccurrence)
occtl_status_t occtl_topo_wire_is_closed(const occtl_graph_t *graph, occtl_node_id_t wire, int32_t *out_is_closed)
occtl_status_t occtl_topo_wire_coedge_count(const occtl_graph_t *graph, occtl_node_id_t wire, uint32_t *out_count)
occtl_status_t occtl_topo_edge_face_count(const occtl_graph_t *graph, occtl_node_id_t edge, uint32_t *out_count)
occtl_status_t occtl_topo_vertex_edge_count(const occtl_graph_t *graph, occtl_node_id_t vertex, uint32_t *out_count)
occtl_status_t occtl_graph_edge_count(const occtl_graph_t *graph, size_t *out_count)
occtl_status_t occtl_graph_coedge_iter_create(const occtl_graph_t *graph, occtl_node_iter_t **out_iter)
occtl_status_t occtl_graph_for_each_ref(const occtl_graph_t *graph, uint64_t ref_kind_mask, occtl_ref_visitor_t visitor, void *user_data)
occtl_status_t occtl_topo_make_product(occtl_graph_t *graph, const occtl_topo_make_product_info_t *info, occtl_node_id_t *out_product)
occtl_status_t occtl_topo_wire_view(const occtl_graph_t *graph, occtl_node_id_t wire, occtl_wire_view_t *view)
occtl_status_t occtl_graph_face_count(const occtl_graph_t *graph, size_t *out_count)
occtl_status_t occtl_graph_node_kind(const occtl_graph_t *graph, occtl_node_id_t id, occtl_node_kind_t *out_kind)
occtl_status_t occtl_topo_edge_eval_d1(const occtl_graph_t *graph, occtl_node_id_t edge, double u, occtl_point3_t *out_p, occtl_vector3_t *out_d1)
occtl_status_t occtl_topo_product_occurrence_count(const occtl_graph_t *graph, occtl_node_id_t product, uint32_t *out_count)
occtl_status_t occtl_topo_link_product_occurrence(occtl_graph_t *graph, occtl_node_id_t product, occtl_node_id_t root, occtl_transform_t placement, occtl_node_id_t *out_occurrence)
occtl_status_t occtl_graph_tag_remove(occtl_graph_t *graph, occtl_node_id_t target, const char *tag, size_t tagLen)
occtl_status_t occtl_graph_ref_id_from_ref_uid(const occtl_graph_t *graph, occtl_ref_uid_t ref_uid, occtl_ref_id_t *out_ref_id)
occtl_status_t occtl_topo_wire_edge_count(const occtl_graph_t *graph, occtl_node_id_t wire, uint32_t *out_count)
occtl_status_t occtl_topo_edge_range(const occtl_graph_t *graph, occtl_node_id_t edge, double *out_first, double *out_last)
occtl_status_t occtl_topo_coedge_pcurve_eval(const occtl_graph_t *graph, occtl_node_id_t coedge, double u, occtl_point2_t *out_uv)
occtl_status_t occtl_graph_node_metadata_get(const occtl_graph_t *graph, occtl_node_id_t target, const char *key, size_t keyLen, char *buf, size_t bufSize, size_t *out_required)
occtl_status_t occtl_graph_node_count(const occtl_graph_t *graph, size_t *out_count)
occtl_status_t occtl_graph_uid_kind(const occtl_graph_t *graph, occtl_uid_t uid, occtl_node_kind_t *out_kind)
occtl_status_t occtl_topo_edge_same_parameter(const occtl_graph_t *graph, occtl_node_id_t edge, int32_t *out_has_same_parameter)
occtl_status_t occtl_graph_for_each_rep(const occtl_graph_t *graph, uint64_t rep_kind_mask, occtl_rep_visitor_t visitor, void *user_data)
occtl_status_t occtl_joint_create(occtl_graph_t *graph, const occtl_joint_info_t *info, occtl_joint_id_t *out_joint)
occtl_status_t occtl_topo_vertices_of_edge_iter_create(const occtl_graph_t *graph, occtl_node_id_t edge, occtl_node_iter_t **out_iter)
occtl_status_t occtl_graph_node_metadata_keys(const occtl_graph_t *graph, occtl_node_id_t target, occtl_metadata_key_view_t *out_keys, size_t cap, size_t *out_count)
occtl_status_t occtl_graph_history_deleted_all(const occtl_graph_t *graph, occtl_uid_t *out_buf, size_t cap, size_t *out_count)
occtl_status_t occtl_topo_remove_occurrence(occtl_graph_t *graph, occtl_ref_id_t occurrence_ref)
occtl_status_t occtl_topo_coedge_pcurve_eval_dn(const occtl_graph_t *graph, occtl_node_id_t coedge, double u, uint32_t n, occtl_vector2_t *out_dn)
occtl_status_t occtl_node_iter_next(occtl_node_iter_t *iter, occtl_node_id_t *out_id)
occtl_status_t occtl_topo_edge_same_range(const occtl_graph_t *graph, occtl_node_id_t edge, int32_t *out_has_same_range)
occtl_status_t occtl_topo_edge_is_boundary(const occtl_graph_t *graph, occtl_node_id_t edge, int32_t *out_is_boundary)
occtl_status_t occtl_graph_material_nodes(const occtl_graph_t *graph, occtl_node_id_t *out_nodes, size_t cap, size_t *out_count)
occtl_status_t occtl_graph_compsolid_count(const occtl_graph_t *graph, size_t *out_count)
void occtl_graph_free(occtl_graph_t *graph)
occtl_status_t occtl_topo_face_outer_wire(const occtl_graph_t *graph, occtl_node_id_t face, occtl_node_id_t *out_wire)
occtl_status_t occtl_topo_shell_is_closed(const occtl_graph_t *graph, occtl_node_id_t shell, int32_t *out_is_closed)
OCCT-Light: graph-native algorithms — sewing, same-parameter recompute, validation.
occtl_status_t occtl_topo_make_hlr_projection(const occtl_graph_t *graph, const occtl_topo_hlr_options_t *options, occtl_topo_hlr_result_t *out_result)
struct occtl_topo_extrude_faces_options occtl_topo_extrude_faces_options_t
occtl_status_t occtl_topo_mirrored(const occtl_graph_t *graph, occtl_node_id_t root, occtl_point3_t point, occtl_direction3_t normal, occtl_graph_t **out_graph, occtl_node_id_t *out_root)
occtl_status_t occtl_topo_make_circular_pattern(const occtl_graph_t *graph, occtl_node_id_t root, const occtl_topo_circular_pattern_options_t *opts, occtl_graph_t **out_graph, occtl_node_id_t *out_root)
occtl_status_t occtl_topo_transformed(const occtl_graph_t *graph, occtl_node_id_t root, occtl_transform_t transform, occtl_graph_t **out_graph, occtl_node_id_t *out_root)
struct occtl_topo_section_by_planes_options occtl_topo_section_by_planes_options_t
struct occtl_topo_section_plane occtl_topo_section_plane_t
struct occtl_topo_max_fillet_radius_options occtl_topo_max_fillet_radius_options_t
occtl_status_t occtl_topo_make_filling_patch(const occtl_graph_t *graph, const occtl_topo_filling_patch_options_t *options, occtl_graph_t **out_graph, occtl_node_id_t *out_root)
occtl_status_t occtl_topo_project_face_along_direction(const occtl_graph_t *graph, const occtl_topo_project_face_direction_options_t *options, occtl_graph_t **out_graph, occtl_node_id_t *out_root)
struct occtl_topo_split_by_plane_options occtl_topo_split_by_plane_options_t
occtl_status_t occtl_topo_defeature(const occtl_graph_t *graph, const occtl_topo_defeature_options_t *options, occtl_graph_t **out_graph, occtl_node_id_t *out_root)
occtl_status_t occtl_topo_fillet(occtl_graph_t *graph, const occtl_topo_fillet_options_t *opts, occtl_graph_t **out_graph, occtl_node_id_t *out_root)
occtl_status_t occtl_topo_make_filling(const occtl_graph_t *graph, const occtl_topo_filling_options_t *options, occtl_graph_t **out_graph, occtl_node_id_t *out_root)
occtl_status_t occtl_topo_make_sections_by_planes(const occtl_graph_t *graph, const occtl_topo_section_by_planes_options_t *options, occtl_graph_t **out_graph, occtl_node_id_t *out_root)
occtl_status_t occtl_topo_wrap_on_face(const occtl_graph_t *graph, const occtl_topo_wrap_on_face_options_t *options, occtl_graph_t **out_graph, occtl_node_id_t *out_root)
occtl_status_t occtl_topo_check(const occtl_graph_t *graph, occtl_topo_check_issue_t *out_issues, size_t cap, size_t *out_count)
#define OCCTL_TOPO_HLR_RESULT_INIT
Definition occtl_topo_algo.h:864
occtl_status_t occtl_topo_project_on_face(const occtl_graph_t *graph, const occtl_topo_project_on_face_options_t *options, occtl_graph_t **out_graph, occtl_node_id_t *out_root)
occtl_status_t occtl_topo_face_to_arcs(const occtl_graph_t *graph, const occtl_topo_face_to_arcs_options_t *options, occtl_graph_t **out_graph, occtl_node_id_t *out_root)
occtl_status_t occtl_topo_draft_faces(const occtl_graph_t *graph, const occtl_topo_draft_faces_options_t *options, occtl_graph_t **out_graph, occtl_node_id_t *out_root)
occtl_status_t occtl_topo_max_fillet_radius(const occtl_graph_t *graph, const occtl_topo_max_fillet_radius_options_t *options, double *out_radius)
occtl_status_t occtl_topo_make_face_extrusion(const occtl_graph_t *graph, const occtl_topo_extrude_faces_options_t *options, occtl_graph_t **out_graph, occtl_node_id_t *out_root)
occtl_status_t occtl_topo_make_linear_pattern(const occtl_graph_t *graph, occtl_node_id_t root, const occtl_topo_linear_pattern_options_t *opts, occtl_graph_t **out_graph, occtl_node_id_t *out_root)
occtl_status_t occtl_topo_blend_edges(const occtl_graph_t *graph, const occtl_topo_edge_blend_options_t *options, occtl_graph_t **out_graph, occtl_node_id_t *out_root)
occtl_status_t occtl_topo_make_split_by_plane(const occtl_graph_t *graph, const occtl_topo_split_by_plane_options_t *options, occtl_graph_t **out_graph, occtl_node_id_t *out_root)
occtl_status_t occtl_topo_make_offset_features(const occtl_graph_t *graph, const occtl_topo_offset_features_options_t *options, occtl_graph_t **out_graph, occtl_node_id_t *out_root)
occtl_status_t occtl_topo_wire_offset_2d(occtl_graph_t *graph, const occtl_topo_wire_offset_2d_options_t *options, occtl_node_id_t *out_wire)
void occtl_select_iter_free(occtl_select_iter_t *iter)
occtl_status_t occtl_graph_clone(const occtl_graph_t *source, occtl_graph_t **out_graph)
occtl_status_t occtl_topo_shell_add_face(occtl_graph_t *graph, occtl_node_id_t shell, occtl_node_id_t face, occtl_orientation_t orientation)
struct occtl_topo_face_chamfer_2d_options occtl_topo_face_chamfer_2d_options_t
occtl_status_t occtl_topo_add_pcurve(occtl_graph_t *graph, occtl_node_id_t edge, occtl_node_id_t face, occtl_rep_id_t pcurve_id, double first, double last, occtl_orientation_t orientation)
occtl_status_t occtl_topo_set_ref_location(occtl_graph_t *graph, occtl_ref_id_t ref_id, occtl_transform_t transform)
occtl_status_t occtl_topo_set_edge_tolerance(occtl_graph_t *graph, occtl_node_id_t edge, double tol)
occtl_status_t occtl_topo_remove_subgraph(occtl_graph_t *graph, occtl_node_id_t id)
struct occtl_topo_wire_chamfer_2d_options occtl_topo_wire_chamfer_2d_options_t
occtl_status_t occtl_graph_descendant_faces_get(occtl_graph_t *graph, occtl_node_id_t node, occtl_node_id_t *out_buf, size_t cap, size_t *out_count)
occtl_status_t occtl_topo_make_solid(occtl_graph_t *graph, const occtl_topo_make_solid_info_t *info, occtl_node_id_t *out_solid)
occtl_status_t occtl_topo_set_coedge_param_range(occtl_graph_t *graph, occtl_node_id_t coedge, double first, double last)
enum occtl_joint_kind occtl_joint_kind_t
occtl_status_t occtl_topo_face_chamfer_2d(occtl_graph_t *graph, const occtl_topo_face_chamfer_2d_options_t *options, occtl_node_id_t *out_face)
occtl_status_t occtl_topo_replace_coedge_pcurve(occtl_graph_t *graph, occtl_node_id_t coedge, occtl_rep_id_t pcurve_id)
occtl_status_t occtl_topo_remove_with_replacement(occtl_graph_t *graph, occtl_node_id_t node, occtl_node_id_t replacement)
occtl_status_t occtl_topo_set_edge_is_degenerate(occtl_graph_t *graph, occtl_node_id_t edge, int32_t flag)
struct occtl_select_group_view occtl_select_group_view_t
struct occtl_batch occtl_batch_t
Definition occtl_topo_build.h:1064
occtl_status_t occtl_graph_face_uv_bounds_get(occtl_graph_t *graph, occtl_node_id_t face, occtl_graph_uv_bounds_t *out_uv_bounds)
occtl_status_t occtl_graph_pair_distance_get(occtl_graph_t *graph, occtl_node_id_t first, occtl_node_id_t second, double *out_distance)
void occtl_select_group_iter_free(occtl_select_group_iter_t *iter)
enum occtl_select_group_key occtl_select_group_key_t
struct occtl_topo_edges_to_wires_options occtl_topo_edges_to_wires_options_t
struct occtl_select_metadata_filter occtl_select_metadata_filter_t
occtl_status_t occtl_topo_compound_add_child(occtl_graph_t *graph, occtl_node_id_t compound, occtl_node_id_t child, occtl_orientation_t orientation)
occtl_status_t occtl_topo_make_edge(occtl_graph_t *graph, const occtl_topo_make_edge_info_t *info, occtl_node_id_t *out_edge)
occtl_status_t occtl_topo_remove_ref(occtl_graph_t *graph, occtl_ref_id_t ref_id)
occtl_status_t occtl_topo_set_wire_ref_is_outer(occtl_graph_t *graph, occtl_ref_id_t ref_id, int32_t flag)
occtl_status_t occtl_topo_make_face_from_wires_auto(occtl_graph_t *graph, const occtl_topo_make_face_from_wires_auto_options_t *options, occtl_node_id_t *out_face)
occtl_status_t occtl_select_tagged_iter_create(occtl_graph_t *graph, const occtl_select_options_t *options, const char *tag, size_t tagLen, occtl_select_iter_t **out_iter)
enum occtl_select_axis_position occtl_select_axis_position_t
occtl_status_t occtl_topo_set_vertex_tolerance(occtl_graph_t *graph, occtl_node_id_t vertex, double tol)
occtl_status_t occtl_topo_edge_has_polygon3d(const occtl_graph_t *const graph, occtl_node_id_t edge, int32_t *const out_has_polygon3d)
occtl_status_t occtl_topo_set_vertex_point(occtl_graph_t *graph, occtl_node_id_t vertex, occtl_point3_t point)
struct occtl_select_group_iter occtl_select_group_iter_t
Definition occtl_topo_build.h:2242
occtl_status_t occtl_batch_commit(occtl_batch_t *batch)
occtl_status_t occtl_topo_compound_remove_child(occtl_graph_t *graph, occtl_node_id_t compound, occtl_node_id_t child)
occtl_status_t occtl_topo_face_add_holes(occtl_graph_t *graph, occtl_node_id_t face, const occtl_node_id_t *holes, size_t hole_count)
occtl_status_t occtl_topo_set_edge_start_vertex(occtl_graph_t *graph, occtl_node_id_t edge, occtl_node_id_t vertex)
occtl_status_t occtl_topo_solid_remove_shell(occtl_graph_t *graph, occtl_node_id_t solid, occtl_node_id_t shell)
struct occtl_topo_make_face_from_wires_auto_options occtl_topo_make_face_from_wires_auto_options_t
occtl_status_t occtl_topo_edge_has_continuity(const occtl_graph_t *const graph, occtl_node_id_t edge, occtl_node_id_t faceA, occtl_node_id_t faceB, int32_t *const out_has_continuity)
struct occtl_joint_info occtl_joint_info_t
occtl_status_t occtl_topo_edge_find_coedge_on_face_oriented(const occtl_graph_t *const graph, occtl_node_id_t edge, occtl_node_id_t face, occtl_orientation_t orientation, occtl_node_id_t *const out_coedge)
occtl_status_t occtl_topo_set_ref_orientation(occtl_graph_t *graph, occtl_ref_id_t ref_id, occtl_orientation_t orientation)
occtl_status_t occtl_topo_edge_continuity(const occtl_graph_t *const graph, occtl_node_id_t edge, occtl_node_id_t faceA, occtl_node_id_t faceB, occtl_shape_continuity_t *const out_continuity)
occtl_status_t occtl_topo_set_edge_end_vertex(occtl_graph_t *graph, occtl_node_id_t edge, occtl_node_id_t vertex)
occtl_status_t occtl_topo_remove_rep(occtl_graph_t *graph, occtl_rep_id_t rep_id)
occtl_status_t occtl_topo_set_face_tolerance(occtl_graph_t *graph, occtl_node_id_t face, double tol)
occtl_status_t occtl_graph_mass_properties_get(occtl_graph_t *graph, occtl_node_id_t node, occtl_graph_mass_properties_t *out_properties)
occtl_status_t occtl_graph_compact(occtl_graph_t *graph)
occtl_status_t occtl_topo_wire_chamfer_2d(occtl_graph_t *graph, const occtl_topo_wire_chamfer_2d_options_t *options, occtl_node_id_t *out_wire)
occtl_status_t occtl_topo_set_shell_is_closed(occtl_graph_t *graph, occtl_node_id_t shell, int32_t flag)
occtl_status_t occtl_topo_vertex_pcurve_parameter(const occtl_graph_t *const graph, occtl_node_id_t vertex, occtl_node_id_t coedge, double *const out_u)
occtl_status_t occtl_topo_set_wire_is_closed(occtl_graph_t *graph, occtl_node_id_t wire, int32_t flag)
occtl_status_t occtl_graph_clear_cached(occtl_graph_t *graph, occtl_node_id_t node, occtl_ref_id_t ref)
occtl_status_t occtl_topo_set_edge_same_range(occtl_graph_t *graph, occtl_node_id_t edge, int32_t flag)
occtl_status_t occtl_graph_obb_get(occtl_graph_t *graph, occtl_node_id_t node, occtl_graph_obb_t *out_obb)
occtl_status_t occtl_topo_face_uv_bounds_restricted(const occtl_graph_t *const graph, occtl_node_id_t face, double umin, double umax, double vmin, double vmax, double u, double v, occtl_point3_t *const out_point, occtl_vector3_t *const out_d1u, occtl_vector3_t *const out_d1v)
occtl_status_t occtl_select_iter_next(occtl_select_iter_t *iter, occtl_node_id_t *out_node)
occtl_status_t occtl_graph_measure_get(occtl_graph_t *graph, occtl_node_id_t node, occtl_select_measure_kind_t kind, double *out_value)
occtl_status_t occtl_topo_vertex_point_in_usage(const occtl_graph_t *const graph, occtl_node_id_t vertex, occtl_node_id_t parent, occtl_point3_t *const out_point)
enum occtl_select_normal_mode occtl_select_normal_mode_t
occtl_status_t occtl_topo_make_shell(occtl_graph_t *graph, const occtl_topo_make_shell_info_t *info, occtl_node_id_t *out_shell)
enum occtl_select_bbox_mode occtl_select_bbox_mode_t
occtl_status_t occtl_graph_adjacent_faces_get(occtl_graph_t *graph, occtl_node_id_t face, occtl_node_id_t *out_buf, size_t cap, size_t *out_count)
enum occtl_select_measure_kind occtl_select_measure_kind_t
occtl_status_t occtl_topo_face_remove_holes(occtl_graph_t *graph, occtl_node_id_t face, const occtl_node_id_t *holes, size_t hole_count)
occtl_status_t occtl_graph_begin_batch(occtl_graph_t *graph, occtl_batch_t **out_batch)
occtl_status_t occtl_topo_coedge_orientation(const occtl_graph_t *const graph, occtl_node_id_t coedge, occtl_orientation_t *const out_orientation)
occtl_status_t occtl_topo_set_face_natural_restriction(occtl_graph_t *graph, occtl_node_id_t face, int32_t flag)
occtl_status_t occtl_topo_cleanup_removed_refs(occtl_graph_t *graph)
occtl_status_t occtl_graph_adjacent_edges_get(occtl_graph_t *graph, occtl_node_id_t edge, occtl_node_id_t *out_buf, size_t cap, size_t *out_count)
occtl_status_t occtl_topo_make_compound(occtl_graph_t *graph, const occtl_topo_make_compound_info_t *info, occtl_node_id_t *out_compound)
occtl_status_t occtl_topo_edge_remove_vertex(occtl_graph_t *graph, occtl_node_id_t edge, occtl_node_id_t vertex)
occtl_status_t occtl_topo_make_vertex(occtl_graph_t *graph, const occtl_topo_make_vertex_info_t *info, occtl_node_id_t *out_vertex)
occtl_status_t occtl_graph_descendant_edges_get(occtl_graph_t *graph, occtl_node_id_t node, occtl_node_id_t *out_buf, size_t cap, size_t *out_count)
occtl_status_t occtl_topo_coedge_has_polygon_on_surface(const occtl_graph_t *const graph, occtl_node_id_t coedge, int32_t *const out_has_polygon_on_surface)
occtl_status_t occtl_topo_wire_fix_degenerate(occtl_graph_t *graph, const occtl_topo_wire_fix_degenerate_edges_options_t *options, size_t *out_removed)
occtl_status_t occtl_select_group_iter_create(occtl_graph_t *graph, const occtl_select_options_t *select_options, const occtl_select_group_options_t *group_options, occtl_select_group_iter_t **out_iter)
occtl_status_t occtl_topo_set_edge_is_closed(occtl_graph_t *graph, occtl_node_id_t edge, int32_t flag)
occtl_status_t occtl_select_group_iter_next(occtl_select_group_iter_t *iter, occtl_select_group_view_t *out_view)
struct occtl_material_info occtl_material_info_t
struct occtl_select_distance_to_node_sort occtl_select_distance_to_node_sort_t
occtl_status_t occtl_topo_edge_split(occtl_graph_t *graph, occtl_node_id_t edge, double parameter, occtl_node_id_t *out_edge1, occtl_node_id_t *out_edge2)
struct occtl_select_iter occtl_select_iter_t
Definition occtl_topo_build.h:2231
struct occtl_select_options occtl_select_options_t
occtl_status_t occtl_select_iter_create(occtl_graph_t *graph, const occtl_select_options_t *options, occtl_select_iter_t **out_iter)
occtl_status_t occtl_topo_make_face(occtl_graph_t *graph, const occtl_topo_make_face_info_t *info, occtl_node_id_t *out_face)
occtl_status_t occtl_topo_edges_to_wires(occtl_graph_t *graph, const occtl_topo_edges_to_wires_options_t *options, occtl_node_id_t *out_wires, size_t cap, size_t *out_count)
enum occtl_select_axis occtl_select_axis_t
occtl_status_t occtl_graph_descendant_vertices_get(occtl_graph_t *graph, occtl_node_id_t node, occtl_node_id_t *out_buf, size_t cap, size_t *out_count)
occtl_status_t occtl_graph_face_surface_kind_get(occtl_graph_t *graph, occtl_node_id_t face, occtl_surface_kind_t *out_kind)
occtl_status_t occtl_topo_edge_find_coedge_on_face(const occtl_graph_t *const graph, occtl_node_id_t edge, occtl_node_id_t face, occtl_node_id_t *const out_coedge)
struct occtl_topo_wire_offset_2d_options occtl_topo_wire_offset_2d_options_t
occtl_status_t occtl_graph_edge_curve_kind_get(occtl_graph_t *graph, occtl_node_id_t edge, occtl_curve_kind_t *out_kind)
struct occtl_tag_view occtl_tag_view_t
occtl_status_t occtl_batch_abort(occtl_batch_t *batch)
struct occtl_topo_wire_fix_degenerate_edges_options occtl_topo_wire_fix_degenerate_edges_options_t
occtl_status_t occtl_topo_edge_add_internal_vertex(occtl_graph_t *graph, occtl_node_id_t edge, occtl_node_id_t vertex)
occtl_status_t occtl_topo_replace_edge_curve(occtl_graph_t *graph, occtl_node_id_t edge, occtl_rep_id_t curve_id)
occtl_status_t occtl_graph_descendants_get(occtl_graph_t *graph, occtl_node_id_t node, occtl_node_kind_t descendant_kind, occtl_node_id_t *out_buf, size_t cap, size_t *out_count)
occtl_status_t occtl_topo_make_compsolid(occtl_graph_t *graph, const occtl_topo_make_compsolid_info_t *info, occtl_node_id_t *out_compsolid)
occtl_status_t occtl_topo_solid_add_shell(occtl_graph_t *graph, occtl_node_id_t solid, occtl_node_id_t shell, occtl_orientation_t orientation)
occtl_status_t occtl_graph_bbox_get(occtl_graph_t *graph, occtl_node_id_t node, occtl_select_bbox_t *out_bbox)
occtl_status_t occtl_topo_set_edge_same_parameter(occtl_graph_t *graph, occtl_node_id_t edge, int32_t flag)
occtl_status_t occtl_topo_remove(occtl_graph_t *graph, occtl_node_id_t id)
enum occtl_select_sort_key occtl_select_sort_key_t
struct occtl_select_group_options occtl_select_group_options_t
occtl_status_t occtl_topo_make_wire(occtl_graph_t *graph, const occtl_topo_make_wire_info_t *info, occtl_node_id_t *out_wire)
occtl_status_t occtl_topo_replace_face_surface(occtl_graph_t *graph, occtl_node_id_t face, occtl_rep_id_t surface_id)
occtl_status_t occtl_topo_edge_max_continuity(const occtl_graph_t *const graph, occtl_node_id_t edge, occtl_shape_continuity_t *const out_continuity)
occtl_status_t occtl_topo_set_edge_param_range(occtl_graph_t *graph, occtl_node_id_t edge, double first, double last)
occtl_status_t occtl_topo_set_coedge_uv_box(occtl_graph_t *graph, occtl_node_id_t coedge, occtl_point2_t uv_lo, occtl_point2_t uv_hi)
enum occtl_select_sort_direction occtl_select_sort_direction_t
occtl_status_t occtl_topo_shell_remove_face(occtl_graph_t *graph, occtl_node_id_t shell, occtl_node_id_t face)
@ OCCTL_ORIENTATION_FORWARD
Definition occtl_topo_relation.h:67
occtl_status_t occtl_topo_connected_faces(const occtl_graph_t *graph, occtl_node_id_t seed_face, occtl_node_id_t *out_buf, size_t cap, size_t *out_count)
void occtl_topo_touch_iter_free(occtl_topo_touch_iter_t *iter)
occtl_status_t occtl_topo_touch_iter_create(const occtl_graph_t *graph, occtl_node_id_t node_a, occtl_node_id_t node_b, const occtl_topo_relation_options_t *options, occtl_topo_touch_iter_t **out_iter)
occtl_status_t occtl_topo_graph_distance(const occtl_graph_t *graph, occtl_node_id_t root, const occtl_node_id_t *sources, size_t source_count, occtl_node_id_t target, int32_t *out_distance)
occtl_status_t occtl_topo_is_inside(const occtl_graph_t *graph, occtl_node_id_t solid, occtl_point3_t point, double tolerance, int32_t include_boundary, int32_t *out_is_inside)
enum occtl_shape_continuity occtl_shape_continuity_t
enum occtl_relation_kind occtl_relation_kind_t
void occtl_topo_related_iter_free(occtl_topo_related_iter_t *iter)
struct occtl_topo_touch_iter occtl_topo_touch_iter_t
Definition occtl_topo_relation.h:395
occtl_status_t occtl_topo_connected_edges(const occtl_graph_t *graph, occtl_node_id_t seed_edge, occtl_node_id_t *out_buf, size_t cap, size_t *out_count)
occtl_status_t occtl_topo_axis_hit_iter_next(occtl_topo_axis_hit_iter_t *iter, occtl_topo_axis_hit_t *out_hit)
struct occtl_topo_touch_hit occtl_topo_touch_hit_t
struct occtl_topo_distance_pair occtl_topo_distance_pair_t
struct occtl_topo_relation_options occtl_topo_relation_options_t
struct occtl_topo_intersection_iter occtl_topo_intersection_iter_t
Definition occtl_topo_relation.h:406
occtl_status_t occtl_topo_intersection_iter_create(occtl_graph_t *graph, occtl_node_id_t node_a, occtl_node_id_t node_b, const occtl_topo_relation_options_t *options, occtl_topo_intersection_iter_t **out_iter)
occtl_status_t occtl_topo_axis_intersect_faces(const occtl_graph_t *graph, occtl_node_id_t root, occtl_axis1_placement_t axis, double min_parameter, double max_parameter, double tolerance, occtl_topo_axis_hit_iter_t **out_iter)
void occtl_topo_intersection_iter_free(occtl_topo_intersection_iter_t *iter)
occtl_status_t occtl_topo_wire_order_edges(const occtl_graph_t *graph, occtl_node_id_t wire, occtl_oriented_node_t *out_buf, size_t cap, size_t *out_count)
enum occtl_orientation occtl_orientation_t
occtl_status_t occtl_topo_classify_point(const occtl_graph_t *graph, occtl_node_id_t solid, occtl_point3_t point, double tolerance, occtl_topo_point_class_t *out_class)
@ OCCTL_RELATION_BOUNDARY_EDGE
Definition occtl_topo_relation.h:413
struct occtl_topo_axis_hit occtl_topo_axis_hit_t
occtl_status_t occtl_topo_common_vertices(const occtl_graph_t *graph, occtl_node_id_t node_a, occtl_node_id_t node_b, occtl_node_id_t *out_buf, size_t cap, size_t *out_count)
occtl_status_t occtl_topo_related_iter_next(occtl_topo_related_iter_t *iter, occtl_node_id_t *out_node, occtl_relation_kind_t *out_kind)
struct occtl_oriented_node occtl_oriented_node_t
@ OCCTL_TOPO_POINT_CLASS_UNKNOWN
Definition occtl_topo_relation.h:434
struct occtl_topo_axis_hit_iter occtl_topo_axis_hit_iter_t
Definition occtl_topo_relation.h:348
occtl_status_t occtl_topo_parent_explorer_create(const occtl_graph_t *graph, occtl_node_id_t node, const occtl_topo_parent_explorer_config_t *config, occtl_topo_explorer_iter_t **out_iter)
void occtl_topo_axis_hit_iter_free(occtl_topo_axis_hit_iter_t *iter)
occtl_status_t occtl_topo_related_iter_create(const occtl_graph_t *graph, occtl_node_id_t node, occtl_topo_related_iter_t **out_iter)
void occtl_topo_explorer_iter_free(occtl_topo_explorer_iter_t *iter)
occtl_status_t occtl_topo_intersection_iter_next(occtl_topo_intersection_iter_t *iter, occtl_node_id_t *out_node)
occtl_status_t occtl_topo_adjacent_edges(const occtl_graph_t *graph, occtl_node_id_t edge, occtl_node_id_t *out_buf, size_t cap, size_t *out_count)
enum occtl_topo_point_class occtl_topo_point_class_t
occtl_status_t occtl_topo_touch_iter_next(occtl_topo_touch_iter_t *iter, occtl_topo_touch_hit_t *out_hit)
occtl_status_t occtl_topo_adjacent_faces(const occtl_graph_t *graph, occtl_node_id_t face, occtl_node_id_t *out_buf, size_t cap, size_t *out_count)
struct occtl_topo_related_iter occtl_topo_related_iter_t
Definition occtl_topo_relation.h:337
occtl_status_t occtl_topo_child_explorer_create(const occtl_graph_t *graph, occtl_node_id_t root, const occtl_topo_child_explorer_config_t *config, occtl_topo_explorer_iter_t **out_iter)
struct occtl_topo_explorer_iter occtl_topo_explorer_iter_t
Definition occtl_topo_relation.h:131
occtl_status_t occtl_topo_is_same_geometry(const occtl_graph_t *graph, occtl_node_id_t node_a, occtl_node_id_t node_b, double tolerance, int32_t *out_is_same_geometry)
occtl_status_t occtl_topo_explorer_iter_next(occtl_topo_explorer_iter_t *iter, occtl_node_id_t *out_node, occtl_transform_t *out_transform, occtl_orientation_t *out_orientation)
#define OCCTL_NODE_ID_INVALID
Definition occtl_topo_types.h:138
struct occtl_graph occtl_graph_t
Definition occtl_topo_types.h:152
Directed line in 3D (origin + unit direction). Mirrors occtl_axis1_placement_t.
Definition geom.hpp:365
const occtl_axis1_placement_t & c_type() const noexcept
Borrows-it view of the underlying C value type.
Definition geom.hpp:379
One yield from an explorer iteration.
Definition topo.hpp:1181
Material-lite data stored on a graph node.
Definition topo.hpp:289
Graph-level length-unit metadata.
Definition topo.hpp:282
One yield from edge_split: the two sub-edges produced at the split point.
Definition topo.hpp:4226
NodeId Edge1
First sub-edge (start → split parameter).
Definition topo.hpp:4227
NodeId Edge2
Second sub-edge (split parameter → end).
Definition topo.hpp:4228
Category roots returned by OCCT hidden-line projection.
Definition topo.hpp:269
2D point value type. Mirrors occtl_point2_t with STL-flavoured access.
Definition geom.hpp:38
3D point value type. Mirrors occtl_point3_t with STL-flavoured access.
Definition geom.hpp:82
const occtl_point3_t & c_type() const noexcept
Borrows-it view of the underlying C value type, for direct ABI calls.
Definition geom.hpp:102
2D free-vector value type. Mirrors occtl_vector2_t.
Definition geom.hpp:128
3D free-vector value type. Mirrors occtl_vector3_t.
Definition geom.hpp:184
Definition occtl_topo_build.h:2096
Definition occtl_topo.h:3902
Definition occtl_topo_build.h:2292
Definition occtl_topo_build.h:2260
Definition occtl_topo_build.h:2274
Definition occtl_topo_types.h:120
uint64_t bits
Definition occtl_topo_types.h:121
Definition occtl_topo_build.h:2165
Definition occtl_topo_build.h:2114
double density
Definition occtl_topo_build.h:2120
occtl_color_rgba_t diffuse_color
Definition occtl_topo_build.h:2122
int32_t has_diffuse_color
Definition occtl_topo_build.h:2121
int32_t has_density
Definition occtl_topo_build.h:2119
occtl_uid_t metadata_uid
Definition occtl_topo_build.h:2123
Definition occtl_topo_types.h:50
uint64_t bits
Definition occtl_topo_types.h:51
Definition occtl_topo_relation.h:81
Definition occtl_geom.h:49
Definition occtl_geom.h:76
Definition occtl_topo_types.h:61
uint64_t bits
Definition occtl_topo_types.h:62
Definition occtl_topo_types.h:76
Definition occtl_core.h:251
uint64_t bits
Definition occtl_core.h:252
Definition occtl_topo_types.h:91
Definition occtl_topo_build.h:2248
Definition occtl_topo_build.h:2551
Definition occtl_topo_build.h:2564
Definition occtl_topo_build.h:2590
Definition occtl_topo_build.h:2444
Definition occtl_topo.h:3813
Definition occtl_topo.h:3858
Definition occtl_topo_build.h:2217
Definition occtl_topo_relation.h:460
Definition occtl_topo_algo.h:1018
size_t selection_count
Definition occtl_topo_algo.h:1023
occtl_node_id_t root
Definition occtl_topo_algo.h:1021
int32_t parallel
Definition occtl_topo_algo.h:1024
const occtl_node_id_t * selections
Definition occtl_topo_algo.h:1022
Definition occtl_topo_relation.h:446
Definition occtl_topo_algo.h:324
double chamfer_dist1
Definition occtl_topo_algo.h:332
int32_t chamfer_mode
Definition occtl_topo_algo.h:331
double chamfer_dist2
Definition occtl_topo_algo.h:333
double radius
Definition occtl_topo_algo.h:330
occtl_node_id_t root
Definition occtl_topo_algo.h:327
const occtl_node_id_t * edges
Definition occtl_topo_algo.h:328
size_t edge_count
Definition occtl_topo_algo.h:329
Definition occtl_topo_build.h:161
Definition occtl_topo_algo.h:1522
Definition occtl_topo_build.h:302
Definition occtl_topo_algo.h:849
occtl_node_id_t visible_sharp
Definition occtl_topo_algo.h:853
occtl_node_id_t visible_seam
Definition occtl_topo_algo.h:855
occtl_graph_t * graph
Definition occtl_topo_algo.h:852
occtl_node_id_t hidden_seam
Definition occtl_topo_algo.h:859
occtl_node_id_t hidden_outline
Definition occtl_topo_algo.h:860
occtl_node_id_t hidden_smooth
Definition occtl_topo_algo.h:858
occtl_node_id_t visible_outline
Definition occtl_topo_algo.h:856
occtl_node_id_t hidden_sharp
Definition occtl_topo_algo.h:857
occtl_node_id_t visible_smooth
Definition occtl_topo_algo.h:854
Definition occtl_topo_build.h:419
Definition occtl_topo_algo.h:395
size_t edge_count
Definition occtl_topo_algo.h:400
occtl_node_id_t root
Definition occtl_topo_algo.h:398
const occtl_node_id_t * edges
Definition occtl_topo_algo.h:399
Definition occtl_topo_algo.h:1085
size_t selection_count
Definition occtl_topo_algo.h:1090
double base_offset
Definition occtl_topo_algo.h:1091
double selection_offset
Definition occtl_topo_algo.h:1092
occtl_node_id_t root
Definition occtl_topo_algo.h:1088
const occtl_node_id_t * selections
Definition occtl_topo_algo.h:1089
Definition occtl_topo_relation.h:361
Definition occtl_topo_algo.h:1455
Definition occtl_topo_algo.h:1444
Definition occtl_topo_algo.h:1376
Definition occtl_topo_relation.h:478
Definition occtl_topo_build.h:324
Definition occtl_topo_build.h:266
Definition occtl_topo_build.h:223
Definition occtl_core.h:272
Definition occtl_geom.h:56
Definition occtl_geom.h:84
Definition occtl_topo.h:3722
Definition occtl_topo.h:3767
::occtl_select_axis_t SelectAxis
Selector principal axis.
Definition topo.hpp:241
::occtl_joint_kind_t JointKind
Assembly joint kind.
Definition topo.hpp:302
::occtl_select_sort_direction_t SelectSortDirection
Selector output sort direction.
Definition topo.hpp:256
::occtl_select_sort_key_t SelectSortKey
Selector output sort key.
Definition topo.hpp:253
::occtl_select_group_key_t SelectGroupKey
Selector grouping key.
Definition topo.hpp:262
::occtl_topo_point_class_t PointClass
Point classification result for graph topology.
Definition topo.hpp:205
::occtl_surface_kind_t SurfaceKind
Surface kind used by face geometry.
Definition topo.hpp:223
::occtl_orientation_t Orientation
Orientation of a child entity inside its parent.
Definition topo.hpp:196
::occtl_select_axis_position_t SelectAxisPosition
Selector axis-position mode.
Definition topo.hpp:244
::occtl_select_normal_mode_t SelectNormalMode
Selector face-normal predicate.
Definition topo.hpp:247
::occtl_select_bbox_mode_t SelectBBoxMode
Selector bounding-box mode.
Definition topo.hpp:238
::occtl_curve_kind_t CurveKind
3D curve kind used by edge geometry.
Definition topo.hpp:220
::occtl_select_measure_kind_t SelectMeasureKind
Selector OCCT mass-property predicate.
Definition topo.hpp:250
::occtl_node_kind_t NodeKind
Public graph node kind.
Definition topo.hpp:308
::occtl_relation_kind_t RelationKind
Semantic relation kind between two graph nodes.
Definition topo.hpp:202
::occtl_topo_split_keep_t TopoSplitKeep
Plane split side-selection mode.
Definition topo.hpp:311
C++ veneer wrapper for persistent topology UIDs.