OCCT-Light 0.1
C ABI and C++ veneer for multi-language CAD workflows
Loading...
Searching...
No Matches
occtl_topo_algo.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
26#ifndef OCCTL_TOPO_ALGO_H
27#define OCCTL_TOPO_ALGO_H
28
29#include <stddef.h>
30#include <stdint.h>
31
32#include "occtl_core.h"
33#include "occtl_geom.h"
34#include "occtl_surfaces.h"
35#include "occtl_topo.h"
36
37#ifdef __cplusplus
38extern "C"
39{
40#endif
41
42#define OCCTL_TOPO_SEW_OPTIONS_VERSION_1 1u
43
67
69#define OCCTL_TOPO_SEW_OPTIONS_INIT \
70 {OCCTL_TOPO_SEW_OPTIONS_VERSION_1, NULL, 1.0e-6, 0.0, 0.0, 1, 1, 0, 0, 1, 1, 0, 0}
71
84
85#define OCCTL_TOPO_SEW_RESULT_VERSION_1 1u
86
101
103#define OCCTL_TOPO_SEW_RESULT_INIT \
104 {OCCTL_TOPO_SEW_RESULT_VERSION_1, NULL, 0, 0u, 0u, 0u, 0u, 0u, 0u, 0u}
105
119
143 const occtl_topo_sew_options_t* options,
144 occtl_topo_sew_result_t* out_result);
145
146#define OCCTL_TOPO_SAME_PARAMETER_OPTIONS_VERSION_1 1u
147
156
157#define OCCTL_TOPO_SAME_PARAMETER_OPTIONS_INIT \
158 {OCCTL_TOPO_SAME_PARAMETER_OPTIONS_VERSION_1, NULL, 0.0, 0}
159
161OCCTL_API void OCCTL_CALL
163
187OCCTL_API occtl_status_t OCCTL_CALL
190 uint32_t* out_c0_fallback_count,
191 uint32_t* out_approx_fallback_count);
192
195{
199 OCCTL_TOPO_CHECK_SEVERITY_RESERVED_FUTURE = 0x7fffffff
201
217
242 occtl_topo_check_issue_t* out_issues,
243 size_t cap,
244 size_t* out_count);
245
246#define OCCTL_TOPO_FILLET_OPTIONS_VERSION_1 1u
247
264
266#define OCCTL_TOPO_FILLET_OPTIONS_INIT {OCCTL_TOPO_FILLET_OPTIONS_VERSION_1, NULL, 1.0, 0, 0.0, 0.0}
267
280
310 const occtl_topo_fillet_options_t* opts,
311 occtl_graph_t** out_graph,
312 occtl_node_id_t* out_root);
313
314#define OCCTL_TOPO_EDGE_BLEND_OPTIONS_VERSION_1 1u
315
335
336#define OCCTL_TOPO_EDGE_BLEND_OPTIONS_INIT \
337 {OCCTL_TOPO_EDGE_BLEND_OPTIONS_VERSION_1, NULL, OCCTL_NODE_ID_INVALID, NULL, 0, 1.0, 0, 0.0, 0.0}
338
352
380OCCTL_API occtl_status_t OCCTL_CALL
382 const occtl_topo_edge_blend_options_t* options,
383 occtl_graph_t** out_graph,
384 occtl_node_id_t* out_root);
385
386#define OCCTL_TOPO_MAX_FILLET_RADIUS_OPTIONS_VERSION_1 1u
387
406
407#define OCCTL_TOPO_MAX_FILLET_RADIUS_OPTIONS_INIT \
408 {OCCTL_TOPO_MAX_FILLET_RADIUS_OPTIONS_VERSION_1, \
409 NULL, \
410 OCCTL_NODE_ID_INVALID, \
411 NULL, \
412 0, \
413 1.0e-6, \
414 0.0, \
415 1.0e-4, \
416 24}
417
430OCCTL_API void OCCTL_CALL
432
459OCCTL_API occtl_status_t OCCTL_CALL
462 double* out_radius);
463
486 occtl_node_id_t root,
487 occtl_transform_t transform,
488 occtl_graph_t** out_graph,
489 occtl_node_id_t* out_root);
490
491#define OCCTL_TOPO_PROJECT_ON_FACE_OPTIONS_VERSION_1 1u
492
508
509#define OCCTL_TOPO_PROJECT_ON_FACE_OPTIONS_INIT \
510 {OCCTL_TOPO_PROJECT_ON_FACE_OPTIONS_VERSION_1, \
511 NULL, \
512 OCCTL_NODE_ID_INVALID, \
513 OCCTL_NODE_ID_INVALID, \
514 1.0e-4, \
515 1.0e-8, \
516 14, \
517 16, \
518 -1.0, \
519 1, \
520 1}
521
534OCCTL_API void OCCTL_CALL
536
563OCCTL_API occtl_status_t OCCTL_CALL
566 occtl_graph_t** out_graph,
567 occtl_node_id_t* out_root);
568
569#define OCCTL_TOPO_WRAP_ON_FACE_OPTIONS_VERSION_1 1u
570
595
596#define OCCTL_TOPO_WRAP_ON_FACE_OPTIONS_INIT \
597 {OCCTL_TOPO_WRAP_ON_FACE_OPTIONS_VERSION_1, \
598 NULL, \
599 OCCTL_NODE_ID_INVALID, \
600 OCCTL_NODE_ID_INVALID, \
601 {{0.0, 0.0, 0.0}, {1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}, \
602 1.0e-3, \
603 4, \
604 8, \
605 0.0, \
606 0.0}
607
620OCCTL_API void OCCTL_CALL
622
648OCCTL_API occtl_status_t OCCTL_CALL
651 occtl_graph_t** out_graph,
652 occtl_node_id_t* out_root);
653
654#define OCCTL_TOPO_PROJECT_FACE_DIRECTION_OPTIONS_VERSION_1 1u
655
667
668#define OCCTL_TOPO_PROJECT_FACE_DIRECTION_OPTIONS_INIT \
669 {OCCTL_TOPO_PROJECT_FACE_DIRECTION_OPTIONS_VERSION_1, \
670 NULL, \
671 OCCTL_NODE_ID_INVALID, \
672 OCCTL_NODE_ID_INVALID, \
673 {0.0, 0.0, -1.0}, \
674 -1.0, \
675 1}
676
689OCCTL_API void OCCTL_CALL
691
725 const occtl_graph_t* graph,
727 occtl_graph_t** out_graph,
728 occtl_node_id_t* out_root);
729
730#define OCCTL_TOPO_FACE_TO_ARCS_OPTIONS_VERSION_1 1u
731
740
741#define OCCTL_TOPO_FACE_TO_ARCS_OPTIONS_INIT \
742 {OCCTL_TOPO_FACE_TO_ARCS_OPTIONS_VERSION_1, NULL, OCCTL_NODE_ID_INVALID, 1.0e-3}
743
756OCCTL_API void OCCTL_CALL
758
787OCCTL_API occtl_status_t OCCTL_CALL
790 occtl_graph_t** out_graph,
791 occtl_node_id_t* out_root);
792
793#define OCCTL_TOPO_HLR_OPTIONS_VERSION_1 1u
794
797{
800 OCCTL_TOPO_HLR_MODE_RESERVED_FUTURE = 0x7fffffff
802
825
826#define OCCTL_TOPO_HLR_OPTIONS_INIT \
827 {OCCTL_TOPO_HLR_OPTIONS_VERSION_1, \
828 NULL, \
829 OCCTL_NODE_ID_INVALID, \
830 {{0.0, 0.0, 0.0}, {1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}, \
831 0.0, \
832 1, \
833 1, \
834 1, \
835 OCCTL_TOPO_HLR_BREP}
836
837#define OCCTL_TOPO_HLR_RESULT_VERSION_1 1u
838
862
864#define OCCTL_TOPO_HLR_RESULT_INIT \
865 {OCCTL_TOPO_HLR_RESULT_VERSION_1, \
866 NULL, \
867 NULL, \
868 OCCTL_NODE_ID_INVALID, \
869 OCCTL_NODE_ID_INVALID, \
870 OCCTL_NODE_ID_INVALID, \
871 OCCTL_NODE_ID_INVALID, \
872 OCCTL_NODE_ID_INVALID, \
873 OCCTL_NODE_ID_INVALID, \
874 OCCTL_NODE_ID_INVALID, \
875 OCCTL_NODE_ID_INVALID}
876
889
903
932OCCTL_API occtl_status_t OCCTL_CALL
934 const occtl_topo_hlr_options_t* options,
935 occtl_topo_hlr_result_t* out_result);
936
937#define OCCTL_TOPO_DRAFT_FACES_OPTIONS_VERSION_1 1u
938
953
954#define OCCTL_TOPO_DRAFT_FACES_OPTIONS_INIT \
955 {OCCTL_TOPO_DRAFT_FACES_OPTIONS_VERSION_1, \
956 NULL, \
957 OCCTL_NODE_ID_INVALID, \
958 NULL, \
959 0, \
960 {0.0, 0.0, 1.0}, \
961 {0.0, 0.0, 0.0}, \
962 {0.0, 0.0, 1.0}, \
963 OCCTL_ANGLE_5_DEG_RAD, \
964 1}
965
978OCCTL_API void OCCTL_CALL
980
1006OCCTL_API occtl_status_t OCCTL_CALL
1008 const occtl_topo_draft_faces_options_t* options,
1009 occtl_graph_t** out_graph,
1010 occtl_node_id_t* out_root);
1011
1012#define OCCTL_TOPO_DEFEATURE_OPTIONS_VERSION_1 1u
1013
1026
1027#define OCCTL_TOPO_DEFEATURE_OPTIONS_INIT \
1028 {OCCTL_TOPO_DEFEATURE_OPTIONS_VERSION_1, NULL, OCCTL_NODE_ID_INVALID, NULL, 0, 0}
1029
1043
1073OCCTL_API occtl_status_t OCCTL_CALL
1075 const occtl_topo_defeature_options_t* options,
1076 occtl_graph_t** out_graph,
1077 occtl_node_id_t* out_root);
1078
1079#define OCCTL_TOPO_OFFSET_FEATURES_OPTIONS_VERSION_1 1u
1080
1099
1100#define OCCTL_TOPO_OFFSET_FEATURES_OPTIONS_INIT \
1101 {OCCTL_TOPO_OFFSET_FEATURES_OPTIONS_VERSION_1, \
1102 NULL, \
1103 OCCTL_NODE_ID_INVALID, \
1104 NULL, \
1105 0, \
1106 0.0, \
1107 1.0, \
1108 1.0e-3, \
1109 OCCTL_OFFSET_JOIN_ARC, \
1110 0, \
1111 0, \
1112 0}
1113
1126OCCTL_API void OCCTL_CALL
1128
1158OCCTL_API occtl_status_t OCCTL_CALL
1161 occtl_graph_t** out_graph,
1162 occtl_node_id_t* out_root);
1163
1165{
1169 OCCTL_TOPO_FILLING_CONTINUITY_RESERVED_FUTURE = 0x7fffffff
1170} occtl_topo_filling_continuity_t;
1171
1172#define OCCTL_TOPO_FILLING_OPTIONS_VERSION_1 1u
1173
1193
1194#define OCCTL_TOPO_FILLING_OPTIONS_INIT \
1195 {OCCTL_TOPO_FILLING_OPTIONS_VERSION_1, \
1196 NULL, \
1197 NULL, \
1198 0, \
1199 OCCTL_TOPO_FILLING_C0, \
1200 3, \
1201 15, \
1202 2, \
1203 0, \
1204 1.0e-5, \
1205 1.0e-4, \
1206 1.0e-2, \
1207 1.0e-1, \
1208 8, \
1209 9}
1210
1224
1250OCCTL_API occtl_status_t OCCTL_CALL
1252 const occtl_topo_filling_options_t* options,
1253 occtl_graph_t** out_graph,
1254 occtl_node_id_t* out_root);
1255
1256#define OCCTL_TOPO_FILLING_PATCH_OPTIONS_VERSION_1 1u
1257
1268
1291
1292#define OCCTL_TOPO_FILLING_PATCH_OPTIONS_INIT \
1293 {OCCTL_TOPO_FILLING_PATCH_OPTIONS_VERSION_1, \
1294 NULL, \
1295 NULL, \
1296 0, \
1297 NULL, \
1298 0, \
1299 3, \
1300 15, \
1301 2, \
1302 0, \
1303 1.0e-5, \
1304 1.0e-4, \
1305 1.0e-2, \
1306 1.0e-1, \
1307 8, \
1308 9}
1309
1322OCCTL_API void OCCTL_CALL
1324
1356OCCTL_API occtl_status_t OCCTL_CALL
1359 occtl_graph_t** out_graph,
1360 occtl_node_id_t* out_root);
1361
1363{
1367 OCCTL_TOPO_SPLIT_KEEP_RESERVED_FUTURE = 0x7fffffff
1368} occtl_topo_split_keep_t;
1369
1370#define OCCTL_TOPO_SPLIT_BY_PLANE_OPTIONS_VERSION_1 1u
1371
1384
1385#define OCCTL_TOPO_SPLIT_BY_PLANE_OPTIONS_INIT \
1386 {OCCTL_TOPO_SPLIT_BY_PLANE_OPTIONS_VERSION_1, \
1387 NULL, \
1388 OCCTL_NODE_ID_INVALID, \
1389 {0.0, 0.0, 0.0}, \
1390 {0.0, 0.0, 1.0}, \
1391 OCCTL_TOPO_SPLIT_KEEP_ALL}
1392
1405OCCTL_API void OCCTL_CALL
1407
1434OCCTL_API occtl_status_t OCCTL_CALL
1437 occtl_graph_t** out_graph,
1438 occtl_node_id_t* out_root);
1439
1448
1449#define OCCTL_TOPO_SECTION_BY_PLANES_OPTIONS_VERSION_1 1u
1450
1465
1466#define OCCTL_TOPO_SECTION_BY_PLANES_OPTIONS_INIT \
1467 {OCCTL_TOPO_SECTION_BY_PLANES_OPTIONS_VERSION_1, NULL, OCCTL_NODE_ID_INVALID, NULL, 0, 1, 0, 0}
1468
1481OCCTL_API void OCCTL_CALL
1483
1510OCCTL_API occtl_status_t OCCTL_CALL
1513 occtl_graph_t** out_graph,
1514 occtl_node_id_t* out_root);
1515
1516#define OCCTL_TOPO_EXTRUDE_FACES_OPTIONS_VERSION_1 1u
1517
1534
1535#define OCCTL_TOPO_EXTRUDE_FACES_OPTIONS_INIT \
1536 {OCCTL_TOPO_EXTRUDE_FACES_OPTIONS_VERSION_1, NULL, NULL, 0, 1.0, 0, 0, {0.0, 0.0, 1.0}, 1, 1}
1537
1550OCCTL_API void OCCTL_CALL
1552
1586OCCTL_API occtl_status_t OCCTL_CALL
1589 occtl_graph_t** out_graph,
1590 occtl_node_id_t* out_root);
1591
1620 occtl_node_id_t root,
1621 occtl_point3_t point,
1622 occtl_direction3_t normal,
1623 occtl_graph_t** out_graph,
1624 occtl_node_id_t* out_root);
1625
1626#define OCCTL_TOPO_LINEAR_PATTERN_OPTIONS_VERSION_1 1u
1627
1637
1639#define OCCTL_TOPO_LINEAR_PATTERN_OPTIONS_INIT \
1640 {OCCTL_TOPO_LINEAR_PATTERN_OPTIONS_VERSION_1, NULL, {0, 0, 1}, 2, 10.0}
1641
1654OCCTL_API void OCCTL_CALL
1656
1686OCCTL_API occtl_status_t OCCTL_CALL
1688 occtl_node_id_t root,
1690 occtl_graph_t** out_graph,
1691 occtl_node_id_t* out_root);
1692
1693#define OCCTL_TOPO_CIRCULAR_PATTERN_OPTIONS_VERSION_1 1u
1694
1704
1706#define OCCTL_TOPO_CIRCULAR_PATTERN_OPTIONS_INIT \
1707 {OCCTL_TOPO_CIRCULAR_PATTERN_OPTIONS_VERSION_1, \
1708 NULL, \
1709 {{0, 0, 0}, {0, 0, 1}}, \
1710 4, \
1711 OCCTL_ANGLE_90_DEG_RAD}
1712
1725OCCTL_API void OCCTL_CALL
1727
1757OCCTL_API occtl_status_t OCCTL_CALL
1759 occtl_node_id_t root,
1761 occtl_graph_t** out_graph,
1762 occtl_node_id_t* out_root);
1763
1764#ifdef __cplusplus
1765} /* extern "C" */
1766#endif
1767
1768#endif /* OCCTL_TOPO_ALGO_H */
OCCT-Light: core public API.
#define OCCTL_API
Definition occtl_core.h:111
enum occtl_status occtl_status_t
OCCT-Light: geometry primitive types and math utilities.
OCCT-Light: surface geometry via graph + rep_id.
OCCT-Light: topology module public API.
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_draft_faces_options occtl_topo_draft_faces_options_t
struct occtl_topo_filling_patch_options occtl_topo_filling_patch_options_t
struct occtl_topo_project_face_direction_options occtl_topo_project_face_direction_options_t
struct occtl_topo_extrude_faces_options occtl_topo_extrude_faces_options_t
occtl_status_t occtl_topo_recompute_same_parameter(occtl_graph_t *graph, const occtl_topo_same_parameter_options_t *options, uint32_t *out_c0_fallback_count, uint32_t *out_approx_fallback_count)
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)
void occtl_topo_wrap_on_face_options_init(occtl_topo_wrap_on_face_options_t *opts)
enum occtl_topo_check_severity occtl_topo_check_severity_t
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)
void occtl_topo_face_to_arcs_options_init(occtl_topo_face_to_arcs_options_t *opts)
struct occtl_topo_section_by_planes_options occtl_topo_section_by_planes_options_t
struct occtl_topo_hlr_result occtl_topo_hlr_result_t
struct occtl_topo_filling_patch_edge occtl_topo_filling_patch_edge_t
struct occtl_topo_section_plane occtl_topo_section_plane_t
void occtl_topo_section_by_planes_options_init(occtl_topo_section_by_planes_options_t *opts)
struct occtl_topo_max_fillet_radius_options occtl_topo_max_fillet_radius_options_t
occtl_topo_split_keep
Definition occtl_topo_algo.h:1363
@ OCCTL_TOPO_SPLIT_KEEP_NEGATIVE
Definition occtl_topo_algo.h:1366
@ OCCTL_TOPO_SPLIT_KEEP_POSITIVE
Definition occtl_topo_algo.h:1365
@ OCCTL_TOPO_SPLIT_KEEP_ALL
Definition occtl_topo_algo.h:1364
enum occtl_topo_hlr_mode occtl_topo_hlr_mode_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_project_on_face_options occtl_topo_project_on_face_options_t
struct occtl_topo_same_parameter_options occtl_topo_same_parameter_options_t
struct occtl_topo_linear_pattern_options occtl_topo_linear_pattern_options_t
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)
void occtl_topo_defeature_options_init(occtl_topo_defeature_options_t *opts)
void occtl_topo_same_parameter_options_init(occtl_topo_same_parameter_options_t *options)
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)
struct occtl_topo_fillet_options occtl_topo_fillet_options_t
struct occtl_topo_sew_result occtl_topo_sew_result_t
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_sew(occtl_graph_t *graph, const occtl_topo_sew_options_t *options, occtl_topo_sew_result_t *out_result)
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)
void occtl_topo_split_by_plane_options_init(occtl_topo_split_by_plane_options_t *opts)
void occtl_topo_sew_options_init(occtl_topo_sew_options_t *options)
void occtl_topo_filling_options_init(occtl_topo_filling_options_t *opts)
struct occtl_topo_edge_blend_options occtl_topo_edge_blend_options_t
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)
struct occtl_topo_sew_options occtl_topo_sew_options_t
struct occtl_topo_offset_features_options occtl_topo_offset_features_options_t
void occtl_topo_draft_faces_options_init(occtl_topo_draft_faces_options_t *opts)
void occtl_topo_filling_patch_options_init(occtl_topo_filling_patch_options_t *opts)
void occtl_topo_offset_features_options_init(occtl_topo_offset_features_options_t *opts)
void occtl_topo_project_face_direction_options_init(occtl_topo_project_face_direction_options_t *opts)
void occtl_topo_project_on_face_options_init(occtl_topo_project_on_face_options_t *opts)
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)
struct occtl_topo_hlr_options occtl_topo_hlr_options_t
struct occtl_topo_wrap_on_face_options occtl_topo_wrap_on_face_options_t
void occtl_topo_hlr_options_init(occtl_topo_hlr_options_t *options)
void occtl_topo_linear_pattern_options_init(occtl_topo_linear_pattern_options_t *opts)
struct occtl_topo_circular_pattern_options occtl_topo_circular_pattern_options_t
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)
struct occtl_topo_filling_options occtl_topo_filling_options_t
void occtl_topo_max_fillet_radius_options_init(occtl_topo_max_fillet_radius_options_t *opts)
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)
struct occtl_topo_check_issue occtl_topo_check_issue_t
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)
void occtl_topo_fillet_options_init(occtl_topo_fillet_options_t *opts)
void occtl_topo_hlr_result_init(occtl_topo_hlr_result_t *result)
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)
void occtl_topo_circular_pattern_options_init(occtl_topo_circular_pattern_options_t *opts)
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_topo_filling_continuity
Definition occtl_topo_algo.h:1165
@ OCCTL_TOPO_FILLING_G2
Definition occtl_topo_algo.h:1168
@ OCCTL_TOPO_FILLING_C0
Definition occtl_topo_algo.h:1166
@ OCCTL_TOPO_FILLING_G1
Definition occtl_topo_algo.h:1167
void occtl_topo_sew_result_init(occtl_topo_sew_result_t *result)
occtl_topo_hlr_mode
Definition occtl_topo_algo.h:797
@ OCCTL_TOPO_HLR_POLY
Definition occtl_topo_algo.h:799
@ OCCTL_TOPO_HLR_BREP
Definition occtl_topo_algo.h:798
struct occtl_topo_defeature_options occtl_topo_defeature_options_t
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)
void occtl_topo_edge_blend_options_init(occtl_topo_edge_blend_options_t *opts)
occtl_topo_check_severity
Definition occtl_topo_algo.h:195
@ OCCTL_TOPO_CHECK_WARNING
Definition occtl_topo_algo.h:196
@ OCCTL_TOPO_CHECK_FATAL
Definition occtl_topo_algo.h:198
@ OCCTL_TOPO_CHECK_ERROR
Definition occtl_topo_algo.h:197
struct occtl_topo_face_to_arcs_options occtl_topo_face_to_arcs_options_t
void occtl_topo_extrude_faces_options_init(occtl_topo_extrude_faces_options_t *opts)
enum occtl_offset_join_type occtl_offset_join_type_t
struct occtl_graph occtl_graph_t
Definition occtl_topo_types.h:152
Definition occtl_geom.h:111
Definition occtl_geom.h:146
Definition occtl_geom.h:98
Definition occtl_topo_types.h:50
Definition occtl_geom.h:76
Definition occtl_topo_algo.h:211
occtl_node_id_t node_id
Definition occtl_topo_algo.h:212
uint32_t status_bit
Definition occtl_topo_algo.h:214
occtl_topo_check_severity_t severity
Definition occtl_topo_algo.h:215
occtl_node_id_t context_node_id
Definition occtl_topo_algo.h:213
Definition occtl_topo_algo.h:1697
const void * p_next
Definition occtl_topo_algo.h:1699
int32_t count
Definition occtl_topo_algo.h:1701
double angle
Definition occtl_topo_algo.h:1702
uint32_t struct_version
Definition occtl_topo_algo.h:1698
occtl_axis1_placement_t axis
Definition occtl_topo_algo.h:1700
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
const void * p_next
Definition occtl_topo_algo.h:1020
uint32_t struct_version
Definition occtl_topo_algo.h:1019
int32_t parallel
Definition occtl_topo_algo.h:1024
const occtl_node_id_t * selections
Definition occtl_topo_algo.h:1022
Definition occtl_topo_algo.h:941
int32_t keep_inside
Definition occtl_topo_algo.h:951
const occtl_node_id_t * faces
Definition occtl_topo_algo.h:945
occtl_direction3_t pull_direction
Definition occtl_topo_algo.h:947
double angle
Definition occtl_topo_algo.h:950
occtl_direction3_t neutral_normal
Definition occtl_topo_algo.h:949
const void * p_next
Definition occtl_topo_algo.h:943
occtl_node_id_t root
Definition occtl_topo_algo.h:944
uint32_t struct_version
Definition occtl_topo_algo.h:942
size_t face_count
Definition occtl_topo_algo.h:946
occtl_point3_t neutral_point
Definition occtl_topo_algo.h:948
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
uint32_t struct_version
Definition occtl_topo_algo.h:325
size_t edge_count
Definition occtl_topo_algo.h:329
const void * p_next
Definition occtl_topo_algo.h:326
Definition occtl_topo_algo.h:1522
const occtl_node_id_t * faces
Definition occtl_topo_algo.h:1525
const void * p_next
Definition occtl_topo_algo.h:1524
int32_t use_normal
Definition occtl_topo_algo.h:1529
int32_t both_sides
Definition occtl_topo_algo.h:1528
int32_t canonize
Definition occtl_topo_algo.h:1532
size_t face_count
Definition occtl_topo_algo.h:1526
occtl_direction3_t normal
Definition occtl_topo_algo.h:1530
double thickness
Definition occtl_topo_algo.h:1527
uint32_t struct_version
Definition occtl_topo_algo.h:1523
int32_t copy
Definition occtl_topo_algo.h:1531
Definition occtl_topo_algo.h:734
occtl_node_id_t source
Definition occtl_topo_algo.h:737
const void * p_next
Definition occtl_topo_algo.h:736
uint32_t struct_version
Definition occtl_topo_algo.h:735
double angular_tolerance
Definition occtl_topo_algo.h:738
Definition occtl_topo_algo.h:256
double chamfer_dist1
Definition occtl_topo_algo.h:261
const void * p_next
Definition occtl_topo_algo.h:258
uint32_t struct_version
Definition occtl_topo_algo.h:257
int32_t chamfer_mode
Definition occtl_topo_algo.h:260
double chamfer_dist2
Definition occtl_topo_algo.h:262
double radius
Definition occtl_topo_algo.h:259
Definition occtl_topo_algo.h:1176
double tolerance_3d
Definition occtl_topo_algo.h:1187
uint32_t struct_version
Definition occtl_topo_algo.h:1177
int32_t degree
Definition occtl_topo_algo.h:1182
int32_t max_degree
Definition occtl_topo_algo.h:1190
double angular_tolerance
Definition occtl_topo_algo.h:1188
double curvature_tolerance
Definition occtl_topo_algo.h:1189
size_t edge_count
Definition occtl_topo_algo.h:1180
occtl_topo_filling_continuity_t continuity
Definition occtl_topo_algo.h:1181
const occtl_node_id_t * edges
Definition occtl_topo_algo.h:1179
int32_t max_segments
Definition occtl_topo_algo.h:1191
const void * p_next
Definition occtl_topo_algo.h:1178
int32_t point_count_on_curve
Definition occtl_topo_algo.h:1183
double tolerance_2d
Definition occtl_topo_algo.h:1186
int32_t anisotropic
Definition occtl_topo_algo.h:1185
int32_t iteration_count
Definition occtl_topo_algo.h:1184
Definition occtl_topo_algo.h:1262
occtl_node_id_t edge
Definition occtl_topo_algo.h:1263
int32_t is_boundary
Definition occtl_topo_algo.h:1266
occtl_topo_filling_continuity_t continuity
Definition occtl_topo_algo.h:1265
occtl_node_id_t support_face
Definition occtl_topo_algo.h:1264
Definition occtl_topo_algo.h:1273
int32_t anisotropic
Definition occtl_topo_algo.h:1283
double curvature_tolerance
Definition occtl_topo_algo.h:1287
const void * p_next
Definition occtl_topo_algo.h:1275
const occtl_topo_filling_patch_edge_t * edges
Definition occtl_topo_algo.h:1276
int32_t point_count_on_curve
Definition occtl_topo_algo.h:1281
double angular_tolerance
Definition occtl_topo_algo.h:1286
int32_t max_degree
Definition occtl_topo_algo.h:1288
uint32_t struct_version
Definition occtl_topo_algo.h:1274
double tolerance_3d
Definition occtl_topo_algo.h:1285
int32_t degree
Definition occtl_topo_algo.h:1280
const occtl_point3_t * points
Definition occtl_topo_algo.h:1278
size_t point_count
Definition occtl_topo_algo.h:1279
double tolerance_2d
Definition occtl_topo_algo.h:1284
size_t edge_count
Definition occtl_topo_algo.h:1277
int32_t max_segments
Definition occtl_topo_algo.h:1289
int32_t iteration_count
Definition occtl_topo_algo.h:1282
Definition occtl_topo_algo.h:814
int32_t include_outline
Definition occtl_topo_algo.h:822
uint32_t struct_version
Definition occtl_topo_algo.h:815
occtl_node_id_t root
Definition occtl_topo_algo.h:817
occtl_axis3_placement_t projection_frame
Definition occtl_topo_algo.h:818
int32_t include_hidden
Definition occtl_topo_algo.h:820
double focus
Definition occtl_topo_algo.h:819
occtl_topo_hlr_mode_t mode
Definition occtl_topo_algo.h:823
const void * p_next
Definition occtl_topo_algo.h:816
int32_t include_smooth
Definition occtl_topo_algo.h:821
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
uint32_t struct_version
Definition occtl_topo_algo.h:850
occtl_graph_t * graph
Definition occtl_topo_algo.h:852
occtl_node_id_t hidden_seam
Definition occtl_topo_algo.h:859
const void * p_next
Definition occtl_topo_algo.h:851
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_algo.h:1630
const void * p_next
Definition occtl_topo_algo.h:1632
double step
Definition occtl_topo_algo.h:1635
occtl_vector3_t direction
Definition occtl_topo_algo.h:1633
int32_t count
Definition occtl_topo_algo.h:1634
uint32_t struct_version
Definition occtl_topo_algo.h:1631
Definition occtl_topo_algo.h:395
double max_radius
Definition occtl_topo_algo.h:402
double min_radius
Definition occtl_topo_algo.h:401
int32_t max_iterations
Definition occtl_topo_algo.h:404
size_t edge_count
Definition occtl_topo_algo.h:400
uint32_t struct_version
Definition occtl_topo_algo.h:396
occtl_node_id_t root
Definition occtl_topo_algo.h:398
const occtl_node_id_t * edges
Definition occtl_topo_algo.h:399
const void * p_next
Definition occtl_topo_algo.h:397
double tolerance
Definition occtl_topo_algo.h:403
Definition occtl_topo_algo.h:1085
size_t selection_count
Definition occtl_topo_algo.h:1090
int32_t self_intersection
Definition occtl_topo_algo.h:1096
occtl_offset_join_type_t join
Definition occtl_topo_algo.h:1094
double base_offset
Definition occtl_topo_algo.h:1091
double tolerance
Definition occtl_topo_algo.h:1093
double selection_offset
Definition occtl_topo_algo.h:1092
const void * p_next
Definition occtl_topo_algo.h:1087
int32_t remove_internal_edges
Definition occtl_topo_algo.h:1097
occtl_node_id_t root
Definition occtl_topo_algo.h:1088
int32_t intersection
Definition occtl_topo_algo.h:1095
uint32_t struct_version
Definition occtl_topo_algo.h:1086
const occtl_node_id_t * selections
Definition occtl_topo_algo.h:1089
Definition occtl_topo_algo.h:658
uint32_t struct_version
Definition occtl_topo_algo.h:659
occtl_node_id_t source_face
Definition occtl_topo_algo.h:661
double max_distance
Definition occtl_topo_algo.h:664
occtl_direction3_t direction
Definition occtl_topo_algo.h:663
occtl_node_id_t target
Definition occtl_topo_algo.h:662
const void * p_next
Definition occtl_topo_algo.h:660
int32_t copy_source
Definition occtl_topo_algo.h:665
Definition occtl_topo_algo.h:495
const void * p_next
Definition occtl_topo_algo.h:497
double max_distance
Definition occtl_topo_algo.h:504
double tolerance_3d
Definition occtl_topo_algo.h:500
int32_t max_degree
Definition occtl_topo_algo.h:502
double tolerance_2d
Definition occtl_topo_algo.h:501
uint32_t struct_version
Definition occtl_topo_algo.h:496
int32_t compute_3d
Definition occtl_topo_algo.h:506
occtl_node_id_t face
Definition occtl_topo_algo.h:499
occtl_node_id_t source
Definition occtl_topo_algo.h:498
int32_t max_segments
Definition occtl_topo_algo.h:503
int32_t limit_to_face
Definition occtl_topo_algo.h:505
Definition occtl_topo_algo.h:150
double tolerance
Definition occtl_topo_algo.h:153
const void * p_next
Definition occtl_topo_algo.h:152
int32_t history_mode
Definition occtl_topo_algo.h:154
uint32_t struct_version
Definition occtl_topo_algo.h:151
Definition occtl_topo_algo.h:1455
int32_t approximate
Definition occtl_topo_algo.h:1461
int32_t compute_pcurves_on_root
Definition occtl_topo_algo.h:1462
const void * p_next
Definition occtl_topo_algo.h:1457
int32_t compute_pcurves_on_plane
Definition occtl_topo_algo.h:1463
const occtl_topo_section_plane_t * planes
Definition occtl_topo_algo.h:1459
uint32_t struct_version
Definition occtl_topo_algo.h:1456
occtl_node_id_t root
Definition occtl_topo_algo.h:1458
size_t plane_count
Definition occtl_topo_algo.h:1460
Definition occtl_topo_algo.h:1444
occtl_direction3_t normal
Definition occtl_topo_algo.h:1446
occtl_point3_t point
Definition occtl_topo_algo.h:1445
Definition occtl_topo_algo.h:52
const void * p_next
Definition occtl_topo_algo.h:54
uint32_t struct_version
Definition occtl_topo_algo.h:53
int32_t non_manifold_mode
Definition occtl_topo_algo.h:60
int32_t cutting
Definition occtl_topo_algo.h:58
int32_t local_tolerances_mode
Definition occtl_topo_algo.h:65
double min_tolerance
Definition occtl_topo_algo.h:56
double tolerance
Definition occtl_topo_algo.h:55
double max_tolerance
Definition occtl_topo_algo.h:57
int32_t same_parameter_mode
Definition occtl_topo_algo.h:59
int32_t face_analysis
Definition occtl_topo_algo.h:63
int32_t parallel
Definition occtl_topo_algo.h:61
int32_t floating_edges_mode
Definition occtl_topo_algo.h:64
int32_t history_mode
Definition occtl_topo_algo.h:62
Definition occtl_topo_algo.h:89
uint32_t deleted_face_count
Definition occtl_topo_algo.h:98
uint32_t rejected_by_tolerance_count
Definition occtl_topo_algo.h:99
const void * p_next
Definition occtl_topo_algo.h:91
uint32_t free_edge_count_after
Definition occtl_topo_algo.h:94
uint32_t degenerated_edge_count
Definition occtl_topo_algo.h:97
uint32_t multiple_edge_count
Definition occtl_topo_algo.h:96
uint32_t struct_version
Definition occtl_topo_algo.h:90
uint32_t sewn_edge_count
Definition occtl_topo_algo.h:95
int32_t is_done
Definition occtl_topo_algo.h:92
uint32_t free_edge_count_before
Definition occtl_topo_algo.h:93
Definition occtl_topo_algo.h:1376
occtl_point3_t point
Definition occtl_topo_algo.h:1380
occtl_direction3_t normal
Definition occtl_topo_algo.h:1381
occtl_topo_split_keep_t keep
Definition occtl_topo_algo.h:1382
uint32_t struct_version
Definition occtl_topo_algo.h:1377
occtl_node_id_t root
Definition occtl_topo_algo.h:1379
const void * p_next
Definition occtl_topo_algo.h:1378
Definition occtl_topo_algo.h:583
int32_t max_refinements
Definition occtl_topo_algo.h:591
occtl_node_id_t target_face
Definition occtl_topo_algo.h:587
double wire_fix_tolerance
Definition occtl_topo_algo.h:593
double intersection_extent
Definition occtl_topo_algo.h:592
const void * p_next
Definition occtl_topo_algo.h:585
int32_t initial_subdivisions
Definition occtl_topo_algo.h:590
occtl_node_id_t source
Definition occtl_topo_algo.h:586
occtl_axis3_placement_t surface_location
Definition occtl_topo_algo.h:588
uint32_t struct_version
Definition occtl_topo_algo.h:584
double tolerance
Definition occtl_topo_algo.h:589
Definition occtl_geom.h:171
Definition occtl_geom.h:84