Article | 70002093 |
Type | Wish |
Product | Converter |
Version | 9002 |
Date Added | 11/2/2021 12:00:00 AM |
Fixed | 9.9003.0.2 (11/4/2021 12:00:00 AM) |
Submitted by | Jens Scheffler |
Summary
Import NamedObjectsDictionaries from DWG DXF files
Solution
Imports all NamedObjectsDictionary collection from DWG that contains valid Xrecords
Xrecord data are converted to new vdObjectArray collection
Supported Xrecord data types:
Integer , Double, String, vdHandle, ByteArray, gPoint
Dwg NamedObjectsDictionary are imported to vdDocument.UseTables["DWG"]["properties"]["NamedDictionary"] as a collection of vdXproperties
Export to Dwg is also supported
Note:
In case of DXF open/save use must set the vdxFiles.OpenSave.DisableVdrawDxf= true
Set vdDocumentc.FileProperties.ImportDWGFlags |= DWGImportFlags.ReadNamedObjectDictionaries; in order to support the import of dwg NamedObjectDictionaries.
example
//create some new custom data and add them to the Dwg UserTable //create some data vdObjectArray data1 = new vdObjectArray(); data1.AddItem(1.0); data1.AddItem(1); data1.AddItem("Some Text 1"); data1.AddItem(new gPoint(1, 1, 1)); //create some data vdObjectArray data2 = new vdObjectArray(); data2.AddItem(2.0); data2.AddItem(2); data2.AddItem("Some Text 2"); data2.AddItem(new gPoint(2, 2, 2)); //create a collection of vdXproperty to put out data vdXProperties data = new vdXProperties(); data.Add("Mydata1", data1);//add a "Mydata1" dictionary reference data1 data.Add("Mydata2", data2);//add a "Mydata2" dictionary reference data2 //set the data collection of all of our property to the UserTables dictionary that is also exported to dwg file doc.UserTables["Dwg"]["properties"]["NamedDictionary"] = data; //save the drawing to dwg format doc.SaveAs(@"d:\trampa\trampa2\stavros\support\test.dwg"); //open the previous saved drawing and read the imported data doc.FileProperties.ImportDWGFlags |= DWGImportFlags.ReadNamedObjectDictionaries;//needed in order to support the import of dwg NamedObjectDictionaries. doc.Open(@"d:\trampa\trampa2\stavros\support\test.dwg"); vdXProperties dwgprops = doc.UserTables["Dwg"]["properties"]["NamedDictionary"] as vdXProperties; if(dwgprops != null) { vdObjectArray _data1 = dwgprops["Mydata1"] as vdObjectArray; if (_data1 != null) { MessageBox.Show(string.Format("Mydata1 = {0} items", _data1.Count)); } vdObjectArray _data2 = dwgprops["Mydata2"] as vdObjectArray; if (_data2 != null) { MessageBox.Show(string.Format("Mydata2 = {0} items", _data2.Count)); } }Note: If the UserTables["Dwg"]["properties"]["NamedDictionary"] strings are not used exactly as they are in this sample code then these data will not be exported properly in .DWG/.DXF formats