OCCT-Light 0.1
C ABI and C++ veneer for multi-language CAD workflows
Loading...
Searching...
No Matches
prim.hpp
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
24#ifndef OCCTL_HPP_PRIM_HPP
25#define OCCTL_HPP_PRIM_HPP
26
27#include <occtl/occtl_prim.h>
28
29#include <occtl-hpp/core.hpp>
31#include <occtl-hpp/topo.hpp>
32
33#include <cstddef>
34#include <tuple>
35#include <utility>
36#include <vector>
37
38namespace occtl::prim
39{
40
43
46
49
52
55
58
59namespace detail
60{
62inline ::occtl_axis2_placement_t default_ax2() noexcept
63{
64 return {{0.0, 0.0, 0.0}, {0.0, 0.0, 1.0}, {1.0, 0.0, 0.0}};
65}
66} // namespace detail
67
74inline NodeId make_box(Graph& theGraph,
75 const double theDx,
76 const double theDy,
77 const double theDz,
78 const ::occtl_axis2_placement_t& thePlacement = detail::default_ax2())
79{
80 ::occtl_prim_box_info_t anInfo = OCCTL_PRIM_BOX_INFO_INIT;
81 anInfo.placement = thePlacement;
82 anInfo.dx = theDx;
83 anInfo.dy = theDy;
84 anInfo.dz = theDz;
85
87 check(::occtl_prim_make_box(theGraph.get(), &anInfo, &anId));
88 return NodeId(anId);
89}
90
92inline NodeId make_face_from_surface(Graph& theGraph, const FaceFromSurfaceOptions& theOptions)
93{
95 check(::occtl_prim_make_face_from_surface(theGraph.get(), &theOptions, &aFace));
96 return NodeId(aFace);
97}
98
101{
103 check(::occtl_prim_make_face_from_point_grid(theGraph.get(), &theOptions, &aFace));
104 return NodeId(aFace);
105}
106
109 const FaceFromBoundaryCurvesOptions& theOptions)
110{
112 check(::occtl_prim_make_face_from_boundary_curves(theGraph.get(), &theOptions, &aFace));
113 return NodeId(aFace);
114}
115
118{
120 check(::occtl_prim_make_face_from_curve_grid(theGraph.get(), &theOptions, &aFace));
121 return NodeId(aFace);
122}
123
125inline std::pair<Graph, NodeId> make_brake_formed(const Graph& theGraph,
126 const BrakeFormedOptions& theOptions)
127{
128 ::occtl_graph_t* aOutGraph = nullptr;
130 check(::occtl_prim_make_brake_formed(theGraph.get(), &theOptions, &aOutGraph, &aOutRoot));
131 return {Graph(aOutGraph), NodeId(aOutRoot)};
132}
133
135inline NodeId make_sphere(Graph& theGraph,
136 const double theRadius,
137 const ::occtl_axis2_placement_t& thePlacement = detail::default_ax2())
138{
139 ::occtl_prim_sphere_info_t anInfo = OCCTL_PRIM_SPHERE_INFO_INIT;
140 anInfo.placement = thePlacement;
141 anInfo.radius = theRadius;
142
144 check(::occtl_prim_make_sphere(theGraph.get(), &anInfo, &anId));
145 return NodeId(anId);
146}
147
149inline NodeId make_cylinder(Graph& theGraph,
150 const double theRadius,
151 const double theHeight,
152 const ::occtl_axis2_placement_t& thePlacement = detail::default_ax2())
153{
154 ::occtl_prim_cylinder_info_t anInfo = OCCTL_PRIM_CYLINDER_INFO_INIT;
155 anInfo.placement = thePlacement;
156 anInfo.radius = theRadius;
157 anInfo.height = theHeight;
158
160 check(::occtl_prim_make_cylinder(theGraph.get(), &anInfo, &anId));
161 return NodeId(anId);
162}
163
165inline NodeId make_cone(Graph& theGraph,
166 const double theR1,
167 const double theR2,
168 const double theHeight,
169 const ::occtl_axis2_placement_t& thePlacement = detail::default_ax2())
170{
171 ::occtl_prim_cone_info_t anInfo = OCCTL_PRIM_CONE_INFO_INIT;
172 anInfo.placement = thePlacement;
173 anInfo.r1 = theR1;
174 anInfo.r2 = theR2;
175 anInfo.height = theHeight;
176
178 check(::occtl_prim_make_cone(theGraph.get(), &anInfo, &anId));
179 return NodeId(anId);
180}
181
183inline NodeId make_torus(Graph& theGraph,
184 const double theMajor,
185 const double theMinor,
186 const ::occtl_axis2_placement_t& thePlacement = detail::default_ax2())
187{
188 ::occtl_prim_torus_info_t anInfo = OCCTL_PRIM_TORUS_INFO_INIT;
189 anInfo.placement = thePlacement;
190 anInfo.r1 = theMajor;
191 anInfo.r2 = theMinor;
192
194 check(::occtl_prim_make_torus(theGraph.get(), &anInfo, &anId));
195 return NodeId(anId);
196}
197
199inline NodeId make_wedge(Graph& theGraph,
200 const double theDx,
201 const double theDy,
202 const double theDz,
203 const double theLtx,
204 const ::occtl_axis2_placement_t& thePlacement = detail::default_ax2())
205{
206 ::occtl_prim_wedge_info_t anInfo = OCCTL_PRIM_WEDGE_INFO_INIT;
207 anInfo.placement = thePlacement;
208 anInfo.dx = theDx;
209 anInfo.dy = theDy;
210 anInfo.dz = theDz;
211 anInfo.ltx = theLtx;
212
214 check(::occtl_prim_make_wedge(theGraph.get(), &anInfo, &anId));
215 return NodeId(anId);
216}
217
219inline NodeId make_halfspace(Graph& theGraph,
220 const NodeId& theFace,
221 const ::occtl_point3_t& theRefPoint)
222{
223 ::occtl_prim_halfspace_info_t anInfo = OCCTL_PRIM_HALFSPACE_INFO_INIT;
224 anInfo.face = theFace.get();
225 anInfo.reference_point = theRefPoint;
226
228 check(::occtl_prim_make_halfspace(theGraph.get(), &anInfo, &anId));
229 return NodeId(anId);
230}
231
233inline NodeId make_prism(Graph& theGraph,
234 const NodeId& theProfile,
235 const ::occtl_vector3_t& theDirection,
236 const bool theCopy = false,
237 const bool theCanonize = true)
238{
239 ::occtl_prim_prism_info_t anInfo = OCCTL_PRIM_PRISM_INFO_INIT;
240 anInfo.profile = theProfile.get();
241 anInfo.direction = theDirection;
242 anInfo.copy = theCopy ? 1 : 0;
243 anInfo.canonize = theCanonize ? 1 : 0;
244
246 check(::occtl_prim_make_prism(theGraph.get(), &anInfo, &anId));
247 return NodeId(anId);
248}
249
252{
253 int section_count = 9;
254 bool make_solid = true;
255 bool ruled = true;
256 double pres3d = 1.0e-6;
257};
258
261 const NodeId& theProfileWire,
262 const ::occtl_axis1_placement_t& theAxis,
263 const double theHeight,
264 const double theAngle,
265 const TwistExtrusionOptions& theOptions = {})
266{
267 ::occtl_prim_twist_extrusion_info_t anInfo = OCCTL_PRIM_TWIST_EXTRUSION_INFO_INIT;
268 anInfo.profile_wire = theProfileWire.get();
269 anInfo.axis = theAxis;
270 anInfo.height = theHeight;
271 anInfo.angle = theAngle;
272 anInfo.section_count = theOptions.section_count;
273 anInfo.make_solid = theOptions.make_solid ? 1 : 0;
274 anInfo.ruled = theOptions.ruled ? 1 : 0;
275 anInfo.pres3d = theOptions.pres3d;
276
278 check(::occtl_prim_make_twist_extrusion(theGraph.get(), &anInfo, &anId));
279 return NodeId(anId);
280}
281
284 const NodeId& theProfileWire,
285 const ::occtl_axis1_placement_t& theAxis,
286 const double theHeight,
287 const double theAngle,
288 const TwistExtrusionOptions& theOptions = {})
289{
290 ::occtl_prim_extrude_twist_info_t anInfo = OCCTL_PRIM_EXTRUDE_TWIST_INFO_INIT;
291 anInfo.profile_wire = theProfileWire.get();
292 anInfo.axis = theAxis;
293 anInfo.height = theHeight;
294 anInfo.angle = theAngle;
295 anInfo.section_count = theOptions.section_count;
296 anInfo.make_solid = theOptions.make_solid ? 1 : 0;
297 anInfo.ruled = theOptions.ruled ? 1 : 0;
298 anInfo.pres3d = theOptions.pres3d;
299
301 check(::occtl_prim_make_extrude_twist(theGraph.get(), &anInfo, &anId));
302 return NodeId(anId);
303}
304
306inline NodeId make_revol(Graph& theGraph,
307 const NodeId& theProfile,
308 const ::occtl_axis1_placement_t& theAxis,
309 const double theAngle = 6.283185307179586,
310 const bool theCopy = false)
311{
312 ::occtl_prim_revol_info_t anInfo = OCCTL_PRIM_REVOL_INFO_INIT;
313 anInfo.profile = theProfile.get();
314 anInfo.axis = theAxis;
315 anInfo.angle = theAngle;
316 anInfo.copy = theCopy ? 1 : 0;
317
319 check(::occtl_prim_make_revol(theGraph.get(), &anInfo, &anId));
320 return NodeId(anId);
321}
322
324inline NodeId make_pipe(Graph& theGraph, const NodeId& theProfile, const NodeId& theSpineWire)
325{
326 ::occtl_prim_pipe_info_t anInfo = OCCTL_PRIM_PIPE_INFO_INIT;
327 anInfo.profile = theProfile.get();
328 anInfo.spine_wire = theSpineWire.get();
329
331 check(::occtl_prim_make_pipe(theGraph.get(), &anInfo, &anId));
332 return NodeId(anId);
333}
334
336inline NodeId make_loft(Graph& theGraph,
337 const std::vector<NodeId>& theSections,
338 const bool theIsSolid = false,
339 const bool theRuled = false,
340 const double thePres3d = 1.0e-6)
341{
342 std::vector<::occtl_node_id_t> aRaw;
343 aRaw.reserve(theSections.size());
344 for (const NodeId& aSec : theSections)
345 {
346 aRaw.push_back(aSec.get());
347 }
348
349 ::occtl_prim_loft_info_t anInfo = OCCTL_PRIM_LOFT_INFO_INIT;
350 anInfo.sections = aRaw.empty() ? nullptr : aRaw.data();
351 anInfo.section_count = aRaw.size();
352 anInfo.is_solid = theIsSolid ? 1 : 0;
353 anInfo.ruled = theRuled ? 1 : 0;
354 anInfo.pres3d = thePres3d;
355
357 check(::occtl_prim_make_loft(theGraph.get(), &anInfo, &anId));
358 return NodeId(anId);
359}
360
362inline NodeId make_polyline(Graph& theGraph,
363 const std::vector<::occtl_point3_t>& thePoints,
364 const bool theClosed = false)
365{
366 ::occtl_prim_polyline_info_t anInfo = OCCTL_PRIM_POLYLINE_INFO_INIT;
367 anInfo.points = thePoints.empty() ? nullptr : thePoints.data();
368 anInfo.point_count = thePoints.size();
369 anInfo.closed = theClosed ? 1 : 0;
370
372 check(::occtl_prim_make_polyline(theGraph.get(), &anInfo, &anId));
373 return NodeId(anId);
374}
375
378 Graph& theGraph,
379 const int theSides,
380 const double theCircumradius,
381 const ::occtl_axis2_placement_t& thePlacement = detail::default_ax2(),
382 const double theRotation = 0.0)
383{
384 ::occtl_prim_regular_polygon_info_t anInfo = OCCTL_PRIM_REGULAR_POLYGON_INFO_INIT;
385 anInfo.placement = thePlacement;
386 anInfo.circumradius = theCircumradius;
387 anInfo.sides = theSides;
388 anInfo.rotation = theRotation;
389
391 check(::occtl_prim_make_regular_polygon(theGraph.get(), &anInfo, &anId));
392 return NodeId(anId);
393}
394
396inline NodeId make_rectangle(Graph& theGraph,
397 const double theWidth,
398 const double theHeight,
399 const ::occtl_axis2_placement_t& thePlacement = detail::default_ax2())
400{
401 ::occtl_prim_rectangle_info_t anInfo = OCCTL_PRIM_RECTANGLE_INFO_INIT;
402 anInfo.placement = thePlacement;
403 anInfo.width = theWidth;
404 anInfo.height = theHeight;
405
407 check(::occtl_prim_make_rectangle(theGraph.get(), &anInfo, &anId));
408 return NodeId(anId);
409}
410
412inline NodeId make_circle(Graph& theGraph,
413 const double theRadius,
414 const ::occtl_axis2_placement_t& thePlacement = detail::default_ax2())
415{
416 ::occtl_prim_circle_info_t anInfo = OCCTL_PRIM_CIRCLE_INFO_INIT;
417 anInfo.placement = thePlacement;
418 anInfo.radius = theRadius;
419
421 check(::occtl_prim_make_circle(theGraph.get(), &anInfo, &anId));
422 return NodeId(anId);
423}
424
426inline NodeId make_ellipse(Graph& theGraph,
427 const double theMajor,
428 const double theMinor,
429 const ::occtl_axis2_placement_t& thePlacement = detail::default_ax2())
430{
431 ::occtl_prim_ellipse_info_t anInfo = OCCTL_PRIM_ELLIPSE_INFO_INIT;
432 anInfo.placement = thePlacement;
433 anInfo.major = theMajor;
434 anInfo.minor = theMinor;
435
437 check(::occtl_prim_make_ellipse(theGraph.get(), &anInfo, &anId));
438 return NodeId(anId);
439}
440
442inline NodeId make_arc_3pt(Graph& theGraph,
443 const ::occtl_point3_t& theStart,
444 const ::occtl_point3_t& theVia,
445 const ::occtl_point3_t& theEnd)
446{
447 ::occtl_prim_arc_3pt_info_t anInfo = OCCTL_PRIM_ARC_3PT_INFO_INIT;
448 anInfo.start = theStart;
449 anInfo.via = theVia;
450 anInfo.end = theEnd;
451
453 check(::occtl_prim_make_arc_3pt(theGraph.get(), &anInfo, &anId));
454 return NodeId(anId);
455}
456
458inline NodeId make_arc_center(Graph& theGraph,
459 const double theRadius,
460 const double theStartAngle,
461 const double theEndAngle,
462 const ::occtl_axis2_placement_t& thePlacement = detail::default_ax2())
463{
464 ::occtl_prim_arc_center_info_t anInfo = OCCTL_PRIM_ARC_CENTER_INFO_INIT;
465 anInfo.placement = thePlacement;
466 anInfo.radius = theRadius;
467 anInfo.start_angle = theStartAngle;
468 anInfo.end_angle = theEndAngle;
469
471 check(::occtl_prim_make_arc_center(theGraph.get(), &anInfo, &anId));
472 return NodeId(anId);
473}
474
476inline NodeId make_spline(Graph& theGraph,
477 const std::vector<::occtl_point3_t>& thePoints,
478 const int theDegreeMin = 3,
479 const int theDegreeMax = 8,
480 const double theTolerance = 1.0e-3)
481{
482 ::occtl_prim_spline_info_t anInfo = OCCTL_PRIM_SPLINE_INFO_INIT;
483 anInfo.points = thePoints.empty() ? nullptr : thePoints.data();
484 anInfo.point_count = thePoints.size();
485 anInfo.degree_min = theDegreeMin;
486 anInfo.degree_max = theDegreeMax;
487 anInfo.tolerance = theTolerance;
488
490 check(::occtl_prim_make_spline(theGraph.get(), &anInfo, &anId));
491 return NodeId(anId);
492}
493
495inline NodeId make_plane(Graph& theGraph,
496 const double theWidth,
497 const double theHeight,
498 const ::occtl_axis2_placement_t& thePlacement = detail::default_ax2())
499{
500 ::occtl_prim_plane_info_t anInfo = OCCTL_PRIM_PLANE_INFO_INIT;
501 anInfo.placement = thePlacement;
502 anInfo.width = theWidth;
503 anInfo.height = theHeight;
504
506 check(::occtl_prim_make_plane(theGraph.get(), &anInfo, &anId));
507 return NodeId(anId);
508}
509
511inline NodeId make_disk(Graph& theGraph,
512 const double theRadius,
513 const ::occtl_axis2_placement_t& thePlacement = detail::default_ax2())
514{
515 ::occtl_prim_disk_info_t anInfo = OCCTL_PRIM_DISK_INFO_INIT;
516 anInfo.placement = thePlacement;
517 anInfo.radius = theRadius;
518
520 check(::occtl_prim_make_disk(theGraph.get(), &anInfo, &anId));
521 return NodeId(anId);
522}
523
526 const NodeId& theOuter,
527 const std::vector<NodeId>& theInners = {})
528{
529 std::vector<::occtl_node_id_t> anInnerIds;
530 anInnerIds.reserve(theInners.size());
531 for (const NodeId& anInner : theInners)
532 {
533 anInnerIds.push_back(anInner.get());
534 }
535
536 ::occtl_prim_planar_face_info_t anInfo = OCCTL_PRIM_PLANAR_FACE_INFO_INIT;
537 anInfo.outer_wire = theOuter.get();
538 anInfo.inner_wires = anInnerIds.empty() ? nullptr : anInnerIds.data();
539 anInfo.inner_wire_count = anInnerIds.size();
540
542 check(::occtl_prim_make_planar_face(theGraph.get(), &anInfo, &anId));
543 return NodeId(anId);
544}
545
548{
549 ::occtl_axis2_placement_t placement = detail::default_ax2();
550 double tolerance = 1.0e-7;
551 bool make_face = false;
552};
553
556 const std::vector<occtl_point3_t>& thePoints,
557 const std::vector<NodeId>& theVertices = {},
558 const ConvexHull2dOptions& theOptions = {})
559{
560 std::vector<::occtl_node_id_t> aVertexIds;
561 aVertexIds.reserve(theVertices.size());
562 for (const NodeId& aVertex : theVertices)
563 {
564 aVertexIds.push_back(aVertex.get());
565 }
566
567 ::occtl_prim_convex_hull_2d_info_t anInfo = OCCTL_PRIM_CONVEX_HULL_2D_INFO_INIT;
568 anInfo.placement = theOptions.placement;
569 anInfo.points = thePoints.empty() ? nullptr : thePoints.data();
570 anInfo.point_count = thePoints.size();
571 anInfo.vertices = aVertexIds.empty() ? nullptr : aVertexIds.data();
572 anInfo.vertex_count = aVertexIds.size();
573 anInfo.tolerance = theOptions.tolerance;
574 anInfo.make_face = theOptions.make_face ? 1 : 0;
575
577 check(::occtl_prim_make_convex_hull_2d(theGraph.get(), &anInfo, &anId));
578 return NodeId(anId);
579}
580
583{
584 ::occtl_direction3_t normal = {0.0, 0.0, 1.0};
586 bool approximate = false;
587};
588
590inline NodeId make_trace(Graph& theGraph,
591 const NodeId& thePath,
592 const double theWidth,
593 const TraceOptions& theOptions = {})
594{
595 ::occtl_prim_trace_info_t anInfo = OCCTL_PRIM_TRACE_INFO_INIT;
596 anInfo.path = thePath.get();
597 anInfo.width = theWidth;
598 anInfo.normal = theOptions.normal;
599 anInfo.join = theOptions.join;
600 anInfo.approximate = theOptions.approximate ? 1 : 0;
601
603 check(::occtl_prim_make_trace(theGraph.get(), &anInfo, &anId));
604 return NodeId(anId);
605}
606
609{
610 ::occtl_axis2_placement_t placement = detail::default_ax2();
611 bool use_parameter_range = false;
612 double first_parameter = 0.0;
613 double last_parameter = 0.0;
614};
615
618 const Curve2d& theCurve,
619 const ConstrainedCurveEdgeOptions& theOptions = {})
620{
621 ::occtl_prim_constrained_edge_info_t anInfo = OCCTL_PRIM_CONSTRAINED_EDGE_INFO_INIT;
622 anInfo.curve = theCurve.id();
623 anInfo.placement = theOptions.placement;
624 anInfo.use_parameter_range = theOptions.use_parameter_range ? 1 : 0;
625 anInfo.first_parameter = theOptions.first_parameter;
626 anInfo.last_parameter = theOptions.last_parameter;
627
629 check(::occtl_prim_make_constrained_edge(theGraph.get(), &anInfo, &anId));
630 return NodeId(anId);
631}
632
635{
636 ::occtl_prim_pipe_mode_t mode = OCCTL_PIPE_MODE_CORRECTED_FRENET;
637 ::occtl_axis2_placement_t mode_axis = detail::default_ax2();
638 ::occtl_direction3_t mode_binormal = {0.0, 0.0, 1.0};
640 bool with_contact = false;
641 bool with_correction = false;
642 bool make_solid = false;
643};
644
646inline NodeId make_pipe_shell(Graph& theGraph,
647 const NodeId& theSpineWire,
648 const std::vector<NodeId>& theProfiles,
649 const PipeShellOptions& theOptions = {})
650{
651 std::vector<::occtl_node_id_t> aProfiles;
652 aProfiles.reserve(theProfiles.size());
653 for (const NodeId& aP : theProfiles)
654 {
655 aProfiles.push_back(aP.get());
656 }
657
658 ::occtl_prim_pipe_shell_info_t anInfo = OCCTL_PRIM_PIPE_SHELL_INFO_INIT;
659 anInfo.spine_wire = theSpineWire.get();
660 anInfo.profiles = aProfiles.empty() ? nullptr : aProfiles.data();
661 anInfo.profile_count = aProfiles.size();
662 anInfo.mode = theOptions.mode;
663 anInfo.mode_axis = theOptions.mode_axis;
664 anInfo.mode_binormal = theOptions.mode_binormal;
665 anInfo.transition = theOptions.transition;
666 anInfo.with_contact = theOptions.with_contact ? 1 : 0;
667 anInfo.with_correction = theOptions.with_correction ? 1 : 0;
668 anInfo.make_solid = theOptions.make_solid ? 1 : 0;
669
671 check(::occtl_prim_make_pipe_shell(theGraph.get(), &anInfo, &anId));
672 return NodeId(anId);
673}
674
677{
678 double scale_first = 1.0;
679 double scale_last = 1.0;
680 ::occtl_prim_pipe_mode_t mode = OCCTL_PIPE_MODE_CORRECTED_FRENET;
681 ::occtl_axis2_placement_t mode_axis = detail::default_ax2();
682 ::occtl_direction3_t mode_binormal = {0.0, 0.0, 1.0};
684 bool with_contact = false;
685 bool with_correction = false;
686 bool make_solid = false;
687};
688
691 const NodeId& theSpineWire,
692 const NodeId& theProfile,
693 const PipeShellLinearLawOptions& theOptions = {})
694{
695 ::occtl_prim_pipe_shell_linear_law_info_t anInfo = OCCTL_PRIM_PIPE_SHELL_LINEAR_LAW_INFO_INIT;
696 anInfo.spine_wire = theSpineWire.get();
697 anInfo.profile = theProfile.get();
698 anInfo.scale_first = theOptions.scale_first;
699 anInfo.scale_last = theOptions.scale_last;
700 anInfo.mode = theOptions.mode;
701 anInfo.mode_axis = theOptions.mode_axis;
702 anInfo.mode_binormal = theOptions.mode_binormal;
703 anInfo.transition = theOptions.transition;
704 anInfo.with_contact = theOptions.with_contact ? 1 : 0;
705 anInfo.with_correction = theOptions.with_correction ? 1 : 0;
706 anInfo.make_solid = theOptions.make_solid ? 1 : 0;
707
709 check(::occtl_prim_make_pipe_shell_linear_law(theGraph.get(), &anInfo, &anId));
710 return NodeId(anId);
711}
712
715{
716 std::vector<double> parameters;
717 std::vector<double> scales;
718 ::occtl_prim_pipe_mode_t mode = OCCTL_PIPE_MODE_CORRECTED_FRENET;
719 ::occtl_axis2_placement_t mode_axis = detail::default_ax2();
720 ::occtl_direction3_t mode_binormal = {0.0, 0.0, 1.0};
722 bool with_contact = false;
723 bool with_correction = false;
724 bool make_solid = false;
725};
726
729 const NodeId& theSpineWire,
730 const NodeId& theProfile,
731 const PipeShellInterpolatedLawOptions& theOptions)
732{
734 OCCTL_PRIM_PIPE_SHELL_INTERPOLATED_LAW_INFO_INIT;
735 anInfo.spine_wire = theSpineWire.get();
736 anInfo.profile = theProfile.get();
737 anInfo.parameters = theOptions.parameters.empty() ? nullptr : theOptions.parameters.data();
738 anInfo.scales = theOptions.scales.empty() ? nullptr : theOptions.scales.data();
739 anInfo.sample_count =
740 theOptions.parameters.size() == theOptions.scales.size() ? theOptions.parameters.size() : 0;
741 anInfo.mode = theOptions.mode;
742 anInfo.mode_axis = theOptions.mode_axis;
743 anInfo.mode_binormal = theOptions.mode_binormal;
744 anInfo.transition = theOptions.transition;
745 anInfo.with_contact = theOptions.with_contact ? 1 : 0;
746 anInfo.with_correction = theOptions.with_correction ? 1 : 0;
747 anInfo.make_solid = theOptions.make_solid ? 1 : 0;
748
750 check(::occtl_prim_make_pipe_shell_interpolated_law(theGraph.get(), &anInfo, &anId));
751 return NodeId(anId);
752}
753
756{
757 double tolerance = 1.0e-3;
760 bool intersection = false;
761 bool self_intersection = false;
762 bool remove_internal_edges = false;
763};
764
767 const NodeId& theShape,
768 const double theOffset,
769 const OffsetOptions& theOptions = {})
770{
771 ::occtl_prim_offset_shape_info_t anInfo = OCCTL_PRIM_OFFSET_SHAPE_INFO_INIT;
772 anInfo.shape = theShape.get();
773 anInfo.offset = theOffset;
774 anInfo.tolerance = theOptions.tolerance;
775 anInfo.mode = theOptions.mode;
776 anInfo.join = theOptions.join;
777 anInfo.intersection = theOptions.intersection ? 1 : 0;
778 anInfo.self_intersection = theOptions.self_intersection ? 1 : 0;
779 anInfo.remove_internal_edges = theOptions.remove_internal_edges ? 1 : 0;
780
782 check(::occtl_prim_make_offset_shape(theGraph.get(), &anInfo, &anId));
783 return NodeId(anId);
784}
785
789 const NodeId& theSolid,
790 const std::vector<NodeId>& theClosingFaces,
791 const double theOffset,
792 const OffsetOptions& theOptions = {})
793{
794 std::vector<::occtl_node_id_t> aClosing;
795 aClosing.reserve(theClosingFaces.size());
796 for (const NodeId& aF : theClosingFaces)
797 {
798 aClosing.push_back(aF.get());
799 }
800
801 ::occtl_prim_thick_solid_info_t anInfo = OCCTL_PRIM_THICK_SOLID_INFO_INIT;
802 anInfo.solid = theSolid.get();
803 anInfo.closing_faces = aClosing.empty() ? nullptr : aClosing.data();
804 anInfo.closing_face_count = aClosing.size();
805 anInfo.offset = theOffset;
806 anInfo.tolerance = theOptions.tolerance;
807 anInfo.mode = theOptions.mode;
808 anInfo.join = theOptions.join;
809 anInfo.intersection = theOptions.intersection ? 1 : 0;
810 anInfo.self_intersection = theOptions.self_intersection ? 1 : 0;
811 anInfo.remove_internal_edges = theOptions.remove_internal_edges ? 1 : 0;
812
814 check(::occtl_prim_make_thick_solid(theGraph.get(), &anInfo, &anId));
815 return NodeId(anId);
816}
817
820 const NodeId& theProfile,
821 const double theHeight,
822 const double theTaperAngle)
823{
824 ::occtl_prim_draft_prism_info_t anInfo = OCCTL_PRIM_DRAFT_PRISM_INFO_INIT;
825 anInfo.profile = theProfile.get();
826 anInfo.height = theHeight;
827 anInfo.taper_angle = theTaperAngle;
828
830 check(::occtl_prim_make_draft_prism(theGraph.get(), &anInfo, &anId));
831 return NodeId(anId);
832}
833
836 const NodeId& theProfileFace,
837 const double theHeight,
838 const double theTaperAngle)
839{
840 ::occtl_prim_extrude_tapered_info_t anInfo = OCCTL_PRIM_EXTRUDE_TAPERED_INFO_INIT;
841 anInfo.profile_face = theProfileFace.get();
842 anInfo.height = theHeight;
843 anInfo.taper_angle = theTaperAngle;
844
846 check(::occtl_prim_make_extrude_tapered(theGraph.get(), &anInfo, &anId));
847 return NodeId(anId);
848}
849
852 const NodeId& theSectionA,
853 const NodeId& theSectionB)
854{
855 ::occtl_prim_ruled_surface_info_t anInfo = OCCTL_PRIM_RULED_SURFACE_INFO_INIT;
856 anInfo.section_a = theSectionA.get();
857 anInfo.section_b = theSectionB.get();
858
860 check(::occtl_prim_make_ruled_surface(theGraph.get(), &anInfo, &anId));
861 return NodeId(anId);
862}
863
866{
868 bool modify = true;
871 double length = 0.0;
872};
873
876inline NodeId make_feat_prism(Graph& theGraph,
877 const NodeId& theBaseShape,
878 const NodeId& theProfile,
879 const NodeId& theSketchFace,
880 const ::occtl_direction3_t& theDirection,
881 const FeatPrismOptions& theOptions = {})
882{
883 ::occtl_prim_feat_prism_info_t anInfo = OCCTL_PRIM_FEAT_PRISM_INFO_INIT;
884 anInfo.base_shape = theBaseShape.get();
885 anInfo.profile = theProfile.get();
886 anInfo.sketch_face = theSketchFace.get();
887 anInfo.direction = theDirection;
888 anInfo.combine = theOptions.combine;
889 anInfo.modify = theOptions.modify ? 1 : 0;
890 anInfo.until_kind = theOptions.until_kind;
891 anInfo.until_shape = theOptions.until_shape;
892 anInfo.length = theOptions.length;
893
895 check(::occtl_prim_make_feat_prism(theGraph.get(), &anInfo, &anId));
896 return NodeId(anId);
897}
898
901{
904 bool modify = true;
905 double limit = 0.0;
906};
907
910 const NodeId& theBaseShape,
911 const NodeId& theProfile,
912 const NodeId& theSketchFace,
913 const NodeId& theTargetShape,
914 const ::occtl_direction3_t& theDirection,
915 const ExtrudeUntilOptions& theOptions = {})
916{
917 ::occtl_prim_extrude_until_info_t anInfo = OCCTL_PRIM_EXTRUDE_UNTIL_INFO_INIT;
918 anInfo.base_shape = theBaseShape.get();
919 anInfo.profile = theProfile.get();
920 anInfo.sketch_face = theSketchFace.get();
921 anInfo.target_shape = theTargetShape.get();
922 anInfo.direction = theDirection;
923 anInfo.side = theOptions.side;
924 anInfo.combine = theOptions.combine;
925 anInfo.modify = theOptions.modify ? 1 : 0;
926 anInfo.limit = theOptions.limit;
927
929 check(::occtl_prim_make_extrude_until(theGraph.get(), &anInfo, &anId));
930 return NodeId(anId);
931}
932
935{
937 bool modify = true;
940 double length = 0.0;
941};
942
945 const NodeId& theBaseShape,
946 const NodeId& theProfileFace,
947 const NodeId& theSketchFace,
948 const double theTaperAngle,
949 const FeatDraftPrismOptions& theOptions = {})
950{
951 ::occtl_prim_feat_draft_prism_info_t anInfo = OCCTL_PRIM_FEAT_DRAFT_PRISM_INFO_INIT;
952 anInfo.base_shape = theBaseShape.get();
953 anInfo.profile_face = theProfileFace.get();
954 anInfo.sketch_face = theSketchFace.get();
955 anInfo.taper_angle = theTaperAngle;
956 anInfo.combine = theOptions.combine;
957 anInfo.modify = theOptions.modify ? 1 : 0;
958 anInfo.until_kind = theOptions.until_kind;
959 anInfo.until_shape = theOptions.until_shape;
960 anInfo.length = theOptions.length;
961
963 check(::occtl_prim_make_feat_draft_prism(theGraph.get(), &anInfo, &anId));
964 return NodeId(anId);
965}
966
969{
971 double p_from = 0.0;
972 double p_to = 0.0;
973 double length = 0.0;
974 bool with_control = true;
975};
976
979 const NodeId& theBaseShape,
980 const ::occtl_axis1_placement_t& theAxis,
981 const double theRadius,
982 const CylindricalHoleOptions& theOptions = {})
983{
984 ::occtl_prim_cylindrical_hole_info_t anInfo = OCCTL_PRIM_CYLINDRICAL_HOLE_INFO_INIT;
985 anInfo.base_shape = theBaseShape.get();
986 anInfo.axis = theAxis;
987 anInfo.radius = theRadius;
988 anInfo.kind = theOptions.kind;
989 anInfo.p_from = theOptions.p_from;
990 anInfo.p_to = theOptions.p_to;
991 anInfo.length = theOptions.length;
992 anInfo.with_control = theOptions.with_control ? 1 : 0;
993
995 check(::occtl_prim_make_cylindrical_hole(theGraph.get(), &anInfo, &anId));
996 return NodeId(anId);
997}
998
1000inline NodeId make_slot(Graph& theGraph,
1001 const double theLength,
1002 const double theWidth,
1003 const ::occtl_axis2_placement_t& thePlacement = detail::default_ax2())
1004{
1005 ::occtl_prim_slot_info_t anInfo = OCCTL_PRIM_SLOT_INFO_INIT;
1006 anInfo.placement = thePlacement;
1007 anInfo.length = theLength;
1008 anInfo.width = theWidth;
1009
1011 check(::occtl_prim_make_slot(theGraph.get(), &anInfo, &anId));
1012 return NodeId(anId);
1013}
1014
1016inline NodeId make_tube(Graph& theGraph,
1017 const double theOuterRadius,
1018 const double theInnerRadius,
1019 const double theHeight,
1020 const ::occtl_axis2_placement_t& thePlacement = detail::default_ax2())
1021{
1022 ::occtl_prim_tube_info_t anInfo = OCCTL_PRIM_TUBE_INFO_INIT;
1023 anInfo.placement = thePlacement;
1024 anInfo.outer_radius = theOuterRadius;
1025 anInfo.inner_radius = theInnerRadius;
1026 anInfo.height = theHeight;
1027
1029 check(::occtl_prim_make_tube(theGraph.get(), &anInfo, &anId));
1030 return NodeId(anId);
1031}
1032
1034inline NodeId make_helix(Graph& theGraph,
1035 const double theRadius,
1036 const double thePitch,
1037 const double theHeight,
1038 const ::occtl_axis2_placement_t& thePlacement = detail::default_ax2(),
1039 const bool theLeftHanded = false)
1040{
1041 ::occtl_prim_helix_info_t anInfo = OCCTL_PRIM_HELIX_INFO_INIT;
1042 anInfo.placement = thePlacement;
1043 anInfo.radius = theRadius;
1044 anInfo.pitch = thePitch;
1045 anInfo.height = theHeight;
1046 anInfo.left_handed = theLeftHanded ? 1 : 0;
1047
1049 check(::occtl_prim_make_helix(theGraph.get(), &anInfo, &anId));
1050 return NodeId(anId);
1051}
1052
1054inline NodeId make_fillet_2d(Graph& theGraph,
1055 const NodeId& theFace,
1056 const double theRadius,
1057 const std::vector<NodeId>& theVertices = {})
1058{
1059 std::vector<::occtl_node_id_t> aVerts;
1060 aVerts.reserve(theVertices.size());
1061 for (const NodeId& aV : theVertices)
1062 {
1063 aVerts.push_back(aV.get());
1064 }
1065
1066 ::occtl_prim_fillet_2d_info_t anInfo = OCCTL_PRIM_FILLET_2D_INFO_INIT;
1067 anInfo.face = theFace.get();
1068 anInfo.vertices = aVerts.empty() ? nullptr : aVerts.data();
1069 anInfo.vertex_count = aVerts.size();
1070 anInfo.radius = theRadius;
1071
1073 check(::occtl_prim_make_fillet_2d(theGraph.get(), &anInfo, &anId));
1074 return NodeId(anId);
1075}
1076
1079{
1080 double radius = 0.0;
1081 uint32_t search_steps = 32u;
1082};
1083
1086 const NodeId& theFace,
1087 const NodeId& theEdge,
1088 const FullRound2dOptions& theOptions = {})
1089{
1090 ::occtl_prim_full_round_2d_info_t anInfo = OCCTL_PRIM_FULL_ROUND_2D_INFO_INIT;
1091 anInfo.face = theFace.get();
1092 anInfo.edge = theEdge.get();
1093 anInfo.radius = theOptions.radius;
1094 anInfo.search_steps = theOptions.search_steps;
1095
1097 check(::occtl_prim_make_full_round_2d(theGraph.get(), &anInfo, &anId));
1098 return NodeId(anId);
1099}
1100
1101} // namespace occtl::prim
1102
1103#endif // OCCTL_HPP_PRIM_HPP
Non-owning reference to a 2D geometric curve stored in a graph.
Definition curves2d.hpp:56
occtl_rep_id_t id() const noexcept
Returns the representation id.
Definition curves2d.hpp:72
RAII handle for a topology graph. Mirrors occtl_graph_t.
Definition topo.hpp:1444
::occtl_graph_t * get() const noexcept
Borrows-it pointer to the underlying C handle, for direct ABI calls.
Definition topo.hpp:1494
Session-local identity of a graph node. Mirrors occtl_node_id_t.
Definition topo.hpp:52
::occtl_node_id_t get() const noexcept
Borrows-it view of the underlying C value type, for direct ABI calls.
Definition topo.hpp:64
C++ veneer for the core module.
void check(const ::occtl_status_t theStatus)
Throw on non-OK; otherwise a no-op.
Definition core.hpp:85
C++ veneer for 2D curve representations in the topology graph.
OCCT-Light: primitives module public API umbrella.
enum occtl_prim_until_kind occtl_prim_until_kind_t
enum occtl_prim_brake_side occtl_prim_brake_side_t
occtl_status_t occtl_prim_make_extrude_tapered(occtl_graph_t *graph, const occtl_prim_extrude_tapered_info_t *info, occtl_node_id_t *out_shape)
struct occtl_prim_face_from_boundary_curves_options occtl_prim_face_from_boundary_curves_options_t
occtl_status_t occtl_prim_make_face_from_curve_grid(occtl_graph_t *graph, const occtl_prim_face_from_curve_grid_options_t *options, occtl_node_id_t *out_face)
occtl_status_t occtl_prim_make_draft_prism(occtl_graph_t *graph, const occtl_prim_draft_prism_info_t *info, occtl_node_id_t *out_shape)
occtl_status_t occtl_prim_make_face_from_surface(occtl_graph_t *graph, const occtl_prim_face_from_surface_options_t *options, occtl_node_id_t *out_face)
occtl_status_t occtl_prim_make_feat_prism(occtl_graph_t *graph, const occtl_prim_feat_prism_info_t *info, occtl_node_id_t *out_shape)
occtl_status_t occtl_prim_make_ruled_surface(occtl_graph_t *graph, const occtl_prim_ruled_surface_info_t *info, occtl_node_id_t *out_shape)
occtl_status_t occtl_prim_make_brake_formed(const occtl_graph_t *graph, const occtl_prim_brake_formed_options_t *options, occtl_graph_t **out_graph, occtl_node_id_t *out_root)
@ OCCTL_EXTRUDE_UNTIL_NEXT
Definition occtl_prim_feature.h:721
enum occtl_prim_feat_combine occtl_prim_feat_combine_t
occtl_status_t occtl_prim_make_feat_draft_prism(occtl_graph_t *graph, const occtl_prim_feat_draft_prism_info_t *info, occtl_node_id_t *out_shape)
struct occtl_prim_face_from_point_grid_options occtl_prim_face_from_point_grid_options_t
enum occtl_prim_cylindrical_hole_kind occtl_prim_cylindrical_hole_kind_t
struct occtl_prim_brake_formed_options occtl_prim_brake_formed_options_t
struct occtl_prim_face_from_curve_grid_options occtl_prim_face_from_curve_grid_options_t
enum occtl_prim_extrude_until_side occtl_prim_extrude_until_side_t
@ OCCTL_UNTIL_LENGTH
Definition occtl_prim_feature.h:616
occtl_status_t occtl_prim_make_cylindrical_hole(occtl_graph_t *graph, const occtl_prim_cylindrical_hole_info_t *info, occtl_node_id_t *out_shape)
occtl_status_t occtl_prim_make_face_from_boundary_curves(occtl_graph_t *graph, const occtl_prim_face_from_boundary_curves_options_t *options, occtl_node_id_t *out_face)
@ OCCTL_FEAT_FUSE
Definition occtl_prim_feature.h:632
occtl_status_t occtl_prim_make_extrude_until(occtl_graph_t *graph, const occtl_prim_extrude_until_info_t *info, occtl_node_id_t *out_shape)
occtl_status_t occtl_prim_make_face_from_point_grid(occtl_graph_t *graph, const occtl_prim_face_from_point_grid_options_t *options, occtl_node_id_t *out_face)
struct occtl_prim_face_from_surface_options occtl_prim_face_from_surface_options_t
@ OCCTL_CYLINDRICAL_HOLE_THROUGH_ALL
Definition occtl_prim_feature.h:900
occtl_status_t occtl_prim_make_regular_polygon(occtl_graph_t *graph, const occtl_prim_regular_polygon_info_t *info, occtl_node_id_t *out_wire)
occtl_status_t occtl_prim_make_circle(occtl_graph_t *graph, const occtl_prim_circle_info_t *info, occtl_node_id_t *out_wire)
occtl_status_t occtl_prim_make_slot(occtl_graph_t *graph, const occtl_prim_slot_info_t *info, occtl_node_id_t *out_wire)
occtl_status_t occtl_prim_make_planar_face(occtl_graph_t *graph, const occtl_prim_planar_face_info_t *info, occtl_node_id_t *out_face)
occtl_status_t occtl_prim_make_rectangle(occtl_graph_t *graph, const occtl_prim_rectangle_info_t *info, occtl_node_id_t *out_wire)
occtl_status_t occtl_prim_make_fillet_2d(occtl_graph_t *graph, const occtl_prim_fillet_2d_info_t *info, occtl_node_id_t *out_face)
occtl_status_t occtl_prim_make_arc_3pt(occtl_graph_t *graph, const occtl_prim_arc_3pt_info_t *info, occtl_node_id_t *out_wire)
occtl_status_t occtl_prim_make_helix(occtl_graph_t *graph, const occtl_prim_helix_info_t *info, occtl_node_id_t *out_wire)
occtl_status_t occtl_prim_make_disk(occtl_graph_t *graph, const occtl_prim_disk_info_t *info, occtl_node_id_t *out_face)
occtl_status_t occtl_prim_make_full_round_2d(occtl_graph_t *graph, const occtl_prim_full_round_2d_info_t *info, occtl_node_id_t *out_face)
occtl_status_t occtl_prim_make_ellipse(occtl_graph_t *graph, const occtl_prim_ellipse_info_t *info, occtl_node_id_t *out_wire)
occtl_status_t occtl_prim_make_tube(occtl_graph_t *graph, const occtl_prim_tube_info_t *info, occtl_node_id_t *out_solid)
occtl_status_t occtl_prim_make_polyline(occtl_graph_t *graph, const occtl_prim_polyline_info_t *info, occtl_node_id_t *out_wire)
occtl_status_t occtl_prim_make_arc_center(occtl_graph_t *graph, const occtl_prim_arc_center_info_t *info, occtl_node_id_t *out_wire)
occtl_status_t occtl_prim_make_spline(occtl_graph_t *graph, const occtl_prim_spline_info_t *info, occtl_node_id_t *out_wire)
occtl_status_t occtl_prim_make_trace(occtl_graph_t *graph, const occtl_prim_trace_info_t *info, occtl_node_id_t *out_face)
occtl_status_t occtl_prim_make_constrained_edge(occtl_graph_t *graph, const occtl_prim_constrained_edge_info_t *info, occtl_node_id_t *out_edge)
occtl_status_t occtl_prim_make_convex_hull_2d(occtl_graph_t *graph, const occtl_prim_convex_hull_2d_info_t *info, occtl_node_id_t *out_node)
occtl_status_t occtl_prim_make_plane(occtl_graph_t *graph, const occtl_prim_plane_info_t *info, occtl_node_id_t *out_face)
occtl_status_t occtl_prim_make_wedge(occtl_graph_t *graph, const occtl_prim_wedge_info_t *info, occtl_node_id_t *out_solid)
occtl_status_t occtl_prim_make_cone(occtl_graph_t *graph, const occtl_prim_cone_info_t *info, occtl_node_id_t *out_solid)
occtl_status_t occtl_prim_make_torus(occtl_graph_t *graph, const occtl_prim_torus_info_t *info, occtl_node_id_t *out_solid)
occtl_status_t occtl_prim_make_cylinder(occtl_graph_t *graph, const occtl_prim_cylinder_info_t *info, occtl_node_id_t *out_solid)
occtl_status_t occtl_prim_make_sphere(occtl_graph_t *graph, const occtl_prim_sphere_info_t *info, occtl_node_id_t *out_solid)
occtl_status_t occtl_prim_make_box(occtl_graph_t *graph, const occtl_prim_box_info_t *info, occtl_node_id_t *out_solid)
occtl_status_t occtl_prim_make_halfspace(occtl_graph_t *graph, const occtl_prim_halfspace_info_t *info, occtl_node_id_t *out_solid)
@ OCCTL_PIPE_TRANSITION_MODIFIED
Definition occtl_prim_sweep.h:480
occtl_status_t occtl_prim_make_offset_shape(occtl_graph_t *graph, const occtl_prim_offset_shape_info_t *info, occtl_node_id_t *out_shape)
occtl_status_t occtl_prim_make_pipe_shell_interpolated_law(occtl_graph_t *graph, const occtl_prim_pipe_shell_interpolated_law_info_t *info, occtl_node_id_t *out_shape)
occtl_status_t occtl_prim_make_pipe(occtl_graph_t *graph, const occtl_prim_pipe_info_t *info, occtl_node_id_t *out_shape)
occtl_status_t occtl_prim_make_loft(occtl_graph_t *graph, const occtl_prim_loft_info_t *info, occtl_node_id_t *out_shape)
occtl_status_t occtl_prim_make_extrude_twist(occtl_graph_t *graph, const occtl_prim_extrude_twist_info_t *info, occtl_node_id_t *out_shape)
occtl_status_t occtl_prim_make_pipe_shell_linear_law(occtl_graph_t *graph, const occtl_prim_pipe_shell_linear_law_info_t *info, occtl_node_id_t *out_shape)
occtl_status_t occtl_prim_make_prism(occtl_graph_t *graph, const occtl_prim_prism_info_t *info, occtl_node_id_t *out_shape)
enum occtl_prim_pipe_transition occtl_prim_pipe_transition_t
@ OCCTL_OFFSET_MODE_SKIN
Definition occtl_prim_sweep.h:774
enum occtl_prim_offset_mode occtl_prim_offset_mode_t
occtl_status_t occtl_prim_make_twist_extrusion(occtl_graph_t *graph, const occtl_prim_twist_extrusion_info_t *info, occtl_node_id_t *out_shape)
occtl_status_t occtl_prim_make_revol(occtl_graph_t *graph, const occtl_prim_revol_info_t *info, occtl_node_id_t *out_shape)
@ OCCTL_PIPE_MODE_CORRECTED_FRENET
Definition occtl_prim_sweep.h:463
occtl_status_t occtl_prim_make_pipe_shell(occtl_graph_t *graph, const occtl_prim_pipe_shell_info_t *info, occtl_node_id_t *out_shape)
occtl_status_t occtl_prim_make_thick_solid(occtl_graph_t *graph, const occtl_prim_thick_solid_info_t *info, occtl_node_id_t *out_solid)
@ OCCTL_OFFSET_JOIN_ARC
Definition occtl_topo_build.h:209
@ OCCTL_TOPO_WIRE_OFFSET_2D_JOIN_ARC
Definition occtl_topo_build.h:194
enum occtl_offset_join_type occtl_offset_join_type_t
enum occtl_topo_wire_offset_2d_join occtl_topo_wire_offset_2d_join_t
#define OCCTL_NODE_ID_INVALID
Definition occtl_topo_types.h:138
struct occtl_graph occtl_graph_t
Definition occtl_topo_types.h:152
NodeId make_full_round_2d(Graph &theGraph, const NodeId &theFace, const NodeId &theEdge, const FullRound2dOptions &theOptions={})
Replaces a selected planar Face edge with a full-round arc.
Definition prim.hpp:1085
NodeId make_face_from_boundary_curves(Graph &theGraph, const FaceFromBoundaryCurvesOptions &theOptions)
Builds a Face directly from boundary-curve surface filling.
Definition prim.hpp:108
inline ::occtl_axis2_placement_t default_ax2() noexcept
Default axis2 placement: origin + Z (main) + X. Matches OCCT's gp::XOY().
Definition prim.hpp:62
NodeId make_convex_hull_2d(Graph &theGraph, const std::vector< occtl_point3_t > &thePoints, const std::vector< NodeId > &theVertices={}, const ConvexHull2dOptions &theOptions={})
Builds a convex-hull Wire or planar Face from points and Vertex nodes.
Definition prim.hpp:555
NodeId make_constrained_curve_edge(Graph &theGraph, const Curve2d &theCurve, const ConstrainedCurveEdgeOptions &theOptions={})
Places a 2D curve on a sketch plane and inserts the resulting Edge.
Definition prim.hpp:617
NodeId make_pipe_shell(Graph &theGraph, const NodeId &theSpineWire, const std::vector< NodeId > &theProfiles, const PipeShellOptions &theOptions={})
Rich pipe-shell sweep with explicit mode / transition / contact control.
Definition prim.hpp:646
NodeId make_revol(Graph &theGraph, const NodeId &theProfile, const ::occtl_axis1_placement_t &theAxis, const double theAngle=6.283185307179586, const bool theCopy=false)
Builds a revolution of theProfile around theAxis by theAngle radians.
Definition prim.hpp:306
NodeId make_arc_center(Graph &theGraph, const double theRadius, const double theStartAngle, const double theEndAngle, const ::occtl_axis2_placement_t &thePlacement=detail::default_ax2())
Builds a circular-arc Wire from a center frame, radius, and angle range.
Definition prim.hpp:458
NodeId make_regular_polygon(Graph &theGraph, const int theSides, const double theCircumradius, const ::occtl_axis2_placement_t &thePlacement=detail::default_ax2(), const double theRotation=0.0)
Builds a regular-polygon Wire inscribed in a circle.
Definition prim.hpp:377
NodeId make_tube(Graph &theGraph, const double theOuterRadius, const double theInnerRadius, const double theHeight, const ::occtl_axis2_placement_t &thePlacement=detail::default_ax2())
Builds a hollow-cylinder (tube) Solid.
Definition prim.hpp:1016
::occtl_prim_brake_side_t BrakeSide
Brake-forming offset side.
Definition prim.hpp:54
NodeId make_fillet_2d(Graph &theGraph, const NodeId &theFace, const double theRadius, const std::vector< NodeId > &theVertices={})
Rounds every corner of a planar Face to a uniform radius.
Definition prim.hpp:1054
NodeId make_planar_face(Graph &theGraph, const NodeId &theOuter, const std::vector< NodeId > &theInners={})
Builds a planar Face from a closed outer Wire and optional inner Wires (holes).
Definition prim.hpp:525
NodeId make_face_from_point_grid(Graph &theGraph, const FaceFromPointGridOptions &theOptions)
Builds a Face directly from a point-grid B-spline surface.
Definition prim.hpp:100
NodeId make_extrude_tapered(Graph &theGraph, const NodeId &theProfileFace, const double theHeight, const double theTaperAngle)
Builds a tapered extrusion solid from one Face profile.
Definition prim.hpp:835
NodeId make_slot(Graph &theGraph, const double theLength, const double theWidth, const ::occtl_axis2_placement_t &thePlacement=detail::default_ax2())
Builds a closed slot (stadium) Wire.
Definition prim.hpp:1000
NodeId make_thick_solid(Graph &theGraph, const NodeId &theSolid, const std::vector< NodeId > &theClosingFaces, const double theOffset, const OffsetOptions &theOptions={})
Hollows theSolid into a thick-walled solid (the "shell" CAD op). theClosingFaces are dropped to leave...
Definition prim.hpp:788
NodeId make_loft(Graph &theGraph, const std::vector< NodeId > &theSections, const bool theIsSolid=false, const bool theRuled=false, const double thePres3d=1.0e-6)
Lofts a sequence of Wire / Vertex sections into a shell or solid.
Definition prim.hpp:336
NodeId make_prism(Graph &theGraph, const NodeId &theProfile, const ::occtl_vector3_t &theDirection, const bool theCopy=false, const bool theCanonize=true)
Builds a linear extrusion of theProfile by theDirection.
Definition prim.hpp:233
NodeId make_pipe(Graph &theGraph, const NodeId &theProfile, const NodeId &theSpineWire)
Sweeps theProfile along theSpineWire.
Definition prim.hpp:324
NodeId make_sphere(Graph &theGraph, const double theRadius, const ::occtl_axis2_placement_t &thePlacement=detail::default_ax2())
Builds a Sphere and returns its Solid NodeId. Throws on failure.
Definition prim.hpp:135
NodeId make_box(Graph &theGraph, const double theDx, const double theDy, const double theDz, const ::occtl_axis2_placement_t &thePlacement=detail::default_ax2())
Builds a Box and returns its Solid NodeId. Throws on failure.
Definition prim.hpp:74
NodeId make_torus(Graph &theGraph, const double theMajor, const double theMinor, const ::occtl_axis2_placement_t &thePlacement=detail::default_ax2())
Builds a Torus and returns its Solid NodeId. Throws on failure.
Definition prim.hpp:183
std::pair< Graph, NodeId > make_brake_formed(const Graph &theGraph, const BrakeFormedOptions &theOptions)
Builds a sheet-metal brake-formed solid from a planar bend line.
Definition prim.hpp:125
NodeId make_cylinder(Graph &theGraph, const double theRadius, const double theHeight, const ::occtl_axis2_placement_t &thePlacement=detail::default_ax2())
Builds a Cylinder and returns its Solid NodeId. Throws on failure.
Definition prim.hpp:149
NodeId make_plane(Graph &theGraph, const double theWidth, const double theHeight, const ::occtl_axis2_placement_t &thePlacement=detail::default_ax2())
Builds a rectangular planar Face.
Definition prim.hpp:495
NodeId make_disk(Graph &theGraph, const double theRadius, const ::occtl_axis2_placement_t &thePlacement=detail::default_ax2())
Builds a circular planar Face.
Definition prim.hpp:511
NodeId make_ellipse(Graph &theGraph, const double theMajor, const double theMinor, const ::occtl_axis2_placement_t &thePlacement=detail::default_ax2())
Builds a closed elliptical Wire.
Definition prim.hpp:426
NodeId make_cone(Graph &theGraph, const double theR1, const double theR2, const double theHeight, const ::occtl_axis2_placement_t &thePlacement=detail::default_ax2())
Builds a Cone and returns its Solid NodeId. Throws on failure.
Definition prim.hpp:165
NodeId make_cylindrical_hole(Graph &theGraph, const NodeId &theBaseShape, const ::occtl_axis1_placement_t &theAxis, const double theRadius, const CylindricalHoleOptions &theOptions={})
Cuts a cylindrical hole feature into theBaseShape.
Definition prim.hpp:978
NodeId make_draft_prism(Graph &theGraph, const NodeId &theProfile, const double theHeight, const double theTaperAngle)
Builds a tapered prism solid from one Face profile.
Definition prim.hpp:819
NodeId make_wedge(Graph &theGraph, const double theDx, const double theDy, const double theDz, const double theLtx, const ::occtl_axis2_placement_t &thePlacement=detail::default_ax2())
Builds a right-angular Wedge and returns its Solid NodeId. Throws on failure.
Definition prim.hpp:199
NodeId make_pipe_shell_linear_law(Graph &theGraph, const NodeId &theSpineWire, const NodeId &theProfile, const PipeShellLinearLawOptions &theOptions={})
Rich pipe-shell sweep with linear profile scaling along the spine.
Definition prim.hpp:690
NodeId make_feat_draft_prism(Graph &theGraph, const NodeId &theBaseShape, const NodeId &theProfileFace, const NodeId &theSketchFace, const double theTaperAngle, const FeatDraftPrismOptions &theOptions={})
Builds a draft-prism feature on an existing body.
Definition prim.hpp:944
NodeId make_offset_shape(Graph &theGraph, const NodeId &theShape, const double theOffset, const OffsetOptions &theOptions={})
Builds an offset of theShape (wire / face / shell / solid).
Definition prim.hpp:766
NodeId make_face_from_surface(Graph &theGraph, const FaceFromSurfaceOptions &theOptions)
Builds a Face from a surface handle and optional boundary wires.
Definition prim.hpp:92
NodeId make_halfspace(Graph &theGraph, const NodeId &theFace, const ::occtl_point3_t &theRefPoint)
Builds a HalfSpace bounded by theFace on the side of theRefPoint.
Definition prim.hpp:219
NodeId make_ruled_surface(Graph &theGraph, const NodeId &theSectionA, const NodeId &theSectionB)
Builds a ruled Face or Shell between two Edge or Wire sections.
Definition prim.hpp:851
NodeId make_circle(Graph &theGraph, const double theRadius, const ::occtl_axis2_placement_t &thePlacement=detail::default_ax2())
Builds a closed circular Wire.
Definition prim.hpp:412
NodeId make_rectangle(Graph &theGraph, const double theWidth, const double theHeight, const ::occtl_axis2_placement_t &thePlacement=detail::default_ax2())
Builds a closed rectangle Wire centred on thePlacement.
Definition prim.hpp:396
NodeId make_spline(Graph &theGraph, const std::vector<::occtl_point3_t > &thePoints, const int theDegreeMin=3, const int theDegreeMax=8, const double theTolerance=1.0e-3)
Builds a B-spline Wire approximating points.
Definition prim.hpp:476
NodeId make_trace(Graph &theGraph, const NodeId &thePath, const double theWidth, const TraceOptions &theOptions={})
Builds a constant-width planar Face around an Edge or open Wire path.
Definition prim.hpp:590
NodeId make_twist_extrusion(Graph &theGraph, const NodeId &theProfileWire, const ::occtl_axis1_placement_t &theAxis, const double theHeight, const double theAngle, const TwistExtrusionOptions &theOptions={})
Builds a twisted extrusion of a closed Wire profile.
Definition prim.hpp:260
NodeId make_pipe_shell_interpolated_law(Graph &theGraph, const NodeId &theSpineWire, const NodeId &theProfile, const PipeShellInterpolatedLawOptions &theOptions)
Rich pipe-shell sweep with interpolated profile scaling along the spine.
Definition prim.hpp:728
NodeId make_extrude_until(Graph &theGraph, const NodeId &theBaseShape, const NodeId &theProfile, const NodeId &theSketchFace, const NodeId &theTargetShape, const ::occtl_direction3_t &theDirection, const ExtrudeUntilOptions &theOptions={})
Builds a feature extrusion from a profile until a target shape.
Definition prim.hpp:909
NodeId make_arc_3pt(Graph &theGraph, const ::occtl_point3_t &theStart, const ::occtl_point3_t &theVia, const ::occtl_point3_t &theEnd)
Builds a circular-arc Wire through three points.
Definition prim.hpp:442
NodeId make_extrude_twist(Graph &theGraph, const NodeId &theProfileWire, const ::occtl_axis1_placement_t &theAxis, const double theHeight, const double theAngle, const TwistExtrusionOptions &theOptions={})
Builds a twisted extrusion of a closed Wire profile.
Definition prim.hpp:283
NodeId make_face_from_curve_grid(Graph &theGraph, const FaceFromCurveGridOptions &theOptions)
Builds a Face directly from a curve-grid Gordon surface.
Definition prim.hpp:117
NodeId make_polyline(Graph &theGraph, const std::vector<::occtl_point3_t > &thePoints, const bool theClosed=false)
Builds an open or closed polyline Wire from thePoints.
Definition prim.hpp:362
NodeId make_helix(Graph &theGraph, const double theRadius, const double thePitch, const double theHeight, const ::occtl_axis2_placement_t &thePlacement=detail::default_ax2(), const bool theLeftHanded=false)
Builds a helical Wire.
Definition prim.hpp:1034
NodeId make_feat_prism(Graph &theGraph, const NodeId &theBaseShape, const NodeId &theProfile, const NodeId &theSketchFace, const ::occtl_direction3_t &theDirection, const FeatPrismOptions &theOptions={})
Builds a feature prism — extrude a profile on an existing body until a target / length / through all.
Definition prim.hpp:876
Options for make_constrained_curve_edge.
Definition prim.hpp:609
Options for make_convex_hull_2d.
Definition prim.hpp:548
Options for make_cylindrical_hole.
Definition prim.hpp:969
Options for make_extrude_until.
Definition prim.hpp:901
Options for make_feat_draft_prism.
Definition prim.hpp:935
Options for make_feat_prism.
Definition prim.hpp:866
Options for make_full_round_2d.
Definition prim.hpp:1079
Options for make_offset_shape and make_thick_solid.
Definition prim.hpp:756
Options for make_pipe_shell_interpolated_law.
Definition prim.hpp:715
Options for make_pipe_shell_linear_law.
Definition prim.hpp:677
Options for make_pipe_shell. Mirrors the C info struct in a more idiomatic form.
Definition prim.hpp:635
Options for make_trace.
Definition prim.hpp:583
Options for make_twist_extrusion.
Definition prim.hpp:252
Definition occtl_geom.h:128
Definition occtl_geom.h:98
Definition occtl_topo_types.h:50
Definition occtl_prim_sketch.h:660
occtl_point3_t via
Definition occtl_prim_sketch.h:664
occtl_point3_t start
Definition occtl_prim_sketch.h:663
occtl_point3_t end
Definition occtl_prim_sketch.h:665
Definition occtl_prim_sketch.h:720
double radius
Definition occtl_prim_sketch.h:724
double end_angle
Definition occtl_prim_sketch.h:726
double start_angle
Definition occtl_prim_sketch.h:725
occtl_axis2_placement_t placement
Definition occtl_prim_sketch.h:723
Definition occtl_prim_solid.h:48
double dz
Definition occtl_prim_solid.h:54
occtl_axis2_placement_t placement
Definition occtl_prim_solid.h:51
double dx
Definition occtl_prim_solid.h:52
double dy
Definition occtl_prim_solid.h:53
Definition occtl_prim_feature.h:339
Definition occtl_prim_sketch.h:234
double radius
Definition occtl_prim_sketch.h:238
occtl_axis2_placement_t placement
Definition occtl_prim_sketch.h:237
Definition occtl_prim_solid.h:251
double height
Definition occtl_prim_solid.h:257
double r2
Definition occtl_prim_solid.h:256
occtl_axis2_placement_t placement
Definition occtl_prim_solid.h:254
double r1
Definition occtl_prim_solid.h:255
Definition occtl_prim_sketch.h:581
occtl_axis2_placement_t placement
Definition occtl_prim_sketch.h:585
occtl_rep_id_t curve
Definition occtl_prim_sketch.h:584
double last_parameter
Definition occtl_prim_sketch.h:588
double first_parameter
Definition occtl_prim_sketch.h:587
int32_t use_parameter_range
Definition occtl_prim_sketch.h:586
Definition occtl_prim_sketch.h:423
occtl_axis2_placement_t placement
Definition occtl_prim_sketch.h:426
size_t point_count
Definition occtl_prim_sketch.h:428
const occtl_node_id_t * vertices
Definition occtl_prim_sketch.h:429
double tolerance
Definition occtl_prim_sketch.h:431
const occtl_point3_t * points
Definition occtl_prim_sketch.h:427
size_t vertex_count
Definition occtl_prim_sketch.h:430
int32_t make_face
Definition occtl_prim_sketch.h:432
Definition occtl_prim_solid.h:184
occtl_axis2_placement_t placement
Definition occtl_prim_solid.h:187
double height
Definition occtl_prim_solid.h:189
double radius
Definition occtl_prim_solid.h:188
Definition occtl_prim_feature.h:921
double p_to
Definition occtl_prim_feature.h:929
occtl_prim_cylindrical_hole_kind_t kind
Definition occtl_prim_feature.h:927
int32_t with_control
Definition occtl_prim_feature.h:931
occtl_node_id_t base_shape
Definition occtl_prim_feature.h:924
occtl_axis1_placement_t axis
Definition occtl_prim_feature.h:925
double length
Definition occtl_prim_feature.h:930
double radius
Definition occtl_prim_feature.h:926
double p_from
Definition occtl_prim_feature.h:928
Definition occtl_prim_sketch.h:912
occtl_axis2_placement_t placement
Definition occtl_prim_sketch.h:915
double radius
Definition occtl_prim_sketch.h:916
Definition occtl_prim_feature.h:423
occtl_node_id_t profile
Definition occtl_prim_feature.h:426
double taper_angle
Definition occtl_prim_feature.h:428
double height
Definition occtl_prim_feature.h:427
Definition occtl_prim_sketch.h:292
double minor
Definition occtl_prim_sketch.h:297
occtl_axis2_placement_t placement
Definition occtl_prim_sketch.h:295
double major
Definition occtl_prim_sketch.h:296
Definition occtl_prim_feature.h:488
double taper_angle
Definition occtl_prim_feature.h:493
double height
Definition occtl_prim_feature.h:492
occtl_node_id_t profile_face
Definition occtl_prim_feature.h:491
Definition occtl_prim_sweep.h:195
double height
Definition occtl_prim_sweep.h:200
int32_t ruled
Definition occtl_prim_sweep.h:204
occtl_axis1_placement_t axis
Definition occtl_prim_sweep.h:199
double pres3d
Definition occtl_prim_sweep.h:205
int32_t section_count
Definition occtl_prim_sweep.h:202
double angle
Definition occtl_prim_sweep.h:201
int32_t make_solid
Definition occtl_prim_sweep.h:203
occtl_node_id_t profile_wire
Definition occtl_prim_sweep.h:198
Definition occtl_prim_feature.h:738
int32_t modify
Definition occtl_prim_feature.h:748
occtl_direction3_t direction
Definition occtl_prim_feature.h:745
occtl_node_id_t target_shape
Definition occtl_prim_feature.h:744
occtl_node_id_t sketch_face
Definition occtl_prim_feature.h:743
occtl_prim_extrude_until_side_t side
Definition occtl_prim_feature.h:746
double limit
Definition occtl_prim_feature.h:749
occtl_prim_feat_combine_t combine
Definition occtl_prim_feature.h:747
occtl_node_id_t base_shape
Definition occtl_prim_feature.h:741
occtl_node_id_t profile
Definition occtl_prim_feature.h:742
Definition occtl_prim_feature.h:191
Definition occtl_prim_feature.h:260
Definition occtl_prim_feature.h:122
Definition occtl_prim_feature.h:46
Definition occtl_prim_feature.h:818
occtl_node_id_t profile_face
Definition occtl_prim_feature.h:822
double length
Definition occtl_prim_feature.h:829
occtl_node_id_t base_shape
Definition occtl_prim_feature.h:821
int32_t modify
Definition occtl_prim_feature.h:826
occtl_prim_feat_combine_t combine
Definition occtl_prim_feature.h:825
occtl_prim_until_kind_t until_kind
Definition occtl_prim_feature.h:827
double taper_angle
Definition occtl_prim_feature.h:824
occtl_node_id_t sketch_face
Definition occtl_prim_feature.h:823
occtl_node_id_t until_shape
Definition occtl_prim_feature.h:828
Definition occtl_prim_feature.h:646
occtl_node_id_t base_shape
Definition occtl_prim_feature.h:649
occtl_direction3_t direction
Definition occtl_prim_feature.h:652
occtl_prim_until_kind_t until_kind
Definition occtl_prim_feature.h:655
occtl_node_id_t until_shape
Definition occtl_prim_feature.h:656
double length
Definition occtl_prim_feature.h:657
occtl_node_id_t sketch_face
Definition occtl_prim_feature.h:651
occtl_prim_feat_combine_t combine
Definition occtl_prim_feature.h:653
occtl_node_id_t profile
Definition occtl_prim_feature.h:650
int32_t modify
Definition occtl_prim_feature.h:654
Definition occtl_prim_sketch.h:1172
occtl_node_id_t face
Definition occtl_prim_sketch.h:1175
const occtl_node_id_t * vertices
Definition occtl_prim_sketch.h:1177
double radius
Definition occtl_prim_sketch.h:1179
size_t vertex_count
Definition occtl_prim_sketch.h:1178
Definition occtl_prim_sketch.h:1241
uint32_t search_steps
Definition occtl_prim_sketch.h:1247
occtl_node_id_t face
Definition occtl_prim_sketch.h:1244
occtl_node_id_t edge
Definition occtl_prim_sketch.h:1245
double radius
Definition occtl_prim_sketch.h:1246
Definition occtl_prim_solid.h:459
occtl_node_id_t face
Definition occtl_prim_solid.h:462
occtl_point3_t reference_point
Definition occtl_prim_solid.h:463
Definition occtl_prim_sketch.h:1105
int32_t left_handed
Definition occtl_prim_sketch.h:1112
double height
Definition occtl_prim_sketch.h:1111
occtl_axis2_placement_t placement
Definition occtl_prim_sketch.h:1108
double pitch
Definition occtl_prim_sketch.h:1110
double radius
Definition occtl_prim_sketch.h:1109
Definition occtl_prim_sweep.h:405
size_t section_count
Definition occtl_prim_sweep.h:409
int32_t is_solid
Definition occtl_prim_sweep.h:410
double pres3d
Definition occtl_prim_sweep.h:412
int32_t ruled
Definition occtl_prim_sweep.h:411
const occtl_node_id_t * sections
Definition occtl_prim_sweep.h:408
Definition occtl_prim_sweep.h:790
int32_t self_intersection
Definition occtl_prim_sweep.h:800
occtl_offset_join_type_t join
Definition occtl_prim_sweep.h:797
int32_t intersection
Definition occtl_prim_sweep.h:799
occtl_node_id_t shape
Definition occtl_prim_sweep.h:793
int32_t remove_internal_edges
Definition occtl_prim_sweep.h:802
double offset
Definition occtl_prim_sweep.h:794
double tolerance
Definition occtl_prim_sweep.h:795
occtl_prim_offset_mode_t mode
Definition occtl_prim_sweep.h:796
Definition occtl_prim_sweep.h:341
occtl_node_id_t profile
Definition occtl_prim_sweep.h:344
occtl_node_id_t spine_wire
Definition occtl_prim_sweep.h:345
Definition occtl_prim_sweep.h:497
int32_t with_contact
Definition occtl_prim_sweep.h:507
occtl_prim_pipe_mode_t mode
Definition occtl_prim_sweep.h:503
size_t profile_count
Definition occtl_prim_sweep.h:502
occtl_axis2_placement_t mode_axis
Definition occtl_prim_sweep.h:504
int32_t with_correction
Definition occtl_prim_sweep.h:508
int32_t make_solid
Definition occtl_prim_sweep.h:509
occtl_prim_pipe_transition_t transition
Definition occtl_prim_sweep.h:506
occtl_direction3_t mode_binormal
Definition occtl_prim_sweep.h:505
occtl_node_id_t spine_wire
Definition occtl_prim_sweep.h:500
const occtl_node_id_t * profiles
Definition occtl_prim_sweep.h:501
Definition occtl_prim_sweep.h:682
int32_t make_solid
Definition occtl_prim_sweep.h:697
occtl_node_id_t spine_wire
Definition occtl_prim_sweep.h:685
const double * parameters
Definition occtl_prim_sweep.h:688
int32_t with_contact
Definition occtl_prim_sweep.h:695
occtl_prim_pipe_mode_t mode
Definition occtl_prim_sweep.h:691
const double * scales
Definition occtl_prim_sweep.h:689
size_t sample_count
Definition occtl_prim_sweep.h:690
occtl_axis2_placement_t mode_axis
Definition occtl_prim_sweep.h:692
occtl_direction3_t mode_binormal
Definition occtl_prim_sweep.h:693
occtl_node_id_t profile
Definition occtl_prim_sweep.h:686
int32_t with_correction
Definition occtl_prim_sweep.h:696
occtl_prim_pipe_transition_t transition
Definition occtl_prim_sweep.h:694
Definition occtl_prim_sweep.h:585
double scale_last
Definition occtl_prim_sweep.h:591
occtl_node_id_t spine_wire
Definition occtl_prim_sweep.h:588
occtl_node_id_t profile
Definition occtl_prim_sweep.h:589
double scale_first
Definition occtl_prim_sweep.h:590
int32_t make_solid
Definition occtl_prim_sweep.h:598
int32_t with_contact
Definition occtl_prim_sweep.h:596
occtl_prim_pipe_transition_t transition
Definition occtl_prim_sweep.h:595
occtl_axis2_placement_t mode_axis
Definition occtl_prim_sweep.h:593
occtl_direction3_t mode_binormal
Definition occtl_prim_sweep.h:594
int32_t with_correction
Definition occtl_prim_sweep.h:597
occtl_prim_pipe_mode_t mode
Definition occtl_prim_sweep.h:592
Definition occtl_prim_sketch.h:356
occtl_node_id_t outer_wire
Definition occtl_prim_sketch.h:359
size_t inner_wire_count
Definition occtl_prim_sketch.h:362
const occtl_node_id_t * inner_wires
Definition occtl_prim_sketch.h:361
Definition occtl_prim_sketch.h:850
double width
Definition occtl_prim_sketch.h:854
double height
Definition occtl_prim_sketch.h:855
occtl_axis2_placement_t placement
Definition occtl_prim_sketch.h:853
Definition occtl_prim_sketch.h:44
size_t point_count
Definition occtl_prim_sketch.h:48
const occtl_point3_t * points
Definition occtl_prim_sketch.h:47
int32_t closed
Definition occtl_prim_sketch.h:49
Definition occtl_prim_sweep.h:46
occtl_node_id_t profile
Definition occtl_prim_sweep.h:49
occtl_vector3_t direction
Definition occtl_prim_sweep.h:50
int32_t canonize
Definition occtl_prim_sweep.h:52
int32_t copy
Definition occtl_prim_sweep.h:51
Definition occtl_prim_sketch.h:171
double width
Definition occtl_prim_sketch.h:175
double height
Definition occtl_prim_sketch.h:176
occtl_axis2_placement_t placement
Definition occtl_prim_sketch.h:174
Definition occtl_prim_sketch.h:106
int32_t sides
Definition occtl_prim_sketch.h:111
double circumradius
Definition occtl_prim_sketch.h:110
double rotation
Definition occtl_prim_sketch.h:112
occtl_axis2_placement_t placement
Definition occtl_prim_sketch.h:109
Definition occtl_prim_sweep.h:273
double angle
Definition occtl_prim_sweep.h:278
occtl_axis1_placement_t axis
Definition occtl_prim_sweep.h:277
occtl_node_id_t profile
Definition occtl_prim_sweep.h:276
int32_t copy
Definition occtl_prim_sweep.h:279
Definition occtl_prim_feature.h:552
occtl_node_id_t section_a
Definition occtl_prim_feature.h:555
occtl_node_id_t section_b
Definition occtl_prim_feature.h:556
Definition occtl_prim_sketch.h:973
double length
Definition occtl_prim_sketch.h:977
occtl_axis2_placement_t placement
Definition occtl_prim_sketch.h:976
double width
Definition occtl_prim_sketch.h:978
Definition occtl_prim_solid.h:118
double radius
Definition occtl_prim_solid.h:122
occtl_axis2_placement_t placement
Definition occtl_prim_solid.h:121
Definition occtl_prim_sketch.h:785
double tolerance
Definition occtl_prim_sketch.h:792
int32_t degree_max
Definition occtl_prim_sketch.h:791
int32_t degree_min
Definition occtl_prim_sketch.h:790
size_t point_count
Definition occtl_prim_sketch.h:789
const occtl_point3_t * points
Definition occtl_prim_sketch.h:788
Definition occtl_prim_sweep.h:867
occtl_node_id_t solid
Definition occtl_prim_sweep.h:870
double offset
Definition occtl_prim_sweep.h:874
int32_t intersection
Definition occtl_prim_sweep.h:878
occtl_prim_offset_mode_t mode
Definition occtl_prim_sweep.h:876
int32_t self_intersection
Definition occtl_prim_sweep.h:879
int32_t remove_internal_edges
Definition occtl_prim_sweep.h:880
size_t closing_face_count
Definition occtl_prim_sweep.h:873
const occtl_node_id_t * closing_faces
Definition occtl_prim_sweep.h:872
double tolerance
Definition occtl_prim_sweep.h:875
occtl_offset_join_type_t join
Definition occtl_prim_sweep.h:877
Definition occtl_prim_solid.h:320
double r1
Definition occtl_prim_solid.h:324
double r2
Definition occtl_prim_solid.h:325
occtl_axis2_placement_t placement
Definition occtl_prim_solid.h:323
Definition occtl_prim_sketch.h:506
int32_t approximate
Definition occtl_prim_sketch.h:513
occtl_node_id_t path
Definition occtl_prim_sketch.h:509
occtl_topo_wire_offset_2d_join_t join
Definition occtl_prim_sketch.h:512
occtl_direction3_t normal
Definition occtl_prim_sketch.h:511
double width
Definition occtl_prim_sketch.h:510
Definition occtl_prim_sketch.h:1038
double inner_radius
Definition occtl_prim_sketch.h:1043
double outer_radius
Definition occtl_prim_sketch.h:1042
occtl_axis2_placement_t placement
Definition occtl_prim_sketch.h:1041
double height
Definition occtl_prim_sketch.h:1044
Definition occtl_prim_sweep.h:113
int32_t ruled
Definition occtl_prim_sweep.h:122
double pres3d
Definition occtl_prim_sweep.h:123
int32_t make_solid
Definition occtl_prim_sweep.h:121
occtl_node_id_t profile_wire
Definition occtl_prim_sweep.h:116
double height
Definition occtl_prim_sweep.h:118
occtl_axis1_placement_t axis
Definition occtl_prim_sweep.h:117
int32_t section_count
Definition occtl_prim_sweep.h:120
double angle
Definition occtl_prim_sweep.h:119
Definition occtl_prim_solid.h:390
double dy
Definition occtl_prim_solid.h:395
double ltx
Definition occtl_prim_solid.h:397
double dz
Definition occtl_prim_solid.h:396
double dx
Definition occtl_prim_solid.h:394
occtl_axis2_placement_t placement
Definition occtl_prim_solid.h:393
C++ veneer for the topo module.