OCCT-Light 0.1
C ABI and C++ veneer for multi-language CAD workflows
Loading...
Searching...
No Matches
occtl_surfaces.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
29#ifndef OCCTL_SURFACES_H
30#define OCCTL_SURFACES_H
31
32#include <stddef.h>
33#include <stdint.h>
34
35#include "occtl_core.h"
36#include "occtl_geom.h"
37
38#ifdef __cplusplus
39extern "C"
40{
41#endif
42
44typedef struct occtl_graph occtl_graph_t;
45
68
83 occtl_rep_id_t* out_id,
84 occtl_geom_plane_t plane);
85
100OCCTL_API occtl_status_t OCCTL_CALL
102 occtl_rep_id_t* out_id,
104
120 occtl_rep_id_t* out_id,
122
137OCCTL_API occtl_status_t OCCTL_CALL
139 occtl_rep_id_t* out_id,
141
157 occtl_rep_id_t* out_id,
159
173
174#define OCCTL_SURFACE_REVOLUTION_CREATE_INFO_VERSION_1 1u
175
176#define OCCTL_SURFACE_REVOLUTION_CREATE_INFO_INIT \
177 { \
178 OCCTL_SURFACE_REVOLUTION_CREATE_INFO_VERSION_1, NULL, OCCTL_REP_ID_INVALID, \
179 { \
180 {0, 0, 0}, {0, 0, 1} \
181 } \
182 }
183
191OCCTL_API void OCCTL_CALL
193
211OCCTL_API occtl_status_t OCCTL_CALL
213 occtl_rep_id_t* out_id,
215
228
229#define OCCTL_SURFACE_EXTRUSION_CREATE_INFO_VERSION_1 1u
230
231#define OCCTL_SURFACE_EXTRUSION_CREATE_INFO_INIT \
232 {OCCTL_SURFACE_EXTRUSION_CREATE_INFO_VERSION_1, NULL, OCCTL_REP_ID_INVALID, {0.0, 0.0, 1.0}}
233
241OCCTL_API void OCCTL_CALL
243
261OCCTL_API occtl_status_t OCCTL_CALL
263 occtl_rep_id_t* out_id,
265
274{
275 uint32_t struct_version;
276 const void* p_next;
278 double u_first;
279 double u_last;
280 double v_first;
281 double v_last;
282 int32_t u_sense;
283 int32_t v_sense;
285
286#define OCCTL_SURFACE_RECTANGULAR_TRIMMED_CREATE_INFO_VERSION_1 1u
287
288#define OCCTL_SURFACE_RECTANGULAR_TRIMMED_CREATE_INFO_INIT \
289 {OCCTL_SURFACE_RECTANGULAR_TRIMMED_CREATE_INFO_VERSION_1, \
290 NULL, \
291 OCCTL_REP_ID_INVALID, \
292 0.0, \
293 1.0, \
294 0.0, \
295 1.0, \
296 1, \
297 1}
298
310
328 occtl_graph_t* graph,
329 occtl_rep_id_t* out_id,
331
342
343#define OCCTL_SURFACE_OFFSET_CREATE_INFO_VERSION_1 1u
344
345#define OCCTL_SURFACE_OFFSET_CREATE_INFO_INIT \
346 {OCCTL_SURFACE_OFFSET_CREATE_INFO_VERSION_1, NULL, OCCTL_REP_ID_INVALID, 0.0}
347
359OCCTL_API void OCCTL_CALL
361
378OCCTL_API occtl_status_t OCCTL_CALL
380 occtl_rep_id_t* out_id,
382
390{
391 uint32_t struct_version;
392 const void* p_next;
396 const double* weights;
397 const double* u_knots;
398 const int32_t* u_multiplicities;
399 size_t u_knot_count;
400 const double* v_knots;
401 const int32_t* v_multiplicities;
402 size_t v_knot_count;
403 int32_t u_degree;
404 int32_t v_degree;
408
409#define OCCTL_SURFACE_BSPLINE_CREATE_INFO_VERSION_1 1u
410
411#define OCCTL_SURFACE_BSPLINE_CREATE_INFO_INIT \
412 {OCCTL_SURFACE_BSPLINE_CREATE_INFO_VERSION_1, \
413 NULL, \
414 NULL, \
415 0, \
416 0, \
417 NULL, \
418 NULL, \
419 NULL, \
420 0, \
421 NULL, \
422 NULL, \
423 0, \
424 0, \
425 0, \
426 0, \
427 0}
428
438OCCTL_API void OCCTL_CALL
440
458OCCTL_API occtl_status_t OCCTL_CALL
460 occtl_rep_id_t* out_id,
462
477
478#define OCCTL_SURFACE_BEZIER_CREATE_INFO_VERSION_1 1u
479
480#define OCCTL_SURFACE_BEZIER_CREATE_INFO_INIT \
481 {OCCTL_SURFACE_BEZIER_CREATE_INFO_VERSION_1, NULL, NULL, 0, 0, NULL}
482
492OCCTL_API void OCCTL_CALL
494
510OCCTL_API occtl_status_t OCCTL_CALL
512 occtl_rep_id_t* out_id,
514
540OCCTL_API occtl_status_t OCCTL_CALL
542 occtl_rep_id_t* out_id,
544
559 occtl_rep_id_t surface_id,
560 occtl_rep_id_t* out_id);
561
577 occtl_rep_id_t surface_id,
578 occtl_transform_t transform,
579 occtl_rep_id_t* out_id);
580
596 occtl_rep_id_t surface_id,
597 occtl_vector3_t delta,
598 occtl_rep_id_t* out_id);
599
616 occtl_rep_id_t surface_id,
618 double angle,
619 occtl_rep_id_t* out_id);
620
638 occtl_rep_id_t surface_id,
639 occtl_point3_t origin,
640 double factor,
641 occtl_rep_id_t* out_id);
642
659 occtl_rep_id_t surface_id,
660 double* out_area);
661
681 occtl_rep_id_t surface_id,
682 occtl_point3_t point,
683 double* out_u,
684 double* out_v,
685 double* out_distance);
686
706 occtl_rep_id_t surface_id,
707 occtl_point3_t point,
708 double* out_u,
709 double* out_v);
710
724 occtl_rep_id_t surface_id,
725 occtl_surface_kind_t* out_kind);
726
741 occtl_rep_id_t surface_id,
742 int32_t* out_is_periodic);
743
758 occtl_rep_id_t surface_id,
759 int32_t* out_is_periodic);
760
778 occtl_rep_id_t surface_id,
779 int32_t* out_is_closed);
780
799 occtl_rep_id_t surface_id,
800 int32_t* out_is_periodic);
801
815OCCTL_API occtl_status_t OCCTL_CALL
817 occtl_rep_id_t surface_id,
818 occtl_geom_continuity_t* out_continuity);
819
836 occtl_rep_id_t surface_id,
837 double* out_u_min,
838 double* out_u_max,
839 double* out_v_min,
840 double* out_v_max);
841
858 occtl_rep_id_t surface_id,
859 occtl_geom_plane_t* out_plane);
860
878OCCTL_API occtl_status_t OCCTL_CALL
880 occtl_rep_id_t surface_id,
882
900 occtl_rep_id_t surface_id,
902
920OCCTL_API occtl_status_t OCCTL_CALL
922 occtl_rep_id_t surface_id,
924
942OCCTL_API occtl_status_t OCCTL_CALL
944 occtl_rep_id_t surface_id,
946
964 occtl_rep_id_t surface_id,
965 occtl_axis1_placement_t* out_axis);
966
984 occtl_rep_id_t surface_id,
985 occtl_vector3_t* out_direction);
986
1007 occtl_rep_id_t surface_id,
1008 double* out_u_first,
1009 double* out_u_last,
1010 double* out_v_first,
1011 double* out_v_last);
1012
1030 occtl_rep_id_t surface_id,
1031 double* out_offset);
1032
1048 occtl_rep_id_t surface_id,
1049 int32_t* out_degree);
1050
1066 occtl_rep_id_t surface_id,
1067 int32_t* out_degree);
1068
1084 occtl_rep_id_t surface_id,
1085 size_t* out_count);
1086
1102 occtl_rep_id_t surface_id,
1103 size_t* out_count);
1104
1120 occtl_rep_id_t surface_id,
1121 int32_t* out_is_rational);
1122
1138 occtl_rep_id_t surface_id,
1139 size_t* out_count);
1140
1156 occtl_rep_id_t surface_id,
1157 size_t* out_count);
1158
1174 occtl_rep_id_t surface_id,
1175 int32_t* out_degree);
1176
1192 occtl_rep_id_t surface_id,
1193 int32_t* out_degree);
1194
1210 occtl_rep_id_t surface_id,
1211 size_t* out_count);
1212
1228 occtl_rep_id_t surface_id,
1229 size_t* out_count);
1230
1246 occtl_rep_id_t surface_id,
1247 int32_t* out_is_rational);
1248
1270 occtl_rep_id_t surface_id,
1271 occtl_point3_t* out_buf,
1272 size_t capacity,
1273 size_t* out_count);
1274
1293 occtl_rep_id_t surface_id,
1294 double* out_buf,
1295 size_t capacity,
1296 size_t* out_count);
1297
1316 occtl_rep_id_t surface_id,
1317 double* out_buf,
1318 size_t capacity,
1319 size_t* out_count);
1320
1338OCCTL_API occtl_status_t OCCTL_CALL
1340 occtl_rep_id_t surface_id,
1341 int32_t* out_buf,
1342 size_t capacity,
1343 size_t* out_count);
1344
1362OCCTL_API occtl_status_t OCCTL_CALL
1364 occtl_rep_id_t surface_id,
1365 int32_t* out_buf,
1366 size_t capacity,
1367 size_t* out_count);
1368
1389 occtl_rep_id_t surface_id,
1390 double* out_buf,
1391 size_t capacity,
1392 size_t* out_count);
1393
1420 occtl_rep_id_t surface_id,
1421 double* out_buf,
1422 size_t capacity,
1423 size_t* out_count);
1424
1451 occtl_rep_id_t surface_id,
1452 double* out_buf,
1453 size_t capacity,
1454 size_t* out_count);
1455
1481OCCTL_API occtl_status_t OCCTL_CALL
1483 occtl_rep_id_t surface_id,
1484 const occtl_point3_t** out_data,
1485 size_t* out_u_count,
1486 size_t* out_v_count);
1487
1512{
1514 const void* p_next;
1516 int32_t u_degree;
1517 int32_t v_degree;
1518 int32_t is_rational;
1535 const double* weights;
1537 const double* u_knots;
1538 const double* v_knots;
1539 const int32_t* u_multiplicities;
1540 const int32_t* v_multiplicities;
1541 const double* u_flat_knots;
1542 const double* v_flat_knots;
1544
1545#define OCCTL_SURFACE_BSPLINE_VERSION_1 1u
1546
1547#define OCCTL_SURFACE_BSPLINE_INIT \
1548 {OCCTL_SURFACE_BSPLINE_VERSION_1, \
1549 NULL, \
1550 0, \
1551 0, \
1552 0, \
1553 0, \
1554 0, \
1555 0, \
1556 0, \
1557 0, \
1558 0, \
1559 0, \
1560 0, \
1561 NULL, \
1562 NULL, \
1563 NULL, \
1564 NULL, \
1565 NULL, \
1566 NULL, \
1567 NULL, \
1568 NULL}
1569
1583
1610 occtl_rep_id_t surface_id,
1612
1629 occtl_rep_id_t surface_id,
1630 double u,
1631 double v,
1632 occtl_point3_t* out_point);
1633
1652 occtl_rep_id_t surface_id,
1653 double u,
1654 double v,
1655 occtl_point3_t* out_point,
1656 occtl_vector3_t* out_d1u,
1657 occtl_vector3_t* out_d1v);
1658
1681 occtl_rep_id_t surface_id,
1682 double u,
1683 double v,
1684 occtl_point3_t* out_point,
1685 occtl_vector3_t* out_d1u,
1686 occtl_vector3_t* out_d1v,
1687 occtl_vector3_t* out_d2u,
1688 occtl_vector3_t* out_d2v,
1689 occtl_vector3_t* out_d2uv);
1690
1717 occtl_rep_id_t surface_id,
1718 double u,
1719 double v,
1720 occtl_point3_t* out_point,
1721 occtl_vector3_t* out_d1u,
1722 occtl_vector3_t* out_d1v,
1723 occtl_vector3_t* out_d2u,
1724 occtl_vector3_t* out_d2v,
1725 occtl_vector3_t* out_d2uv,
1726 occtl_vector3_t* out_d3u,
1727 occtl_vector3_t* out_d3v,
1728 occtl_vector3_t* out_d3uuv,
1729 occtl_vector3_t* out_d3uvv);
1730
1750 occtl_rep_id_t surface_id,
1751 double u,
1752 double v,
1753 int32_t nu,
1754 int32_t nv,
1755 occtl_vector3_t* out_derivative);
1756
1775
1776#define OCCTL_SURFACE_INTERPOLATED_INFO_VERSION_1 1u
1777#define OCCTL_SURFACE_INTERPOLATED_INFO_INIT \
1778 {OCCTL_SURFACE_INTERPOLATED_INFO_VERSION_1, NULL, NULL, 0, 0, 0}
1779
1789OCCTL_API void OCCTL_CALL
1791
1815OCCTL_API occtl_status_t OCCTL_CALL
1818 occtl_rep_id_t* out_id);
1819
1837
1838#define OCCTL_SURFACE_APPROXIMATED_INFO_VERSION_1 1u
1839#define OCCTL_SURFACE_APPROXIMATED_INFO_INIT \
1840 {OCCTL_SURFACE_APPROXIMATED_INFO_VERSION_1, NULL, NULL, 0, 0, 1, 3, 1e-3}
1841
1851OCCTL_API void OCCTL_CALL
1853
1875OCCTL_API occtl_status_t OCCTL_CALL
1878 occtl_rep_id_t* out_id);
1879
1889
1911
1912#define OCCTL_SURFACE_POINT_GRID_CREATE_INFO_VERSION_1 1u
1913#define OCCTL_SURFACE_POINT_GRID_CREATE_INFO_INIT \
1914 {OCCTL_SURFACE_POINT_GRID_CREATE_INFO_VERSION_1, \
1915 NULL, \
1916 NULL, \
1917 0, \
1918 0, \
1919 OCCTL_SURFACE_POINT_GRID_MODE_APPROXIMATE, \
1920 1, \
1921 3, \
1922 0, \
1923 1e-3}
1924
1934OCCTL_API void OCCTL_CALL
1936
1964OCCTL_API occtl_status_t OCCTL_CALL
1966 occtl_rep_id_t* out_id,
1968
1979
1994
1995#define OCCTL_SURFACE_BOUNDARY_CURVES_CREATE_INFO_VERSION_1 1u
1996#define OCCTL_SURFACE_BOUNDARY_CURVES_CREATE_INFO_INIT \
1997 {OCCTL_SURFACE_BOUNDARY_CURVES_CREATE_INFO_VERSION_1, \
1998 NULL, \
1999 NULL, \
2000 0, \
2001 OCCTL_SURFACE_FILLING_STRETCH}
2002
2012OCCTL_API void OCCTL_CALL
2014
2041 occtl_graph_t* graph,
2042 occtl_rep_id_t* out_id,
2044
2063
2064#define OCCTL_SURFACE_GORDON_CREATE_INFO_VERSION_1 1u
2065#define OCCTL_SURFACE_GORDON_CREATE_INFO_INIT \
2066 {OCCTL_SURFACE_GORDON_CREATE_INFO_VERSION_1, NULL, NULL, 0, NULL, 0, 1.0e-7, 0}
2067
2077OCCTL_API void OCCTL_CALL
2079
2106OCCTL_API occtl_status_t OCCTL_CALL
2108 occtl_rep_id_t* out_id,
2110
2129
2130#define OCCTL_SURFACE_CURVE_GRID_CREATE_INFO_VERSION_1 1u
2131#define OCCTL_SURFACE_CURVE_GRID_CREATE_INFO_INIT \
2132 {OCCTL_SURFACE_CURVE_GRID_CREATE_INFO_VERSION_1, NULL, NULL, 0, NULL, 0, 1.0e-7, 0}
2133
2143OCCTL_API void OCCTL_CALL
2145
2171OCCTL_API occtl_status_t OCCTL_CALL
2173 occtl_rep_id_t* out_id,
2175
2201 occtl_rep_id_t surface_id,
2202 occtl_rep_id_t curve_id,
2203 occtl_point3_t* out_buf,
2204 size_t capacity,
2205 size_t* out_count);
2206
2233 occtl_rep_id_t surface_a,
2234 occtl_rep_id_t surface_b,
2235 double tolerance,
2236 occtl_rep_id_t** out_ids,
2237 size_t* out_count);
2238
2239#ifdef __cplusplus
2240} /* extern "C" */
2241#endif
2242
2243#endif /* OCCTL_SURFACES_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.
enum occtl_geom_continuity occtl_geom_continuity_t
occtl_status_t occtl_surface_transformed(occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_transform_t transform, occtl_rep_id_t *out_id)
struct occtl_surface_gordon_create_info occtl_surface_gordon_create_info_t
occtl_status_t occtl_surface_eval_d3(const occtl_graph_t *graph, occtl_rep_id_t surface_id, double u, double v, occtl_point3_t *out_point, 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_surface_as_plane(const occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_geom_plane_t *out_plane)
struct occtl_surface_rectangular_trimmed_create_info occtl_surface_rectangular_trimmed_create_info_t
occtl_status_t occtl_surface_create_sphere(occtl_graph_t *graph, occtl_rep_id_t *out_id, occtl_geom_spherical_surface_t sphere)
occtl_status_t occtl_surface_create_extrusion(occtl_graph_t *graph, occtl_rep_id_t *out_id, const occtl_surface_extrusion_create_info_t *info)
void occtl_surface_offset_create_info_init(occtl_surface_offset_create_info_t *info)
void occtl_surface_curve_grid_create_info_init(occtl_surface_curve_grid_create_info_t *info)
occtl_status_t occtl_surface_continuity(occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_geom_continuity_t *out_continuity)
void occtl_surface_point_grid_create_info_init(occtl_surface_point_grid_create_info_t *info)
struct occtl_surface_bezier_create_info occtl_surface_bezier_create_info_t
occtl_status_t occtl_surface_bezier_v_degree(const occtl_graph_t *graph, occtl_rep_id_t surface_id, int32_t *out_degree)
occtl_status_t occtl_surface_bezier_u_pole_count(const occtl_graph_t *graph, occtl_rep_id_t surface_id, size_t *out_count)
occtl_status_t occtl_surface_as_revolution(const occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_axis1_placement_t *out_axis)
occtl_status_t occtl_surface_bspline_v_degree(const occtl_graph_t *graph, occtl_rep_id_t surface_id, int32_t *out_degree)
occtl_status_t occtl_surface_parameter_range(const occtl_graph_t *graph, occtl_rep_id_t surface_id, double *out_u_min, double *out_u_max, double *out_v_min, double *out_v_max)
void occtl_surface_bezier_create_info_init(occtl_surface_bezier_create_info_t *info)
occtl_surface_point_grid_mode
Definition occtl_surfaces.h:1884
@ OCCTL_SURFACE_POINT_GRID_MODE_INTERPOLATE
Definition occtl_surfaces.h:1886
@ OCCTL_SURFACE_POINT_GRID_MODE_APPROXIMATE
Definition occtl_surfaces.h:1885
occtl_status_t occtl_surface_as_cone(const occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_geom_conical_surface_t *out_cone)
occtl_status_t occtl_surface_eval_d0(const occtl_graph_t *graph, occtl_rep_id_t surface_id, double u, double v, occtl_point3_t *out_point)
occtl_status_t occtl_surface_create_gordon(occtl_graph_t *graph, occtl_rep_id_t *out_id, const occtl_surface_gordon_create_info_t *info)
occtl_status_t occtl_surface_is_v_periodic(const occtl_graph_t *graph, occtl_rep_id_t surface_id, int32_t *out_is_periodic)
occtl_status_t occtl_surface_bspline_u_multiplicities(occtl_graph_t *graph, occtl_rep_id_t surface_id, int32_t *out_buf, size_t capacity, size_t *out_count)
occtl_status_t occtl_surface_reverse(occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_rep_id_t *out_id)
occtl_status_t occtl_surface_is_closed(const occtl_graph_t *graph, occtl_rep_id_t surface_id, int32_t *out_is_closed)
occtl_status_t occtl_surface_as_cylinder(occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_geom_cylindrical_surface_t *out_cylinder)
occtl_status_t occtl_surface_bspline_u_knot_count(const occtl_graph_t *graph, occtl_rep_id_t surface_id, size_t *out_count)
occtl_status_t occtl_surface_bspline_v_knot_count(const occtl_graph_t *graph, occtl_rep_id_t surface_id, size_t *out_count)
occtl_status_t occtl_surface_eval_d2(const occtl_graph_t *graph, occtl_rep_id_t surface_id, double u, double v, occtl_point3_t *out_point, 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_surface_project_point(const occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_point3_t point, double *out_u, double *out_v, double *out_distance)
occtl_status_t occtl_surface_as_rectangular_trimmed(const occtl_graph_t *graph, occtl_rep_id_t surface_id, double *out_u_first, double *out_u_last, double *out_v_first, double *out_v_last)
occtl_status_t occtl_surface_bspline_v_flat_knots(const occtl_graph_t *graph, occtl_rep_id_t surface_id, double *out_buf, size_t capacity, size_t *out_count)
occtl_status_t occtl_surface_bspline_u_knots(const occtl_graph_t *graph, occtl_rep_id_t surface_id, double *out_buf, size_t capacity, size_t *out_count)
struct occtl_surface_curve_grid_create_info occtl_surface_curve_grid_create_info_t
void occtl_surface_boundary_curves_create_info_init(occtl_surface_boundary_curves_create_info_t *info)
struct occtl_surface_offset_create_info occtl_surface_offset_create_info_t
occtl_status_t occtl_surface_bspline_v_pole_count(const occtl_graph_t *graph, occtl_rep_id_t surface_id, size_t *out_count)
occtl_status_t occtl_surface_create_bezier(occtl_graph_t *graph, occtl_rep_id_t *out_id, const occtl_surface_bezier_create_info_t *info)
occtl_status_t occtl_surface_as_torus(const occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_geom_toroidal_surface_t *out_torus)
void occtl_surface_extrusion_create_info_init(occtl_surface_extrusion_create_info_t *info)
enum occtl_surface_point_grid_mode occtl_surface_point_grid_mode_t
occtl_status_t occtl_surface_bspline_v_knots(const occtl_graph_t *graph, occtl_rep_id_t surface_id, double *out_buf, size_t capacity, size_t *out_count)
void occtl_surface_approximated_info_init(occtl_surface_approximated_info_t *info)
occtl_status_t occtl_surface_intersect_curve(const occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_rep_id_t curve_id, occtl_point3_t *out_buf, size_t capacity, size_t *out_count)
struct occtl_surface_extrusion_create_info occtl_surface_extrusion_create_info_t
occtl_status_t occtl_surface_create_bspline(occtl_graph_t *graph, occtl_rep_id_t *out_id, const occtl_surface_bspline_create_info_t *info)
occtl_status_t occtl_surface_bspline_is_rational(const occtl_graph_t *graph, occtl_rep_id_t surface_id, int32_t *out_is_rational)
occtl_status_t occtl_surface_area(const occtl_graph_t *graph, occtl_rep_id_t surface_id, double *out_area)
void occtl_surface_bspline_create_info_init(occtl_surface_bspline_create_info_t *info)
occtl_status_t occtl_surface_as_offset(const occtl_graph_t *graph, occtl_rep_id_t surface_id, double *out_offset)
occtl_status_t occtl_surface_create_cylinder(occtl_graph_t *graph, occtl_rep_id_t *out_id, occtl_geom_cylindrical_surface_t cylinder)
occtl_status_t occtl_surface_rotated(occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_axis1_placement_t axis, double angle, occtl_rep_id_t *out_id)
occtl_status_t occtl_surface_bezier_u_degree(const occtl_graph_t *graph, occtl_rep_id_t surface_id, int32_t *out_degree)
occtl_status_t occtl_surface_create_bezier_grid(occtl_graph_t *graph, occtl_rep_id_t *out_id, const occtl_surface_bezier_create_info_t *info)
void occtl_surface_gordon_create_info_init(occtl_surface_gordon_create_info_t *info)
occtl_status_t occtl_surface_as_extrusion(const occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_vector3_t *out_direction)
void occtl_surface_revolution_create_info_init(occtl_surface_revolution_create_info_t *info)
struct occtl_surface_bspline occtl_surface_bspline_t
occtl_status_t occtl_surface_create_plane(occtl_graph_t *graph, occtl_rep_id_t *out_id, occtl_geom_plane_t plane)
occtl_status_t occtl_surface_bezier_is_rational(const occtl_graph_t *graph, occtl_rep_id_t surface_id, int32_t *out_is_rational)
struct occtl_surface_revolution_create_info occtl_surface_revolution_create_info_t
occtl_status_t occtl_surface_scaled(occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_point3_t origin, double factor, occtl_rep_id_t *out_id)
occtl_status_t occtl_surface_bezier_v_pole_count(const occtl_graph_t *graph, occtl_rep_id_t surface_id, size_t *out_count)
occtl_status_t occtl_surface_create_from_curve_grid(occtl_graph_t *graph, occtl_rep_id_t *out_id, const occtl_surface_curve_grid_create_info_t *info)
void occtl_surface_interpolated_info_init(occtl_surface_interpolated_info_t *info)
occtl_status_t occtl_surface_create_torus(occtl_graph_t *graph, occtl_rep_id_t *out_id, occtl_geom_toroidal_surface_t torus)
struct occtl_surface_bspline_create_info occtl_surface_bspline_create_info_t
void occtl_surface_rectangular_trimmed_create_info_init(occtl_surface_rectangular_trimmed_create_info_t *info)
occtl_status_t occtl_surface_create_from_point_grid(occtl_graph_t *graph, occtl_rep_id_t *out_id, const occtl_surface_point_grid_create_info_t *info)
occtl_surface_kind
Definition occtl_surfaces.h:52
@ OCCTL_SURFACE_KIND_PLANE
Definition occtl_surfaces.h:53
@ OCCTL_SURFACE_KIND_BSPLINE
Definition occtl_surfaces.h:58
@ OCCTL_SURFACE_KIND_RECTANGULAR_TRIMMED
Definition occtl_surfaces.h:62
@ OCCTL_SURFACE_KIND_EXTRUSION
Definition occtl_surfaces.h:61
@ OCCTL_SURFACE_KIND_CYLINDRICAL
Definition occtl_surfaces.h:54
@ OCCTL_SURFACE_KIND_CONICAL
Definition occtl_surfaces.h:55
@ OCCTL_SURFACE_KIND_SPHERICAL
Definition occtl_surfaces.h:56
@ OCCTL_SURFACE_KIND_UNDEFINED
Definition occtl_surfaces.h:65
@ OCCTL_SURFACE_KIND_OFFSET
Definition occtl_surfaces.h:64
@ OCCTL_SURFACE_KIND_BEZIER
Definition occtl_surfaces.h:59
@ OCCTL_SURFACE_KIND_REVOLUTION
Definition occtl_surfaces.h:60
@ OCCTL_SURFACE_KIND_TOROIDAL
Definition occtl_surfaces.h:57
occtl_status_t occtl_surface_create_revolution(occtl_graph_t *graph, occtl_rep_id_t *out_id, const occtl_surface_revolution_create_info_t *info)
occtl_status_t occtl_surface_eval_d1(const occtl_graph_t *graph, occtl_rep_id_t surface_id, double u, double v, occtl_point3_t *out_point, occtl_vector3_t *out_d1u, occtl_vector3_t *out_d1v)
struct occtl_surface_point_grid_create_info occtl_surface_point_grid_create_info_t
occtl_status_t occtl_surface_is_u_periodic(const occtl_graph_t *graph, occtl_rep_id_t surface_id, int32_t *out_is_periodic)
enum occtl_surface_kind occtl_surface_kind_t
occtl_status_t occtl_surface_bspline_u_pole_count(const occtl_graph_t *graph, occtl_rep_id_t surface_id, size_t *out_count)
occtl_status_t occtl_surface_eval_dn(const occtl_graph_t *graph, occtl_rep_id_t surface_id, double u, double v, int32_t nu, int32_t nv, occtl_vector3_t *out_derivative)
occtl_status_t occtl_surface_surface_intersect(occtl_graph_t *graph, occtl_rep_id_t surface_a, occtl_rep_id_t surface_b, double tolerance, occtl_rep_id_t **out_ids, size_t *out_count)
occtl_status_t occtl_surface_create_approximated(occtl_graph_t *graph, const occtl_surface_approximated_info_t *info, occtl_rep_id_t *out_id)
occtl_status_t occtl_surface_bspline_poles_view(occtl_graph_t *graph, occtl_rep_id_t surface_id, const occtl_point3_t **out_data, size_t *out_u_count, size_t *out_v_count)
occtl_status_t occtl_surface_as_sphere(occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_geom_spherical_surface_t *out_sphere)
occtl_status_t occtl_surface_create_from_boundary_curves(occtl_graph_t *graph, occtl_rep_id_t *out_id, const occtl_surface_boundary_curves_create_info_t *info)
occtl_status_t occtl_surface_bspline_u_degree(const occtl_graph_t *graph, occtl_rep_id_t surface_id, int32_t *out_degree)
struct occtl_surface_boundary_curves_create_info occtl_surface_boundary_curves_create_info_t
occtl_status_t occtl_surface_bspline_poles(const occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_point3_t *out_buf, size_t capacity, size_t *out_count)
occtl_status_t occtl_surface_bspline_v_multiplicities(occtl_graph_t *graph, occtl_rep_id_t surface_id, int32_t *out_buf, size_t capacity, size_t *out_count)
occtl_status_t occtl_surface_create_interpolated(occtl_graph_t *graph, const occtl_surface_interpolated_info_t *info, occtl_rep_id_t *out_id)
enum occtl_surface_filling_style occtl_surface_filling_style_t
occtl_status_t occtl_surface_uv_of_point(const occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_point3_t point, double *out_u, double *out_v)
occtl_status_t occtl_surface_is_periodic(const occtl_graph_t *graph, occtl_rep_id_t surface_id, int32_t *out_is_periodic)
occtl_status_t occtl_surface_as_bspline(const occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_surface_bspline_t *out)
occtl_status_t occtl_surface_translated(occtl_graph_t *graph, occtl_rep_id_t surface_id, occtl_vector3_t delta, occtl_rep_id_t *out_id)
void occtl_surface_bspline_init(occtl_surface_bspline_t *out)
occtl_status_t occtl_surface_create_cone(occtl_graph_t *graph, occtl_rep_id_t *out_id, occtl_geom_conical_surface_t cone)
occtl_surface_filling_style
Definition occtl_surfaces.h:1973
@ OCCTL_SURFACE_FILLING_COONS
Definition occtl_surfaces.h:1975
@ OCCTL_SURFACE_FILLING_STRETCH
Definition occtl_surfaces.h:1974
@ OCCTL_SURFACE_FILLING_CURVED
Definition occtl_surfaces.h:1976
struct occtl_surface_interpolated_info occtl_surface_interpolated_info_t
occtl_status_t occtl_surface_bspline_u_flat_knots(const occtl_graph_t *graph, occtl_rep_id_t surface_id, double *out_buf, size_t capacity, size_t *out_count)
occtl_status_t occtl_surface_create_rectangular_trimmed(occtl_graph_t *graph, occtl_rep_id_t *out_id, const occtl_surface_rectangular_trimmed_create_info_t *info)
occtl_status_t occtl_surface_bspline_weights(const occtl_graph_t *graph, occtl_rep_id_t surface_id, double *out_buf, size_t capacity, size_t *out_count)
struct occtl_surface_approximated_info occtl_surface_approximated_info_t
occtl_status_t occtl_surface_create_offset(occtl_graph_t *graph, occtl_rep_id_t *out_id, const occtl_surface_offset_create_info_t *info)
struct occtl_graph occtl_graph_t
Definition occtl_topo_types.h:152
Definition occtl_geom.h:111
Definition occtl_geom.h:949
Definition occtl_geom.h:926
Definition occtl_geom.h:916
Definition occtl_geom.h:937
Definition occtl_geom.h:962
Definition occtl_geom.h:76
Definition occtl_core.h:251
Definition occtl_surfaces.h:1827
size_t u_point_count
Definition occtl_surfaces.h:1831
uint32_t struct_version
Definition occtl_surfaces.h:1828
int32_t degree_max
Definition occtl_surfaces.h:1834
double tolerance
Definition occtl_surfaces.h:1835
const occtl_point3_t * points
Definition occtl_surfaces.h:1830
const void * p_next
Definition occtl_surfaces.h:1829
int32_t degree_min
Definition occtl_surfaces.h:1833
size_t v_point_count
Definition occtl_surfaces.h:1832
Definition occtl_surfaces.h:469
const void * p_next
Definition occtl_surfaces.h:471
const double * weights
Definition occtl_surfaces.h:475
uint32_t struct_version
Definition occtl_surfaces.h:470
const occtl_point3_t * poles
Definition occtl_surfaces.h:472
size_t v_pole_count
Definition occtl_surfaces.h:474
size_t u_pole_count
Definition occtl_surfaces.h:473
Definition occtl_surfaces.h:1987
uint32_t struct_version
Definition occtl_surfaces.h:1988
const occtl_rep_id_t * curves
Definition occtl_surfaces.h:1990
occtl_surface_filling_style_t style
Definition occtl_surfaces.h:1992
size_t curve_count
Definition occtl_surfaces.h:1991
const void * p_next
Definition occtl_surfaces.h:1989
Definition occtl_surfaces.h:390
const int32_t * u_multiplicities
Definition occtl_surfaces.h:398
size_t u_pole_count
Definition occtl_surfaces.h:394
int32_t is_v_periodic
Definition occtl_surfaces.h:406
int32_t is_u_periodic
Definition occtl_surfaces.h:405
const double * v_knots
Definition occtl_surfaces.h:400
const int32_t * v_multiplicities
Definition occtl_surfaces.h:401
const double * weights
Definition occtl_surfaces.h:396
const occtl_point3_t * poles
Definition occtl_surfaces.h:393
size_t v_pole_count
Definition occtl_surfaces.h:395
uint32_t struct_version
Definition occtl_surfaces.h:391
const double * u_knots
Definition occtl_surfaces.h:397
const void * p_next
Definition occtl_surfaces.h:392
Definition occtl_surfaces.h:1512
int32_t is_v_periodic
Definition occtl_surfaces.h:1520
size_t v_flat_knot_count
Definition occtl_surfaces.h:1526
const int32_t * v_multiplicities
Definition occtl_surfaces.h:1540
int32_t is_rational
Definition occtl_surfaces.h:1518
const double * u_knots
Definition occtl_surfaces.h:1537
size_t v_knot_count
Definition occtl_surfaces.h:1524
const double * weights
Definition occtl_surfaces.h:1535
const double * v_flat_knots
Definition occtl_surfaces.h:1542
size_t u_knot_count
Definition occtl_surfaces.h:1523
uint32_t struct_version
Definition occtl_surfaces.h:1513
int32_t u_degree
Definition occtl_surfaces.h:1516
const double * u_flat_knots
Definition occtl_surfaces.h:1541
const double * v_knots
Definition occtl_surfaces.h:1538
size_t u_flat_knot_count
Definition occtl_surfaces.h:1525
int32_t is_u_periodic
Definition occtl_surfaces.h:1519
const int32_t * u_multiplicities
Definition occtl_surfaces.h:1539
const void * p_next
Definition occtl_surfaces.h:1514
const occtl_point3_t * poles
Definition occtl_surfaces.h:1532
size_t u_pole_count
Definition occtl_surfaces.h:1521
size_t v_pole_count
Definition occtl_surfaces.h:1522
int32_t v_degree
Definition occtl_surfaces.h:1517
Definition occtl_surfaces.h:2119
const occtl_rep_id_t * u_curves
Definition occtl_surfaces.h:2122
size_t u_curve_count
Definition occtl_surfaces.h:2123
double tolerance
Definition occtl_surfaces.h:2126
const occtl_rep_id_t * v_curves
Definition occtl_surfaces.h:2124
uint32_t struct_version
Definition occtl_surfaces.h:2120
size_t v_curve_count
Definition occtl_surfaces.h:2125
int32_t parallel
Definition occtl_surfaces.h:2127
const void * p_next
Definition occtl_surfaces.h:2121
Definition occtl_surfaces.h:222
occtl_rep_id_t basis
Definition occtl_surfaces.h:225
occtl_vector3_t direction
Definition occtl_surfaces.h:226
uint32_t struct_version
Definition occtl_surfaces.h:223
Definition occtl_surfaces.h:2053
int32_t parallel
Definition occtl_surfaces.h:2061
const void * p_next
Definition occtl_surfaces.h:2055
size_t guide_count
Definition occtl_surfaces.h:2059
size_t profile_count
Definition occtl_surfaces.h:2057
double tolerance
Definition occtl_surfaces.h:2060
const occtl_rep_id_t * guides
Definition occtl_surfaces.h:2058
uint32_t struct_version
Definition occtl_surfaces.h:2054
const occtl_rep_id_t * profiles
Definition occtl_surfaces.h:2056
Definition occtl_surfaces.h:1766
size_t v_point_count
Definition occtl_surfaces.h:1772
uint32_t struct_version
Definition occtl_surfaces.h:1767
const void * p_next
Definition occtl_surfaces.h:1768
size_t u_point_count
Definition occtl_surfaces.h:1771
const occtl_point3_t * points
Definition occtl_surfaces.h:1769
int32_t is_u_periodic
Definition occtl_surfaces.h:1773
Definition occtl_surfaces.h:336
occtl_rep_id_t basis
Definition occtl_surfaces.h:339
double offset
Definition occtl_surfaces.h:340
const void * p_next
Definition occtl_surfaces.h:338
uint32_t struct_version
Definition occtl_surfaces.h:337
Definition occtl_surfaces.h:1898
size_t v_point_count
Definition occtl_surfaces.h:1904
int32_t degree_min
Definition occtl_surfaces.h:1906
int32_t degree_max
Definition occtl_surfaces.h:1907
occtl_surface_point_grid_mode_t mode
Definition occtl_surfaces.h:1905
int32_t is_u_periodic
Definition occtl_surfaces.h:1908
uint32_t struct_version
Definition occtl_surfaces.h:1899
const void * p_next
Definition occtl_surfaces.h:1900
double tolerance
Definition occtl_surfaces.h:1909
size_t u_point_count
Definition occtl_surfaces.h:1903
const occtl_point3_t * points
Definition occtl_surfaces.h:1901
Definition occtl_surfaces.h:274
int32_t u_sense
Definition occtl_surfaces.h:282
int32_t v_sense
Definition occtl_surfaces.h:283
uint32_t struct_version
Definition occtl_surfaces.h:275
const void * p_next
Definition occtl_surfaces.h:276
occtl_rep_id_t basis
Definition occtl_surfaces.h:277
Definition occtl_surfaces.h:167
uint32_t struct_version
Definition occtl_surfaces.h:168
occtl_rep_id_t basis
Definition occtl_surfaces.h:170
occtl_axis1_placement_t axis
Definition occtl_surfaces.h:171
Definition occtl_geom.h:171
Definition occtl_geom.h:84