OCCT-Light 0.1
C ABI and C++ veneer for multi-language CAD workflows
Loading...
Searching...
No Matches
occtl_topo.h
Go to the documentation of this file.
1// Copyright (c) 2026 Capgemini Engineering Research and Development.
2//
3// This file is part of OCCT-Light software library.
4//
5// This library is free software; you can redistribute it and/or modify it under
6// the terms of the GNU Affero General Public License version 3 as published
7// by the Free Software Foundation, with an option to use any later version.
8// Consult the file LICENSE_AGPL_30.txt included in OCCT-Light distribution
9// for complete text of the license and disclaimer of any warranty.
10//
11// Alternatively, this file may be used under the terms of a commercial
12// license or contractual agreement.
13//
14// SPDX-License-Identifier: AGPL-3.0-or-later
15
28#ifndef OCCTL_TOPO_H
29#define OCCTL_TOPO_H
30
31#include <stddef.h>
32#include <stdint.h>
33
34#include "occtl_core.h"
35#include "occtl_curves.h"
36#include "occtl_curves2d.h"
37#include "occtl_geom.h"
38#include "occtl_surfaces.h"
39#include "occtl_topo_build.h"
40#include "occtl_topo_relation.h"
41#include "occtl_topo_types.h"
42
43#ifdef __cplusplus
44extern "C"
45{
46#endif
47
68
83
106 occtl_uid_t uid,
107 occtl_node_id_t* out_node_id);
108
132 occtl_uid_t* out_uid);
133
156 occtl_uid_t input_uid,
157 occtl_uid_t* out_buf,
158 size_t cap,
159 size_t* out_count);
160
179 occtl_uid_t input_uid,
180 occtl_uid_t* out_buf,
181 size_t cap,
182 size_t* out_count);
183
201 occtl_uid_t* out_buf,
202 size_t cap,
203 size_t* out_count);
204
225 occtl_ref_uid_t ref_uid,
226 occtl_ref_id_t* out_ref_id);
227
247 occtl_ref_id_t ref_id,
248 occtl_ref_uid_t* out_ref_uid);
249
266 occtl_rep_uid_t rep_uid,
267 occtl_rep_id_t* out_rep_id);
268
285 occtl_rep_id_t rep_id,
286 occtl_rep_uid_t* out_rep_uid);
287
303 uint8_t* out_bytes);
304
324OCCTL_API occtl_status_t OCCTL_CALL occtl_ref_uid_from_bytes(const uint8_t* in_bytes,
325 occtl_ref_uid_t* out_ref_uid);
326
342 uint8_t* out_bytes);
343
359OCCTL_API occtl_status_t OCCTL_CALL occtl_rep_uid_from_bytes(const uint8_t* in_bytes,
360 occtl_rep_uid_t* out_rep_uid);
361
395 occtl_uid_t* out_uids,
396 occtl_node_id_t* out_nodes,
397 size_t cap,
398 size_t* out_count);
399
427 occtl_ref_uid_t* out_ref_uids,
428 occtl_ref_id_t* out_refs,
429 size_t cap,
430 size_t* out_count);
431
453 occtl_node_kind_t* out_kind);
454
472 occtl_uid_t uid,
473 occtl_node_kind_t* out_kind);
474
491 occtl_ref_kind_t* out_kind);
492
509 occtl_ref_uid_t ref_uid,
510 occtl_ref_kind_t* out_kind);
511
528 occtl_rep_kind_t* out_kind);
529
542 size_t* out_count);
543
546 size_t* out_count);
547
550 size_t* out_count);
551
554 size_t* out_count);
555
558 size_t* out_count);
559
562 size_t* out_count);
563
566 size_t* out_count);
567
570 size_t* out_count);
571
574 size_t* out_count);
575
578 size_t* out_count);
579
582 size_t* out_count);
583
596 size_t* out_count);
597
614 occtl_node_id_t vertex,
615 occtl_point3_t* out_point);
616
633 occtl_node_id_t vertex,
634 double* out_tolerance);
635
650 occtl_node_id_t vertex,
651 uint32_t* out_count);
652
670 occtl_node_id_t edge,
671 double* out_first,
672 double* out_last);
673
688 occtl_node_id_t edge,
689 double* out_tolerance);
690
706 occtl_node_id_t edge,
707 int32_t* out_is_degenerated);
708
724 occtl_node_id_t edge,
725 int32_t* out_has_curve);
726
746 occtl_node_id_t edge,
747 occtl_curve_kind_t* out_kind);
748
766 occtl_node_id_t edge,
767 occtl_node_id_t* out_vertex);
768
786 occtl_node_id_t edge,
787 occtl_node_id_t* out_vertex);
788
804 occtl_node_id_t coedge,
805 int32_t* out_is_seam);
806
824 occtl_node_id_t coedge,
825 occtl_node_id_t* out_edge);
826
844 occtl_node_id_t coedge,
845 occtl_node_id_t* out_face);
846
861 occtl_node_id_t face,
862 double* out_tolerance);
863
878 occtl_node_id_t face,
879 uint32_t* out_count);
880
897 occtl_node_id_t face,
898 occtl_node_id_t* out_wire);
899
917 occtl_node_id_t face,
918 double* out_umin,
919 double* out_umax,
920 double* out_vmin,
921 double* out_vmax);
922
941 occtl_node_id_t edge,
942 double u,
943 occtl_point3_t* out_p);
944
964 occtl_node_id_t edge,
965 double u,
966 occtl_point3_t* out_p,
967 occtl_vector3_t* out_d1);
968
990 occtl_node_id_t edge,
991 double u,
992 occtl_point3_t* out_p,
993 occtl_vector3_t* out_d1,
994 occtl_vector3_t* out_d2);
995
1018 occtl_node_id_t edge,
1019 double u,
1020 occtl_point3_t* out_p,
1021 occtl_vector3_t* out_d1,
1022 occtl_vector3_t* out_d2,
1023 occtl_vector3_t* out_d3);
1024
1044 occtl_node_id_t edge,
1045 double u,
1046 uint32_t n,
1047 occtl_vector3_t* out_dn);
1048
1067 occtl_node_id_t coedge,
1068 double u,
1069 occtl_point2_t* out_uv);
1070
1091 occtl_node_id_t coedge,
1092 double u,
1093 occtl_point2_t* out_uv,
1094 occtl_vector2_t* out_d1);
1095
1117 occtl_node_id_t coedge,
1118 double u,
1119 occtl_point2_t* out_uv,
1120 occtl_vector2_t* out_d1,
1121 occtl_vector2_t* out_d2);
1122
1145 occtl_node_id_t coedge,
1146 double u,
1147 occtl_point2_t* out_uv,
1148 occtl_vector2_t* out_d1,
1149 occtl_vector2_t* out_d2,
1150 occtl_vector2_t* out_d3);
1151
1171 occtl_node_id_t coedge,
1172 double u,
1173 uint32_t n,
1174 occtl_vector2_t* out_dn);
1175
1195 occtl_node_id_t face,
1196 double u,
1197 double v,
1198 occtl_point3_t* out_p);
1199
1225 occtl_node_id_t face,
1226 double u,
1227 double v,
1228 occtl_point3_t* out_p,
1229 occtl_vector3_t* out_d1u,
1230 occtl_vector3_t* out_d1v);
1231
1257 occtl_node_id_t face,
1258 double u,
1259 double v,
1260 occtl_point3_t* out_p,
1261 occtl_vector3_t* out_d1u,
1262 occtl_vector3_t* out_d1v,
1263 occtl_vector3_t* out_d2u,
1264 occtl_vector3_t* out_d2v,
1265 occtl_vector3_t* out_d2uv);
1266
1296 occtl_node_id_t face,
1297 double u,
1298 double v,
1299 occtl_point3_t* out_p,
1300 occtl_vector3_t* out_d1u,
1301 occtl_vector3_t* out_d1v,
1302 occtl_vector3_t* out_d2u,
1303 occtl_vector3_t* out_d2v,
1304 occtl_vector3_t* out_d2uv,
1305 occtl_vector3_t* out_d3u,
1306 occtl_vector3_t* out_d3v,
1307 occtl_vector3_t* out_d3uuv,
1308 occtl_vector3_t* out_d3uvv);
1309
1332 occtl_node_id_t face,
1333 double u,
1334 double v,
1335 uint32_t nu,
1336 uint32_t nv,
1337 occtl_vector3_t* out_dn);
1338
1354 occtl_node_id_t face,
1355 int32_t* out_has_surface);
1356
1376 occtl_node_id_t face,
1377 occtl_surface_kind_t* out_kind);
1378
1394 occtl_node_id_t wire,
1395 int32_t* out_is_closed);
1396
1411 occtl_node_id_t wire,
1412 uint32_t* out_count);
1413
1429 occtl_node_id_t shell,
1430 int32_t* out_is_closed);
1431
1446 occtl_node_id_t shell,
1447 uint32_t* out_count);
1448
1467 occtl_node_id_t vertex,
1468 occtl_node_id_t edge,
1469 double* out_parameter);
1470
1489 occtl_node_id_t vertex,
1490 occtl_node_id_t face,
1491 occtl_point2_t* out_uv);
1492
1508 occtl_node_id_t edge,
1509 int32_t* out_has_same_parameter);
1510
1526 occtl_node_id_t edge,
1527 int32_t* out_has_same_range);
1528
1545 occtl_node_id_t edge,
1546 int32_t* out_is_manifold);
1547
1564 occtl_node_id_t edge,
1565 int32_t* out_is_boundary);
1566
1587 occtl_node_id_t edge,
1588 occtl_node_id_t face,
1589 int32_t* out_is_seam);
1590
1605 occtl_node_id_t edge,
1606 uint32_t* out_count);
1607
1622 occtl_node_id_t coedge,
1623 int32_t* out_is_reversed);
1624
1640 occtl_node_id_t coedge,
1641 int32_t* out_has_pcurve);
1642
1659 occtl_node_id_t coedge,
1660 occtl_node_id_t vertex,
1661 double* out_parameter);
1662
1678 occtl_node_id_t coedge,
1679 double* out_first,
1680 double* out_last);
1681
1698 occtl_node_id_t coedge,
1699 occtl_point2_t* out_uv_start,
1700 occtl_point2_t* out_uv_end);
1701
1719 occtl_node_id_t coedge,
1720 occtl_node_id_t* out_pair);
1721
1738OCCTL_API occtl_status_t OCCTL_CALL
1740 occtl_node_id_t face,
1741 int32_t* out_has_natural_restriction);
1742
1759OCCTL_API occtl_status_t OCCTL_CALL
1761 occtl_node_id_t face,
1762 int32_t* out_has_triangulation);
1763
1778 occtl_node_id_t wire,
1779 uint32_t* out_count);
1780
1798 occtl_node_id_t wire,
1799 occtl_node_id_t* out_face);
1800
1817 occtl_node_id_t wire,
1818 int32_t* out_is_outer);
1819
1834 occtl_node_id_t solid,
1835 uint32_t* out_count);
1836
1851 occtl_node_id_t wire,
1852 uint32_t* out_count);
1853
1868 occtl_node_id_t edge,
1869 uint32_t* out_count);
1870
1888 occtl_node_id_t compound,
1889 uint32_t* out_count);
1890
1907 occtl_node_id_t compsolid,
1908 uint32_t* out_count);
1909
1924 occtl_node_id_t product,
1925 uint32_t* out_count);
1926
1951typedef struct occtl_node_iter occtl_node_iter_t;
1952
1973 occtl_node_id_t* out_id);
1974
1987
2006 occtl_node_iter_t** out_iter);
2007
2010 occtl_node_iter_t** out_iter);
2011
2014 occtl_node_iter_t** out_iter);
2015
2018 occtl_node_iter_t** out_iter);
2019
2022 occtl_node_iter_t** out_iter);
2023
2026 occtl_node_iter_t** out_iter);
2027
2030 occtl_node_iter_t** out_iter);
2031
2034 occtl_node_iter_t** out_iter);
2035
2038 occtl_node_iter_t** out_iter);
2039
2042 occtl_node_iter_t** out_iter);
2043
2045OCCTL_API occtl_status_t OCCTL_CALL
2047
2054OCCTL_API occtl_status_t OCCTL_CALL
2056
2075OCCTL_API occtl_status_t OCCTL_CALL
2077 occtl_node_id_t solid,
2078 occtl_node_iter_t** out_iter);
2079
2097OCCTL_API occtl_status_t OCCTL_CALL
2099 occtl_node_id_t shell,
2100 occtl_node_iter_t** out_iter);
2101
2119OCCTL_API occtl_status_t OCCTL_CALL
2121 occtl_node_id_t face,
2122 occtl_node_iter_t** out_iter);
2123
2141OCCTL_API occtl_status_t OCCTL_CALL
2143 occtl_node_id_t wire,
2144 occtl_node_iter_t** out_iter);
2145
2163OCCTL_API occtl_status_t OCCTL_CALL
2165 occtl_node_id_t wire,
2166 occtl_node_iter_t** out_iter);
2167
2194 occtl_node_id_t wire,
2195 occtl_node_iter_t** out_iter);
2196
2214OCCTL_API occtl_status_t OCCTL_CALL
2216 occtl_node_id_t product,
2217 occtl_node_iter_t** out_iter);
2218
2238OCCTL_API occtl_status_t OCCTL_CALL
2240 occtl_node_id_t edge,
2241 occtl_node_iter_t** out_iter);
2242
2244typedef occtl_status_t(OCCTL_CALL* occtl_node_visitor_t)(occtl_node_id_t node, void* user_data);
2245
2260 uint64_t kind_mask,
2261 occtl_node_visitor_t visitor,
2262 void* user_data);
2263
2265typedef occtl_status_t(OCCTL_CALL* occtl_ref_visitor_t)(occtl_ref_id_t ref, void* user_data);
2266
2268typedef occtl_status_t(OCCTL_CALL* occtl_rep_visitor_t)(occtl_rep_id_t rep, void* user_data);
2269
2285 uint64_t ref_kind_mask,
2286 occtl_ref_visitor_t visitor,
2287 void* user_data);
2288
2304 uint64_t rep_kind_mask,
2305 occtl_rep_visitor_t visitor,
2306 void* user_data);
2307
2322 occtl_node_id_t node,
2323 occtl_node_visitor_t visitor,
2324 void* user_data);
2325
2346 occtl_node_id_t target,
2347 occtl_color_rgba_t color);
2348
2367 occtl_node_id_t target,
2368 occtl_color_rgba_t* out_color);
2369
2397 occtl_node_id_t* out_nodes,
2398 occtl_color_rgba_t* out_colors,
2399 size_t cap,
2400 size_t* out_count);
2401
2421 occtl_node_id_t target);
2422
2446 occtl_node_id_t target,
2447 const char* name,
2448 size_t nameLen);
2449
2481 occtl_node_id_t target,
2482 char* buf,
2483 size_t bufSize,
2484 size_t* out_required);
2485
2507 occtl_node_id_t* out_nodes,
2508 size_t cap,
2509 size_t* out_count);
2510
2536 occtl_node_id_t target,
2537 const occtl_material_info_t* info);
2538
2571 occtl_node_id_t target,
2572 occtl_material_info_t* out_info,
2573 char* name_buf,
2574 size_t name_buf_size,
2575 size_t* out_name_required);
2576
2598 occtl_node_id_t* out_nodes,
2599 size_t cap,
2600 size_t* out_count);
2601
2619 occtl_node_id_t target);
2620
2648 double length_unit_to_meter,
2649 const char* name,
2650 size_t nameLen);
2651
2681 double* out_length_unit_to_meter,
2682 char* name_buf,
2683 size_t name_buf_size,
2684 size_t* out_name_required);
2685
2713 occtl_node_id_t target,
2714 const char* key,
2715 size_t keyLen,
2716 const char* value,
2717 size_t valueLen);
2718
2751 occtl_node_id_t target,
2752 const char* key,
2753 size_t keyLen,
2754 char* buf,
2755 size_t bufSize,
2756 size_t* out_required);
2757
2785OCCTL_API occtl_status_t OCCTL_CALL
2787 occtl_node_id_t target,
2788 occtl_metadata_key_view_t* out_keys,
2789 size_t cap,
2790 size_t* out_count);
2791
2814 occtl_node_id_t* out_nodes,
2815 size_t cap,
2816 size_t* out_count);
2817
2845 const char* key,
2846 size_t keyLen,
2847 const char* value,
2848 size_t valueLen);
2849
2880 const char* key,
2881 size_t keyLen,
2882 char* buf,
2883 size_t bufSize,
2884 size_t* out_required);
2885
2910 occtl_metadata_key_view_t* out_keys,
2911 size_t cap,
2912 size_t* out_count);
2913
2932 const char* key,
2933 size_t keyLen);
2934
2955 occtl_node_id_t target,
2956 const char* key,
2957 size_t keyLen);
2958
2981 occtl_node_id_t target,
2982 const char* tag,
2983 size_t tagLen);
2984
3004 occtl_node_id_t target,
3005 const char* tag,
3006 size_t tagLen);
3007
3027 occtl_node_id_t target,
3028 const char* tag,
3029 size_t tagLen,
3030 int32_t* out_has_tag);
3031
3058 occtl_node_id_t target,
3059 occtl_tag_view_t* out_tags,
3060 size_t cap,
3061 size_t* out_count);
3062
3089 const char* tag,
3090 size_t tagLen,
3091 occtl_node_id_t* out_nodes,
3092 size_t cap,
3093 size_t* out_count);
3094
3107
3133 const occtl_joint_info_t* info,
3134 occtl_joint_id_t* out_joint);
3135
3153 occtl_joint_id_t joint,
3154 occtl_joint_info_t* out_info);
3155
3172 occtl_joint_id_t joint);
3173
3200 occtl_node_id_t node,
3201 occtl_joint_id_t* out_joints,
3202 size_t cap,
3203 size_t* out_count);
3204
3205#define OCCTL_TOPO_MAKE_PRODUCT_INFO_VERSION_1 1u
3206
3220
3221#define OCCTL_TOPO_MAKE_PRODUCT_INFO_INIT \
3222 {OCCTL_TOPO_MAKE_PRODUCT_INFO_VERSION_1, \
3223 NULL, \
3224 OCCTL_NODE_ID_INVALID, \
3225 {1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}}
3226
3239
3263OCCTL_API occtl_status_t OCCTL_CALL
3266 occtl_node_id_t* out_product);
3267
3291 occtl_node_id_t product,
3292 occtl_node_id_t root,
3293 occtl_transform_t placement);
3294
3321OCCTL_API occtl_status_t OCCTL_CALL
3323 occtl_node_id_t product,
3324 occtl_node_id_t root,
3325 occtl_transform_t placement,
3326 occtl_node_id_t* out_occurrence);
3327
3352 occtl_node_id_t parentProduct,
3353 occtl_node_id_t childProduct,
3354 occtl_transform_t placement,
3355 occtl_node_id_t parentOccurrence);
3356
3384OCCTL_API occtl_status_t OCCTL_CALL
3386 occtl_node_id_t parentProduct,
3387 occtl_node_id_t childProduct,
3388 occtl_transform_t placement,
3389 occtl_node_id_t parentOccurrence,
3390 occtl_node_id_t* out_occurrence);
3391
3411 occtl_ref_id_t occurrence_ref);
3412
3437OCCTL_API occtl_status_t OCCTL_CALL
3439 occtl_node_id_t occurrence,
3440 occtl_transform_t transform);
3441
3459OCCTL_API occtl_status_t OCCTL_CALL
3461 occtl_node_id_t occurrence,
3462 occtl_transform_t* out_transform);
3463
3486OCCTL_API occtl_status_t OCCTL_CALL
3488 occtl_node_id_t root,
3489 occtl_node_id_t occurrence,
3490 occtl_transform_t* out_transform);
3491
3492#define OCCTL_EDGE_VIEW_VERSION_1 1u
3493
3532
3533#define OCCTL_EDGE_VIEW_INIT \
3534 {OCCTL_EDGE_VIEW_VERSION_1, \
3535 NULL, \
3536 0.0, \
3537 0.0, \
3538 0.0, \
3539 OCCTL_NODE_ID_INVALID, \
3540 OCCTL_NODE_ID_INVALID, \
3541 0u, \
3542 0u, \
3543 0, \
3544 0, \
3545 0, \
3546 0, \
3547 0, \
3548 0, \
3549 0}
3550
3563
3589 occtl_node_id_t edge,
3590 occtl_edge_view_t* view);
3591
3592#define OCCTL_COEDGE_VIEW_VERSION_1 1u
3593
3618
3619#define OCCTL_COEDGE_VIEW_INIT \
3620 {OCCTL_COEDGE_VIEW_VERSION_1, \
3621 NULL, \
3622 OCCTL_NODE_ID_INVALID, \
3623 OCCTL_NODE_ID_INVALID, \
3624 OCCTL_ORIENTATION_FORWARD, \
3625 0.0, \
3626 0.0, \
3627 {0.0, 0.0}, \
3628 {0.0, 0.0}, \
3629 0, \
3630 0, \
3631 0}
3632
3635
3659 occtl_node_id_t coedge,
3660 occtl_coedge_view_t* view);
3661
3662#define OCCTL_FACE_VIEW_VERSION_1 1u
3663
3683
3684#define OCCTL_FACE_VIEW_INIT \
3685 {OCCTL_FACE_VIEW_VERSION_1, NULL, 0.0, 0.0, 0.0, 0.0, 0.0, OCCTL_NODE_ID_INVALID, 0u, 0, 0, 0}
3686
3689
3713 occtl_node_id_t face,
3714 occtl_face_view_t* view);
3715
3716#define OCCTL_VERTEX_VIEW_VERSION_1 1u
3717
3729
3730#define OCCTL_VERTEX_VIEW_INIT {OCCTL_VERTEX_VIEW_VERSION_1, NULL, {0.0, 0.0, 0.0}, 0.0}
3731
3734
3758 occtl_node_id_t vertex,
3759 occtl_vertex_view_t* view);
3760
3761#define OCCTL_WIRE_VIEW_VERSION_1 1u
3762
3775
3776#define OCCTL_WIRE_VIEW_INIT {OCCTL_WIRE_VIEW_VERSION_1, NULL, 0, 0, 0}
3777
3780
3804 occtl_node_id_t wire,
3805 occtl_wire_view_t* view);
3806
3807#define OCCTL_SHELL_VIEW_VERSION_1 1u
3808
3812typedef struct occtl_shell_view
3813{
3815 const void* p_next;
3817 int32_t is_closed;
3818 size_t face_count;
3820
3821#define OCCTL_SHELL_VIEW_INIT {OCCTL_SHELL_VIEW_VERSION_1, NULL, 0, 0}
3822
3825
3849 occtl_node_id_t shell,
3850 occtl_shell_view_t* view);
3851
3852#define OCCTL_SOLID_VIEW_VERSION_1 1u
3853
3864
3865#define OCCTL_SOLID_VIEW_INIT {OCCTL_SOLID_VIEW_VERSION_1, NULL, 0}
3866
3869
3893 occtl_node_id_t solid,
3894 occtl_solid_view_t* view);
3895
3896#define OCCTL_COMPOUND_VIEW_VERSION_1 1u
3897
3908
3909#define OCCTL_COMPOUND_VIEW_INIT {OCCTL_COMPOUND_VIEW_VERSION_1, NULL, 0}
3910
3913
3937 occtl_node_id_t compound,
3938 occtl_compound_view_t* view);
3939
3940#ifdef __cplusplus
3941} /* extern "C" */
3942
3943inline size_t occtl_graph_count_value(occtl_status_t(OCCTL_CALL* count_fn)(const occtl_graph_t*,
3944 size_t*),
3945 const occtl_graph_t* graph) noexcept
3946{
3947 size_t aCount = 0;
3948 return count_fn(graph, &aCount) == OCCTL_OK ? aCount : 0;
3949}
3950#endif
3951
3952#endif /* OCCTL_TOPO_H */
OCCT-Light: core public API.
#define OCCTL_API
Definition occtl_core.h:111
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
enum occtl_node_kind occtl_node_kind_t
OCCT-Light: 2D curve (pcurve) API on BRepGraph.
OCCT-Light: 3D curve representation in the topology graph.
enum occtl_curve_kind occtl_curve_kind_t
OCCT-Light: geometry primitive types and math utilities.
OCCT-Light: surface geometry via graph + rep_id.
enum occtl_surface_kind occtl_surface_kind_t
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_rep_uid_to_bytes(occtl_rep_uid_t rep_uid, uint8_t *out_bytes)
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
void occtl_edge_view_init(occtl_edge_view_t *view)
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_rep_visitor_t)(occtl_rep_id_t rep, void *user_data)
Callback for occtl_graph_for_each_rep.
Definition occtl_topo.h:2268
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)
struct occtl_coedge_view occtl_coedge_view_t
occtl_status_t(* occtl_ref_visitor_t)(occtl_ref_id_t ref, void *user_data)
Callback for occtl_graph_for_each_ref.
Definition occtl_topo.h:2265
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_face_view(const occtl_graph_t *graph, occtl_node_id_t face, occtl_face_view_t *view)
occtl_status_t occtl_topo_coedge_is_reversed(const occtl_graph_t *graph, occtl_node_id_t coedge, int32_t *out_is_reversed)
struct occtl_compound_view occtl_compound_view_t
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_node_visitor_t)(occtl_node_id_t node, void *user_data)
Callback for occtl_graph_for_each.
Definition occtl_topo.h:2244
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)
struct occtl_solid_view occtl_solid_view_t
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)
occtl_status_t occtl_ref_uid_from_bytes(const uint8_t *in_bytes, occtl_ref_uid_t *out_ref_uid)
occtl_status_t occtl_rep_uid_from_bytes(const uint8_t *in_bytes, occtl_rep_uid_t *out_rep_uid)
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)
struct occtl_topo_make_product_info occtl_topo_make_product_info_t
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)
struct occtl_shell_view occtl_shell_view_t
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)
struct occtl_edge_view occtl_edge_view_t
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)
void occtl_coedge_view_init(occtl_coedge_view_t *view)
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_coedge_view(const occtl_graph_t *graph, occtl_node_id_t coedge, occtl_coedge_view_t *view)
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_ref_uid_to_bytes(occtl_ref_uid_t ref_uid, uint8_t *out_bytes)
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_graph_uid_table(const occtl_graph_t *graph, occtl_uid_t *out_uids, occtl_node_id_t *out_nodes, size_t cap, size_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)
struct occtl_face_view occtl_face_view_t
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_topo_make_product_info_init(occtl_topo_make_product_info_t *info)
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)
struct occtl_vertex_view occtl_vertex_view_t
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)
void occtl_joint_info_init(occtl_joint_info_t *info)
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)
void occtl_face_view_init(occtl_face_view_t *view)
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)
struct occtl_wire_view occtl_wire_view_t
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_edge_view(const occtl_graph_t *graph, occtl_node_id_t edge, occtl_edge_view_t *view)
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: Topology builders, mutations, and property setters.
OCCT-Light: Topology relation queries, hit tests, and contact analysis.
enum occtl_orientation occtl_orientation_t
OCCT-Light: Core topology identity types.
struct occtl_graph occtl_graph_t
Definition occtl_topo_types.h:152
Definition occtl_topo.h:3603
int32_t is_seam
Definition occtl_topo.h:3614
int32_t has_pcurve
Definition occtl_topo.h:3616
double t_max
Definition occtl_topo.h:3611
occtl_point2_t uv_start
Definition occtl_topo.h:3612
double t_min
Definition occtl_topo.h:3610
const void * p_next
Definition occtl_topo.h:3605
occtl_orientation_t orientation
Definition occtl_topo.h:3609
uint32_t struct_version
Definition occtl_topo.h:3604
occtl_node_id_t edge_of
Definition occtl_topo.h:3607
occtl_node_id_t face_of
Definition occtl_topo.h:3608
int32_t is_reversed
Definition occtl_topo.h:3615
occtl_point2_t uv_end
Definition occtl_topo.h:3613
Definition occtl_topo_build.h:2096
Definition occtl_topo.h:3902
const void * p_next
Definition occtl_topo.h:3904
size_t child_count
Definition occtl_topo.h:3906
uint32_t struct_version
Definition occtl_topo.h:3903
Definition occtl_topo.h:3513
uint32_t struct_version
Definition occtl_topo.h:3514
uint32_t internal_vertex_count
Definition occtl_topo.h:3522
const void * p_next
Definition occtl_topo.h:3515
int32_t is_closed
Definition occtl_topo.h:3526
uint32_t face_count
Definition occtl_topo.h:3523
double t_min
Definition occtl_topo.h:3517
occtl_node_id_t end_vertex
Definition occtl_topo.h:3521
int32_t same_range
Definition occtl_topo.h:3528
int32_t same_parameter
Definition occtl_topo.h:3527
int32_t is_boundary
Definition occtl_topo.h:3530
int32_t is_manifold
Definition occtl_topo.h:3529
int32_t has_curve
Definition occtl_topo.h:3524
int32_t is_degenerated
Definition occtl_topo.h:3525
double tolerance
Definition occtl_topo.h:3519
double t_max
Definition occtl_topo.h:3518
occtl_node_id_t start_vertex
Definition occtl_topo.h:3520
Definition occtl_topo.h:3668
int32_t natural_restriction
Definition occtl_topo.h:3681
uint32_t struct_version
Definition occtl_topo.h:3669
const void * p_next
Definition occtl_topo.h:3670
uint32_t wire_count
Definition occtl_topo.h:3678
occtl_node_id_t outer_wire
Definition occtl_topo.h:3677
int32_t has_surface
Definition occtl_topo.h:3679
double tolerance
Definition occtl_topo.h:3676
double v_max
Definition occtl_topo.h:3675
double u_max
Definition occtl_topo.h:3673
double v_min
Definition occtl_topo.h:3674
int32_t has_triangulation
Definition occtl_topo.h:3680
double u_min
Definition occtl_topo.h:3672
Definition occtl_topo_types.h:120
Definition occtl_topo_build.h:2165
Definition occtl_topo_build.h:2114
Definition occtl_topo_build.h:2204
Definition occtl_topo_types.h:50
Definition occtl_geom.h:49
Definition occtl_geom.h:76
Definition occtl_topo_types.h:61
Definition occtl_topo_types.h:76
Definition occtl_core.h:251
Definition occtl_topo_types.h:91
Definition occtl_topo.h:3813
uint32_t struct_version
Definition occtl_topo.h:3814
const void * p_next
Definition occtl_topo.h:3815
size_t face_count
Definition occtl_topo.h:3818
int32_t is_closed
Definition occtl_topo.h:3817
Definition occtl_topo.h:3858
size_t shell_count
Definition occtl_topo.h:3862
uint32_t struct_version
Definition occtl_topo.h:3859
const void * p_next
Definition occtl_topo.h:3860
Definition occtl_topo_build.h:2217
Definition occtl_topo.h:3214
occtl_node_id_t root
Definition occtl_topo.h:3217
uint32_t struct_version
Definition occtl_topo.h:3215
occtl_transform_t placement
Definition occtl_topo.h:3218
const void * p_next
Definition occtl_topo.h:3216
Definition occtl_geom.h:171
Definition occtl_core.h:272
Definition occtl_geom.h:56
Definition occtl_geom.h:84
Definition occtl_topo.h:3722
uint32_t struct_version
Definition occtl_topo.h:3723
double tolerance
Definition occtl_topo.h:3727
occtl_point3_t point
Definition occtl_topo.h:3726
const void * p_next
Definition occtl_topo.h:3724
Definition occtl_topo.h:3767
size_t coedge_count
Definition occtl_topo.h:3772
uint32_t struct_version
Definition occtl_topo.h:3768
int32_t is_closed
Definition occtl_topo.h:3771
size_t distinct_edge_count
Definition occtl_topo.h:3773
const void * p_next
Definition occtl_topo.h:3769