Point Cloud Library (PCL)  1.9.1-dev
opennurbs_3dm_settings.h
1 /* $NoKeywords: $ */
2 /*
3 //
4 // Copyright (c) 1993-2012 Robert McNeel & Associates. All rights reserved.
5 // OpenNURBS, Rhinoceros, and Rhino3D are registered trademarks of Robert
6 // McNeel & Associates.
7 //
8 // THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
9 // ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR PURPOSE AND OF
10 // MERCHANTABILITY ARE HEREBY DISCLAIMED.
11 //
12 // For complete openNURBS copyright information see <http://www.opennurbs.org>.
13 //
14 ////////////////////////////////////////////////////////////////
15 */
16 
17 #if !defined(OPENNURBS_3DM_SETTINGS_INC_)
18 #define OPENNURBS_3DM_SETTINGS_INC_
19 
20 
21 ///////////////////////////////////////////////////////////////////////
22 //
23 // units and tolerances
24 //
25 
27 {
28 public:
33 
34  void Default();
35 
36  bool Read( ON_BinaryArchive& );
37  bool Write( ON_BinaryArchive& ) const;
38 
39  void Dump( ON_TextLog& ) const;
40 
41  //////////
42  // Returns scale factor that needs to be applied to change from
43  // the argument's unit system to m_unit_system.
44  // When m_unit_system is not ON::custom_unit_system,
45  // Scale(us) = ON::UnitScale(us,m_unit_system). When Scale(us)
46  // When m_unit_system is ON::custom_unit_system,
47  // Scale(us) = ON::UnitScale(us,ON::meters)*m_custom_unit_scale.
48  double Scale( ON::unit_system ) const;
49 
50  //ON::unit_system m_unit_system;
52 
53  double m_absolute_tolerance; // in units (default = 1/100)
54  double m_angle_tolerance; // in radians (default = 3 degrees)
55  double m_relative_tolerance; // fraction >= 0 and < 1 (default = 1%)
56 
57  ON::distance_display_mode m_distance_display_mode;
58  int m_distance_display_precision; // decimal mode: number of decimal places
59  // fractional modes:
60  // denominator = (1/2)^m_distance_display_precision
61 
62  ////////////
63  // These settings apply when m_unit_system is ON::custom_unit_system
64  //
65  //double m_custom_unit_scale; // 1 meter = m_custom_unit_scale custom units
66  //ON_wString m_custom_unit_name; // name of custom units
67 };
68 
69 ///////////////////////////////////////////////////////////////////////
70 //
71 // Model settings
72 // render mesh defaults
73 // viewports
74 // construction planes
75 //
76 
78 {
79 public:
84 
85  void Default();
86 
87  bool Read( ON_BinaryArchive& );
88  bool Write( ON_BinaryArchive& ) const;
89 
90  void Dump( ON_TextLog& text_log ) const;
91 
92  // these are the running defaults for making dimensions
93  // they are also the things written to the 3dm file as dimension settings
94  double m_dimscale; // model size / plotted size
95  double m_textheight;
96  double m_dimexe;
97  double m_dimexo;
98  double m_arrowlength;
99  double m_arrowwidth;
100  double m_centermark;
101 
102  /*
103  Returns:
104  Value of m_world_view_text_scale;
105  */
106  double WorldViewTextScale() const;
107 
108  /*
109  Parameters:
110  world_view_text_scale - [in]
111  Sets value of m_world_view_text_scale.
112  */
113  void SetWorldViewTextScale(double world_view_text_scale );
114 
115  /*
116  Returns:
117  Value of m_world_view_hatch_scale;
118  */
119  double WorldViewHatchScale() const;
120 
121  /*
122  Parameters:
123  world_view_hatch_scale - [in]
124  Sets value of m_world_view_hatch_scale.
125  */
126  void SetWorldViewHatchScale(double world_view_hatch_scale );
127 
128 
129  /*
130  Returns:
131  Value of m_bEnableAnnotationScaling;
132  */
133  bool IsAnnotationScalingEnabled() const;
134 
135  /*
136  Parameters:
137  bEnable - [in]
138  Sets value of m_bEnableAnnotationScaling.
139  */
140  void EnableAnnotationScaling( bool bEnable );
141 
142  /*
143  Returns:
144  Value of m_bEnableHatchScaling;
145  */
146  bool IsHatchScalingEnabled() const;
147 
148  /*
149  Parameters:
150  bEnable - [in]
151  Sets value of m_bEnableHatchScaling.
152  */
153  void EnableHatchScaling( bool bEnable );
154 
155  // Present but not used in V4 or V5 - removed 5 August 2010 to make room
156  // for m_world_view_text_scale and m_bEnableAnnotationScaling
157  //// added 12/28/05 LW
158  //double m_dimdle;
159  //double m_dimgap;
160 private:
161  // If m_bEnableAnnotationScaling is true,
162  // and ON_Annotation2::m_annotative_scale is true,
163  // and ON_Annotation2::m_type == ON::dtTextBlock,
164  // and the text object is being displayed in a world
165  // view (not a detail view and not a page view),
166  // then the text will be scaled by m_world_view_text_scale.
167  // The default is 1.0. Values <= 0.0 are not valid.
168  float m_world_view_text_scale;
169  float m_world_view_hatch_scale;
170 
171 private:
172  // If m_bEnableAnnotationScaling is false:
173  // * m_world_view_text_scale is ignored.
174  // * text is not scaled.
175  // * ON_DimStyle::DimScale() determines the scale
176  // applied to all other annotation objects in all
177  // types of views.
178  // * The value of ON_DetailView::m_page_per_model_ratio
179  // is applied to all objects (annotation and geometry)
180  // in the detail view.
181  //
182  // If m_bEnableAnnotationScaling is true:
183  // * m_world_view_text_scale is used as described above.
184  // * ON_DimStyle::DimScale() determines the scale
185  // applied to all non text annotation objects in
186  // world views.
187  // * ON_DimStyle::DimScale() is ignored in page and
188  // detail views.
189  // * ON_DetailView::m_page_per_model_ratio is ingored
190  // for annotation objects in detail views, other
191  // geometry is scaled.
192  //
193  // Default is true.
194  unsigned char m_bEnableAnnotationScaling;
195 
196  unsigned char m_bEnableHatchScaling;
197 
198 private:
199  unsigned char m_reserved[6];
200 
201 public:
202 
203  ON::unit_system m_dimunits; // units used to measure the dimension
204  int m_arrowtype; // 0: filled narrow triangular arrow
205  int m_angularunits; // 0: degrees, 1: radians
206  int m_lengthformat; // 0: decimal, ...
207  int m_angleformat; // 0: decimal degrees, ...
208  int m_textalign; // 0: above line, 1: in line, 2: horizontal
209  int m_resolution; // depends on m_lengthformat
210  // for decimal, digits past the decimal point
211 
212  ON_wString m_facename; // [LF_FACESIZE] // windows font name
213 };
214 
215 //////////////////////////////////////////////////////////////////////////////////////////
216 //
217 // ON_3dmConstructionPlaneGridDefaults
218 //
219 // Default settings used for construction plane grids
221 {
222 public:
227 
228  void Default();
229 
230  bool Write( ON_BinaryArchive& ) const;
231  bool Read( ON_BinaryArchive& );
232 
233  void Dump( ON_TextLog& text_log ) const;
234 
235  double m_grid_spacing; // distance between grid lines
236  double m_snap_spacing; // when "grid snap" is enabled, the
237  // distance between snap points. Typically
238  // this is the same distance as grid spacing.
239  int m_grid_line_count; // number of grid lines in each direction
240  int m_grid_thick_frequency; // thick line frequency
241  // 0: none,
242  // 1: all lines are thick,
243  // 2: every other is thick, ...
244 
245  ON_BOOL32 m_bShowGrid;
246  ON_BOOL32 m_bShowGridAxes;
247  ON_BOOL32 m_bShowWorldAxes;
248 };
249 
250 //////////////////////////////////////////////////////////////////////////////////////////
251 //
252 // ON_3dmConstructionPlane
253 //
255 {
256 public:
259 
260  // default copy constructor and operator= work fine
261  //ON_3dmConstructionPlane(const ON_3dmConstructionPlane&);
262  //ON_3dmConstructionPlane& operator=(const ON_3dmConstructionPlane&);
263 
264  void Default();
265 
266  bool Write( ON_BinaryArchive& ) const;
267  bool Read( ON_BinaryArchive& );
268 
269  void Dump( ON_TextLog& text_log ) const;
270 
272 
273  // construction grid appearance
274  double m_grid_spacing; // distance between grid lines
275  double m_snap_spacing; // when "grid snap" is enabled, the
276  // distance between snap points. Typically
277  // this is the same distance as grid spacing.
278  int m_grid_line_count; // number of grid lines in each direction
279  int m_grid_thick_frequency; // thick line frequency
280  // 0: none,
281  // 1: all lines are thick,
282  // 2: every other is thick, ...
283  bool m_bDepthBuffer; // false=grid is always drawn behind 3d geometry
284  // true=grid is drawn at its depth as a 3d plane
285  // and grid lines obscure things behind the grid.
286 
288 };
289 
290 #if defined(ON_DLL_TEMPLATE)
291 // This stuff is here because of a limitation in the way Microsoft
292 // handles templates and DLLs. See Microsoft's knowledge base
293 // article ID Q168958 for details.
294 #pragma warning( push )
295 #pragma warning( disable : 4231 )
296 ON_DLL_TEMPLATE template class ON_CLASS ON_ClassArray<ON_3dmConstructionPlane>;
297 #pragma warning( pop )
298 #endif
299 
300 //////////////////////////////////////////////////////////////////////////////////////////
301 //
302 // ON_3dmViewPosition
303 //
304 class ON_CLASS ON_3dmViewPosition
305 {
306 public:
307  // view window relative position and state in parent frame
311  ON_3dmViewPosition& operator=(const ON_3dmViewPosition&);
312 
313  void Default();
314 
315  bool Write( ON_BinaryArchive& ) const;
316  bool Read( ON_BinaryArchive& );
317 
318  // relative position of view window in main frame
319  // if m_floating_viewport>0, this is relative position of the view window
320  // on the virtual screen (union of potentially multiple monitors)
321  double m_wnd_left; // 0.0 to 1.0
322  double m_wnd_right;
323  double m_wnd_top;
324  double m_wnd_bottom;
325  ON_BOOL32 m_bMaximized; // true if view window is maximized
326 
327  // m_floating_viewport is used to track floating viewport information.
328  // 0 = the view is docked in the main application window.
329  // >0 = the view is floating. When floating, this corresponds to the
330  // number of monitors on on the user's computer when the file was saved
331  unsigned char m_floating_viewport;
332 private:
333  // reserved for future use
334  unsigned char m_reserved_1;
335  unsigned char m_reserved_2;
336  unsigned char m_reserved_3;
337 };
338 
339 //////////////////////////////////////////////////////////////////////////////////////////
340 //
341 // ON_3dmViewTraceImage
342 //
343 class ON_CLASS ON_3dmViewTraceImage
344 {
345 public:
348  bool operator==( const ON_3dmViewTraceImage& ) const;
349  bool operator!=( const ON_3dmViewTraceImage& ) const;
350 
351  void Default();
352 
353  bool Write( ON_BinaryArchive& ) const;
354  bool Read( ON_BinaryArchive& );
355 
356  // view window relative position and state in parent frame
358  double m_width;
359  double m_height;
360 
362  bool m_bGrayScale; // true if image should be black and white
363  bool m_bHidden; // true if image is currently hidden from view
364  bool m_bFiltered; // true if image should be filtered (bilinear) before displayed.
365 };
366 
367 
368 //////////////////////////////////////////////////////////////////////////////////////////
369 //
370 // ON_3dmViewTraceImage
371 //
372 class ON_CLASS ON_3dmWallpaperImage
373 {
374 public:
377  bool operator==( const ON_3dmWallpaperImage& ) const;
378  bool operator!=( const ON_3dmWallpaperImage& ) const;
379 
380  void Default();
381 
382  bool Write( ON_BinaryArchive& ) const;
383  bool Read( ON_BinaryArchive& );
384 
386  bool m_bGrayScale; // true if image should be black and white
387  bool m_bHidden; // true if image is currently hidden from view
388 };
389 
390 //////////////////////////////////////////////////////////////////////////////////////////
391 //
392 // ON_3dmView
393 //
394 
395 class ON_CLASS ON_3dmPageSettings
396 {
397 public:
400 
401  bool IsValid( ON_TextLog* text_log = 0 ) const;
402 
403  void Default();
404 
406 
407  // Overall size of the page in millimeters
408  double m_width_mm;
409  double m_height_mm;
410 
411  // Page margins in millimeters
416 
418 
419  bool Write(ON_BinaryArchive& archive) const;
420  bool Read(ON_BinaryArchive& archive);
421 };
422 
423 
424 class ON_CLASS ON_3dmView
425 {
426 public:
427  ON_3dmView();
428  ~ON_3dmView();
429 
430  // The C++ default copy constructor and operator= work fine.
431  // Do not provide customized versions.
432  // NO // ON_3dmView(const ON_3dmView&);
433  // NO // ON_3dmView& operator=(const ON_3dmView&);
434 
435  void Default();
436 
437  bool Write( ON_BinaryArchive& ) const;
438  bool Read( ON_BinaryArchive& );
439 
440  void Dump( ON_TextLog& text_log ) const;
441 
442  bool IsValid( ON_TextLog* text_log = 0 ) const;
443 
444  // view projection information
446 
447  // clipping planes
448  // Prior to Dec 14, 2010 m_clipping_planes was not saved with the view.
449  // After Dec 14, 2010 m_clipping_planes is saved.
451 
452  // If true, the the camera location, camera direction,
453  // and lens angle should not be changed.
454  // It is ok to adjust clipping planes.
456 
457  ///////////////////////////////////////////////////////////////////////
458  //
459  // target point
460  //
461 
462  /*
463  Returns:
464  Target point. This point is saved on m_vp.m_target_point.
465  The default constructor sets the target point to
466  ON_3dPoint::UnsetPoint. You must explicitly set the target
467  point if you want to use it.
468  Remarks:
469  The target point is stored on m_vp.m_target_point. The
470  value ON_3dmView.m_target is obsolete. This function always
471  returns the value of m_vp.m_target_point.
472 
473  */
474  ON_3dPoint TargetPoint() const;
475 
476  /*
477  Description:
478  Sets the target point.
479  Parameters:
480  target_point - [in]
481  When in double, the point m_vp.FrustumCenterPoint(ON_UNSET_VALUE)
482  is a good choice.
483  Remarks:
484  This point is saved on m_vp.m_target_point. Using this function
485  keeps the obsolete ON_3dmView.m_target value equal to
486  m_vp.m_target_point.
487  */
488  bool SetTargetPoint(ON_3dPoint target_point);
489 
490  ///////////////////////////////////////////////////////////////////////
491  // OBSOLETE //
492  // Use ON_3dmView::SetTargetPoint() and ON_3dmView::TargetPoint() //
493  // functions to set and get the target point. The m_target member //
494  // will be removed in V6. The only reason m_target is still here //
495  // is to avoid breaking the public SDK. //
496  /* OBSOLETE */ ON_3dPoint m_target; // OBSOLETE //
497  // Hmm, did you notice that m_target is obsolete? Try using the //
498  // SetTargetPoint() and TargetPoint() functions instead. //
499  // OBSOLETE //
500  ///////////////////////////////////////////////////////////////////////
501 
502  //
503  ///////////////////////////////////////////////////////////////////////
504 
505  ON_wString m_name; // name on window
506 
507  // If m_display_mode_id is nil, then use m_display_mode
508  // to show one of the "standard" (wireframe, shaded, rendered)
509  // display modes. If m_display_mode_id is not nil, then
510  // ignore m_display_mode.
512  ON::display_mode m_display_mode;
513 
514  // position of view in parent window
515  // (relative display device coordinates)
517 
518  ON::view_type m_view_type; // model, page, or nested
519 
520  // If m_view_type == ON::page_view_type, then the m_page_settings
521  // records the page size. Otherwise, m_page_settings should
522  // be ignored.
524 
525  // construction plane
529 
530  // world axes icon
532 
533  // tracing image
535 
536  // wallpaper image
538 };
539 
540 #if defined(ON_DLL_TEMPLATE)
541 // This stuff is here because of a limitation in the way Microsoft
542 // handles templates and DLLs. See Microsoft's knowledge base
543 // article ID Q168958 for details.
544 #pragma warning( push )
545 #pragma warning( disable : 4231 )
546 ON_DLL_TEMPLATE template class ON_CLASS ON_ClassArray<ON_3dmView>;
547 #pragma warning( pop )
548 #endif
549 
550 //////////////////////////////////////////////////////////////////////////////////////////
551 //
552 // ON_3dmRenderSettings
553 //
554 
555 class ON_CLASS ON_3dmRenderSettings
556 {
557 public:
561  ON_3dmRenderSettings& operator=(const ON_3dmRenderSettings&);
562 
563  void Default();
564 
565  bool Write( ON_BinaryArchive& ) const;
566  bool Read( ON_BinaryArchive& );
567 
568  void Dump( ON_TextLog& text_log ) const;
569 
570  bool ScaleBackgroundToFit() const;
571  void SetScaleBackgroundToFit( bool bScaleBackgroundToFit );
572 
573  //////////
574  // false: image pixel size = current viewport size
575  // true: image pixel size = m_image_width X m_image_height pixels
577  int m_image_width; // image width in pixels
578  int m_image_height; // image height in pixels
579 
580 private:
581  bool m_bScaleBackgroundToFit;
582  unsigned char m_reserved1[3];
583 public:
584 
585  ////////
586  // Number of dots/inch (dots=pixels) to use when printing and
587  // saving bitmaps. The default is 72.0 dots/inch.
588  double m_image_dpi;
589  //////////
590  // unit system to use when converting image pixel size and dpi
591  // information into a print size. Default = inches
592  ON::unit_system m_image_us;
593 
595 
596  int m_background_style; // 0 = solid color, 1 = "wallpaper" image, 2 = Gradient, 3 = Environment
597  ON_Color m_background_color; // also Top color of gradient...
599 
601 
602  ON_BOOL32 m_bDepthCue;
603  ON_BOOL32 m_bFlatShade;
604 
606  ON_BOOL32 m_bRenderPoints;
607  ON_BOOL32 m_bRenderCurves;
611 
612  int m_antialias_style; // 0 = none, 1 = normal, 2 = best
613 
614  int m_shadowmap_style; // 0 = none, 1 = normal, 2 = best
618 
620 
621  // Flags that are used to determine which render settings a render
622  // plugin uses, and which ones the display pipeline should use.
623  // Note: Render plugins set these, and they don't need to persist
624  // in the document...Also, when set, they turn OFF their
625  // corresponding setting in the Display Attributes Manager's
626  // UI pages for "Rendered" mode.
636 
637 private:
638  unsigned char m_reserved2[3];
639 };
640 
641 
642 //////////////////////////////////////////////////////////////////////////////////////////
643 //
644 // ON_EarthAnchorPoint
645 //
646 
647 class ON_CLASS ON_EarthAnchorPoint
648 {
649 public:
652 
653  static
654  int Compare(
655  const ON_EarthAnchorPoint*,
656  const ON_EarthAnchorPoint*
657  );
658 
659  static
660  int CompareEarthLocation(
661  const ON_EarthAnchorPoint*,
662  const ON_EarthAnchorPoint*
663  );
664 
665  static
666  int CompareModelDirection(
667  const ON_EarthAnchorPoint*,
668  const ON_EarthAnchorPoint*
669  );
670 
671  static
672  int CompareIdentification(
673  const ON_EarthAnchorPoint*,
674  const ON_EarthAnchorPoint*
675  );
676 
677  void Default();
678  bool Read( ON_BinaryArchive& );
679  bool Write( ON_BinaryArchive& ) const;
680 
681  // Point on the Earth
682  // Latitude (degrees): +90 = north pole, 0 = equator, -90 = south pole
683  // Longitude (degrees): 0 = prime meridian (Greenwich meridian)
684  // Elevation (meters):
685  double m_earth_basepoint_latitude; // in decimal degrees
686  double m_earth_basepoint_longitude; // in decimal degrees
687  double m_earth_basepoint_elevation; // in meters
688  int m_earth_basepoint_elevation_zero; // 0 = ground level
689  // 1 = mean sea level
690  // 2 = center of earth
691 
692  // Corresponding model point in model coordinates.
693  ON_3dPoint m_model_basepoint; // in model coordinates
694 
695  // Earth directions in model coordinates
696  ON_3dVector m_model_north; // in model coordinates
697  ON_3dVector m_model_east; // in model coordinates
698 
699  // Identification information about this location
700  ON_UUID m_id; // unique id for this anchor point
704  ON_wString m_url_tag; // UI link text for m_url
705 
706  /*
707  Parameters:
708  model_compass - [out]
709  A plane in model coordinates whose xaxis points East,
710  yaxis points North and zaxis points up. The origin
711  is set to m_model_basepoint.
712  */
713  bool GetModelCompass(
714  ON_Plane& model_compass
715  ) const;
716 
717  /*
718  Description:
719  Get a transformation from model coordinates to earth coordinates.
720  This transformation assumes the model is small enough that
721  the curvature of the earth can be ignored.
722  Parameters:
723  model_unit_system - [in]
724  model_to_earth - [out]
725  Transformation from model coordinates to earth locations
726  (degrees latitude,degrees longitude,elevation in meters)
727  Remarks:
728  If M is a point in model coordinates and E = model_to_earth*M,
729  then
730  E.x = latitude in decimal degrees
731  E.y = longitude in decimal degrees
732  E.z = elevation in meters above mean sea level
733 
734  Because the earth is not flat, there is a small amount of error
735  when using a linear transformation to calculate oblate spherical
736  coordinates. This error is small. If the distance from P to M
737  is d meters, then the approximation error is
738 
739  latitude error <=
740  longitude error <=
741  elevation error <= 6379000*((1 + (d/6356000)^2)-1) meters
742 
743  In particular, if every point in the model is within 1000 meters of
744  the m_model_basepoint, then the maximum approximation errors are
745 
746  latitude error <=
747  longitude error <=
748  elevation error <= 8 centimeters
749  */
750  bool GetModelToEarthXform(
751  const ON_UnitSystem& model_unit_system,
752  ON_Xform& model_to_earth
753  ) const;
754 };
755 
756 
757 
758 class ON_CLASS ON_3dmIOSettings
759 {
760 public:
762 
763  void Default();
764 
765  bool Read(ON_BinaryArchive&);
766  bool Write(ON_BinaryArchive&) const;
767 
768  // bitmaps associated with rendering materials
770 
771  // As of 7 February 2012, the m_idef_link_update setting
772  // controls if, when and how linked and linked_and_embedded
773  // instance defintions are updated when the source archive
774  // that was used to create the idef has changed.
776  // 1 = prompt - ask the user if the idef should be updated.
777  // 2 = always update - no prompting
778  // 3 = never update - no prompting
779  // Any value not equal to 1,2 or 3 shall be treated as 1.
780 };
781 
782 //////////////////////////////////////////////////////////////////////////////////////////
783 //
784 // ON_3dmSettings
785 //
786 
787 class ON_CLASS ON_3dmSettings
788 {
789 public:
790  ON_3dmSettings();
791  ~ON_3dmSettings();
792 
793  // C++ copy constructor and operator= work fine.
794  // Do not provide custom versions.
795  // NO // ON_3dmSettings(const ON_3dmSettings&);
796  // NO // ON_3dmSettings& operator=(const ON_3dmSettings&);
797 
798  void Default();
799 
800  bool Read(ON_BinaryArchive&);
801  bool Write(ON_BinaryArchive&) const;
802 
803  void Dump( ON_TextLog& ) const;
804 
805  // model URL (can be empty)
807 
808  // Model basepoint is used when the file is read as
809  // an instance definition and is the point that is
810  // mapped to the origin in the instance definition.
812 
813 
814  // If set, this is the model's location on the earth.
815  // This information is used when the model is used
816  // with GIS information.
818 
819  // Model space tolerances and unit system
821 
822  // Page space (printing/paper) tolerances and unit system
824 
825  // settings used for automatically created rendering meshes
827 
828  // saved custom settings
830 
831  // settings used for automatically created analysis meshes
833 
834  // settings used when annotation objects are created
836 
839  ON_ClassArray<ON_3dmView> m_views; // current viewports
840  ON_UUID m_active_view_id; // id of "active" viewport
841 
842  // These fields determine what layer, material, color, line style, and
843  // wire density are used for new objects.
845 
847  ON::object_material_source m_current_material_source;
848 
850  ON::object_color_source m_current_color_source;
851 
853  ON::plot_color_source m_current_plot_color_source;
854 
856  ON::object_linetype_source m_current_linetype_source;
857 
859 
861 
862  // Surface wireframe density
863  //
864  // @untitled table
865  // 0 boundary + "knot" wires
866  // 1 boundary + "knot" wires + 1 interior wire if no interior "knots"
867  // N>=2 boundry + "knot" wires + (N-1) interior wires
869 
871 
872  // default settings for construction plane grids
874 
875  // World scale factor to apply to non-solid linetypes
876  // for model display. For plotting, the linetype settings
877  // are used without scaling.
879 
880  // Plugins that were loaded when the file was saved.
882 
884 private:
885  bool Read_v1(ON_BinaryArchive&);
886  bool Read_v2(ON_BinaryArchive&);
887  bool Write_v1(ON_BinaryArchive&) const;
888  bool Write_v2(ON_BinaryArchive&) const;
889 };
890 
891 #endif
ON::object_color_source m_current_color_source
ON_3dmUnitsAndTolerances m_PageUnitsAndTolerances
ON_3dmConstructionPlane m_cplane
ON_3dmUnitsAndTolerances m_ModelUnitsAndTolerances
ON_3dmWallpaperImage m_wallpaper_image
ON_3dmConstructionPlaneGridDefaults m_GridDefaults
ON_ClassArray< ON_3dmConstructionPlane > m_named_cplanes
ON_EarthAnchorPoint m_earth_anchor_point
ON::plot_color_source m_current_plot_color_source
ON_MeshParameters m_RenderMeshSettings
ON::object_material_source m_current_material_source
ON_3dmAnnotationSettings m_AnnotationSettings
ON_3dmRenderSettings m_RenderSettings
ON_3dmViewTraceImage m_trace_image
ON_ClassArray< ON_PlugInRef > m_plugin_list
ON_3dmViewPosition m_position
ON_3dmIOSettings m_IO_settings
ON_ClassArray< ON_3dmView > m_views
ON_MeshParameters m_AnalysisMeshSettings
ON_MeshParameters m_CustomRenderMeshSettings
ON::object_linetype_source m_current_linetype_source
ON::distance_display_mode m_distance_display_mode
unsigned char m_floating_viewport
ON_ClassArray< ON_3dmView > m_named_views
ON::view_type m_view_type
ON::display_mode m_display_mode
ON_3dmPageSettings m_page_settings
ON_SimpleArray< ON_ClippingPlaneInfo > m_clipping_planes