sprk_parasolid.h
1 // Copyright (c) Tech Soft 3D, Inc.
2 //
3 // The information contained herein is confidential and proprietary to Tech Soft 3D, Inc.,
4 // and considered a trade secret as defined under civil and criminal statutes.
5 // Tech Soft 3D, Inc. shall pursue its civil and criminal remedies in the event of
6 // unauthorized use or misappropriation of its trade secrets. Use of this information
7 // by anyone other than authorized employees of Tech Soft 3D, Inc. is granted only under
8 // a written non-disclosure agreement, expressly prescribing the scope and manner of such use.
9 
10 #ifndef SPRK_PARASOLID_H
11 #define SPRK_PARASOLID_H
12 
13 #include "sprk.h"
14 
15 #ifdef _MSC_VER
16 #ifndef STATIC_APP
17 # ifdef SPRK_PARASOLID
18 # define PARASOLID_API __declspec (dllexport)
19 # else
20 # define PARASOLID_API __declspec (dllimport)
21 # endif
22 #endif
23 #else
24 # include <stddef.h>
25 # if defined(LINUX_SYSTEM) && defined(SPRK_PARASOLID)
26 # ifndef STATIC_APP
27 # define PARASOLID_API __attribute__ ((visibility ("default")))
28 # endif
29 # endif
30 #endif
31 
32 #ifndef PARASOLID_API
33 # define PARASOLID_API
34 #endif
35 
36 namespace HPS
37 {
39  class PARASOLID_API Parasolid
40  {
41  public:
42  typedef int ParasolidEntity;
43  class Viewport;
44 
45  typedef HPS::IntArray EntityArray;
46  typedef std::vector<double, HPS::Allocator<double>> DoubleArray;
47  typedef std::vector<Viewport, HPS::Allocator<Viewport>> ViewportArray;
48 
51  enum class TessellationLevel
52  {
53  ExtraLow,
54  Low,
55  Medium,
56  High,
57  ExtraHigh,
58  Custom,
59  };
60 
63  enum class Format
64  {
65  Text,
66  Binary,
67  NeutralBinary,
68  };
69 
72  enum class MismatchBehavior
73  {
74  Ignore,
75  Fail,
76  };
77 
81  {
82  Split,
83  Keep,
84  Fail,
85  };
86 
87  class PARASOLID_API Viewport
88  {
89  public:
90  Viewport();
91  Viewport(DoubleArray in_box, DPoint in_location, DVector in_z_direction, DVector in_x_direction);
92  void ShowViewport(DoubleArray & out_box, DPoint & out_location, DVector & out_z_direction, DVector & out_x_direction) const;
93 
94  bool operator==(Viewport const & in_viewport) const;
95  bool operator!=(Viewport const & in_viewport) const;
96  bool Equals(Viewport const & in_viewport) const;
97 
98  private:
99  DoubleArray box; //min xyz, max xyz
100  DPoint location;
101  DVector axis; //local z-direction
102  DVector reference_direction; //local x-direction. must be orthogonal to axis.
103  };
104 
108  enum class Ignore
109  {
110  Absolute,
111  FeatureToModelRatio,
112  FeatureToBodyRatio,
113  };
114 
115  class Facet
116  {
117  public:
121  enum class Shape
122  {
123  Any,
124  Cut,
125  Convex,
126  };
127 
131  enum class Match
132  {
133  Geometrical,
134  Topological,
135  Trimmed,
136  };
137 
141  enum class Density
142  {
143  ViewIndependent,
144  Silhouette,
145  Parallel,
146  SilhouetteAndParallel,
147  };
148 
152  enum class Degeneracy
153  {
154  MultipleVertices,
155  SingleVertex,
156  Average,
157  };
158 
163  {
164  Off,
165  OffNoAttributes,
166  OffRefreshAttributes,
167  On,
168  };
169 
170  class PARASOLID_API Tolerance
171  {
172  public:
173  Tolerance();
174  Tolerance(double curve_chord_tolerance, double curve_chord_maximum_length, double curve_chord_max_angle,
175  double surface_tolerance, double surface_max_angle);
176 
177  void ShowTolerance(double & out_curve_chord_tolerance, double & out_curve_chord_maximum_length, double & out_curve_chord_max_angle,
178  double & out_surface_tolerance, double & out_surface_max_angle) const;
179 
180  bool operator==(Tolerance const & in_tolerance) const;
181  bool operator!=(Tolerance const & in_tolerance) const;
182  bool Equals(Tolerance const & in_tolerance) const;
183 
184  private:
185  double curve_chord_tolerance;
186  double curve_chord_maximum_length;
187  double curve_chord_max_angle;
188  double surface_tolerance;
189  double surface_max_angle;
190  };
191  };
192 
193  class Line
194  {
195  public:
196  class Hatching
197  {
198  public:
199  enum class Planar
200  {
201  NoHatching,
202  ByAttribute,
203  ByVectorNoLocking,
204  ByVector,
205  };
206 
207  enum class Radial
208  {
209  NoHatching,
210  ByAttribute,
211  ByVectorNoLocking,
212  ByVector,
213  };
214 
215  enum class Parametric
216  {
217  NoHatching,
218  ByAttribute,
219  ByVectorNoLocking,
220  ByVector,
221  };
222  };
223 
224  enum class UnfixedBlends
225  {
226  Draw,
227  DoNotDraw,
228  ByAttribute,
229  };
230 
231  enum class Visibility
232  {
233  DoNotEvaluate,
234  NoHidden,
235  MarkHiddenAsInvisible,
236  Draft,
237  Custom,
238  };
239 
240  enum class Smooth
241  {
242  Indicate,
243  DoNotIndicate,
244  Draft,
245  };
246 
247  enum class Region
248  {
249  Output,
250  DoNotOutput,
251  ByAttribute,
252  };
253 
254  enum class Hierarchical
255  {
256  On,
257  Off,
258  NoGeometry,
259  Parameterized,
260  };
261 
262  enum class BCurveRendering
263  {
264  Polyline,
265  Bezier,
266  NURBS,
267  };
268 
270  {
271  DoNotAllow,
272  Allow,
273  AllowAndIntersectAll,
274  AllowAndIntersectPairs,
275  };
276  };
277 
278  typedef std::vector<Facet::Tolerance, HPS::Allocator<Facet::Tolerance>> ToleranceArray;
279  class FacetTessellationKit;
280  class LineTessellationKit;
281 
285  class PARASOLID_API Component : public HPS::Component
286  {
287  public:
289  Component();
290 
294  Component(HPS::Component const & in_that);
295 
298  Component(Parasolid::Component const & in_that);
299 
302  Component(Parasolid::Component && in_that);
303 
304  virtual ~Component();
305 
306  static const HPS::Type staticType = HPS::Type::ParasolidComponent;
307  HPS::Type ObjectType() const { return staticType; }
308 
309 #ifndef _MSC_VER
310  Component & operator=(Component const & in_that) = default;
311 #endif
312 
316  Component & operator=(Parasolid::Component && in_that);
317 
318 
321  ParasolidEntity GetParasolidEntity() const;
322 
328  void Tessellate(Parasolid::FacetTessellationKit const & in_facet_options, Parasolid::LineTessellationKit const & in_line_options);
329 
334  bool SetTransform(MatrixKit const & in_transform);
335 
340  bool AddTransform(MatrixKit const & in_transform);
341  };
342 
343  typedef std::vector<Component, HPS::Allocator<Component>> ComponentArray;
344 
347  class PARASOLID_API CADModel : public HPS::CADModel
348  {
349  public:
351  CADModel();
352 
357  CADModel(Component const & in_that);
358 
363  CADModel(HPS::CADModel const & in_that);
364 
367  CADModel(Parasolid::CADModel const & in_that);
368 
371  CADModel(Parasolid::CADModel && in_that);
372 
373  virtual ~CADModel();
374 
375  static const HPS::Type staticType = HPS::Type::ParasolidCADModel;
376  HPS::Type ObjectType() const { return staticType; }
377 
378 #if !defined(_MSC_VER) || _MSC_VER >= 1900
379  CADModel & operator=(Parasolid::CADModel const & in_that) = default;
380 #endif
381 
385  CADModel & operator=(Parasolid::CADModel && in_that);
386 
390  Component GetComponentFromEntity(ParasolidEntity in_entity);
391 
399  Component AddEntity(ParasolidEntity in_entity_to_add, FacetTessellationKit const & in_facet_tessellation, LineTessellationKit const & in_line_tessellation, Component const & in_owner = Component());
400 
404  void Tessellate(Parasolid::FacetTessellationKit const & in_facet_options, Parasolid::LineTessellationKit const & in_line_options);
405  };
406 
408  class PARASOLID_API Factory : public Sprocket
409  {
410  public:
415  static Component CreateComponent(HPS::Component const & in_owner, HPS::Component::ComponentType in_type, ParasolidEntity in_entity = 0);
416 
419  static CADModel CreateCADModel(Model const & in_model = HPS::Factory::CreateModel());
420 
427  static Component DeInstanceComponent(ComponentPath const & in_component_path);
428 
429  private:
431  Factory();
432  };
433 
435  class PARASOLID_API ImportNotifier : public IONotifier
436  {
437  public:
439  ImportNotifier();
440 
443  ImportNotifier(ImportNotifier const & in_that);
444 
449  ImportNotifier(IONotifier const & in_that);
450 
454  ImportNotifier(ImportNotifier && in_that);
455 
459  ImportNotifier & operator=(ImportNotifier && in_that);
460 
461  virtual ~ImportNotifier();
462 
463  static const HPS::Type staticType = HPS::Type::ParasolidImportNotifier;
464  HPS::Type ObjectType() const { return staticType; };
465 
469  ImportNotifier & operator=(ImportNotifier const & in_that);
470 
473  void Assign(ImportNotifier const & in_that);
474 
477  Parasolid::CADModel GetCADModel() const;
478 
481  Time GetImportTime() const;
482 
485  Time GetParseTime() const;
486  };
487 
488  class ImportOptionsKit;
489  class ExportOptionsKit;
490 
492  class PARASOLID_API File
493  {
494  public:
495 
500  static ImportNotifier Import(char const * in_file_name, ImportOptionsKit const & in_options);
501 
507  static ImportNotifier Import(EntityArray const & in_parts, FacetTessellationKit const & in_facet_options, LineTessellationKit const & in_line_options);
508 
513  static void Export(CADModel const & in_cad_model, char const * in_file_name, ExportOptionsKit const & in_options);
514 
515  private:
517  File();
518  };
519 
521  class PARASOLID_API ImportOptionsKit : public SprocketKit
522  {
523  public:
526 
529  ImportOptionsKit(ImportOptionsKit const & in_kit);
530 
535 
539  ImportOptionsKit & operator=(ImportOptionsKit && in_that);
540 
541  virtual ~ImportOptionsKit();
542 
543  static const HPS::Type staticType = HPS::Type::ParasolidImportOptionsKit;
544  HPS::Type ObjectType() const { return staticType; }
545 
549  static ImportOptionsKit GetDefault();
550 
553  void Set(ImportOptionsKit const & in_kit);
554 
557  void Show(ImportOptionsKit & out_kit) const;
558 
562  ImportOptionsKit & operator=(ImportOptionsKit const & in_kit);
563 
566  bool Empty() const;
567 
571  bool Equals(ImportOptionsKit const & in_kit) const;
572 
576  bool operator==(ImportOptionsKit const & in_kit) const;
577 
581  bool operator!=(ImportOptionsKit const & in_kit) const;
582 
589  ImportOptionsKit & SetFormat(Parasolid::Format in_format);
590 
597  ImportOptionsKit & SetUserFields(bool in_import_user_fields);
598 
605  ImportOptionsKit & SetAttributeMismatchBehavior(Parasolid::MismatchBehavior in_behavior);
606 
613  ImportOptionsKit & SetCompoundBodyBehavior(Parasolid::CompoundBodyBehavior in_behavior);
614 
619  ImportOptionsKit & SetFacetTessellation(Parasolid::FacetTessellationKit const & in_facet_tessellation_kit);
620 
625  ImportOptionsKit & SetLineTessellation(Parasolid::LineTessellationKit const & in_line_tessellation_kit);
626 
638  ImportOptionsKit & SetLocation(ComponentPath const & in_path, MatrixKit const & in_transform = MatrixKit());
639 
640 
643  ImportOptionsKit & UnsetFormat();
644 
647  ImportOptionsKit & UnsetUserFields();
648 
651  ImportOptionsKit & UnsetAttributeMismatchBehavior();
652 
655  ImportOptionsKit & UnsetCompoundBodyBehavior();
656 
659  ImportOptionsKit & UnsetFacetTessellation();
660 
663  ImportOptionsKit & UnsetLineTessellation();
664 
667  ImportOptionsKit & UnsetLocation();
668 
671  ImportOptionsKit & UnsetEverything();
672 
673 
677  bool ShowFormat(Parasolid::Format & out_format) const;
678 
682  bool ShowUserFields(bool & out_user_fields) const;
683 
687  bool ShowAttributeMismatchBehavior(Parasolid::MismatchBehavior & out_behavior) const;
688 
692  bool ShowCompoundBodyBehavior(Parasolid::CompoundBodyBehavior & out_behavior) const;
693 
697  bool ShowFacetTessellation(Parasolid::FacetTessellationKit & out_facet_tessellation) const;
698 
702  bool ShowLineTessellation(Parasolid::LineTessellationKit & out_line_tessellation) const;
703 
708  bool ShowLocation(ComponentPath & out_path, MatrixKit & out_transformation) const;
709 
710  };
711 
714  class PARASOLID_API FacetTessellationKit : public SprocketKit
715  {
716  public:
719 
723 
728 
732  FacetTessellationKit & operator=(FacetTessellationKit && in_that);
733 
734  virtual ~FacetTessellationKit();
735 
736  static const HPS::Type staticType = HPS::Type::ParasolidFacetTessellationKit;
737  HPS::Type ObjectType() const { return staticType; }
738 
742  static FacetTessellationKit GetDefault();
743 
746  void Set(FacetTessellationKit const & in_kit);
747 
750  void Show(FacetTessellationKit & out_kit) const;
751 
755  FacetTessellationKit & operator=(FacetTessellationKit const & in_kit);
756 
759  bool Empty() const;
760 
764  bool Equals(FacetTessellationKit const & in_kit) const;
765 
769  bool operator==(FacetTessellationKit const & in_kit) const;
770 
774  bool operator!=(FacetTessellationKit const & in_kit) const;
775 
776 
785  FacetTessellationKit & SetTessellationLevel(HPS::Parasolid::TessellationLevel in_tessellation_level, double in_chord = -1, double in_angle = -1, bool in_generate_line_tessellation = true);
786 
791  FacetTessellationKit & SetShapeGeneration(Facet::Shape in_shape);
792 
797  FacetTessellationKit & SetVertexMatching(Facet::Match in_vertex_matching);
798 
805  FacetTessellationKit & SetDensity(Facet::Density in_density, double in_density_tolerance = 0, double in_density_max_angle = 0, DVectorArray const & in_view_directions = DVectorArray());
806 
811  FacetTessellationKit & SetIgnoredLoops(IntArray & in_ignored_loops);
812 
818  FacetTessellationKit & SetFacetSize(double in_minimum_width, double in_maximum_width, int in_maximum_sides);
819 
825  FacetTessellationKit & SetChordTolerance(double in_chord_tolerance, double in_maximum_chord_length, double in_maximum_chord_angle);
826 
831  FacetTessellationKit & SetSurfacePlaneTolerance(double in_plane_tolerance, double in_max_plane_angle);
832 
837  FacetTessellationKit & SetFacetPlaneTolerance(double in_plane_tolerance, double in_max_plane_angle);
838 
842  FacetTessellationKit & SetDegeneracyBehavior(Facet::Degeneracy in_degeneracy_behavior);
843 
849  FacetTessellationKit & SetLocalTolerances(ToleranceArray const & in_tolerance_array, IntArray const & in_topology_array, IntArray const & in_tolerance_for_tolopoly);
850 
857  FacetTessellationKit & SetIgnoreCriteria(bool in_ignore, Ignore in_ignore_criteria = Ignore::Absolute, double in_minimum_value = 0, bool in_treat_faces_individually = false);
858 
862  FacetTessellationKit & SetWireEdges(bool in_wire_edges);
863 
868  FacetTessellationKit & SetIncrementalFaceting(Facet::IncrementalFaceting in_faceting, bool refine_tessellation = false);
869 
873  FacetTessellationKit & SetInflection(bool in_refine);
874 
878  FacetTessellationKit & SetImprovedFacetQuality(bool in_improved_quality);
879 
883  FacetTessellationKit & SetFlattenVertices(bool in_flatten_vertices);
884 
888  FacetTessellationKit & SetOffsetFaces(bool in_offset_faces);
889 
893  FacetTessellationKit & SetNormals(bool in_normals);
894 
898  FacetTessellationKit & SetParameters(bool in_parameters);
899 
903  FacetTessellationKit & SetEdges(bool in_edges);
904 
910  FacetTessellationKit & SetStrips(bool in_strips, int in_max_facets_per_strip, bool in_split_strips);
911 
914  FacetTessellationKit & UnsetTessellationLevel();
915 
918  FacetTessellationKit & UnsetShapeGeneration();
919 
922  FacetTessellationKit & UnsetVertexMatching();
923 
926  FacetTessellationKit & UnsetDensity();
927 
930  FacetTessellationKit & UnsetIgnoredLoops();
931 
934  FacetTessellationKit & UnsetFacetSize();
935 
938  FacetTessellationKit & UnsetChordTolerance();
939 
942  FacetTessellationKit & UnsetSurfacePlaneTolerance();
943 
946  FacetTessellationKit & UnsetFacetPlaneTolerance();
947 
950  FacetTessellationKit & UnsetDegeneracyBehavior();
951 
954  FacetTessellationKit & UnsetLocalTolerances();
955 
958  FacetTessellationKit & UnsetIgnoreCriteria();
959 
962  FacetTessellationKit & UnsetWireEdges();
963 
966  FacetTessellationKit & UnsetIncrementalFaceting();
967 
970  FacetTessellationKit & UnsetInflection();
971 
974  FacetTessellationKit & UnsetImprovedFacetQuality();
975 
978  FacetTessellationKit & UnsetFlattenVertices();
979 
982  FacetTessellationKit & UnsetOffsetFaces();
983 
986  FacetTessellationKit & UnsetNormals();
987 
990  FacetTessellationKit & UnsetParameters();
991 
994  FacetTessellationKit & UnsetEdges();
995 
998  FacetTessellationKit & UnsetStrips();
999 
1002  FacetTessellationKit & UnsetEverything();
1003 
1004 
1011  bool ShowTessellationLevel(TessellationLevel & out_tessellation_level, double & out_chord, double & out_angle, bool & out_generate_line_tessellation) const;
1012 
1016  bool ShowShapeGeneration(Facet::Shape & out_shape) const;
1017 
1021  bool ShowVertexMatching(Facet::Match & out_vertex_matching) const;
1022 
1029  bool ShowDensity(Facet::Density & out_density, double & out_density_tolerance, double & out_density_max_angle, DVectorArray & out_view_directions) const;
1030 
1034  bool ShowIgnoredLoops(IntArray & out_ignored_loops) const;
1035 
1041  bool ShowFacetSize(double & out_minimum_width, double & out_maximum_width, int & out_maximum_sides) const;
1042 
1048  bool ShowChordTolerance(double & out_chord_tolerance, double & out_maximum_chord_length, double & out_maximum_chord_angle) const;
1049 
1054  bool ShowSurfacePlaneTolerance(double & out_plane_tolerance, double & out_max_plane_angle) const;
1055 
1060  bool ShowFacetPlaneTolerance(double & out_plane_tolerance, double & out_max_plane_angle) const;
1061 
1065  bool ShowDegeneracyBehavior(Facet::Degeneracy & out_degeneracy_behavior) const;
1066 
1072  bool ShowLocalTolerances(ToleranceArray & out_tolerance_array, IntArray & out_topology_array, IntArray & out_tolerance_for_tolopoly) const;
1073 
1080  bool ShowIgnoreCriteria(bool & out_ignore, Ignore & out_ignore_criteria, double & out_minimum_value, bool & out_treat_faces_individually) const;
1081 
1085  bool ShowWireEdges(bool & out_wire_edges) const;
1086 
1091  bool ShowIncrementalFaceting(Facet::IncrementalFaceting & out_faceting, bool & out_refine_tessellation) const;
1092 
1096  bool ShowInflection(bool & out_refine) const;
1097 
1101  bool ShowImprovedFacetQuality(bool & out_improved_quality) const;
1102 
1106  bool ShowFlattenVertices(bool & out_flatten_vertices) const;
1107 
1111  bool ShowOffsetFaces(bool & out_offset_faces) const;
1112 
1116  bool ShowNormals(bool & out_normals) const;
1117 
1121  bool ShowParameters(bool & out_parameters) const;
1122 
1126  bool ShowEdges(bool & out_edges) const;
1127 
1133  bool ShowStrips(bool & out_strips, int & out_max_facets_per_strip, bool & out_split_strips) const;
1134 
1135  };
1136 
1138  class PARASOLID_API LineTessellationKit : public SprocketKit
1139  {
1140  public:
1143 
1146  LineTessellationKit(LineTessellationKit const & in_kit);
1147 
1152 
1156  LineTessellationKit & operator=(LineTessellationKit && in_that);
1157 
1158  virtual ~LineTessellationKit();
1159 
1160  static const HPS::Type staticType = HPS::Type::ParasolidLineTessellationKit;
1161  HPS::Type ObjectType() const { return staticType; }
1162 
1166  static LineTessellationKit GetDefault();
1167 
1170  void Set(LineTessellationKit const & in_kit);
1171 
1174  void Show(LineTessellationKit & out_kit) const;
1175 
1179  LineTessellationKit & operator=(LineTessellationKit const & in_kit);
1180 
1183  bool Empty() const;
1184 
1188  bool Equals(LineTessellationKit const & in_kit) const;
1189 
1193  bool operator==(LineTessellationKit const & in_kit) const;
1194 
1198  bool operator!=(LineTessellationKit const & in_kit) const;
1199 
1200 
1201 
1206  LineTessellationKit & SetEdges(bool in_draw_edges, bool in_internal_edges);
1207 
1213  LineTessellationKit & SetSilhouetteEdges(bool in_draw_silhouette_edges, bool in_draw_circles_as_arcs);
1214 
1221  LineTessellationKit & SetPlanarHatching(Line::Hatching::Planar in_planar_haching, double in_planar_spacing = 0, DPoint in_point_through = DPoint(0, 0, 0), DVector in_direction = DVector(0, 0, 0));
1222 
1232  LineTessellationKit & SetRadialHatching(Line::Hatching::Radial in_radial_hatching, double in_around = 0, double in_around_start = 0, double in_along = 0, double in_along_start = 0, double in_about = 0, double in_about_start = 0);
1233 
1241  LineTessellationKit & SetParametricHatching(Line::Hatching::Parametric in_parametric_hatching, double in_u = 0, double in_u_start = 0, double in_v = 0, double in_v_start = 0);
1242 
1247  LineTessellationKit & SetUnfixedBlends(Line::UnfixedBlends in_unfixed_blends, double in_spacing = 0);
1248 
1256  LineTessellationKit & SetVisibilityEvaluation(Line::Visibility in_visibility, bool in_draw_invisible = false, bool in_drafting = false, bool in_self_hidden = false, IntArray in_suppressed_indices = IntArray());
1257 
1262  LineTessellationKit & SetSmoothEdges(Line::Smooth in_smooth, double in_tolerance = 0);
1263 
1267  LineTessellationKit & SetRegionalData(Line::Region in_region);
1268 
1272  LineTessellationKit & SetHierarchicalOutput(Line::Hierarchical in_hierarchical_output);
1273 
1277  LineTessellationKit & SetBCurveRenderingMethod(Line::BCurveRendering in_bcurve_rendering_method);
1278 
1285  LineTessellationKit & SetViewports(bool in_use_viewports, bool in_is_3d = true, bool viewport_clipping = false, ViewportArray in_viewports = ViewportArray());
1286 
1292  LineTessellationKit & SetChordTolerance(double in_chord_tolerance, double in_maximum_chord_length, double in_maximum_chord_angle);
1293 
1299  LineTessellationKit & SetIgnoreCriteria(bool in_ignore, Ignore in_ignore_criteria = Ignore::Absolute, double in_minimum_value = 0);
1300 
1305  LineTessellationKit & SetMemoryLimit(bool in_use_memory_limit, size_t in_limit = 0);
1306 
1312  LineTessellationKit & SetTransparentBodies(bool in_allow_transparency, bool in_transparent_hide, IntArray in_transparent_bodies = IntArray());
1313 
1317  LineTessellationKit & SetMissingGeometryFailure(bool in_fail_on_missing_geometry);
1318 
1324  LineTessellationKit & SetOverlappingBehavior(Line::OverlappingBehavior in_overlapping_behavior, IntArray in_indices_one = IntArray(), IntArray in_indices_two = IntArray());
1325 
1326 
1327 
1330  LineTessellationKit & UnsetEdges();
1331 
1334  LineTessellationKit & UnsetSilhouetteEdges();
1335 
1338  LineTessellationKit & UnsetPlanarHatching();
1339 
1342  LineTessellationKit & UnsetRadialHatching();
1343 
1346  LineTessellationKit & UnsetParametericHatching();
1347 
1350  LineTessellationKit & UnsetUnfixedBlends();
1351 
1354  LineTessellationKit & UnsetVisibilityEvaluation();
1355 
1358  LineTessellationKit & UnsetSmoothEdges();
1359 
1362  LineTessellationKit & UnsetRegionalData();
1363 
1366  LineTessellationKit & UnsetHierarchicalOutput();
1367 
1370  LineTessellationKit & UnsetBCurveRenderingMethod();
1371 
1374  LineTessellationKit & UnsetViewports();
1375 
1378  LineTessellationKit & UnsetChordTolerance();
1379 
1382  LineTessellationKit & UnsetIgnoreCriteria();
1383 
1386  LineTessellationKit & UnsetMemoryLimit();
1387 
1390  LineTessellationKit & UnsetTransparentBodies();
1391 
1394  LineTessellationKit & UnsetMissingGeometryFailure();
1395 
1398  LineTessellationKit & UnsetOverlappingBehavior();
1399 
1402  LineTessellationKit & UnsetEverything();
1403 
1404 
1405 
1406 
1411  bool ShowEdges(bool & out_draw_edges, bool & out_internal_edges) const;
1412 
1418  bool ShowSilhouetteEdges(bool & out_draw_silhouette_edges, bool & out_draw_circles_as_arcs) const;
1419 
1426  bool ShowPlanarHatching(Line::Hatching::Planar & out_planar_haching, double & out_planar_spacing, DPoint & out_point_through, DVector & out_direction) const;
1427 
1437  bool ShowRadialHatching(Line::Hatching::Radial & out_radial_hatching, double & out_around, double & out_around_start, double & out_along, double & out_along_start, double & out_about, double & out_about_start) const;
1438 
1446  bool ShowParametericHatching(Line::Hatching::Parametric & out_parametric_hatching, double & out_u, double & out_u_start, double & out_v, double & out_v_start) const;
1447 
1452  bool ShowUnfixedBlends(Line::UnfixedBlends & out_unfixed_blends, double & out_spacing) const;
1453 
1461  bool ShowVisibilityEvaluation(Line::Visibility & out_visibility, bool & out_draw_invisible, bool & out_drafting, bool & out_self_hidden, IntArray & out_suppressed_indices) const;
1462 
1467  bool ShowSmoothEdges(Line::Smooth & out_smooth, double & out_tolerance) const;
1468 
1472  bool ShowRegionalData(Line::Region & out_region) const;
1473 
1477  bool ShowHierarchicalOutput(Line::Hierarchical & out_hierarchical_output) const;
1478 
1482  bool ShowBCurveRenderingMethod(Line::BCurveRendering & out_bcurve_rendering_method) const;
1483 
1490  bool ShowViewports(bool & out_use_viewports, bool & out_is_3d, bool & out_viewport_clipping, ViewportArray & out_viewports) const;
1491 
1497  bool ShowChordTolerance(double & out_chord_tolerance, double & out_maximum_chord_length, double & out_maximum_chord_angle) const;
1498 
1504  bool ShowIgnoreCriteria(bool & out_ignore, Ignore & out_ignore_criteria, double & out_minimum_value) const;
1505 
1510  bool ShowMemoryLimit(bool & out_use_memory_limit, size_t & out_limit) const;
1511 
1517  bool ShowTransparentBodies(bool & out_allow_transparency, bool & out_transparent_hide, IntArray & out_force_transparent) const;
1518 
1522  bool ShowMissingGeometryFailure(bool & out_fail_on_missing_geometry) const;
1523 
1529  bool ShowOverlappingBehavior(Line::OverlappingBehavior & out_overlapping_behavior, IntArray & out_indices_one, IntArray & out_indices_two) const;
1530  };
1531 
1532 
1534  class PARASOLID_API ExportOptionsKit : public SprocketKit
1535  {
1536  public:
1538  ExportOptionsKit();
1539 
1542  ExportOptionsKit(ExportOptionsKit const & in_kit);
1543 
1547  ExportOptionsKit(ExportOptionsKit && in_that);
1548 
1552  ExportOptionsKit & operator=(ExportOptionsKit && in_that);
1553 
1554  virtual ~ExportOptionsKit();
1555 
1556  static const HPS::Type staticType = HPS::Type::ParasolidExportOptionsKit;
1557  HPS::Type ObjectType() const { return staticType; }
1558 
1562  static ExportOptionsKit GetDefault();
1563 
1566  void Set(ExportOptionsKit const & in_kit);
1567 
1570  void Show(ExportOptionsKit & out_kit) const;
1571 
1575  ExportOptionsKit & operator=(ExportOptionsKit const & in_kit);
1576 
1579  bool Empty() const;
1580 
1584  bool Equals(ExportOptionsKit const & in_kit) const;
1585 
1589  bool operator==(ExportOptionsKit const & in_kit) const;
1590 
1594  bool operator!=(ExportOptionsKit const & in_kit) const;
1595 
1602  ExportOptionsKit & SetFormat(Parasolid::Format in_format);
1603 
1608  ExportOptionsKit & SetUserFields(bool in_export_user_fields);
1609 
1610 
1613  ExportOptionsKit & UnsetFormat();
1614 
1617  ExportOptionsKit & UnsetUserFields();
1618 
1621  ExportOptionsKit & UnsetEverything();
1622 
1623 
1627  bool ShowFormat(Parasolid::Format & out_format) const;
1628 
1632  bool ShowUserFields(bool & out_user_fields) const;
1633  };
1634  };
1635 }
1636 
1637 #endif //SPRK_PARASOLID_H
MismatchBehavior
Definition: sprk_parasolid.h:72
Definition: hps.h:85
Definition: sprk_parasolid.h:87
Definition: sprk_parasolid.h:115
Smooth
Definition: sprk_parasolid.h:240
HPS::Type ObjectType() const
Definition: sprk_parasolid.h:464
Parametric
Definition: sprk_parasolid.h:215
Definition: sprk.h:68
Radial
Definition: sprk_parasolid.h:207
Definition: sprk_parasolid.h:170
Definition: sprk.h:1071
Definition: sprk_parasolid.h:1534
Degeneracy
Definition: sprk_parasolid.h:152
TessellationLevel
Definition: sprk_parasolid.h:51
Format
Definition: sprk_parasolid.h:63
Definition: sprk_parasolid.h:408
Definition: sprk_parasolid.h:492
Definition: hps.h:1590
HPS::Type ObjectType() const
Definition: sprk_parasolid.h:1161
Hierarchical
Definition: sprk_parasolid.h:254
Definition: sprk_parasolid.h:196
BCurveRendering
Definition: sprk_parasolid.h:262
UnfixedBlends
Definition: sprk_parasolid.h:224
std::vector< DVector, Allocator< DVector > > DVectorArray
Array of type HPS::DVector.
Definition: hps.h:6838
HPS::Type ObjectType() const
Definition: sprk_parasolid.h:307
Density
Definition: sprk_parasolid.h:141
Definition: sprk_parasolid.h:193
Match
Definition: sprk_parasolid.h:131
Definition: hps.h:16019
HPS::Type ObjectType() const
Definition: sprk_parasolid.h:544
std::vector< int, Allocator< int > > IntArray
Array of type int.
Definition: hps.h:6840
Definition: sprk_parasolid.h:1138
Definition: sprk.h:2621
Definition: hps.h:49226
Planar
Definition: sprk_parasolid.h:199
HPS::Type ObjectType() const
Definition: sprk_parasolid.h:1557
Definition: sprk.h:1317
Definition: sprk_parasolid.h:39
CompoundBodyBehavior
Definition: sprk_parasolid.h:80
Definition: sprk.h:2993
Definition: sprk_parasolid.h:347
ComponentType
Definition: sprk.h:2627
Definition: sprk_parasolid.h:285
Shape
Definition: sprk_parasolid.h:121
OverlappingBehavior
Definition: sprk_parasolid.h:269
IncrementalFaceting
Definition: sprk_parasolid.h:162
Ignore
Definition: sprk_parasolid.h:108
Definition: sprk_parasolid.h:714
Definition: sprk.h:3886
Visibility
Definition: sprk_parasolid.h:231
static Model CreateModel(char const *in_name="")
HPS::Type ObjectType() const
Definition: sprk_parasolid.h:376
HPS::Type ObjectType() const
Definition: sprk_parasolid.h:737
Definition: sprk_parasolid.h:435
Region
Definition: sprk_parasolid.h:247
Definition: sprk_parasolid.h:521