Point Cloud Library (PCL) 1.13.0
opennurbs_extensions.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
18#if !defined(OPENNURBS_EXTENSIONS_INC_)
19#define OPENNURBS_EXTENSIONS_INC_
20
21#include <pcl/pcl_exports.h>
22
23/*
24Description:
25 Used to store user data information in an ONX_Model.
26*/
28{
29public:
30#if defined(ON_DLL_EXPORTS) || defined(ON_DLL_IMPORTS)
31 // See comments at the top of opennurbs_extensions.cpp for details.
32
33 // new/delete
34 void* operator new(std::size_t);
35 void operator delete(void*);
36
37 // array new/delete
38 void* operator new[] (std::size_t);
39 void operator delete[] (void*);
40
41 // in place new/delete
42 void* operator new(std::size_t,void*);
43 void operator delete(void*,void*);
44#endif
45
50
51 void Dump( ON_TextLog& ) const;
52
55
56private:
57 void Destroy();
58 unsigned int* m_ref_count; // reference counts used to avoid expensive object copying
59
60public:
63};
64
65/*
66Description:
67 Used to store geometry table object definition and attributes in an ONX_Model.
68*/
70{
71public:
72#if defined(ON_DLL_EXPORTS) || defined(ON_DLL_IMPORTS)
73 // See comments at the top of opennurbs_extensions.cpp for details.
74
75 // new/delete
76 void* operator new(std::size_t);
77 void operator delete(void*);
78
79 // array new/delete
80 void* operator new[] (std::size_t);
81 void operator delete[] (void*);
82
83 // in place new/delete
84 void* operator new(std::size_t,void*);
85 void operator delete(void*,void*);
86#endif
87
92
93 void Dump( ON_TextLog& ) const;
94
95 // If m_bDeleteObject is true, then m_object will be deleted when
96 // the last ONX_Model_Object that refers to it is destroyed. The
97 // default value of m_bDeleteObject is false.
101
102private:
103 void Destroy();
104 unsigned int* m_ref_count; // reference counts used to avoid expensive object copying
105};
106
107/*
108Description:
109 Used to store render light table light definition and attributes in an ONX_Model.
110*/
112{
113public:
114#if defined(ON_DLL_EXPORTS) || defined(ON_DLL_IMPORTS)
115 // See comments at the top of opennurbs_extensions.cpp for details.
116
117 // new/delete
118 void* operator new(std::size_t);
119 void operator delete(void*);
120
121 // array new/delete
122 void* operator new[] (std::size_t);
123 void operator delete[] (void*);
124
125 // in place new/delete
126 void* operator new(std::size_t,void*);
127 void operator delete(void*,void*);
128#endif
129
134
137};
138
139#if defined(ON_DLL_TEMPLATE)
140// This stuff is here because of a limitation in the way Microsoft
141// handles templates and DLLs. See Microsoft's knowledge base
142// article ID Q168958 for details.
143#pragma warning( push )
144#pragma warning( disable : 4231 )
145
146ON_DLL_TEMPLATE template class ON_CLASS ON_SimpleArray<ON_Bitmap*>;
147ON_DLL_TEMPLATE template class ON_CLASS ON_ClassArray<ON_Linetype>;
148ON_DLL_TEMPLATE template class ON_CLASS ON_ObjectArray<ON_Linetype>;
149ON_DLL_TEMPLATE template class ON_CLASS ON_ClassArray<ON_Layer>;
150ON_DLL_TEMPLATE template class ON_CLASS ON_ObjectArray<ON_Layer>;
151ON_DLL_TEMPLATE template class ON_CLASS ON_ClassArray<ON_Group>;
152ON_DLL_TEMPLATE template class ON_CLASS ON_ObjectArray<ON_Group>;
153ON_DLL_TEMPLATE template class ON_CLASS ON_ClassArray<ON_Font>;
154ON_DLL_TEMPLATE template class ON_CLASS ON_ObjectArray<ON_Font>;
155ON_DLL_TEMPLATE template class ON_CLASS ON_ClassArray<ON_DimStyle>;
156ON_DLL_TEMPLATE template class ON_CLASS ON_ObjectArray<ON_DimStyle>;
157ON_DLL_TEMPLATE template class ON_CLASS ON_ClassArray<ONX_Model_RenderLight>;
158ON_DLL_TEMPLATE template class ON_CLASS ON_ClassArray<ON_HatchPattern>;
159ON_DLL_TEMPLATE template class ON_CLASS ON_ObjectArray<ON_HatchPattern>;
160ON_DLL_TEMPLATE template class ON_CLASS ON_ClassArray<ON_InstanceDefinition>;
161ON_DLL_TEMPLATE template class ON_CLASS ON_ObjectArray<ON_InstanceDefinition>;
162ON_DLL_TEMPLATE template class ON_CLASS ON_ClassArray<ONX_Model_Object>;
163ON_DLL_TEMPLATE template class ON_CLASS ON_ClassArray<ONX_Model_UserData>;
164ON_DLL_TEMPLATE template class ON_CLASS ON_SimpleArray<ON_HistoryRecord*>;
165
166#pragma warning( pop )
167#endif
168
169
170/*
171Description:
172 Pedegodgical example of all the things in an OpenNURBS 3dm archive.
173 The openNURBS examples use ONX_Model to store the information
174 read from 3dm archives. Please study example_read.cpp for
175 details.
176*/
177class PCL_EXPORTS ON_CLASS ONX_Model
178{
179public:
180#if defined(ON_DLL_EXPORTS) || defined(ON_DLL_IMPORTS)
181 // See comments at the top of opennurbs_extensions.cpp for details.
182
183 // new/delete
184 void* operator new(std::size_t);
185 void operator delete(void*);
186
187 // array new/delete
188 void* operator new[] (std::size_t);
189 void operator delete[] (void*);
190
191 // in place new/delete
192 void* operator new(std::size_t,void*);
193 void operator delete(void*,void*);
194#endif
195
197 virtual ~ONX_Model();
198
199 /*
200 Description:
201 Destroys contents of this model and leaves it ready to be reused.
202 */
203 void Destroy();
204
205 /*
206 Description:
207 Reads an openNURBS archive and saves the information in this model
208 Parameters:
209 archive - [in] archive to read from
210 error_log - [out] any archive reading errors are logged here.
211 Returns:
212 true if archive is read with no error. False if errors occur.
213 Error details are logged in error_log. If crc errors are in
214 the archive, then m_crc_error_count is set to the number of
215 errors.
216 Example:
217
218 // for ASCII file names
219 const char* sFileName = ....;
220 FILE* fp = ON::OpenFile( sFileName, "rb");
221
222 // for UNICODE file names
223 const wchar_t* wsFileName = ....;
224 FILE* fp = ON::OpenFile( wsFileName, L"rb");
225
226 bool bModelRead = false;
227 bool bModelIsValid = false;
228
229 ON_TextLog error_log;
230 ONX_Model model;
231
232 if ( 0 != fp )
233 {
234 ON_BinaryFile archive( ON::read3dm, fp );
235 bModelRead = model.read( archive, error_log );
236 ON::CloseFile( fp );
237 }
238
239 if ( bModelRead )
240 {
241 bModelIsValid = model.Validate(error_log);
242 }
243
244 See Also:
245 ONX_Model::IsValid
246 ONX_Model::Write
247 ONX_Model::m_crc_error_count
248 */
249 bool Read(
250 ON_BinaryArchive& archive,
251 ON_TextLog* error_log = NULL
252 );
253
254 bool Read(
255 const char* filename,
256 ON_TextLog* error_log = NULL
257 );
258
259 bool Read(
260 const wchar_t* filename,
261 ON_TextLog* error_log = NULL
262 );
263
264 /*
265 Description:
266 Writes contents of this model to an openNURBS archive.
267 It is a good practice to call Polish() before calling
268 Write so that your file has all the "fluff" that makes it
269 complete. If the model is not valid, then Write will refuse
270 to write it.
271
272 Parameters:
273 archive - [in]
274 archive to write to
275
276 version - [in]
277 Version of the openNURBS archive to write.
278 0 default value and suggested.
279 When 0 is passed in, the value of ON_BinaryArchive::CurrentArchiveVersion()
280 is used.
281 2, 3, 4
282 If you pass in one of these values, some information
283 in current data structures will not be saved in the
284 file.
285 Rhino 2.x can read version 2 files.
286 Rhino 3.x can read version 2 and 3 files.
287 Rhino 4.x can read version 2, 3 and 4 files.
288 Rhino 5.x can read version 2, 3, 4, 5 and 50 files.
289 Rhino 5.x writes version 50 files.
290
291 sStartSectionComment - [in]
292 Brief desciption of your app, today's date, etc.
293
294 error_log - [out]
295 any archive writing errors are logged here.
296
297 Returns:
298 True if archive is written with no error.
299 False if errors occur.
300 Error details are logged in error_log.
301
302 Example:
303
304 model = ...;
305
306 model.Polish(); // fill in defaults as needed.
307
308 ON_TextLog error_log;
309 if ( !model.IsValid( error_log ) )
310 {
311 // try to repair the model
312 model.Audit(true);
313 }
314
315 if ( model.IsValid( error_log ) )
316 {
317
318 // for ASCII file names
319 const char* sFileName = ....;
320 FILE* fp = ON::OpenFile( sFileName, "wb");
321
322 // for UNICODE file names
323 const wchar_t* wsFileName = ....;
324 FILE* fp = ON::OpenFile( wsFileName, L"wb");
325
326 bool ok = false;
327 if ( 0 != fp )
328 {
329 const char* sStartSectionComment = "...";
330 int version = 5; // 2, 3, 4 or 5 are valid
331 ON_BinaryFile archive( ON::write3dm, fp );
332 ok = model.write( archive,
333 version,
334 sStartSectionComment,
335 error_log );
336 ON::CloseFile( fp );
337 }
338 }
339
340 See Also:
341 ONX_Model::Polish
342 ONX_Model::IsValid
343 ONX_Model::Read
344 */
345 bool Write(
346 ON_BinaryArchive& archive,
347 int version = 0,
348 const char* sStartSectionComment = NULL,
349 ON_TextLog* error_log = NULL
350 );
351
352 bool Write(
353 const char* filename,
354 int version = 0,
355 const char* sStartSectionComment = NULL,
356 ON_TextLog* error_log = NULL
357 );
358
359 bool Write(
360 const wchar_t* filename,
361 int version = 0,
362 const char* sStartSectionComment = NULL,
363 ON_TextLog* error_log = NULL
364 );
365
366 /*
367 Description:
368 Check a model to make sure it is valid.
369 Parameters:
370 text_log - [in] if not NULL and errors are found,
371 a description of the problem is put in
372 this text_log.
373 Returns:
374 True if the model is valid.
375 */
376 bool IsValid( ON_TextLog* text_log = NULL ) const;
377
378 /*
379 Description:
380 Quickly fills in the little details, like making sure there is
381 at least one layer and table indices make sense.
382 For a full blown check and repair, call Audit(true).
383 See Also:
384 ONX_Model::Audit
385 */
386 virtual
387 void Polish();
388
389 /*
390 Description:
391 Check a model to make sure it is valid and, if possible
392 and requrested, attempt to repair.
393 Parameters:
394 bAttemptRepair - [in] if true and a problem is found,
395 the problem is repaired.
396 repair_count - [out] number of successful repairs.
397 text_log - [in] if not NULL and errors are found,
398 a description of the problem is put in
399 this text_log.
400 warnings - [out]
401 If problems were found, warning ids are appended to this list.
402 @untitled table
403 1 m_material_table[] flaws
404 2 layer table is not perfect.
405 3 some m_object_table[].m_attributes.m_uuid was nil or not unique.
406 4 some m_object_table[].IsValid() is false
407 5 some m_idef_table[] has an invalid or duplicate name
408 6 warning some m_idef_table[].m_object_uuid[] is not valid
409 7 warning some m_object_table[].m_object is null
410 8 warning some m_object_table[].m_object->IsValid() is false
411 9 warning some m_object_table[].m_attributes is not valid
412 10 linetype table is not perfect.
413 11 lineset table is not perfect.
414 12 some m_idef_table[].m_uuid was nil or not unique.
415 13 some m_texture_mapping_table[i].m_mapping_id was nil or not unique.
416 14 some m_material_table[i].m_material_id was nil or not unique.
417 15 some m_light_table[i].m_light_id was nil or not unique.
418 Returns:
419 True if model is valid and false if the model has serious
420 @untitled table
421 <0 model has serious errors
422 =0 model is ok
423 >0 number of problems that were found.
424 */
425 virtual
426 int Audit(
427 bool bAttemptRepair,
428 int* repair_count,
429 ON_TextLog* text_log,
430 ON_SimpleArray<int>* warnings
431 );
432
433 /////////////////////////////////////////////////////////////////////
434 //
435 // BEGIN model definitions
436 //
437
438 // start section information
442
443 // Properties include revision history, notes, information about
444 // the applicaton that created the file, and an option preview image.
446
447 // Settings include tolerance, and unit system, and defaults used
448 // for creating views and objects.
450
451 // Tables in an openNURBS archive
466
467 // The id index fields are used to lookup objects by id
472
473 // length of archive returned by ON_BinaryArchive::Read3dmEndMark()
474 std::size_t m_file_length;
475
476 // Number of crc errors found during archive reading.
477 // If > 0, then the archive is corrupt.
479
480 //
481 // END model definitions
482 //
483 /////////////////////////////////////////////////////////////////////
484
485 /*
486 Returns:
487 Bounding box of every object in m_object_table[].
488 */
490
491 /*
492 Description:
493 Get render material from object attributes.
494 Parameters:
495 attributes - [in] object attributes.
496 material - [out] render material
497 */
499 const ON_3dmObjectAttributes& attributes,
500 ON_Material& material
501 ) const;
502
503 /*
504 Description:
505 Get render material from object_index.
506 Parameters:
507 object_index - [in] m_object_table[] index
508 material - [out] render material
509 */
511 int object_index,
512 ON_Material& material
513 ) const;
514
515 /*
516 Description:
517 Get linetype from object attributes.
518 Parameters:
519 attributes - [in] object attributes.
520 linetype - [out] linetype
521 */
523 const ON_3dmObjectAttributes& attributes,
524 ON_Linetype& linetype
525 ) const;
526
527 /*
528 Description:
529 Get linetype from object_index.
530 Parameters:
531 object_index - [in] m_object_table[] index
532 linetype - [out] linetype
533 */
535 int object_index,
536 ON_Linetype& linetype
537 ) const;
538
539 /*
540 Description:
541 Get wireframe drawing color from object attributes.
542 Parameters:
543 attributes - [in] object attributes.
544 Returns:
545 Wireframe drawing color.
546 */
548
549 /*
550 Description:
551 Get wireframe drawing color from object attributes.
552 Parameters:
553 object_index - [in] m_object_table[] index
554 Returns:
555 Wireframe drawing color.
556 */
557 ON_Color WireframeColor(int object_index) const;
558
559 /*
560 Description:
561 Get index of object in m_object_table from object_uuid.
562 Parameters:
563 object_uuid - [in] object uuid.
564 Returns:
565 Index of the object or -1 if it is not found.
566 */
567 virtual
569 ON_UUID object_uuid
570 ) const;
571
572 /*
573 Description:
574 Get instance definition from instance definition table.
575 Parameters:
576 idef_uuid - [in] instance definition uuid.
577 Example:
578
579 ON_XModel model = ...;
580 ..
581 ON_InstanceRef* pIRef = ..;
582 ON_UUID idef_uuid = pIRef->m_instance_definition_uuid;
583 int idef_index = model.IDefIndex( idef_uuid );
584 if ( idef_index >= 0 )
585 {
586 const ON_InstanceDefinition& idef = model.m_idef_table[idef_index];
587 ...
588 }
589
590 Returns:
591 Index of the instance definition or -1 if it is not found.
592 */
593 virtual
595 ON_UUID idef_uuid
596 ) const;
597
598 /*
599 Description:
600 Get instance definition index from instance definition name.
601 Parameters:
602 idef_name - [in] name to search for
603 Returns:
604 Index of the instance definition or -1 if it is not found.
605 */
606 virtual
608 const wchar_t* idef_name
609 ) const;
610
611 /*
612 Description:
613 Get instance definition name that is not currently in use.
614 */
615 virtual
616 void GetUnusedIDefName( ON_wString& idef_name ) const;
617
618 /*
619 Description:
620 See if the instance reference iref refers to an instance
621 definition.
622 Parameters:
623 iref - [in]
624 idef_uuid - [in] id of idef we are looking for
625 Returns:
626 @untitled table
627 0 iref does not use idef
628 1 iref directly references idef
629 >1 iref has a nested reference to idef (nesting depth returned)
630 -1 iref.m_instance_definition_uuid is not valid
631 -2 invalid idef found
632 */
633 virtual
635 const ON_InstanceRef& iref,
636 ON_UUID idef_uuid
637 ) const;
638
639 /*
640 Description:
641 Get layer definition from layer table.
642 Parameters:
643 layer_name - [in] name to search for
644 Example:
645
646 ON_XModel model = ...;
647 ..
648 ON_InstanceRef* pIRef = ..;
649 ON_UUID idef_uuid = pIRef->m_instance_definition_uuid;
650 int layer_index = model.IDefIndex( idef_uuid );
651 if ( idef_index >= 0 )
652 {
653 const ON_InstanceDefinition& idef = model.m_idef_table[idef_index];
654 ...
655 }
656
657 Returns:
658 Index of the layer or -1 if it is not found.
659 */
660 virtual
662 const wchar_t* layer_name
663 ) const;
664
665 /*
666 Description:
667 Get layer name that is not currently in use.
668 */
669 virtual
670 void GetUnusedLayerName( ON_wString& layer_name ) const;
671
672 /////////////////////////////////////////////////////////////////////
673 //
674 // BEGIN model document level user string tools
675 //
676
677 /*
678 Description:
679 Attach a user string to the document.
680 Parameters:
681 key - [in] id used to retrieve this string.
682 string_value - [in]
683 If NULL, the string with this id will be removed.
684 Returns:
685 True if successful.
686 */
688 const wchar_t* key,
689 const wchar_t* string_value
690 );
691
692 /*
693 Description:
694 Get user string from the document.
695 Parameters:
696 key - [in] id used to retrieve the string.
697 string_value - [out]
698 Returns:
699 True if a string with id was found.
700 */
702 const wchar_t* key,
703 ON_wString& string_value
704 ) const;
705
706 /*
707 Description:
708 Get a list of all user strings in the document.
709 Parameters:
710 user_strings - [out]
711 user strings are appended to this list.
712 Returns:
713 Number of elements appended to the user_strings list.
714 */
716
717 //
718 // END model document level user string tools
719 //
720 /////////////////////////////////////////////////////////////////////
721
722
723 /////////////////////////////////////////////////////////////////////
724 //
725 // BEGIN model text dump tools
726 //
727
728 // text dump of entire model
729 void Dump( ON_TextLog& ) const;
730
731 // text dump of model properties and settings
732 void DumpSummary( ON_TextLog& ) const;
733
734 // text dump of bitmap table
736
737 // text dump of texture mapping table
739
740 // text dump of render material table
742
743 // text dump of line type table
745
746 // text dump of layer table
748
749 // text dump of light table
751
752 // text dump of group table
754
755 // text dump of font table
756 void DumpFontTable( ON_TextLog& ) const;
757
758 // text dump of dimstyle table
760
761 // text dump of hatch pattern table
763
764 // text dump of instance definition table
765 void DumpIDefTable( ON_TextLog& ) const;
766
767 // text dump of object table
769
770 // text dump of object table
772
773 // text dump of user data table
775
776 //
777 // END model text dump tools
778 //
779 /////////////////////////////////////////////////////////////////////
780
781 /*
782 Description:
783 Destroys cached searching and bounding box information. Call
784 if you modify the m_object_table or m_idef_table.
785 */
787
788 /////////////////////////////////////////////////////////////////////
789 //
790 // BEGIN Render Development Toolkit (RDK) information
791 //
793 static bool GetRDKDocumentInformation(const ONX_Model_UserData& docud,ON_wString& rdk_xml_document_data);
794
795 static bool IsRDKObjectInformation(const ON_UserData& objectud);
796 static bool GetRDKObjectInformation(const ON_Object& object,ON_wString& rdk_xml_object_data);
797 //
798 // END Render Development Toolkit (RDK) information
799 //
800 /////////////////////////////////////////////////////////////////////
801
802
803private:
804 // prohibit use of copy construction and operator=
805 ONX_Model(const ONX_Model&);
806 ONX_Model& operator=(const ONX_Model&);
807
808private:
809
810 // This bounding box contains all objects in the object table.
811 ON_BoundingBox m__object_table_bbox;
812};
813
814/*
815Description:
816 Tests a string to see if it is valid as a name for a layer,
817 object, material, linetype, instance definition, etc.
818Parameters:
819 name - [in] string to test
820Returns:
821 True if the string is a valid name.
822*/
823ON_DECL
824bool ONX_IsValidName(
825 const wchar_t* name
826 );
827
828#endif
const ON_Object * m_object
ON_3dmObjectAttributes m_attributes
ONX_Model_Object & operator=(const ONX_Model_Object &)
ONX_Model_Object(const ONX_Model_Object &)
void Dump(ON_TextLog &) const
ON_3dmObjectAttributes m_attributes
ONX_Model_RenderLight(const ONX_Model_RenderLight &)
ONX_Model_RenderLight & operator=(const ONX_Model_RenderLight &)
void Dump(ON_TextLog &) const
ONX_Model_UserData(const ONX_Model_UserData &)
ONX_Model_UserData & operator=(const ONX_Model_UserData &)
void DumpUserDataTable(ON_TextLog &) const
bool Write(const char *filename, int version=0, const char *sStartSectionComment=NULL, ON_TextLog *error_log=NULL)
ON_UuidIndexList m_material_id_index
void DumpGroupTable(ON_TextLog &) const
void GetRenderMaterial(const ON_3dmObjectAttributes &attributes, ON_Material &material) const
ON_SimpleArray< ON_Bitmap * > m_bitmap_table
ON_ObjectArray< ON_HatchPattern > m_hatch_pattern_table
bool Write(ON_BinaryArchive &archive, int version=0, const char *sStartSectionComment=NULL, ON_TextLog *error_log=NULL)
ON_UuidIndexList m_idef_id_index
void Destroy()
bool Read(ON_BinaryArchive &archive, ON_TextLog *error_log=NULL)
ON_Color WireframeColor(int object_index) const
virtual int IDefIndex(const wchar_t *idef_name) const
void DumpMaterialTable(ON_TextLog &) const
virtual int LayerIndex(const wchar_t *layer_name) const
virtual int ObjectIndex(ON_UUID object_uuid) const
ON_ObjectArray< ON_InstanceDefinition > m_idef_table
void GetRenderMaterial(int object_index, ON_Material &material) const
ON_BoundingBox BoundingBox() const
ON_ClassArray< ONX_Model_RenderLight > m_light_table
void DumpTextureMappingTable(ON_TextLog &) const
static bool GetRDKObjectInformation(const ON_Object &object, ON_wString &rdk_xml_object_data)
ON_UuidIndexList m_object_id_index
ON_3dmSettings m_settings
void GetLinetype(int object_index, ON_Linetype &linetype) const
void DumpLayerTable(ON_TextLog &) const
void DumpObjectTable(ON_TextLog &) const
virtual void GetUnusedIDefName(ON_wString &idef_name) const
void DumpHistoryRecordTable(ON_TextLog &) const
bool IsValid(ON_TextLog *text_log=NULL) const
ON_ObjectArray< ON_Material > m_material_table
std::size_t m_file_length
bool Read(const char *filename, ON_TextLog *error_log=NULL)
bool Read(const wchar_t *filename, ON_TextLog *error_log=NULL)
static bool IsRDKDocumentInformation(const ONX_Model_UserData &docud)
void GetLinetype(const ON_3dmObjectAttributes &attributes, ON_Linetype &linetype) const
virtual int Audit(bool bAttemptRepair, int *repair_count, ON_TextLog *text_log, ON_SimpleArray< int > *warnings)
ON_ClassArray< ONX_Model_Object > m_object_table
void DumpLinetypeTable(ON_TextLog &) const
void DumpIDefTable(ON_TextLog &) const
ON_ObjectArray< ON_Layer > m_layer_table
ON_String m_sStartSectionComments
virtual ~ONX_Model()
virtual int IDefIndex(ON_UUID idef_uuid) const
ON_ObjectArray< ON_TextureMapping > m_mapping_table
void Dump(ON_TextLog &) const
ON_ClassArray< ONX_Model_UserData > m_userdata_table
ON_ObjectArray< ON_Linetype > m_linetype_table
ON_3dmProperties m_properties
virtual void GetUnusedLayerName(ON_wString &layer_name) const
virtual void Polish()
static bool GetRDKDocumentInformation(const ONX_Model_UserData &docud, ON_wString &rdk_xml_document_data)
bool GetDocumentUserString(const wchar_t *key, ON_wString &string_value) const
ON_Color WireframeColor(const ON_3dmObjectAttributes &attributes) const
ON_SimpleArray< ON_HistoryRecord * > m_history_record_table
int GetDocumentUserStrings(ON_ClassArray< ON_UserString > &user_strings) const
static bool IsRDKObjectInformation(const ON_UserData &objectud)
void DestroyCache()
void DumpBitmapTable(ON_TextLog &) const
void DumpSummary(ON_TextLog &) const
void DumpFontTable(ON_TextLog &) const
void DumpHatchPatternTable(ON_TextLog &) const
ON_UuidIndexList m_mapping_id_index
ON_ObjectArray< ON_Font > m_font_table
bool SetDocumentUserString(const wchar_t *key, const wchar_t *string_value)
void DumpDimStyleTable(ON_TextLog &) const
void DumpLightTable(ON_TextLog &) const
virtual int UsesIDef(const ON_InstanceRef &iref, ON_UUID idef_uuid) const
ON_ObjectArray< ON_Group > m_group_table
ON_ObjectArray< ON_DimStyle > m_dimstyle_table
bool Write(const wchar_t *filename, int version=0, const char *sStartSectionComment=NULL, ON_TextLog *error_log=NULL)
#define PCL_EXPORTS
Definition: pcl_macros.h:323