sprk_exchange.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_EXCHANGE_H
11 #define SPRK_EXCHANGE_H
12 
13 #include "sprk.h"
14 
15 typedef void A3DEntity;
16 typedef void A3DAsmModelFile;
17 typedef void A3DRWParamsPrcReadHelper;
18 
19 #ifdef _MSC_VER
20 #ifndef STATIC_APP
21 # ifdef SPRK_EXCHANGE
22 # define EXCHANGE_API __declspec (dllexport)
23 # else
24 # define EXCHANGE_API __declspec (dllimport)
25 # endif
26 #endif
27 #else
28 # include <stddef.h>
29 # if defined(LINUX_SYSTEM) && defined(SPRK_EXCHANGE)
30 # ifndef STATIC_APP
31 # define EXCHANGE_API __attribute__ ((visibility ("default")))
32 # endif
33 # endif
34 #endif
35 
36 #ifndef EXCHANGE_API
37 # define EXCHANGE_API
38 #endif
39 
40 namespace HPS
41 {
42 
44 class EXCHANGE_API Exchange
45 {
46 public:
47 
48  class Component;
49  class Configuration;
50  class Sheet;
52  class TranslationNotifier;
55  class ReloadNotifier;
56 
57  typedef std::vector<Configuration, HPS::Allocator<Configuration> > ConfigurationArray;
58  typedef std::vector<Sheet, HPS::Allocator<Sheet> > SheetArray;
59  typedef HPS::IntArray ParasolidEntityArray;
60 
63  enum class Units
64  {
65  Unknown,
66  Point,
67  Inch,
68  Millimeter,
69  Centimeter,
70  Pica,
71  Foot,
72  Yard,
73  Meter,
74  Kilometer,
75  Mile
76  };
77 
80  enum class UnloadMode
81  {
84  ExchangeAndVisualization,
85 
90  ExchangeOnly,
91  };
92 
95  enum class LoadStatus
96  {
98  Unknown,
100  Loaded,
102  VisualizationOnly,
104  PartiallyLoaded,
106  NotLoaded
107  };
108 
111  class EXCHANGE_API Component : public HPS::Component
112  {
113  public:
115  Component();
116 
120  Component(HPS::Component const & in_that);
121 
124  Component(Exchange::Component const & in_that);
125 
128  Component(Exchange::Component && in_that);
129 
130  virtual ~Component();
131 
132  HPS::Type ObjectType() const { return HPS::Type::ExchangeComponent; }
133 
134 #if !defined(_MSC_VER) || _MSC_VER >= 1900
135  Component & operator=(Component const & in_that) = default;
136 #endif
137 
141  Component & operator=(Exchange::Component && in_that);
142 
143 
146  A3DEntity * GetExchangeEntity() const;
147 
148 
154  void Tessellate(TessellationOptionsKit const & in_options);
155 
162  TranslationNotifier Translate(Units in_units, TranslationOptionsKit const & in_translation_options);
163 
170  ReloadNotifier Reload(TessellationOptionsKit const & in_tessellation_options = TessellationOptionsKit(), TranslationOptionsKit const & in_translation_options = TranslationOptionsKit());
171  };
172 
173  class EXCHANGE_API ProductOccurrence : public Exchange::Component
174  {
175  public:
178 
182  ProductOccurrence(HPS::Component const & in_that);
183 
187  ProductOccurrence(Component const & in_that);
188 
191  ProductOccurrence(ProductOccurrence const & in_sheet);
192 
197 
201  ProductOccurrence & operator=(ProductOccurrence && in_that);
202 
203  virtual ~ProductOccurrence();
204 
205  HPS::Type ObjectType() const { return HPS::Type::ExchangeProductOccurrence; }
206 
210  bool Equals(ProductOccurrence const & in_kit) const;
211 
215  bool operator==(ProductOccurrence const & in_kit) const;
216 
220  bool operator!=(ProductOccurrence const & in_kit) const;
221 
227  void Unload(UnloadMode in_mode = UnloadMode::ExchangeAndVisualization);
228 
234  LoadStatus GetLoadStatus() const;
235  };
236 
238  class EXCHANGE_API Sheet : public Exchange::Component
239  {
240  public:
242  Sheet();
243 
247  Sheet(HPS::Component const & in_that);
248 
252  Sheet(Component const & in_that);
253 
256  Sheet(Sheet const & in_sheet);
257 
261  Sheet(Sheet && in_that);
262 
266  Sheet & operator=(Sheet && in_that);
267 
268  virtual ~Sheet();
269 
270  HPS::Type ObjectType() const { return HPS::Type::ExchangeSheet; }
271 
275  bool Equals(Sheet const & in_kit) const;
276 
277 #if !defined(_MSC_VER) || _MSC_VER >= 1900
278  Sheet & operator=(Sheet const & in_that) = default;
279 #endif
280 
284  bool operator==(Sheet const & in_kit) const;
285 
289  bool operator!=(Sheet const & in_kit) const;
290 
291  /* Activates this sheet */
292  HPS::View Activate();
293  };
294 
297  class EXCHANGE_API CADModel : public HPS::CADModel
298  {
299  public:
301  CADModel();
302 
306  CADModel(Component const & in_that);
307 
311  CADModel(HPS::CADModel const & in_that);
312 
315  CADModel(Exchange::CADModel const & in_that);
316 
319  CADModel(Exchange::CADModel && in_that);
320 
321  virtual ~CADModel();
322 
323  HPS::Type ObjectType() const { return HPS::Type::ExchangeCADModel; }
324 
325 #if !defined(_MSC_VER) || _MSC_VER >= 1900
326  CADModel & operator=(Exchange::CADModel const & in_that) = default;
327 #endif
328 
332  CADModel & operator=(Exchange::CADModel && in_that);
333 
334 
337  A3DEntity * GetExchangeEntity() const;
338 
342  HPS::Component GetComponentFromEntity(A3DEntity * in_entity) const;
343 
349  bool GetEntityOwnership() const;
350 
351 
355  UTF8Array GetCurrentConfiguration() const;
356 
360  ConfigurationArray GetConfigurations() const;
361 
362  /* Gets a list of sheets for this CADModel (if any). Only formats which support the concept of sheets can return a non-empty array.
363  * \return The list of sheets for this CADModel */
364  SheetArray GetSheets() const;
365 
371  TranslationNotifier Translate(TranslationOptionsKit const & in_translation_options);
372 
377  ReloadNotifier Reload(TessellationOptionsKit const & in_options = TessellationOptionsKit(), TranslationOptionsKit const & in_translation_options = TranslationOptionsKit());
378 
384  void ShowAllPMI(Canvas & in_canvas, size_t in_layer = 0);
385 
391  void HideAllPMI(Canvas & in_canvas, size_t in_layer = 0);
392 
397  void Tessellate(TessellationOptionsKit const & in_options);
398  };
399 
402  class EXCHANGE_API Capture : public HPS::Capture
403  {
404  public:
406  Capture();
407 
411  Capture(Component const & in_that);
412 
416  Capture(HPS::Capture const & in_that);
417 
420  Capture(Exchange::Capture const & in_that);
421 
424  Capture(Exchange::Capture && in_that);
425 
426  virtual ~Capture();
427 
428  HPS::Type ObjectType() const { return HPS::Type::ExchangeCapture; }
429 
430 #if !defined(_MSC_VER) || _MSC_VER >= 1900
431  Capture & operator=(Exchange::Capture const & in_that) = default;
432 #endif
433 
437  Capture & operator=(Exchange::Capture && in_that);
438 
439 
442  A3DEntity * GetExchangeEntity() const;
443  };
444 
447  class EXCHANGE_API Filter : public HPS::Filter
448  {
449  public:
451  Filter();
452 
456  Filter(Component const & in_that);
457 
461  Filter(HPS::Filter const & in_that);
462 
465  Filter(Exchange::Filter const & in_that);
466 
469  Filter(Exchange::Filter && in_that);
470 
471  virtual ~Filter();
472 
473  HPS::Type ObjectType() const { return HPS::Type::ExchangeFilter; }
474 
475 #if !defined(_MSC_VER) || _MSC_VER >= 1900
476  Filter & operator=(Exchange::Filter const & in_that) = default;
477 #endif
478 
482  Filter & operator=(Exchange::Filter && in_that);
483 
484 
487  A3DEntity * GetExchangeEntity() const;
488  };
489 
491  class EXCHANGE_API Factory : public Sprocket
492  {
493  public:
498  static Component CreateComponent(HPS::Component const & in_owner, HPS::Component::ComponentType in_type, A3DEntity * in_entity = nullptr);
499 
505  static CADModel CreateCADModel(Model const & in_model = HPS::Factory::CreateModel(), A3DAsmModelFile * in_entity = nullptr, bool in_owns_entity = false);
506 
510  static Filter CreateFilter(HPS::Component const & in_owner, A3DEntity * in_entity = nullptr);
511 
518  static Capture CreateCapture(HPS::Component const & in_owner, A3DEntity * in_entity = nullptr, bool in_is_default = false);
519 
523  static Sheet CreateSheet(HPS::Component const & in_owner, A3DEntity * in_entity = nullptr);
524 
525  private:
527  Factory();
528  };
529 
531  class EXCHANGE_API ImportNotifier : public IONotifier
532  {
533  public:
535  ImportNotifier();
536 
539  ImportNotifier(ImportNotifier const & in_that);
540 
545  ImportNotifier(IONotifier const & in_that);
546 
550  ImportNotifier(ImportNotifier && in_that);
551 
555  ImportNotifier & operator=(ImportNotifier && in_that);
556 
557  virtual ~ImportNotifier();
558 
559  HPS::Type ObjectType() const { return HPS::Type::ExchangeImportNotifier; };
560 
564  ImportNotifier & operator=(ImportNotifier const & in_that);
565 
568  void Assign(ImportNotifier const & in_that);
569 
572  Exchange::CADModel GetCADModel() const;
573 
579  A3DRWParamsPrcReadHelper * GetPRCReadHelper() const;
580 
583  Time GetImportTime() const;
584 
587  Time GetParseTime() const;
588  };
589 
591  class EXCHANGE_API TranslationNotifier : public IONotifier
592  {
593  public:
596 
599  TranslationNotifier(TranslationNotifier const & in_that);
600 
605  TranslationNotifier(IONotifier const & in_that);
606 
611 
615  TranslationNotifier & operator=(TranslationNotifier && in_that);
616 
617  virtual ~TranslationNotifier();
618 
619  HPS::Type ObjectType() const { return HPS::Type::ExchangeTranslationNotifier; };
620 
624  TranslationNotifier & operator=(TranslationNotifier const & in_that);
625 
628  void Assign(TranslationNotifier const & in_that);
629 
632  Exchange::ParasolidEntityArray GetParasolidParts() const;
633 
636  HPS::Time GetImportTime() const;
637 
640  HPS::Time GetTranslationTime() const;
641  };
642 
644  class EXCHANGE_API ExportNotifier : public IONotifier
645  {
646  public:
648  ExportNotifier();
649 
652  ExportNotifier(ExportNotifier const & in_that);
653 
658  ExportNotifier(IONotifier const & in_that);
659 
663  ExportNotifier(ExportNotifier && in_that);
664 
668  ExportNotifier & operator=(ExportNotifier && in_that);
669 
670  virtual ~ExportNotifier();
671 
672  HPS::Type ObjectType() const { return HPS::Type::ExchangeExportNotifier; };
673 
677  ExportNotifier & operator=(ExportNotifier const & in_that);
678 
681  void Assign(ExportNotifier const & in_that);
682 
686  A3DAsmModelFile * GetModelFile() const;
687  };
688 
690  class EXCHANGE_API ReloadNotifier : public IONotifier
691  {
692  public:
694  ReloadNotifier();
695 
698  ReloadNotifier(ReloadNotifier const & in_that);
699 
704  ReloadNotifier(IONotifier const & in_that);
705 
709  ReloadNotifier(ReloadNotifier && in_that);
710 
714  ReloadNotifier & operator=(ReloadNotifier && in_that);
715 
716  virtual ~ReloadNotifier();
717 
718  HPS::Type ObjectType() const { return HPS::Type::ExchangeReloadNotifier; };
719 
723  ReloadNotifier & operator=(ReloadNotifier const & in_that);
724 
727  void Assign(ReloadNotifier const & in_that);
728  };
729 
730 
731  class ImportOptionsKit;
732  class ModelFileImportOptionsKit;
733  class Export3MFOptionsKit;
734  class ExportACISOptionsKit;
735  class ExportIGESOptionsKit;
736  class ExportJTOptionsKit;
737  class ExportPRCOptionsKit;
738  class ExportSTEPOptionsKit;
739  class ExportSTLOptionsKit;
740  class ExportU3DOptionsKit;
741  class ExportXMLOptionsKit;
742 
743 
746  enum class BRepMode
747  {
750  TessellationOnly,
753  BRepOnly,
756  BRepAndTessellation,
757  };
758 
761  enum class ImportMode
762  {
765  Complete,
768  Incremental,
769  };
770 
773  enum class SurfaceType
774  {
775  Blend01,
776  Blend02,
777  Blend03,
778  Blend04,
779  NURBS,
780  Cone,
781  Cylinder,
782  Offset,
783  Pipe,
784  Plane,
785  Ruled,
786  Sphere,
787  Revolution,
788  Extrusion,
789  FromCurve,
790  Torus,
791  Transform,
792  };
793 
796  enum class CurveType
797  {
798  Blend,
799  NURBS,
800  Circle,
801  Composite,
802  CurveOnSurface,
803  Ellipse,
804  Equation,
805  Helix,
806  Hyperbola,
807  Intersection,
808  Line,
809  Offset,
810  Parabola,
811  Polyline,
812  Transform,
813  };
814 
815  typedef std::vector<SurfaceType, HPS::Allocator<SurfaceType> > SurfaceTypeArray;
816  typedef std::vector<CurveType, HPS::Allocator<CurveType> > CurveTypeArray;
817 
821  {
822  PMIOnly,
823  ModelAndPMI
824  };
825 
827  class EXCHANGE_API Tessellation
828  {
829  public:
832  enum class Type
833  {
834  Standard,
835  Custom
836  };
837 
838 
841  enum class Level
842  {
843  ExtraLow,
844  Low,
845  Medium,
846  High,
847  ExtraHigh,
848  };
849 
851  class EXCHANGE_API Chord
852  {
853  public:
856  enum class Limit
857  {
860  Ratio,
863  Height
864  };
865 
866  private:
868  Chord();
869  };
870 
873  enum class Accuracy
874  {
877  Standard,
880  Accurate
881  };
882 
883  private:
885  Tessellation();
886  };
887 
889  class EXCHANGE_API JT
890  {
891  public:
894  enum class Content
895  {
896  Geometry,
897  Tessellation,
898  GeometryAndTessellation
899  };
900 
903  enum class TessellationLevel
904  {
905  Low,
906  Medium,
907  High,
908  };
909 
912  enum class Version
913  {
914  JT81,
915  JT95,
916  };
917 
918  private:
920  JT();
921  };
922 
924  class EXCHANGE_API STEP
925  {
926  public:
929  enum class Field
930  {
931  ProductName,
932  NextAssemblyUsageOccurrenceID,
933  NextAssemblyUsageOccurrenceName,
934  NextAssemblyUsageOccurrenceDescription
935  };
936 
939  enum class Format
940  {
941  AP203,
942  AP214,
943  AP242,
944  };
945 
946  private:
948  STEP();
949  };
950 
952  class EXCHANGE_API PRC
953  {
954  public:
957  enum class BRepCompression
958  {
959  None,
960  Low,
961  Medium,
962  High
963  };
964 
965  private:
967  PRC();
968  };
969 
971  class EXCHANGE_API ProE
972  {
973  public:
976  enum class SessionColor
977  {
979  LastCreoVersion,
981  ExchangeDefault,
984  UserDefined
985  };
986 
989  enum class FamilyTable
990  {
992  BRepOnly,
994  BRepOrTessellation,
996  BRepOrTessellationOrGeneric
997  };
998 
1002  {
1004  On,
1006  Off,
1008  AsDatum,
1009  };
1010 
1011  private:
1013  ProE();
1014  };
1015 
1017  class EXCHANGE_API U3D
1018  {
1019  public:
1022  enum class Version
1023  {
1024  ECMA1,
1025  ECMA3
1026  };
1027 
1028  private:
1030  U3D();
1031  };
1032 
1034  class EXCHANGE_API Configuration : public HPS::Sprocket
1035  {
1036  public:
1038  Configuration();
1039 
1042  Configuration(char const * in_name);
1043 
1048  Configuration(char const * in_name, size_t in_count, Configuration const in_subconfigurations[]);
1049 
1053  Configuration(char const * in_name, ConfigurationArray const & in_subconfigurations);
1054 
1057  Configuration(Configuration const & in_configuration);
1058 
1062  Configuration(Configuration && in_that);
1063 
1067  Configuration & operator=(Configuration && in_that);
1068 
1069  virtual ~Configuration();
1070 
1071  HPS::Type ObjectType() const { return HPS::Type::ExchangeConfiguration; }
1072 
1073 
1076  void Set(Configuration const & in_kit);
1077 
1080  void Show(Configuration & out_kit) const;
1081 
1085  Configuration & operator=(Configuration const & in_kit);
1086 
1089  bool Empty() const;
1090 
1094  bool Equals(Configuration const & in_kit) const;
1095 
1099  bool operator==(Configuration const & in_kit) const;
1100 
1104  bool operator!=(Configuration const & in_kit) const;
1105 
1106 
1109  HPS::UTF8 GetName() const;
1110 
1113  ConfigurationArray GetSubconfigurations() const;
1114  };
1115 
1117  class EXCHANGE_API File
1118  {
1119  public:
1122  enum class Format
1123  {
1124  Unsupported,
1125  ACIS,
1126  CADDS,
1127  CATIAV4,
1128  CATIAV5,
1129  CGR,
1130  COLLADA,
1131  CreoProE,
1132  IDEAS,
1133  IFC,
1134  IGES,
1135  Inventor,
1136  JT,
1137  KeyholeMarkupLanguage,
1138  LatticeXVL,
1139  OneSpaceDesigner,
1140  Parasolid,
1141  PDF,
1142  PRC,
1143  Rhino,
1144  NXUnigraphics,
1145  SolidEdge,
1146  SolidWorks,
1147  STEP,
1148  StereoLithography,
1149  ThreeDStudioMax,
1150  ThreeDXML,
1151  Universal3D,
1152  VDAFS,
1153  VRML,
1154  WavefrontObject,
1155  };
1156 
1158  static Format GetFormat(char const * in_file_name);
1159 
1163  static ConfigurationArray GetConfigurations(char const * in_file_name);
1164 
1176  static void GetInformation(const char * in_file_name, Format & out_format, UTF8 & out_model_name, UTF8 & out_version, UTF8 & out_author, UTF8 & out_organization, UTF8 & out_time_stamp);
1177 
1183  static HPS::ImageKit GetThumbnailImage(const char * in_file_name);
1184 
1191  static ImportNotifier Import(char const * in_file_name, ImportOptionsKit const & in_options);
1192 
1199  static ImportNotifier Import(A3DAsmModelFile const * in_model_file, ModelFileImportOptionsKit const & in_options);
1200 
1208  static ImportNotifier Import(size_t in_byte_count, byte const in_prc_data[], ModelFileImportOptionsKit const & in_options);
1209 
1216  static ImportNotifier Import(ByteArray const & in_prc_data, ModelFileImportOptionsKit const & in_options);
1217 
1218 
1225  static TranslationNotifier Translate(char const * in_file_name, ImportOptionsKit const & in_options, TranslationOptionsKit const & in_translation_options);
1226 
1231  static void Export3MF(CADModel const & in_cad_model, char const * in_file_name, Export3MFOptionsKit const & in_options);
1232 
1237  static void ExportACIS(CADModel const & in_cad_model, char const * in_file_name, ExportACISOptionsKit const & in_options);
1238 
1243  static void ExportIGES(CADModel const & in_cad_model, char const * in_file_name, ExportIGESOptionsKit const & in_options);
1244 
1249  static void ExportJT(CADModel const & in_cad_model, char const * in_file_name, ExportJTOptionsKit const & in_options);
1250 
1255  static void ExportParasolid(CADModel const & in_cad_model, char const * in_file_name, ExportParasolidOptionsKit const & in_options);
1256 
1262  static ExportNotifier ExportPRC(CADModel const & in_cad_model, char const * in_file_name, ExportPRCOptionsKit const & in_options);
1263 
1269  static ExportNotifier ExportPRC(KeyPathArray const & in_source, char const * in_file_name, bool in_compress_tessellation = false);
1270 
1277  static ExportNotifier ExportPRC(size_t in_count, KeyPath const in_source [], char const * in_file_name, bool in_compress_tessellation = false);
1278 
1285  static ExportNotifier ExportPRC(KeyPath const & in_source, char const * in_file_name, bool in_compress_tessellation = false);
1286 
1290  static ExportNotifier ExportPRC(KeyPathArray const & in_source);
1291 
1296  static ExportNotifier ExportPRC(size_t in_count, KeyPath const in_source []);
1297 
1301  static ExportNotifier ExportPRC(KeyPath const & in_source);
1302 
1307  static void ExportSTEP(CADModel const & in_cad_model, char const * in_file_name, ExportSTEPOptionsKit const & in_options);
1308 
1313  static void ExportSTL(CADModel const & in_cad_model, char const * in_file_name, ExportSTLOptionsKit const & in_options);
1314 
1319  static void ExportU3D(CADModel const & in_cad_model, char const * in_file_name, ExportU3DOptionsKit const & in_options);
1320 
1324  static void ExportVRML(CADModel const & in_cad_model, char const * in_file_name);
1325 
1330  static void ExportXML(CADModel const & in_cad_model, char const * in_file_name, ExportXMLOptionsKit const & in_options);
1331 
1332  private:
1334  File();
1335  };
1336 
1338  class EXCHANGE_API NURBSConversionOptionsKit : public SprocketKit
1339  {
1340  public:
1343 
1347 
1352 
1356  NURBSConversionOptionsKit & operator=(NURBSConversionOptionsKit && in_that);
1357 
1358  virtual ~NURBSConversionOptionsKit();
1359 
1360  HPS::Type ObjectType() const { return HPS::Type::ExchangeNURBSConversionOptionsKit; }
1361 
1364  void Set(NURBSConversionOptionsKit const & in_kit);
1365 
1368  void Show(NURBSConversionOptionsKit & out_kit) const;
1369 
1373  NURBSConversionOptionsKit & operator=(NURBSConversionOptionsKit const & in_kit);
1374 
1377  bool Empty() const;
1378 
1382  bool Equals(NURBSConversionOptionsKit const & in_kit) const;
1383 
1387  bool operator==(NURBSConversionOptionsKit const & in_kit) const;
1388 
1392  bool operator!=(NURBSConversionOptionsKit const & in_kit) const;
1393 
1397  static NURBSConversionOptionsKit GetDefault();
1398 
1403  NURBSConversionOptionsKit & SetCrossSeamCurveReplacement(bool in_state);
1404 
1409  NURBSConversionOptionsKit & Set3DCurvesComputation(bool in_state);
1410 
1415  NURBSConversionOptionsKit & SetUVCurvesComputation(bool in_state, bool in_allow_cross_seam_curves);
1416 
1421  NURBSConversionOptionsKit & SetClosedSurfaceSplitting(bool in_state);
1422 
1427  NURBSConversionOptionsKit & SetPeriodicSurfaceSplitting(bool in_state);
1428 
1433  NURBSConversionOptionsKit & SetParameterization(bool in_state);
1434 
1439  NURBSConversionOptionsKit & SetTolerance(double in_tolerance);
1440 
1446  NURBSConversionOptionsKit & SetAllowedSurfaces(SurfaceTypeArray const & in_allowed_surfaces);
1447 
1454  NURBSConversionOptionsKit & SetAllowedSurfaces(size_t in_count, SurfaceType const in_allowed_surfaces []);
1455 
1461  NURBSConversionOptionsKit & SetAllowedCurves(CurveTypeArray const & in_allowed_curves);
1462 
1469  NURBSConversionOptionsKit & SetAllowedCurves(size_t in_count, CurveType const in_allowed_curves []);
1470 
1471 
1474  NURBSConversionOptionsKit & UnsetCrossSeamCurveReplacement();
1475 
1478  NURBSConversionOptionsKit & Unset3DCurvesComputation();
1479 
1482  NURBSConversionOptionsKit & UnsetUVCurvesComputation();
1483 
1486  NURBSConversionOptionsKit & UnsetClosedSurfaceSplitting();
1487 
1490  NURBSConversionOptionsKit & UnsetPeriodicSurfaceSplitting();
1491 
1494  NURBSConversionOptionsKit & UnsetParameterization();
1495 
1498  NURBSConversionOptionsKit & UnsetTolerance();
1499 
1502  NURBSConversionOptionsKit & UnsetAllowedSurfaces();
1503 
1506  NURBSConversionOptionsKit & UnsetAllowedCurves();
1507 
1510  NURBSConversionOptionsKit & UnsetEverything();
1511 
1512 
1513 
1517  bool ShowCrossSeamCurveReplacement(bool & out_state) const;
1518 
1522  bool Show3DCurvesComputation(bool & out_state) const;
1523 
1528  bool ShowUVCurvesComputation(bool & out_state, bool & out_allow_cross_seam_curves) const;
1529 
1533  bool ShowClosedSurfaceSplitting(bool & out_state) const;
1534 
1538  bool ShowPeriodicSurfaceSplitting(bool & out_state) const;
1539 
1543  bool ShowParameterization(bool & out_state) const;
1544 
1548  bool ShowTolerance(double & out_tolerance) const;
1549 
1553  bool ShowAllowedSurfaces(SurfaceTypeArray & out_allowed_surfaces) const;
1554 
1558  bool ShowAllowedCurves(CurveTypeArray & out_allowed_curves) const;
1559  };
1560 
1562  class EXCHANGE_API ImportOptionsKit : public SprocketKit
1563  {
1564  public:
1566  ImportOptionsKit();
1567 
1570  ImportOptionsKit(ImportOptionsKit const & in_kit);
1571 
1575  ImportOptionsKit(ImportOptionsKit && in_that);
1576 
1580  ImportOptionsKit & operator=(ImportOptionsKit && in_that);
1581 
1582  virtual ~ImportOptionsKit();
1583 
1584  HPS::Type ObjectType() const { return HPS::Type::ExchangeImportOptionsKit; }
1585 
1589  static ImportOptionsKit GetDefault();
1590 
1593  void Set(ImportOptionsKit const & in_kit);
1594 
1597  void Show(ImportOptionsKit & out_kit) const;
1598 
1602  ImportOptionsKit & operator=(ImportOptionsKit const & in_kit);
1603 
1606  bool Empty() const;
1607 
1611  bool Equals(ImportOptionsKit const & in_kit) const;
1612 
1616  bool operator==(ImportOptionsKit const & in_kit) const;
1617 
1621  bool operator!=(ImportOptionsKit const & in_kit) const;
1622 
1623 
1629  ImportOptionsKit & SetBRepData(bool in_state);
1630 
1636  ImportOptionsKit & SetBRepMode(BRepMode in_mode);
1637 
1643  ImportOptionsKit & SetSolids(bool in_state);
1644 
1650  ImportOptionsKit & SetSurfaces(bool in_state);
1651 
1657  ImportOptionsKit & SetWireframes(bool in_state);
1658 
1664  ImportOptionsKit & SetPMI(bool in_state);
1665 
1672  ImportOptionsKit & SetAttributes(bool in_state);
1673 
1679  ImportOptionsKit & SetHiddenObjects(bool in_state);
1680 
1686  ImportOptionsKit & SetConstructionAndReferences(bool in_state);
1687 
1693  ImportOptionsKit & SetActiveFilter(bool in_state);
1694 
1700  ImportOptionsKit & SetDefaultUnits(Units in_units);
1701 
1706  ImportOptionsKit & SetMultiProcessCount(unsigned int in_count);
1707 
1713  ImportOptionsKit & SetSewingTolerance(double in_tolerance);
1714 
1721  ImportOptionsKit & SetPMISubstitutionFont(char const * in_font_name, bool in_always_substitute = false);
1722 
1728  ImportOptionsKit & SetPMIPrecision(size_t in_precision);
1729 
1735  ImportOptionsKit & SetPMIDefaultUnits(Units in_units);
1736 
1744  ImportOptionsKit & SetPMIFlipping(bool in_flip);
1745 
1753  ImportOptionsKit & SetPMIDefaultColor(RGBColor const & in_color, bool in_override_color = false);
1754 
1760  ImportOptionsKit & SetTessellationCleanup(bool in_cleanup);
1761 
1767  ImportOptionsKit & SetTessellationLevel(Tessellation::Level in_level);
1768 
1775  ImportOptionsKit & SetTessellationLevel(Tessellation::Chord::Limit in_limit_type, double in_limit, double in_angle_tolerance);
1776 
1784  ImportOptionsKit & SetTessellationAccuracy(Tessellation::Accuracy in_type, bool in_accurate_normals = true);
1785 
1791  ImportOptionsKit & SetTessellationPreservesUVPoints(bool in_state);
1792 
1798  ImportOptionsKit & SetTessellationMaximumEdgeLength(double in_length);
1799 
1805  ImportOptionsKit & SetTextureDirectories(size_t in_count, UTF8 const in_directories[]);
1806 
1811  ImportOptionsKit & SetTextureDirectories(UTF8Array const & in_directories);
1812 
1819  ImportOptionsKit & SetSearchDirectories(size_t in_count, UTF8 const in_directories[], bool const in_recurse_flags[]);
1820 
1826  ImportOptionsKit & SetSearchDirectories(UTF8Array const & in_directories, BoolArray const & in_recurse_flags);
1827 
1836  ImportOptionsKit & SetSearchDirectories(size_t in_count, UTF8 const in_directories[], UTF8 const in_logical_names[], bool const in_recurse_flags[]);
1837 
1846  ImportOptionsKit & SetSearchDirectories(UTF8Array const & in_directories, UTF8Array const & in_logical_names, BoolArray const & in_recurse_flags);
1847 
1853  ImportOptionsKit & SetSearchDirectoriesByFile(size_t in_count, UTF8 const in_file_names[]);
1854 
1859  ImportOptionsKit & SetSearchDirectoriesByFile(UTF8Array const & in_file_names);
1860 
1865  ImportOptionsKit & SetConfiguration(char const * in_configuration);
1866 
1872  ImportOptionsKit & SetConfiguration(size_t in_count, UTF8 const in_configuration[]);
1873 
1878  ImportOptionsKit & SetConfiguration(UTF8Array const & in_configuration);
1879 
1885  ImportOptionsKit & SetCatiaV4LogicalNameForRootDirectory(char const * in_name);
1886 
1893  ImportOptionsKit & SetCatiaV4LogicalNameSearching(bool in_state);
1894 
1901  ImportOptionsKit & SetCatiaV5Cache(bool in_active, char const * in_path);
1902 
1910  ImportOptionsKit & SetUnigraphicsPreferredReferenceSets(size_t in_count, UTF8 const in_reference_sets[], bool in_apply_to_all_levels);
1911 
1918  ImportOptionsKit & SetUnigraphicsPreferredReferenceSets(UTF8Array const & in_reference_sets, bool in_apply_to_all_levels);
1919 
1925  ImportOptionsKit & SetUnigraphicsFittedCamera(bool in_state);
1926 
1932  ImportOptionsKit & SetProECodePageName(char const * in_name);
1933 
1939  ImportOptionsKit & SetProEDimensionTolerance(bool in_state);
1940 
1946  ImportOptionsKit & SetProESubpartPMI(bool in_state);
1947 
1953  ImportOptionsKit & SetProESessionColor(ProE::SessionColor in_type);
1954 
1961  ImportOptionsKit & SetProEMissingBoolean(bool in_state);
1962 
1969  ImportOptionsKit & SetProEMissingFlexibleComponent(bool in_state);
1970 
1977  ImportOptionsKit & SetProEFamilyTableSource(ProE::FamilyTable in_source);
1978 
1985  ImportOptionsKit & SetProEHomeView(bool in_state);
1986 
1993  ImportOptionsKit & SetProEExplodedViews(bool in_state);
1994 
2001  ImportOptionsKit & SetProEDatum(bool in_state);
2002 
2003 
2010  ImportOptionsKit & SetProEConstructionEntities(ProE::ConstructionEntities in_state);
2011 
2018  ImportOptionsKit & SetProESkeletons(bool in_state);
2019 
2026  ImportOptionsKit & SetSTEPNamePreference(STEP::Field in_field);
2027 
2033  ImportOptionsKit & SetSTEPCodePageName(char const * in_name);
2034 
2040  ImportOptionsKit & SetSTEPFirstColorPreference(bool in_state);
2041 
2047  ImportOptionsKit & SetSTEPShellBasedSurfaceModelSplitting(bool in_state);
2048 
2054  ImportOptionsKit & SetSTEPOrientationHealing(bool in_state);
2055 
2061  ImportOptionsKit & SetSTEPValidationProperties(bool in_state);
2062 
2068  ImportOptionsKit & SetIFCCodePageName(char const * in_name);
2069 
2076  ImportOptionsKit & SetIFCAttributeXMLFile(char const * in_filename);
2077 
2083  ImportOptionsKit & SetIFCOwnerHistoryOptimization(bool in_state);
2084 
2090  ImportOptionsKit & SetIFCFaceOptimization(bool in_state);
2091 
2098  ImportOptionsKit & SetIFCEdges(bool in_state);
2099 
2105  ImportOptionsKit & SetIFCMetadata(bool in_state);
2106 
2112  ImportOptionsKit & SetPDF3DStreamIndex(size_t in_index);
2113 
2119  ImportOptionsKit & SetJTTessellationLevel(JT::TessellationLevel in_jt_tessellation_level);
2120 
2126  ImportOptionsKit & SetInventorEmbeddedTessellation(bool in_state);
2127 
2133  ImportOptionsKit & SetPRCReadHelper(bool in_use_helper);
2134 
2138  ImportOptionsKit & SetAnnotationCaptureFitting(AnnotationCaptureFitting in_fitting);
2139 
2151  ImportOptionsKit & SetLocation(ComponentPath const & in_path, MatrixKit const & in_transform = MatrixKit());
2152 
2164  ImportOptionsKit & SetMode(ImportMode in_mode);
2165 
2175  ImportOptionsKit & SetIncrementalComponentPath(HPS::ComponentPath const & in_path);
2176 
2184  ImportOptionsKit & SetIncrementalComponentPaths(size_t in_count, HPS::ComponentPath const in_paths[]);
2185 
2192  ImportOptionsKit & SetIncrementalComponentPaths(HPS::ComponentPathArray const & in_paths);
2193 
2197  ImportOptionsKit & SetNURBSConversion(HPS::Exchange::NURBSConversionOptionsKit const & in_nurbs_conversion_options);
2198 
2203  ImportOptionsKit & SetGeometryDefaultColor(RGBAColor const & in_color);
2204 
2208  ImportOptionsKit & UnsetBRepData();
2209 
2212  ImportOptionsKit & UnsetBRepMode();
2213 
2216  ImportOptionsKit & UnsetSolids();
2217 
2220  ImportOptionsKit & UnsetSurfaces();
2221 
2224  ImportOptionsKit & UnsetWireframes();
2225 
2228  ImportOptionsKit & UnsetPMI();
2229 
2232  ImportOptionsKit & UnsetAttributes();
2233 
2236  ImportOptionsKit & UnsetHiddenObjects();
2237 
2240  ImportOptionsKit & UnsetConstructionAndReferences();
2241 
2244  ImportOptionsKit & UnsetActiveFilter();
2245 
2248  ImportOptionsKit & UnsetSewingTolerance();
2249 
2252  ImportOptionsKit & UnsetDefaultUnits();
2253 
2256  ImportOptionsKit & UnsetMultiProcessCount();
2257 
2260  ImportOptionsKit & UnsetPMISubstitutionFont();
2261 
2264  ImportOptionsKit & UnsetPMIPrecision();
2265 
2268  ImportOptionsKit & UnsetPMIDefaultUnits();
2269 
2272  ImportOptionsKit & UnsetPMIDefaultColor();
2273 
2276  ImportOptionsKit & UnsetTessellationLevel();
2277 
2280  ImportOptionsKit & UnsetTessellationAccuracy();
2281 
2284  ImportOptionsKit & UnsetTessellationCleanup();
2285 
2288  ImportOptionsKit & UnsetPMIFlipping();
2289 
2292  ImportOptionsKit & UnsetTessellationPreservesUVPoints();
2293 
2296  ImportOptionsKit & UnsetTessellationMaximumEdgeLength();
2297 
2300  ImportOptionsKit & UnsetTextureDirectories();
2301 
2304  ImportOptionsKit & UnsetSearchDirectories();
2305 
2308  ImportOptionsKit & UnsetSearchDirectoriesByFile();
2309 
2312  ImportOptionsKit & UnsetConfiguration();
2313 
2316  ImportOptionsKit & UnsetCatiaV4LogicalNameForRootDirectory();
2317 
2320  ImportOptionsKit & UnsetCatiaV4LogicalNameSearching();
2321 
2324  ImportOptionsKit & UnsetCatiaV5Cache();
2325 
2328  ImportOptionsKit & UnsetUnigraphicsPreferredReferenceSets();
2329 
2332  ImportOptionsKit & UnsetUnigraphicsFittedCamera();
2333 
2336  ImportOptionsKit & UnsetProECodePageName();
2337 
2340  ImportOptionsKit & UnsetProEDimensionTolerance();
2341 
2344  ImportOptionsKit & UnsetProESubpartPMI();
2345 
2348  ImportOptionsKit & UnsetProESessionColor();
2349 
2352  ImportOptionsKit & UnsetProEDatum();
2353 
2356  ImportOptionsKit & UnsetProEHomeView();
2357 
2360  ImportOptionsKit & UnsetProEExplodedViews();
2361 
2364  ImportOptionsKit & UnsetProEMissingBoolean();
2365 
2368  ImportOptionsKit & UnsetProEMissingFlexibleComponent();
2369 
2372  ImportOptionsKit & UnsetProEFamilyTreeSource();
2373 
2376  ImportOptionsKit & UnsetProEConstructionEntities();
2377 
2380  ImportOptionsKit & UnsetProESkeletons();
2381 
2384  ImportOptionsKit & UnsetSTEPNamePreference();
2385 
2388  ImportOptionsKit & UnsetSTEPFirstColorPreference();
2389 
2392  ImportOptionsKit & UnsetSTEPCodePageName();
2393 
2396  ImportOptionsKit & UnsetSTEPShellBasedSurfaceModelSplitting();
2397 
2400  ImportOptionsKit & UnsetSTEPOrientationHealing();
2401 
2404  ImportOptionsKit & UnsetSTEPValidationProperties();
2405 
2408  ImportOptionsKit & UnsetIFCCodePageName();
2409 
2412  ImportOptionsKit & UnsetIFCAttributeXMLFile();
2413 
2416  ImportOptionsKit & UnsetIFCOwnerHistoryOptimization();
2417 
2420  ImportOptionsKit & UnsetIFCFaceOptimization();
2421 
2424  ImportOptionsKit & UnsetIFCEdges();
2425 
2428  ImportOptionsKit & UnsetIFCMetadata();
2429 
2432  ImportOptionsKit & UnsetPDF3DStreamIndex();
2433 
2436  ImportOptionsKit & UnsetJTTessellationLevel();
2437 
2440  ImportOptionsKit & UnsetInventorEmbeddedTessellation();
2441 
2444  ImportOptionsKit & UnsetPRCReadHelper();
2445 
2448  ImportOptionsKit & UnsetAnnotationCaptureFitting();
2449 
2452  ImportOptionsKit & UnsetLocation();
2453 
2456  ImportOptionsKit & UnsetMode();
2457 
2460  ImportOptionsKit & UnsetIncrementalComponentPaths();
2461 
2464  ImportOptionsKit & UnsetNURBSConversion();
2465 
2468  ImportOptionsKit & UnsetGeometryDefaultColor();
2469 
2472  ImportOptionsKit & UnsetEverything();
2473 
2474 
2479  bool ShowBRepData(bool & out_state) const;
2480 
2484  bool ShowBRepMode(BRepMode & out_mode) const;
2485 
2489  bool ShowSolids(bool & out_state) const;
2490 
2494  bool ShowSurfaces(bool & out_state) const;
2495 
2499  bool ShowWireframes(bool & out_state) const;
2500 
2504  bool ShowPMI(bool & out_state) const;
2505 
2509  bool ShowAttributes(bool & out_state) const;
2510 
2514  bool ShowHiddenObjects(bool & out_state) const;
2515 
2519  bool ShowConstructionAndReferences(bool & out_state) const;
2520 
2524  bool ShowActiveFilter(bool & out_state) const;
2525 
2529  bool ShowSewingTolerance(double & out_tolerance) const;
2530 
2534  bool ShowDefaultUnits(Units & out_units) const;
2535 
2539  bool ShowMultiProcessCount(unsigned int & out_count) const;
2540 
2545  bool ShowPMISubstitutionFont(UTF8 & out_font_name, bool & out_always_substitute) const;
2546 
2550  bool ShowPMIPrecision(size_t & out_precision) const;
2551 
2555  bool ShowPMIDefaultUnits(Units & out_units) const;
2556 
2561  bool ShowPMIDefaultColor(RGBColor & out_color, bool & out_override) const;
2562 
2570  bool ShowTessellationLevel(Tessellation::Type & out_type, Tessellation::Level & out_level, Tessellation::Chord::Limit & out_limit_type, double & out_limit, double & out_angle_tolerance) const;
2571 
2576  bool ShowTessellationAccuracy(Tessellation::Accuracy & out_type, bool & out_accurate_normals) const;
2577 
2581  bool ShowTessellationCleanup(bool & out_cleanup) const;
2582 
2586  bool ShowPMIFlipping(bool & out_pmi_flipping) const;
2587 
2591  bool ShowTessellationPreservesUVPoints(bool & out_state) const;
2592 
2596  bool ShowTessellationMaximumEdgeLength(double & out_length) const;
2597 
2601  bool ShowTextureDirectories(UTF8Array & out_directories) const;
2602 
2608  bool ShowSearchDirectories(UTF8Array & out_directories, UTF8Array & out_logical_names, BoolArray & out_recurse_flags) const;
2609 
2613  bool ShowSearchDirectoriesByFile(UTF8Array & out_file_names) const;
2614 
2618  bool ShowConfiguration(UTF8Array & out_configuration) const;
2619 
2623  bool ShowCatiaV4LogicalNameForRootDirectory(UTF8 & out_name) const;
2624 
2628  bool ShowCatiaV4LogicalNameSearching(bool & out_state) const;
2629 
2634  bool ShowCatiaV5Cache(bool & out_active, UTF8 & out_path) const;
2635 
2640  bool ShowUnigraphicsPreferredReferenceSets(UTF8Array & out_reference_sets, bool & out_apply_to_all_levels) const;
2641 
2645  bool ShowUnigraphicsFittedCamera(bool & out_state) const;
2646 
2650  bool ShowProECodePageName(UTF8 & out_name) const;
2651 
2655  bool ShowProEDimensionTolerance(bool & out_state) const;
2656 
2660  bool ShowProESubpartPMI(bool & out_state) const;
2661 
2665  bool ShowProESessionColor(ProE::SessionColor & out_type) const;
2666 
2670  bool ShowProEDatum(bool & out_state) const;
2671 
2675  bool ShowProEHomeView(bool & out_state) const;
2676 
2680  bool ShowProEExplodedViews(bool & out_state) const;
2681 
2685  bool ShowProEMissingBoolean(bool & out_state) const;
2686 
2690  bool ShowProEMissingFlexibleComponent(bool & out_state) const;
2691 
2695  bool ShowProEFamilyTableSource(ProE::FamilyTable & out_source) const;
2696 
2700  bool ShowProEConstructionEntities(ProE::ConstructionEntities & out_state) const;
2701 
2705  bool ShowProESkeletons(bool & out_state) const;
2706 
2710  bool ShowSTEPNamePreference(STEP::Field & out_field) const;
2711 
2715  bool ShowSTEPFirstColorPreference(bool & out_state) const;
2716 
2720  bool ShowSTEPCodePageName(UTF8 & out_name) const;
2721 
2725  bool ShowSTEPShellBasedSurfaceModelSplitting(bool & out_state) const;
2726 
2730  bool ShowSTEPOrientationHealing(bool & out_state) const;
2731 
2735  bool ShowSTEPValidationProperties(bool & out_state) const;
2736 
2740  bool ShowIFCCodePageName(UTF8 & out_name) const;
2741 
2745  bool ShowIFCAttributeXMLFile(UTF8 & out_filename) const;
2746 
2750  bool ShowIFCOwnerHistoryOptimization(bool & out_state) const;
2751 
2755  bool ShowIFCFaceOptimization(bool & out_state) const;
2756 
2760  bool ShowIFCEdges(bool & out_state) const;
2761 
2765  bool ShowIFCMetadata(bool & out_state) const;
2766 
2770  bool ShowPDF3DStreamIndex(size_t & out_index) const;
2771 
2775  bool ShowJTTessellationLevel(JT::TessellationLevel & out_tessellation_level) const;
2776 
2780  bool ShowInventorEmbeddedTessellation(bool & out_state) const;
2781 
2785  bool ShowPRCReadHelper(bool & out_use_helper) const;
2786 
2790  bool ShowAnnotationCaptureFitting(AnnotationCaptureFitting & out_fitting) const;
2791 
2796  bool ShowLocation(ComponentPath & out_path, MatrixKit & out_transform) const;
2797 
2801  bool ShowMode(ImportMode & out_mode) const;
2802 
2806  bool ShowIncrementalComponentPaths(HPS::ComponentPathArray & out_paths) const;
2807 
2811  bool ShowNURBSConversion(HPS::Exchange::NURBSConversionOptionsKit & out_nurbs_conversion_options) const;
2812 
2816  bool ShowGeometryDefaultColor(RGBAColor & out_color) const;
2817  };
2818 
2820  class EXCHANGE_API Translation
2821  {
2822  public:
2825  enum class Healing
2826  {
2827  Off,
2828  On,
2829  OnlyIfNotParasolid,
2830  };
2831 
2834  enum class AccurateEdges
2835  {
2836  Off,
2837  On,
2838  OnlyIfNotParasolid,
2839  };
2840 
2843  enum class Simplification
2844  {
2845  Off,
2846  On,
2847  OnlyIfNotParasolid,
2848  };
2849 
2852  enum class Merging
2853  {
2854  Off,
2855  On,
2856  OnlyIfNotParasolid,
2857  };
2858 
2859  private:
2861  Translation();
2862  };
2863 
2865  class EXCHANGE_API TranslationOptionsKit : public SprocketKit
2866  {
2867  public:
2870 
2874 
2879 
2883  TranslationOptionsKit & operator=(TranslationOptionsKit && in_that);
2884 
2885  virtual ~TranslationOptionsKit();
2886 
2887  HPS::Type ObjectType() const { return HPS::Type::ExchangeTranslationOptionsKit; }
2888 
2892  static TranslationOptionsKit GetDefault();
2893 
2896  void Set(TranslationOptionsKit const & in_kit);
2897 
2900  void Show(TranslationOptionsKit & out_kit) const;
2901 
2905  TranslationOptionsKit & operator=(TranslationOptionsKit const & in_kit);
2906 
2909  bool Empty() const;
2910 
2914  bool Equals(TranslationOptionsKit const & in_kit) const;
2915 
2919  bool operator==(TranslationOptionsKit const & in_kit) const;
2920 
2924  bool operator!=(TranslationOptionsKit const & in_kit) const;
2925 
2931  TranslationOptionsKit & SetSolidsAsFaces(bool in_state);
2932 
2938  TranslationOptionsKit & SetTessellation(bool in_state);
2939 
2945  TranslationOptionsKit & SetHiddenObjects(bool in_state);
2946 
2950  TranslationOptionsKit & SetApplication(char const * in_name);
2951 
2955  TranslationOptionsKit & SetVersion(char const * in_version);
2956 
2960  TranslationOptionsKit & SetHealing(Translation::Healing in_healing);
2961 
2965  TranslationOptionsKit & SetAccurateEdges(Translation::AccurateEdges in_accurate_edges);
2966 
2970  TranslationOptionsKit & SetSimplification(Translation::Simplification in_simplification);
2971 
2975  TranslationOptionsKit & SetEntityMerging(Translation::Merging in_merging);
2976 
2981  TranslationOptionsKit & SetSewing(bool in_state, double in_tolerance = 0.0);
2982 
2986  TranslationOptionsKit & SetDisjointFaces(bool in_state);
2987 
2990  TranslationOptionsKit & UnsetSolidsAsFaces();
2991 
2994  TranslationOptionsKit & UnsetTessellation();
2995 
2998  TranslationOptionsKit & UnsetHiddenObjects();
2999 
3002  TranslationOptionsKit & UnsetApplication();
3003 
3006  TranslationOptionsKit & UnsetVersion();
3007 
3010  TranslationOptionsKit & UnsetHealing();
3011 
3014  TranslationOptionsKit & UnsetAccurateEdges();
3015 
3018  TranslationOptionsKit & UnsetSimplification();
3019 
3022  TranslationOptionsKit & UnsetEntityMerging();
3023 
3026  TranslationOptionsKit & UnsetSewing();
3027 
3030  TranslationOptionsKit & UnsetDisjointFaces();
3031 
3034  TranslationOptionsKit & UnsetEverything();
3035 
3036 
3040  bool ShowSolidsAsFaces(bool & out_state) const;
3041 
3045  bool ShowTessellation(bool & out_state) const;
3046 
3050  bool ShowHiddenObjects(bool & out_state) const;
3051 
3055  bool ShowApplication(UTF8 & out_name) const;
3056 
3060  bool ShowVersion(UTF8 & out_version) const;
3061 
3065  bool ShowHealing(Translation::Healing & out_healing) const;
3066 
3070  bool ShowAccurateEdges(Translation::AccurateEdges & out_accurate_edges) const;
3071 
3075  bool ShowSimplification(Translation::Simplification & out_simplification) const;
3076 
3080  bool ShowEntityMerging(Translation::Merging & out_merging) const;
3081 
3086  bool ShowSewing(bool & out_state, double & out_tolerance) const;
3087 
3091  bool ShowDisjointFaces(bool & out_state) const;
3092 
3097  TranslationOptionsKit & SetMultiProcessCount(unsigned int in_count);
3098 
3101  TranslationOptionsKit & UnsetMultiProcessCount();
3102 
3106  bool ShowMultiProcessCount(unsigned int & out_count) const;
3107  };
3108 
3109 
3110 
3115  class EXCHANGE_API ModelFileImportOptionsKit : public SprocketKit
3116  {
3117  public:
3120 
3124 
3129 
3133  ModelFileImportOptionsKit & operator=(ModelFileImportOptionsKit && in_that);
3134 
3135  virtual ~ModelFileImportOptionsKit();
3136 
3137  HPS::Type ObjectType() const { return HPS::Type::ExchangeModelFileImportOptionsKit; }
3138 
3142  static ModelFileImportOptionsKit GetDefault();
3143 
3146  void Set(ModelFileImportOptionsKit const & in_kit);
3147 
3150  void Show(ModelFileImportOptionsKit & out_kit) const;
3151 
3155  ModelFileImportOptionsKit & operator=(ModelFileImportOptionsKit const & in_kit);
3156 
3159  bool Empty() const;
3160 
3164  bool Equals(ModelFileImportOptionsKit const & in_kit) const;
3165 
3169  bool operator==(ModelFileImportOptionsKit const & in_kit) const;
3170 
3174  bool operator!=(ModelFileImportOptionsKit const & in_kit) const;
3175 
3176 
3177  /* Dictates whether Visualize will flip pmi when rotating so that text / symbols remain readable.
3178  * \note If exchange reports that a markup does not contain leader lines, but the tessellation does contain lines that markup will not be
3179  * flipped. This is a precaution for models where the leader line geometry was included as part of the markup tessellation and
3180  * flipping the geometry would cause any present leader lines to point in the wrong direction.
3181  * \param in_cleanup Whether or not to have visualize flip pmi when rotating.
3182  * \return A reference to this ImportOptionsKit.
3183  */
3184  ModelFileImportOptionsKit & SetPMIFlipping(bool in_flip);
3185 
3191  ModelFileImportOptionsKit & SetTessellationLevel(Tessellation::Level in_level);
3192 
3199  ModelFileImportOptionsKit & SetTessellationLevel(Tessellation::Chord::Limit in_limit_type, double in_limit, double in_angle_tolerance);
3200 
3208  ModelFileImportOptionsKit & SetTessellationAccuracy(Tessellation::Accuracy in_type, bool in_accurate_normals = true);
3209 
3210  /* Dictates whether Exchange tesselation data will be released from their parent representation items during import.
3211  * \warning Setting this option to true will cause future exports to output without tessellation data.
3212  * \param in_cleanup Whether to clean up tessellation data from representation items.
3213  * \return A reference to this ImportOptionsKit.
3214  */
3215  ModelFileImportOptionsKit & SetTessellationCleanup(bool in_cleanup);
3216 
3222  ModelFileImportOptionsKit & SetTessellationPreservesUVPoints(bool in_state);
3223 
3229  ModelFileImportOptionsKit & SetTessellationMaximumEdgeLength(double in_length);
3230 
3237  ModelFileImportOptionsKit & SetIFCEdges(bool in_state);
3238 
3242  ModelFileImportOptionsKit & SetAnnotationCaptureFitting(AnnotationCaptureFitting in_fitting);
3243 
3256  ModelFileImportOptionsKit & SetLocation(ComponentPath const & in_path, MatrixKit const & in_transform = MatrixKit());
3257 
3263  ModelFileImportOptionsKit & SetSewingTolerance(double in_tolerance);
3264 
3268  ModelFileImportOptionsKit & SetNURBSConversion(HPS::Exchange::NURBSConversionOptionsKit const & in_nurbs_conversion_options);
3269 
3274  ModelFileImportOptionsKit & SetGeometryDefaultColor(RGBAColor const & in_color);
3275 
3276 
3279  ModelFileImportOptionsKit & UnsetTessellationLevel();
3280 
3283  ModelFileImportOptionsKit & UnsetTessellationAccuracy();
3284 
3287  ModelFileImportOptionsKit & UnsetTessellationCleanup();
3288 
3291  ModelFileImportOptionsKit & UnsetPMIFlipping();
3292 
3295  ModelFileImportOptionsKit & UnsetTessellationPreservesUVPoints();
3296 
3299  ModelFileImportOptionsKit & UnsetTessellationMaximumEdgeLength();
3300 
3303  ModelFileImportOptionsKit & UnsetIFCEdges();
3304 
3307  ModelFileImportOptionsKit & UnsetAnnotationCaptureFitting();
3308 
3311  ModelFileImportOptionsKit & UnsetLocation();
3312 
3315  ModelFileImportOptionsKit & UnsetSewingTolerance();
3316 
3319  ModelFileImportOptionsKit & UnsetNURBSConversion();
3320 
3323  ModelFileImportOptionsKit & UnsetGeometryDefaultColor();
3324 
3327  ModelFileImportOptionsKit & UnsetEverything();
3328 
3329 
3337  bool ShowTessellationLevel(Tessellation::Type & out_type, Tessellation::Level & out_level, Tessellation::Chord::Limit & out_limit_type, double & out_limit, double & out_angle_tolerance) const;
3338 
3343  bool ShowTessellationAccuracy(Tessellation::Accuracy & out_type, bool & out_accurate_normals) const;
3344 
3348  bool ShowTessellationCleanup(bool & out_cleanup) const;
3349 
3353  bool ShowPMIFlipping(bool & out_pmi_flipping) const;
3354 
3358  bool ShowTessellationPreservesUVPoints(bool & out_state) const;
3359 
3363  bool ShowTessellationMaximumEdgeLength(double & out_length) const;
3364 
3368  bool ShowIFCEdges(bool & out_state) const;
3369 
3373  bool ShowAnnotationCaptureFitting(AnnotationCaptureFitting & out_fitting) const;
3374 
3379  bool ShowLocation(ComponentPath & out_path, MatrixKit & out_transform) const;
3380 
3384  bool ShowSewingTolerance(double & out_tolerance) const;
3385 
3389  bool ShowNURBSConversion(HPS::Exchange::NURBSConversionOptionsKit & out_nurbs_conversion_options) const;
3390 
3394  bool ShowGeometryDefaultColor(RGBAColor & out_color) const;
3395  };
3396 
3398  class EXCHANGE_API Export3MFOptionsKit : public SprocketKit
3399  {
3400  public:
3403 
3406  Export3MFOptionsKit(Export3MFOptionsKit const & in_kit);
3407 
3411 
3412  virtual ~Export3MFOptionsKit();
3413 
3414  HPS::Type ObjectType() const { return HPS::Type::ExchangeExport3MFOptionsKit; }
3415 
3419  static Export3MFOptionsKit GetDefault();
3420 
3423  void Set(Export3MFOptionsKit const & in_kit);
3424 
3427  void Show(Export3MFOptionsKit& out_kit) const;
3428 
3432  Export3MFOptionsKit & operator=(Export3MFOptionsKit const & in_kit);
3433 
3437  Export3MFOptionsKit & operator=(Export3MFOptionsKit && in_that);
3438 
3441  bool Empty() const;
3442 
3446  bool Equals(Export3MFOptionsKit const & in_kit) const;
3447 
3451  bool operator==(Export3MFOptionsKit const & in_kit) const;
3452 
3456  bool operator!=(Export3MFOptionsKit const & in_kit) const;
3457 
3462  Export3MFOptionsKit & SetCurrentTessellationRetention(bool in_state, TessellationOptionsKit const & in_tessellation_kit = TessellationOptionsKit());
3463 
3466  Export3MFOptionsKit & UnsetCurrentTessellationRetention();
3467 
3472  bool ShowCurrentTessellationRetention(bool & out_state, Exchange::TessellationOptionsKit & out_tessellation_kit) const;
3473 
3477  Export3MFOptionsKit & SetDescription(char const * in_description);
3478 
3481  Export3MFOptionsKit & UnsetDescription();
3482 
3486  bool ShowDescription(HPS::UTF8 & out_state) const;
3487 
3491  Export3MFOptionsKit & SetCopyright(char const * in_state);
3492 
3495  Export3MFOptionsKit & UnsetCopyright();
3496 
3500  bool ShowCopyright(HPS::UTF8 & out_state) const;
3501 
3505  Export3MFOptionsKit & SetLicenseTerms(char const * in_license);
3506 
3509  Export3MFOptionsKit & UnsetLicenseTerms();
3510 
3514  bool ShowLicenseTerms(HPS::UTF8 & out_license) const;
3515 
3518  Export3MFOptionsKit & UnsetEverything();
3519  };
3520 
3522  class EXCHANGE_API ExportACISOptionsKit : public SprocketKit
3523  {
3524  public:
3527 
3531 
3535 
3536  virtual ~ExportACISOptionsKit();
3537 
3538  HPS::Type ObjectType() const { return HPS::Type::ExchangeExportACISOptionsKit; }
3539 
3543  static ExportACISOptionsKit GetDefault();
3544 
3547  void Set(ExportACISOptionsKit const & in_kit);
3548 
3551  void Show(ExportACISOptionsKit & out_kit) const;
3552 
3556  ExportACISOptionsKit & operator=(ExportACISOptionsKit const & in_kit);
3557 
3561  ExportACISOptionsKit & operator=(ExportACISOptionsKit && in_that);
3562 
3565  bool Empty() const;
3566 
3570  bool Equals(ExportACISOptionsKit const & in_kit) const;
3571 
3575  bool operator==(ExportACISOptionsKit const & in_kit) const;
3576 
3580  bool operator!=(ExportACISOptionsKit const & in_kit) const;
3581 
3582 
3588  ExportACISOptionsKit & SetMillimeterUnits(bool in_state);
3589 
3595  ExportACISOptionsKit & SetBinary(bool in_state);
3596 
3597 
3600  ExportACISOptionsKit & UnsetMillimeterUnits();
3601 
3604  ExportACISOptionsKit & UnsetBinary();
3605 
3608  ExportACISOptionsKit & UnsetEverything();
3609 
3610 
3614  bool ShowMillimeterUnits(bool & out_state) const;
3615 
3619  bool ShowBinary(bool & out_state) const;
3620  };
3621 
3623  class EXCHANGE_API ExportIGESOptionsKit : public SprocketKit
3624  {
3625  public:
3628 
3632 
3636 
3637  virtual ~ExportIGESOptionsKit();
3638 
3639  HPS::Type ObjectType() const { return HPS::Type::ExchangeExportIGESOptionsKit; }
3640 
3644  static ExportIGESOptionsKit GetDefault();
3645 
3648  void Set(ExportIGESOptionsKit const & in_kit);
3649 
3652  void Show(ExportIGESOptionsKit & out_kit) const;
3653 
3657  ExportIGESOptionsKit & operator=(ExportIGESOptionsKit const & in_kit);
3658 
3662  ExportIGESOptionsKit & operator=(ExportIGESOptionsKit && in_that);
3663 
3666  bool Empty() const;
3667 
3671  bool Equals(ExportIGESOptionsKit const & in_kit) const;
3672 
3676  bool operator==(ExportIGESOptionsKit const & in_kit) const;
3677 
3681  bool operator!=(ExportIGESOptionsKit const & in_kit) const;
3682 
3683 
3689  ExportIGESOptionsKit & SetAnalyticsAsNURBS(bool in_state);
3690 
3696  ExportIGESOptionsKit & SetFacetedAsWireframe(bool in_state);
3697 
3703  ExportIGESOptionsKit & SetSolidsAsFaces(bool in_state);
3704 
3710  ExportIGESOptionsKit & SetHiddenObjects(bool in_state);
3711 
3717  ExportIGESOptionsKit & SetTessellation(bool in_state);
3718 
3722  ExportIGESOptionsKit & SetApplication(char const * in_name);
3723 
3727  ExportIGESOptionsKit & SetVersion(char const * in_version);
3728 
3729 
3732  ExportIGESOptionsKit & UnsetAnalyticsAsNURBS();
3733 
3736  ExportIGESOptionsKit & UnsetFacetedAsWireframe();
3737 
3740  ExportIGESOptionsKit & UnsetSolidsAsFaces();
3741 
3744  ExportIGESOptionsKit & UnsetHiddenObjects();
3745 
3748  ExportIGESOptionsKit & UnsetTessellation();
3749 
3752  ExportIGESOptionsKit & UnsetApplication();
3753 
3756  ExportIGESOptionsKit & UnsetVersion();
3757 
3760  ExportIGESOptionsKit & UnsetEverything();
3761 
3762 
3766  bool ShowAnalyticsAsNURBS(bool & out_state) const;
3767 
3771  bool ShowFacetedAsWireframe(bool & out_state) const;
3772 
3776  bool ShowSolidsAsFaces(bool & out_state) const;
3777 
3781  bool ShowHiddenObjects(bool & out_state) const;
3782 
3786  bool ShowTessellation(bool & out_state) const;
3787 
3791  bool ShowApplication(UTF8 & out_name) const;
3792 
3796  bool ShowVersion(UTF8 & out_version) const;
3797  };
3798 
3800  class EXCHANGE_API ExportJTOptionsKit : public SprocketKit
3801  {
3802  public:
3805 
3808  ExportJTOptionsKit(ExportJTOptionsKit const & in_kit);
3809 
3813 
3814  virtual ~ExportJTOptionsKit();
3815 
3816  HPS::Type ObjectType() const { return HPS::Type::ExchangeExportJTOptionsKit; }
3817 
3821  static ExportJTOptionsKit GetDefault();
3822 
3825  void Set(ExportJTOptionsKit const & in_kit);
3826 
3829  void Show(ExportJTOptionsKit & out_kit) const;
3830 
3834  ExportJTOptionsKit & operator=(ExportJTOptionsKit const & in_kit);
3835 
3839  ExportJTOptionsKit & operator=(ExportJTOptionsKit && in_that);
3840 
3843  bool Empty() const;
3844 
3848  bool Equals(ExportJTOptionsKit const & in_kit) const;
3849 
3853  bool operator==(ExportJTOptionsKit const & in_kit) const;
3854 
3858  bool operator!=(ExportJTOptionsKit const & in_kit) const;
3859 
3860 
3866  ExportJTOptionsKit & SetContent(JT::Content in_content);
3867 
3873  ExportJTOptionsKit & SetHiddenObjects(bool in_state);
3874 
3880  ExportJTOptionsKit & SetPMI(bool in_state);
3881 
3887  ExportJTOptionsKit & SetVersion(JT::Version in_version);
3888 
3889 
3892  ExportJTOptionsKit & UnsetContent();
3893 
3896  ExportJTOptionsKit & UnsetHiddenObjects();
3897 
3900  ExportJTOptionsKit & UnsetPMI();
3901 
3904  ExportJTOptionsKit & UnsetVersion();
3905 
3908  ExportJTOptionsKit & UnsetEverything();
3909 
3910 
3914  bool ShowContent(JT::Content & out_content) const;
3915 
3919  bool ShowHiddenObjects(bool & out_state) const;
3920 
3924  bool ShowPMI(bool & out_state) const;
3925 
3929  bool ShowVersion(JT::Version & out_version) const;
3930  };
3931 
3933  class EXCHANGE_API ExportParasolidOptionsKit : public SprocketKit
3934  {
3935  public:
3938 
3942 
3946 
3947  virtual ~ExportParasolidOptionsKit();
3948 
3949  HPS::Type ObjectType() const { return HPS::Type::ExchangeExportParasolidOptionsKit; }
3950 
3954  static ExportParasolidOptionsKit GetDefault();
3955 
3958  void Set(ExportParasolidOptionsKit const & in_kit);
3959 
3962  void Show(ExportParasolidOptionsKit & out_kit) const;
3963 
3967  ExportParasolidOptionsKit & operator=(ExportParasolidOptionsKit const & in_kit);
3968 
3972  ExportParasolidOptionsKit & operator=(ExportParasolidOptionsKit && in_that);
3973 
3976  bool Empty() const;
3977 
3981  bool Equals(ExportParasolidOptionsKit const & in_kit) const;
3982 
3986  bool operator==(ExportParasolidOptionsKit const & in_kit) const;
3987 
3991  bool operator!=(ExportParasolidOptionsKit const & in_kit) const;
3992 
3993 
3999  ExportParasolidOptionsKit & SetSolidsAsFaces(bool in_state);
4000 
4006  ExportParasolidOptionsKit & SetTessellation(bool in_state);
4007 
4013  ExportParasolidOptionsKit & SetHiddenObjects(bool in_state);
4014 
4018  ExportParasolidOptionsKit & SetApplication(char const * in_name);
4019 
4023  ExportParasolidOptionsKit & SetVersion(char const * in_version);
4024 
4025 
4028  ExportParasolidOptionsKit & UnsetSolidsAsFaces();
4029 
4032  ExportParasolidOptionsKit & UnsetTessellation();
4033 
4036  ExportParasolidOptionsKit & UnsetHiddenObjects();
4037 
4040  ExportParasolidOptionsKit & UnsetApplication();
4041 
4044  ExportParasolidOptionsKit & UnsetVersion();
4045 
4048  ExportParasolidOptionsKit & UnsetEverything();
4049 
4050 
4054  bool ShowSolidsAsFaces(bool & out_state) const;
4055 
4059  bool ShowTessellation(bool & out_state) const;
4060 
4064  bool ShowHiddenObjects(bool & out_state) const;
4065 
4069  bool ShowApplication(UTF8 & out_name) const;
4070 
4074  bool ShowVersion(UTF8 & out_version) const;
4075  };
4076 
4078  class EXCHANGE_API ExportPRCOptionsKit : public SprocketKit
4079  {
4080  public:
4083 
4086  ExportPRCOptionsKit(ExportPRCOptionsKit const & in_kit);
4087 
4091 
4092  virtual ~ExportPRCOptionsKit();
4093 
4094  HPS::Type ObjectType() const { return HPS::Type::ExchangeExportPRCOptionsKit; }
4095 
4099  static ExportPRCOptionsKit GetDefault();
4100 
4103  void Set(ExportPRCOptionsKit const & in_kit);
4104 
4107  void Show(ExportPRCOptionsKit & out_kit) const;
4108 
4112  ExportPRCOptionsKit & operator=(ExportPRCOptionsKit const & in_kit);
4113 
4117  ExportPRCOptionsKit & operator=(ExportPRCOptionsKit && in_that);
4118 
4121  bool Empty() const;
4122 
4126  bool Equals(ExportPRCOptionsKit const & in_kit) const;
4127 
4131  bool operator==(ExportPRCOptionsKit const & in_kit) const;
4132 
4136  bool operator!=(ExportPRCOptionsKit const & in_kit) const;
4137 
4138 
4144  ExportPRCOptionsKit & SetTessellationCompression(bool in_state);
4145 
4152  ExportPRCOptionsKit & SetBRepCompression(PRC::BRepCompression in_level);
4153 
4159  ExportPRCOptionsKit & SetBRepRemoval(bool in_state);
4160 
4166  ExportPRCOptionsKit & SetAttributeRemoval(bool in_state);
4167 
4172  ExportPRCOptionsKit & SetAdditionalKeyPaths(KeyPathArray const & in_additional_key_paths);
4173 
4179  ExportPRCOptionsKit & SetAdditionalKeyPaths(size_t in_count, KeyPath const in_additional_key_paths []);
4180 
4181 
4184  ExportPRCOptionsKit & UnsetTessellationCompression();
4185 
4188  ExportPRCOptionsKit & UnsetBRepCompression();
4189 
4192  ExportPRCOptionsKit & UnsetBRepRemoval();
4193 
4196  ExportPRCOptionsKit & UnsetAttributeRemoval();
4197 
4200  ExportPRCOptionsKit & UnsetAdditionalKeyPaths();
4201 
4204  ExportPRCOptionsKit & UnsetEverything();
4205 
4206 
4210  bool ShowTessellationCompression(bool & out_state) const;
4211 
4215  bool ShowBRepCompression(PRC::BRepCompression & out_level) const;
4216 
4220  bool ShowBRepRemoval(bool & out_state) const;
4221 
4225  bool ShowAttributeRemoval(bool & out_state) const;
4226 
4230  bool ShowAdditionalKeyPaths(KeyPathArray & out_additional_key_paths) const;
4231  };
4232 
4234  class EXCHANGE_API ExportSTEPOptionsKit : public SprocketKit
4235  {
4236  public:
4239 
4243 
4247 
4248  virtual ~ExportSTEPOptionsKit();
4249 
4250  HPS::Type ObjectType() const { return HPS::Type::ExchangeExportSTEPOptionsKit; }
4251 
4255  static ExportSTEPOptionsKit GetDefault();
4256 
4259  void Set(ExportSTEPOptionsKit const & in_kit);
4260 
4263  void Show(ExportSTEPOptionsKit & out_kit) const;
4264 
4268  ExportSTEPOptionsKit & operator=(ExportSTEPOptionsKit const & in_kit);
4269 
4273  ExportSTEPOptionsKit & operator=(ExportSTEPOptionsKit && in_that);
4274 
4277  bool Empty() const;
4278 
4282  bool Equals(ExportSTEPOptionsKit const & in_kit) const;
4283 
4287  bool operator==(ExportSTEPOptionsKit const & in_kit) const;
4288 
4292  bool operator!=(ExportSTEPOptionsKit const & in_kit) const;
4293 
4294 
4300  ExportSTEPOptionsKit & SetFormat(STEP::Format in_format);
4301 
4307  ExportSTEPOptionsKit & SetAnalyticsAsNURBS(bool in_state);
4308 
4314  ExportSTEPOptionsKit & SetFacetedAsWireframe(bool in_state);
4315 
4321  ExportSTEPOptionsKit & SetNameShortening(bool in_state);
4322 
4326  ExportSTEPOptionsKit & SetApplication(char const * in_name);
4327 
4331  ExportSTEPOptionsKit & SetVersion(char const * in_version);
4332 
4336  ExportSTEPOptionsKit & SetPMI(bool in_state);
4337 
4341  ExportSTEPOptionsKit & SetCurves(bool in_state);
4342 
4346  ExportSTEPOptionsKit & SetAttributes(bool in_state);
4347 
4348 
4351  ExportSTEPOptionsKit & UnsetFormat();
4352 
4355  ExportSTEPOptionsKit & UnsetAnalyticsAsNURBS();
4356 
4359  ExportSTEPOptionsKit & UnsetFacetedAsWireframe();
4360 
4363  ExportSTEPOptionsKit & UnsetNameShortening();
4364 
4367  ExportSTEPOptionsKit & UnsetApplication();
4368 
4371  ExportSTEPOptionsKit & UnsetVersion();
4372 
4375  ExportSTEPOptionsKit & UnsetPMI();
4376 
4379  ExportSTEPOptionsKit & UnsetCurves();
4380 
4383  ExportSTEPOptionsKit & UnsetAttributes();
4384 
4387  ExportSTEPOptionsKit & UnsetEverything();
4388 
4389 
4393  bool ShowFormat(STEP::Format & out_format) const;
4394 
4398  bool ShowAnalyticsAsNURBS(bool & out_state) const;
4399 
4403  bool ShowFacetedAsWireframe(bool & out_state) const;
4404 
4408  bool ShowNameShortening(bool & out_state) const;
4409 
4413  bool ShowApplication(UTF8 & out_name) const;
4414 
4418  bool ShowVersion(UTF8 & out_version) const;
4419 
4423  bool ShowPMI(bool & out_state) const;
4424 
4428  bool ShowCurves(bool & out_state) const;
4429 
4433  bool ShowAttributes(bool & out_state) const;
4434  };
4435 
4437  class EXCHANGE_API ExportSTLOptionsKit : public SprocketKit
4438  {
4439  public:
4442 
4445  ExportSTLOptionsKit(ExportSTLOptionsKit const & in_kit);
4446 
4450 
4451  virtual ~ExportSTLOptionsKit();
4452 
4453  HPS::Type ObjectType() const { return HPS::Type::ExchangeExportSTLOptionsKit; }
4454 
4458  static ExportSTLOptionsKit GetDefault();
4459 
4462  void Set(ExportSTLOptionsKit const & in_kit);
4463 
4466  void Show(ExportSTLOptionsKit & out_kit) const;
4467 
4471  ExportSTLOptionsKit & operator=(ExportSTLOptionsKit const & in_kit);
4472 
4476  ExportSTLOptionsKit & operator=(ExportSTLOptionsKit && in_that);
4477 
4480  bool Empty() const;
4481 
4485  bool Equals(ExportSTLOptionsKit const & in_kit) const;
4486 
4490  bool operator==(ExportSTLOptionsKit const & in_kit) const;
4491 
4495  bool operator!=(ExportSTLOptionsKit const & in_kit) const;
4496 
4497 
4503  ExportSTLOptionsKit & SetBinary(bool in_state);
4504 
4510  ExportSTLOptionsKit & SetTessellationLevel(Tessellation::Level in_level);
4511 
4518  ExportSTLOptionsKit & SetTessellationLevel(Tessellation::Chord::Limit in_limit_type, double in_limit, double in_angle_tolerance);
4519 
4525  ExportSTLOptionsKit & SetTessellationAccuracy(Tessellation::Accuracy in_type);
4526 
4532  ExportSTLOptionsKit & SetCurrentTessellationRetention(bool in_state);
4533 
4540  ExportSTLOptionsKit & SetMaximumEdgeLength(double in_length);
4541 
4542 
4545  ExportSTLOptionsKit & UnsetBinary();
4546 
4549  ExportSTLOptionsKit & UnsetTessellationLevel();
4550 
4553  ExportSTLOptionsKit & UnsetTessellationAccuracy();
4554 
4557  ExportSTLOptionsKit & UnsetCurrentTessellationRetention();
4558 
4561  ExportSTLOptionsKit & UnsetMaximumEdgeLength();
4562 
4565  ExportSTLOptionsKit & UnsetEverything();
4566 
4567 
4571  bool ShowBinary(bool & out_state) const;
4572 
4580  bool ShowTessellationLevel(Tessellation::Type & out_type, Tessellation::Level & out_level, Tessellation::Chord::Limit & out_limit_type, double & out_limit, double & out_angle_tolerance) const;
4581 
4585  bool ShowTessellationAccuracy(Tessellation::Accuracy & out_type) const;
4586 
4590  bool ShowCurrentTessellationRetention(bool & out_state) const;
4591 
4595  bool ShowMaximumEdgeLength(double & out_length) const;
4596  };
4597 
4599  class EXCHANGE_API ExportU3DOptionsKit : public SprocketKit
4600  {
4601  public:
4604 
4607  ExportU3DOptionsKit(ExportU3DOptionsKit const & in_kit);
4608 
4612 
4613  virtual ~ExportU3DOptionsKit();
4614 
4615  HPS::Type ObjectType() const { return HPS::Type::ExchangeExportU3DOptionsKit; }
4616 
4620  static ExportU3DOptionsKit GetDefault();
4621 
4624  void Set(ExportU3DOptionsKit const & in_kit);
4625 
4628  void Show(ExportU3DOptionsKit & out_kit) const;
4629 
4633  ExportU3DOptionsKit & operator=(ExportU3DOptionsKit const & in_kit);
4634 
4638  ExportU3DOptionsKit & operator=(ExportU3DOptionsKit && in_that);
4639 
4642  bool Empty() const;
4643 
4647  bool Equals(ExportU3DOptionsKit const & in_kit) const;
4648 
4652  bool operator==(ExportU3DOptionsKit const & in_kit) const;
4653 
4657  bool operator!=(ExportU3DOptionsKit const & in_kit) const;
4658 
4659 
4665  ExportU3DOptionsKit & SetVersion(U3D::Version in_version);
4666 
4671  ExportU3DOptionsKit & SetCompression(unsigned char in_level);
4672 
4673 
4676  ExportU3DOptionsKit & UnsetVersion();
4677 
4680  ExportU3DOptionsKit & UnsetCompression();
4681 
4684  ExportU3DOptionsKit & UnsetEverything();
4685 
4686 
4690  bool ShowVersion(U3D::Version & out_version) const;
4691 
4695  bool ShowCompression(unsigned char & out_level) const;
4696  };
4697 
4699  class EXCHANGE_API ExportXMLOptionsKit : public SprocketKit
4700  {
4701  public:
4704 
4707  ExportXMLOptionsKit(ExportXMLOptionsKit const & in_kit);
4708 
4712 
4713  virtual ~ExportXMLOptionsKit();
4714 
4715  HPS::Type ObjectType() const { return HPS::Type::ExchangeExportXMLOptionsKit; }
4716 
4720  static ExportXMLOptionsKit GetDefault();
4721 
4724  void Set(ExportXMLOptionsKit const & in_kit);
4725 
4728  void Show(ExportXMLOptionsKit & out_kit) const;
4729 
4733  ExportXMLOptionsKit & operator=(ExportXMLOptionsKit const & in_kit);
4734 
4738  ExportXMLOptionsKit & operator=(ExportXMLOptionsKit && in_that);
4739 
4742  bool Empty() const;
4743 
4747  bool Equals(ExportXMLOptionsKit const & in_kit) const;
4748 
4752  bool operator==(ExportXMLOptionsKit const & in_kit) const;
4753 
4757  bool operator!=(ExportXMLOptionsKit const & in_kit) const;
4758 
4759 
4765  ExportXMLOptionsKit & SetMetadata(bool in_state);
4766 
4772  ExportXMLOptionsKit & SetTransformations(bool in_state);
4773 
4779  ExportXMLOptionsKit & SetMaterials(bool in_state);
4780 
4781 
4784  ExportXMLOptionsKit & UnsetMetadata();
4785 
4788  ExportXMLOptionsKit & UnsetTransformations();
4789 
4792  ExportXMLOptionsKit & UnsetMaterials();
4793 
4796  ExportXMLOptionsKit & UnsetEverything();
4797 
4798 
4802  bool ShowMetadata(bool & out_state) const;
4803 
4807  bool ShowTransformations(bool & out_state) const;
4808 
4812  bool ShowMaterials(bool & out_state) const;
4813  };
4814 
4816  class EXCHANGE_API TessellationOptionsKit : public SprocketKit
4817  {
4818  public:
4821 
4825 
4829 
4830  virtual ~TessellationOptionsKit();
4831 
4832  HPS::Type ObjectType() const { return HPS::Type::ExchangeTessellationOptionsKit; }
4833 
4837  static TessellationOptionsKit GetDefault();
4838 
4841  void Set(TessellationOptionsKit const & in_kit);
4842 
4845  void Show(TessellationOptionsKit & out_kit) const;
4846 
4850  TessellationOptionsKit & operator=(TessellationOptionsKit const & in_kit);
4851 
4855  TessellationOptionsKit & operator=(TessellationOptionsKit && in_that);
4856 
4859  bool Empty() const;
4860 
4864  bool Equals(TessellationOptionsKit const & in_kit) const;
4865 
4869  bool operator==(TessellationOptionsKit const & in_kit) const;
4870 
4874  bool operator!=(TessellationOptionsKit const & in_kit) const;
4875 
4876 
4880  TessellationOptionsKit & SetLevel(Tessellation::Level in_level);
4881 
4888  TessellationOptionsKit & SetLevel(Tessellation::Chord::Limit in_limit_type, double in_limit, double in_angle_tolerance);
4889 
4895  TessellationOptionsKit & SetAccuracy(Tessellation::Accuracy in_type, bool in_accurate_normals = true);
4896 
4900  TessellationOptionsKit & SetUVPointPreservation(bool in_state);
4901 
4905  TessellationOptionsKit & SetMaximumEdgeLength(double in_length);
4906 
4907 
4910  TessellationOptionsKit & UnsetLevel();
4911 
4914  TessellationOptionsKit & UnsetAccuracy();
4915 
4918  TessellationOptionsKit & UnsetUVPointPreservation();
4919 
4922  TessellationOptionsKit & UnsetMaximumEdgeLength();
4923 
4926  TessellationOptionsKit & UnsetEverything();
4927 
4928 
4936  bool ShowLevel(Tessellation::Type & out_type, Tessellation::Level & out_level, Tessellation::Chord::Limit & out_limit_type, double & out_limit, double & out_angle_tolerance) const;
4937 
4942  bool ShowAccuracy(Tessellation::Accuracy & out_type, bool & out_accurate_normals) const;
4943 
4947  bool ShowUVPointPreservation(bool & out_state) const;
4948 
4952  bool ShowMaximumEdgeLength(double & out_length) const;
4953  };
4954 
4960  class EXCHANGE_API CommonMeasurementOperator : public Operator
4961  {
4962  public:
4963  enum class Tags
4964  {
4965  Name = 0,
4966  MeasurementType,
4967  Radius,
4968  Inverted,
4969  VectorX,
4970  VectorY,
4971  VectorZ,
4972  };
4973 
4975 
4976  CommonMeasurementOperator(Exchange::CADModel const & in_cad_model, MouseButtons in_mouse_trigger = MouseButtons::ButtonLeft(), ModifierKeys in_modifier_trigger = ModifierKeys());
4977 
4979  virtual HPS::UTF8 GetName() const OVERRIDE { return "HPS_ExchangeCommonMeasurementOperator"; }
4980 
4981  virtual void OnViewAttached() OVERRIDE;
4982  virtual void OnViewDetached() OVERRIDE;
4983 
4984  Exchange::CADModel GetCADModel() const;
4985  void SetCADModel(Exchange::CADModel const & in_cad_model);
4986 
4988  size_t GetPrecision() const;
4989 
4992  void SetPrecision(size_t in_precision);
4993 
4995  MaterialMappingKit GetMaterial() const;
4996 
4999  void SetMaterial(MaterialMappingKit const & in_material_mapping);
5000 
5002  TextAttributeKit GetTextAttributes() const;
5003 
5006  void SetTextAttribute(TextAttributeKit const & in_text_attributes);
5007 
5009  SegmentKey GetMeasurementSegment() const;
5010 
5012  static UTF8 GetNewMeasurementSegmentName(HPS::UTF8 const & in_prefix);
5013 
5014  /* Deletes all measurements */
5015  void DeleteMeasurements();
5016 
5017  class EXCHANGE_API MeasurementInsertedEvent : public HPS::Event
5018  {
5019  public:
5022  {
5023  channel = GetClassID();
5024  consumable = false;
5025  }
5026 
5027  MeasurementInsertedEvent(HPS::Key const & in_measurement_key, HPS::View const & in_view) : Event()
5028  {
5029  channel = GetClassID();
5030  consumable = false;
5031  measurement_key = in_measurement_key;
5032  view = in_view;
5033  }
5034 
5037  MeasurementInsertedEvent(Event const & in_event) : Event(in_event)
5038  {
5039  if (in_event.GetChannel() == Object::ClassID<MeasurementInsertedEvent>())
5040  {
5041  auto that = static_cast<MeasurementInsertedEvent const &>(in_event);
5042  measurement_key = that.measurement_key;
5043  view = that.view;
5044  }
5045  else
5046  throw HPS::InvalidSpecificationException("Invalid Event Type to Cast From.");
5047  }
5048 
5050 
5053  Event * Clone() const
5054  {
5055  MeasurementInsertedEvent * new_event = new MeasurementInsertedEvent(*this);
5056  return new_event;
5057  }
5058 
5059  Key measurement_key;
5060  View view;
5061  };
5062 
5063  class EXCHANGE_API MeasurementDeletedEvent : public HPS::Event
5064  {
5065  public:
5068  {
5069  channel = GetClassID();
5070  consumable = false;
5071  }
5072 
5073  MeasurementDeletedEvent(HPS::UTF8 const & in_measurement_name, HPS::View const & in_view) : Event()
5074  {
5075  channel = GetClassID();
5076  consumable = false;
5077  measurement_name = in_measurement_name;
5078  view = in_view;
5079  }
5080 
5083  MeasurementDeletedEvent(Event const & in_event) : Event(in_event)
5084  {
5085  if (in_event.GetChannel() == Object::ClassID<MeasurementDeletedEvent>())
5086  {
5087  auto that = static_cast<MeasurementDeletedEvent const &>(in_event);
5088  measurement_name = that.measurement_name;
5089  view = that.view;
5090  }
5091  else
5092  throw HPS::InvalidSpecificationException("Invalid Event Type to Cast From.");
5093  }
5094 
5096 
5099  Event * Clone() const
5100  {
5101  MeasurementDeletedEvent * new_event = new MeasurementDeletedEvent(*this);
5102  return new_event;
5103  }
5104 
5105  UTF8 measurement_name;
5106  View view;
5107  };
5108 
5109  protected:
5110  Exchange::CADModel cad_model;
5111  size_t measurement_precision;
5112  UTF8 units;
5113  MaterialMappingKit materials;
5114  TextAttributeKit text_attributes;
5115  SegmentKey measurement_segment;
5116  GlyphDefinition left_arrow;
5117  GlyphDefinition right_arrow;
5118  SelectionOptionsKit selection_options;
5119  bool manipulate_measurement; //whether we are manipulating a previously entered measurement
5120  Vector camera_direction;
5121  PortfolioKey portfolio;
5122  SegmentKey style_segment;
5123  HighlightOptionsKit highlight_options;
5124 
5125  static size_t length_measurement_index;
5126  static size_t radius_measurement_index;
5127  static size_t distance_measurement_index;
5128  static size_t angle_measurement_index;
5129 
5130  void Tag(HPS::Key & tag, const char * message, Tags tag_index);
5131  void GetUnits();
5132  void SetGlyphColor();
5133  void GetCameraDirection();
5134  void SetupConstructionSegment();
5135  void PositionLinearMeasurementGeometry(WindowPoint const & window_cursor_location, KeyPath const & event_path, LineKey & leader_line_one, LineKey & leader_line_two,
5136  LineKey & measurement_line, LineKey & line_to_cursor, Point & original_point_one, Point & original_point_two, TextKey & text, UTF8 const & text_string,
5137  Point & distance_point_one, Point & distance_point_two, SegmentKey & current_measurement_segment, Plane const & measurement_plane = Plane(), Vector const & explicit_direction = Vector());
5138  float GetModelScale(Exchange::Component const & component);
5139  void SetMaterialsOnMeasurementSegment(HPS::SegmentKey const & set_materials_here, HPS::MaterialMappingKit const & materials_to_apply);
5140  };
5141 
5194  {
5195  public:
5196  enum class MeasurementType
5197  {
5198  PointToPoint,
5199  EdgeAndRadius,
5200  FeatureToFeature,
5201  FaceAngle,
5202  };
5203 
5205 
5206  MeasurementOperator(Exchange::CADModel const & in_cad_model, MouseButtons in_mouse_trigger = MouseButtons::ButtonLeft(), ModifierKeys in_modifier_trigger = ModifierKeys());
5207 
5209  virtual HPS::UTF8 GetName() const OVERRIDE{ return "HPS_ExchangeMeasurementOperator"; }
5210 
5211  virtual void OnViewAttached() OVERRIDE;
5212  virtual void OnViewDetached() OVERRIDE;
5213 
5218  virtual bool OnMouseDown(MouseState const & in_state) OVERRIDE;
5219 
5223  virtual bool OnMouseUp(MouseState const & in_state) OVERRIDE;
5224 
5232  virtual bool OnMouseMove(MouseState const & in_state) OVERRIDE;
5233 
5237  virtual bool OnKeyDown(KeyboardState const & in_state) OVERRIDE;
5238 
5239  /* Sets the type of measurement to insert.
5240  * \param in_measurement_type The type of measurement to insert.*/
5241  void SetMeasurementType(MeasurementType in_measurement_type);
5242 
5245  MeasurementType GetMeasurementType();
5246 
5247  /* Whether measurable geometry should be highlighted when mousing over it
5248  * \param in_highlighting Whether measurable geometry should be highlighted when mousing over it. */
5249  void SetMouseOverHighlighting(bool in_highlighting);
5250 
5251  /* Whether measurable geometry should be highlighted when mousing over it
5252  * \param in_highlighting Whether measurable geometry should be highlighted when mousing over it.
5253  * \param in_highlight_options_kit The highlight kit used for mouse over highlights */
5254  void SetMouseOverHighlighting(bool in_highlighting, HighlightOptionsKit const & in_highlight_options_kit);
5255 
5256  /* Whether measurable geometry is highlighted when mousing over it
5257  * \return <span class='code'>true</span> if measurable geometry is highlighted on mouse over, <span class='code'>false</span> otherwise. */
5258  bool GetMouseOverHighlighting();
5259 
5260  /* Returns the highlight option kit currently used for mouse over highlighting.
5261  * \return the highlight option kit currently used for mouse over highlighting. */
5262  HighlightOptionsKit GetHighlightOptions();
5263 
5264  /* Whether a measurement is currently being inserted or edited.
5265  * \return <span class='code'>true</span> if a measurement is being inserted or manipulated, <span class='code'>false</span> otherwise. */
5266  bool IsMeasurementActive();
5267 
5268  private:
5269  enum class EdgeType //used to determine the type of edge measured when using the EdgeAndRadius measurement type
5270  {
5271  Circle,
5272  Line,
5273  Generic,
5274  };
5275 
5276  class Surface //helper class containing surfaces properties. Used for the FeatureToFeature measurement type
5277  {
5278  public:
5279  Surface();
5280 
5281  enum class SurfaceType
5282  {
5283  Plane,
5284  ConeOrCylinder,
5285  Unsupported,
5286  };
5287 
5288  SurfaceType surface_type; //the type of surface being measured
5289  Point center; //the center point of the surface
5290  Vector normal; //the center line of surfaces of type Cylinder or Cone
5291  LineKey normal_points; //the line representing the center line of surfaces of type Cylinder or Cone
5292  ComponentPath path; //the component path to this surface
5293  };
5294 
5295  //bookkeeping
5296  MeasurementType measurement_type; //the type of measurement to be inserted
5297  MeasurementType temporary_measurement_type; //the type of the measurement to be edited
5298  TouchID tracked_touch_id;
5299  SegmentKey current_measurement; //segment of the measurement being inserted / edited
5300  bool operator_active; //whether a measurement is in progress
5301  bool end_measurement; //whether we should end the current measurement
5302  CanvasArray canvases; //canvases related to the view where this operator is attached
5303 
5304  //measurement anchors
5305  size_t anchors; //valid for point-to-point and face-angle measurements
5306  bool anchors_in_place; //true if all the anchors have been placed
5307  Point first_click_position; //position of the first anchor
5308  Point second_click_position; //position of the second anchor
5309 
5310  //geometry for linear measurements
5311  MarkerKey anchor_one; //marker corresponding to the start of the measurement
5312  MarkerKey anchor_two; //marker corresponding to the end of the measurement
5313  LineKey distance_line; //a line representing the distance measured
5314  LineKey leader_line_one; //line connecting the first anchor point to the distance line
5315  LineKey leader_line_two; //line connecting the second anchor point to the distance line
5316  Point distance_point_one; //intersection of leader_line_one and distance_line
5317  Point distance_point_two; //intersection of leader_line_two and distance_line
5318  LineKey line_to_cursor; //line extending from distance_point_one to the cursor
5319  TextKey text; //text representing the measurement and units
5320  UTF8 text_string; //the contents of the text
5321  Vector measurement_direction; //the direction of the measurement
5322  bool use_explicit_direction; //if true, we are moving the measurement along a specific vector, called explicit_direction
5323  Vector explicit_direction; //used if use_explicit_direction is true
5324 
5325  //geometry for radius measurement
5326  MarkerKey center_marker; //marker representing the center of the circle
5327  Point circle_center; //circle center
5328  float radius; //circle radius
5329 
5330  //edge specific data
5331  LineKey edge_line; //the edge being measured
5332  double edge_length; //length of the measured edge
5333  EdgeType edge_type; //the type of edge being measured
5334 
5335  //feature-to-feature specific data
5336  Surface surface_one; //data related to first selected surface
5337  Surface surface_two; //data related to second selected surface
5338  Plane measurement_plane; //the measurement plane
5339  LineKey current_normal; //the center line of surfaces of type Cone and Cylinder
5340 
5341  //angle specific data
5342  Vector leader_line_one_direction; //the direction of the first leader line
5343  Vector leader_line_two_direction; //the direction of the second leader line
5344  Vector first_face_normal; //the normal of the first selected face
5345  Vector second_face_normal; //the normal of the second selected face
5346  bool inverted_measurement; //the smallest of the two possible angles is always chosen. If the user wants the other angle, the measurement is marked as 'inverted'
5347  CircularArcKey measurement_arc; //an arc representing the measured angle
5348  LineKey line_to_leader_line; //line extending from one anchor to a leader line
5349  Vector mid_point_direction;
5350 
5351  //selection kits
5352  SelectionOptionsKit point_to_point_selection;
5353  SelectionOptionsKit edge_radius_selection;
5354  SelectionOptionsKit feature_to_feature_selection;
5355  SelectionOptionsKit angle_selection;
5356 
5357  //highlighting
5358  bool highlight_on_mouse_over; //whether measurable geometry should be highlighted on mouse over
5359  HighlightOptionsKit mouse_over_highlight_options; //the options used for mouse over highlighting
5360  HighlightOptionsKit edit_measurement_highlight_options; //the options used for highlighting measurements while editing them
5361  UpdateNotifier highlight_update_notifier; //notifier used to know if the last highlight update has completed
5362  KeyPath highlighted_path; //highlighted_path
5363  bool disable_highlighting; //in some situation we temporarily disable highlighting to improve performance
5364  bool Highlight(MeasurementType in_measurement_type, WindowPoint const & in_location, WindowKey & in_window, KeyPath const & in_path);
5365 
5366  //input handling
5367  bool InputDown(WindowPoint const & in_location, WindowKey & in_window, KeyPath const & in_path, size_t number_of_clicks);
5368  bool InputMove(WindowPoint const & in_location, KeyPath const & in_path);
5369  bool InputUp(WindowKey & in_window);
5370  void ResetMeasurement();
5371 
5372  //inserting measurements
5373  void InsertPointToPointMeasurement(Point const & in_world_point);
5374  bool InsertEdgeRadiusMeasurement(KeyPath const & in_selection_path, WindowPoint & in_selection_position, Key const & in_edge_key);
5375  bool InsertFeatureToFeatureMeasurement(KeyPath const & in_selection_path, WindowPoint & in_selection_position, Key const & in_face_key, WindowKey & in_window);
5376  void InsertFeatureToFeatureGeometry(Point const & point_one, Point const & point_two, float distance);
5377  bool InsertAngleMeasurement(KeyPath const & in_selection_path, WindowPoint & in_selection_position, Key const & in_face_key, WindowKey & in_window, SelectionResults const & in_selection_results);
5378  void InvertMeasuredAngle(WindowKey & in_window);
5379  void AdjustLineToCursor(Point const & cursor_position);
5380 
5381  //saving measurements
5382  void TagMeasurement();
5383  void TagPointToPointMeasurement();
5384  void TagEdgeMeasurement();
5385  void TagRadiusMeasurement();
5386  void TagGenericEdgeMeasurement();
5387  void TagFeatureToFeatureMeasurement();
5388  void TagAngleMeasurement();
5389 
5390  //restoring measurements
5391  void RestoreMeasurement(SegmentKey const & measurement_segment);
5392  void RestorePointToPointMeasurement(SegmentKey const & measurement_segment);
5393  void RestoreEdgeMeasurement(SegmentKey const & measurement_segment);
5394  void RestoreRadiusMeasurement(SegmentKey const & measurement_segment);
5395  void RestoreGenericEdgeMeasurement(SegmentKey const & measurement_segment);
5396  void RestoreFeatureToFeatureMeasurement(SegmentKey const & measurement_segment);
5397  void RestoreAngleMeasurement(SegmentKey const & measurement_segment);
5398  void RestoreLinearMeasurement(SegmentKey const & measurement_segment);
5399 
5400  //topology functions
5401  void GetEdgeLengthAndType(Exchange::Component const & edge_component);
5402  void GetSurfaceType(Exchange::Component const & face_component, Surface & surface);
5403  void PlaneToCenterLineDistance();
5404  void PlaneToPlaneDistance();
5405  void LineToLineDistance();
5406  float LineSegmentDistance(Point & p0, Point & p1, Point & q0, Point & q1, LineKey & normal_one, LineKey & normal_two, Point & out_point_on_edge, Point & out_point_on_center_line, bool clamp = true);
5407  Point ClosestPointOnTriangleToPoint(Point const & p, Point const & a, Point const & b, Point const & c);
5408  float ClosestPointSegmentSegment(Point const & p1, Point const & q1, Point const & p2, Point const & q2, Point & c1, Point & c2);
5409  bool IsPlane(Exchange::Component const & face_component);
5410  Point GetPlaneIntersection(Plane const & in_plane, KeyPath const & in_key_path, WindowPoint const & in_window_point);
5411  };
5412 
5413 private:
5415  Exchange();
5416 };
5417 
5418 }
5419 
5420 #endif
Definition: hps.h:6196
Definition: sprk_exchange.h:4078
Level
Definition: sprk_exchange.h:841
ConstructionEntities
Definition: sprk_exchange.h:1001
HPS::Type ObjectType() const
Definition: sprk_exchange.h:3816
Definition: sprk_exchange.h:44
Definition: sprk_exchange.h:952
Definition: sprk.h:264
HPS::Type ObjectType() const
Definition: sprk_exchange.h:270
Definition: sprk_exchange.h:1117
Definition: sprk_exchange.h:4960
An InvalidSpecificationException is thrown when a method is called with non-sensical or contradictory...
Definition: hps.h:5676
Units
Definition: sprk_exchange.h:63
Definition: sprk.h:66
Simplification
Definition: sprk_exchange.h:2843
Definition: sprk.h:100
Definition: sprk_exchange.h:591
Version
Definition: sprk_exchange.h:1022
Definition: sprk_exchange.h:3115
Definition: sprk_exchange.h:851
Definition: sprk_exchange.h:690
virtual HPS::UTF8 GetName() const OVERRIDE
Definition: sprk_exchange.h:4979
HPS::Type ObjectType() const
Definition: sprk_exchange.h:672
HPS::Type ObjectType() const
Definition: sprk_exchange.h:4715
SurfaceType
Definition: sprk_exchange.h:773
Definition: hps.h:1676
Format
Definition: sprk_exchange.h:939
HPS::Type ObjectType() const
Definition: sprk_exchange.h:718
Definition: sprk_exchange.h:4699
Definition: sprk.h:234
Definition: hps.h:45444
Format
Definition: sprk_exchange.h:1122
Definition: hps.h:7703
HPS::Type ObjectType() const
Definition: sprk_exchange.h:4094
Type
Definition: sprk_exchange.h:832
Definition: hps.h:15918
HPS::Type ObjectType() const
Definition: sprk_exchange.h:3639
Definition: sprk_exchange.h:447
Definition: sprk_exchange.h:531
Definition: sprk_exchange.h:297
HPS::Type ObjectType() const
Definition: sprk_exchange.h:428
virtual HPS::UTF8 GetName() const OVERRIDE
Definition: sprk_exchange.h:5209
HPS::Type ObjectType() const
Definition: sprk_exchange.h:3949
MeasurementInsertedEvent(Event const &in_event)
Definition: sprk_exchange.h:5037
HPS::Type ObjectType() const
Definition: sprk_exchange.h:132
Definition: sprk_exchange.h:1338
Definition: sprk_exchange.h:238
HPS::Type ObjectType() const
Definition: sprk_exchange.h:4453
HPS::Type ObjectType() const
Definition: sprk_exchange.h:323
Definition: sprk_exchange.h:3800
Merging
Definition: sprk_exchange.h:2852
HPS::Type ObjectType() const
Definition: sprk_exchange.h:2887
Field
Definition: sprk_exchange.h:929
Definition: hps.h:39575
HPS::Type ObjectType() const
Definition: sprk_exchange.h:1071
Definition: sprk_exchange.h:3522
Definition: sprk_exchange.h:2865
Limit
Definition: sprk_exchange.h:856
HPS::Type ObjectType() const
Definition: sprk_exchange.h:4250
Definition: hps.h:4378
TessellationLevel
Definition: sprk_exchange.h:903
Definition: sprk_exchange.h:827
Definition: sprk_exchange.h:4437
Definition: sprk_exchange.h:111
Definition: sprk_exchange.h:924
Definition: hps.h:4317
Definition: hps.h:7076
Definition: hps.h:44835
Definition: sprk_exchange.h:402
UnloadMode
Definition: sprk_exchange.h:80
Definition: hps.h:41510
Definition: hps.h:45231
AnnotationCaptureFitting
Definition: sprk_exchange.h:820
Definition: sprk_exchange.h:4599
Definition: sprk_exchange.h:889
HPS::Type ObjectType() const
Definition: sprk_exchange.h:3538
Definition: hps.h:15311
Event * Clone() const
Definition: sprk_exchange.h:5099
intptr_t GetChannel() const
Definition: hps.h:6329
Definition: sprk_exchange.h:1017
SessionColor
Definition: sprk_exchange.h:976
Definition: sprk.h:1718
Definition: hps.h:45550
LoadStatus
Definition: sprk_exchange.h:95
Definition: hps.h:42495
Definition: hps.h:44354
CurveType
Definition: sprk_exchange.h:796
Definition: sprk_exchange.h:491
Definition: hps.h:6296
Definition: hps.h:13572
HPS::Type ObjectType() const
Definition: sprk_exchange.h:4832
Definition: sprk_exchange.h:5193
Definition: sprk.h:472
HPS::Type ObjectType() const
Definition: sprk_exchange.h:1584
BRepCompression
Definition: sprk_exchange.h:957
Definition: sprk_parasolid.h:39
BRepMode
Definition: sprk_exchange.h:746
Definition: sprk.h:2032
ComponentType
Definition: sprk.h:1723
Accuracy
Definition: sprk_exchange.h:873
Definition: sprk_exchange.h:3398
Definition: sprk_exchange.h:3623
HPS::Type ObjectType() const
Definition: sprk_exchange.h:1360
MeasurementDeletedEvent(Event const &in_event)
Definition: sprk_exchange.h:5083
Definition: sprk.h:2343
FamilyTable
Definition: sprk_exchange.h:989
Content
Definition: sprk_exchange.h:894
Definition: sprk_exchange.h:1562
HPS::Type ObjectType() const
Definition: sprk_exchange.h:3137
HPS::Type ObjectType() const
Definition: sprk_exchange.h:619
Definition: sprk.h:2442
static MouseButtons ButtonLeft()
Definition: hps.h:44953
Definition: hps.h:7622
Definition: sprk_exchange.h:971
AccurateEdges
Definition: sprk_exchange.h:2834
Event * Clone() const
Definition: sprk_exchange.h:5053
HPS::Type ObjectType() const
Definition: sprk_exchange.h:473
HPS::Type ObjectType() const
Definition: sprk_exchange.h:4615
Definition: hps.h:9229
HPS::Type ObjectType() const
Definition: sprk_exchange.h:205
Definition: sprk_exchange.h:644
Definition: hps.h:23523
Healing
Definition: sprk_exchange.h:2825
Definition: sprk.h:2528
Definition: hps.h:29753
ImportMode
Definition: sprk_exchange.h:761
Definition: sprk_exchange.h:1034
Definition: hps.h:516
Definition: sprk.h:1092
Definition: sprk_exchange.h:2820
static Model CreateModel(char const *in_name="")
Definition: sprk_exchange.h:3933
Definition: sprk_exchange.h:173
Definition: hps.h:39072
HPS::Type ObjectType() const
Definition: sprk_exchange.h:3414
Version
Definition: sprk_exchange.h:912
Definition: sprk_exchange.h:4816
HPS::Type ObjectType() const
Definition: sprk_exchange.h:559
Definition: hps.h:40169
Definition: sprk_exchange.h:4234