public StringBuilder ExportSelectedForACAD() { StringBuilder sb = new StringBuilder(); GeometricEntity selection; if (this.SelectedVolume != null) { selection = this.SelectedVolume; } else { selection = this.SelectedPolygon; } if (selection == null) { return(sb); } // save linetypes and layers in their respective tables string selected_layer_name = selection.EntityLayer.EntityName.Replace('.', '_'); selected_layer_name = selected_layer_name.Replace(" ", "__"); List <string> names = new List <string> { selected_layer_name }; List <SharpDX.Color> colors = new List <Color> { selection.EntityLayer.EntityColor }; DXFUtils.AddLineTypeAndLayerDefinitionsToExport(ref sb, names, colors); // save the entities sb.AppendLine(((int)EntitySaveCode.ENTITY_START).ToString()); // 0 sb.AppendLine(DXFUtils.SECTION_START); // SECTION sb.AppendLine(((int)EntitySaveCode.ENTITY_NAME).ToString()); // 2 sb.AppendLine(DXFUtils.ENTITY_SECTION); // ENTITIES selection.AddToACADExport(ref sb, selected_layer_name, selected_layer_name + DXFUtils.LAYER_HIDDEN_SUFFIX); sb.AppendLine(((int)EntitySaveCode.ENTITY_START).ToString()); // 0 sb.AppendLine(DXFUtils.SECTION_END); // ENDSEC // mark the end sb.AppendLine(((int)EntitySaveCode.ENTITY_START).ToString()); // 0 sb.AppendLine(DXFUtils.EOF); // EOF return(sb); }
public StringBuilder ExportEntitiesForACAD() { StringBuilder sb = new StringBuilder(); // save linetypes and layers in their respective tables Dictionary <Layer, string> layer_names = this.GetFlatLayerQualifiedNameList(); Dictionary <Layer, string> layer_names_conform = new Dictionary <Layer, string>(); foreach (var entry in layer_names) { string name = entry.Value.Replace('.', '_'); string name_1 = name.Replace(" ", "__"); layer_names_conform.Add(entry.Key, name_1); } List <string> names = layer_names_conform.Values.ToList(); List <SharpDX.Color> colors = layer_names_conform.Keys.Select(x => x.EntityColor).ToList(); DXFUtils.AddLineTypeAndLayerDefinitionsToExport(ref sb, names, colors); // save the entities sb.AppendLine(((int)EntitySaveCode.ENTITY_START).ToString()); // 0 sb.AppendLine(DXFUtils.SECTION_START); // SECTION sb.AppendLine(((int)EntitySaveCode.ENTITY_NAME).ToString()); // 2 sb.AppendLine(DXFUtils.ENTITY_SECTION); // ENTITIES List <GeometricEntity> GEs = this.GetFlatGeometryList(); foreach (GeometricEntity ge in GEs) { if (ge.Visibility == EntityVisibility.ON) { ge.AddToACADExport(ref sb, layer_names_conform[ge.EntityLayer], layer_names_conform[ge.EntityLayer] + DXFUtils.LAYER_HIDDEN_SUFFIX); } } sb.AppendLine(((int)EntitySaveCode.ENTITY_START).ToString()); // 0 sb.AppendLine(DXFUtils.SECTION_END); // ENDSEC // mark the end sb.AppendLine(((int)EntitySaveCode.ENTITY_START).ToString()); // 0 sb.AppendLine(DXFUtils.EOF); // EOF return(sb); }
public void AddToExport(ref StringBuilder _sb) { if (_sb == null) { return; } string tmp = string.Empty; _sb.AppendLine(((int)EntitySaveCode.ENTITY_START).ToString()); // 0 _sb.AppendLine(DXFUtils.GV_MATERIAL); // GV_MATERIAL _sb.AppendLine(((int)EntitySaveCode.CLASS_NAME).ToString()); // 100 (subclass marker) _sb.AppendLine(this.GetType().ToString()); // GeometryViewer.ComponentInteraction.Material _sb.AppendLine(((int)EntitySaveCode.ENTITY_ID).ToString()); // 900 (custom code) _sb.AppendLine(this.ID.ToString()); // e.g. 254 _sb.AppendLine(((int)MaterialSaveCode.ID).ToString()); // 1301 _sb.AppendLine(this.ID.ToString()); _sb.AppendLine(((int)MaterialSaveCode.Name).ToString()); // 1302 _sb.AppendLine(this.Name); _sb.AppendLine(((int)MaterialSaveCode.THICKNESS).ToString()); // 1303 _sb.AppendLine(DXFUtils.ValueToString(this.Thickness, "F8")); _sb.AppendLine(((int)MaterialSaveCode.POSITION).ToString()); // 1304 _sb.AppendLine(Material.MPTWAP2String(this.Position)); _sb.AppendLine(((int)MaterialSaveCode.ACC_AREA).ToString()); // 1305 _sb.AppendLine(DXFUtils.ValueToString(this.AccArea, "F8")); tmp = (this.IsBound2CR) ? "1" : "0"; _sb.AppendLine(((int)MaterialSaveCode.IS_BOUND_2CR).ToString()); // 1306 _sb.AppendLine(tmp); _sb.AppendLine(((int)MaterialSaveCode.BOUND_CRID).ToString()); // 1307 _sb.AppendLine(this.BoundCRID.ToString()); _sb.AppendLine(((int)MaterialSaveCode.NR_ASSOC_SURFACES).ToString()); // 1308 _sb.AppendLine(this.NrSurfaces.ToString()); }
public virtual void AddToExport(ref StringBuilder _sb, bool _with_contained_entites) { if (_sb == null) { return; } string tmp = string.Empty; // THE FOLLOWING 4 LINES ARE TO BE CALLED IN EACH NON-ABSTRACT SUBCLASS TO REFLECT THE DYNAMIC TYPE // =============================================================================================== //_sb.AppendLine(((int)EntitySaveCode.ENTITY_START).ToString()); // 0 //_sb.AppendLine(DXFUtils.GV_ENTITY); // GV_ENTITY //_sb.AppendLine(((int)EntitySaveCode.CLASS_NAME).ToString()); // 100 (subclass marker) //_sb.AppendLine(this.GetType().ToString()); // GeometryViewer.EntityGeometry.Entity // =============================================================================================== // GENERAL _sb.AppendLine(((int)EntitySaveCode.ENTITY_ID).ToString()); // 900 (custom code) _sb.AppendLine(this.ID.ToString()); // e.g. 254 _sb.AppendLine(((int)EntitySaveCode.ENTITY_NAME).ToString()); // 2 _sb.AppendLine(this.EntityName); // e.g. "Entity 254" _sb.AppendLine(((int)EntitySaveCode.VISIBILITY).ToString()); // 60 _sb.AppendLine(this.Visibility2SaveCode().ToString()); // (0 = visible, 1 = invisible; custom: 2 = half, -11 = unknown) _sb.AppendLine(((int)EntitySaveCode.SPACE).ToString()); // 67 _sb.AppendLine("0"); // (absent or 0 = entity in model space, 1 = entity in paper space, default = 0) _sb.AppendLine(((int)DXFSpecSaveCodes.COLOR_INDEX).ToString()); // 62 DXFImportExport.DXFColor dxf_color = new DXFImportExport.DXFColor((float)this.EntityColor.R, (float)this.EntityColor.G, (float)this.EntityColor.B, (float)this.EntityColor.A, true); int ic = DXFImportExport.DXFColor.DXFColor2Index(dxf_color); _sb.AppendLine(ic.ToString()); _sb.AppendLine(((int)EntitySaveCode.TRUECOLOR).ToString()); // 420 long tc = DXFImportExport.DXFColor.DXFColor2TrueColor(dxf_color); _sb.AppendLine(tc.ToString()); // 195(0..255)(0..255)(0..255) // SPECIFIC tmp = (this.IsValid) ? "1" : "0"; _sb.AppendLine(((int)EntitySpecificSaveCode.VALIDITY).ToString()); // 1001 _sb.AppendLine(tmp); // 1 = valid, 0 = invalid tmp = (this.AssociatedWComp) ? "1" : "0"; _sb.AppendLine(((int)EntitySpecificSaveCode.ASSOC_W_OTHER).ToString()); // 1002 _sb.AppendLine(tmp); // 1 = associated, 0 = not associated // ---CONTAINED ENTITIES START--- // ------------------------------ if (this.ContainedEntities == null || this.ContainedEntities.Count == 0 || !_with_contained_entites) { _sb.AppendLine(((int)EntitySpecificSaveCode.CONTAINED_ENTITIES).ToString()); // 1003 _sb.AppendLine("0"); } else { _sb.AppendLine(((int)EntitySpecificSaveCode.CONTAINED_ENTITIES).ToString()); // 1003 _sb.AppendLine(this.ContainedEntities.Count.ToString()); _sb.AppendLine(((int)EntitySaveCode.ENTITY_START).ToString()); // 0 _sb.AppendLine(DXFUtils.ENTITY_SEQUENCE); // ENTSEQ foreach (Entity e in this.ContainedEntities) { if (e != null) { e.AddToExport(ref _sb, _with_contained_entites); } } _sb.AppendLine(((int)EntitySaveCode.ENTITY_START).ToString()); // 0 _sb.AppendLine(DXFUtils.SEQUENCE_END); // SEQEND _sb.AppendLine(((int)EntitySaveCode.ENTITY_START).ToString()); // 0 _sb.AppendLine(DXFUtils.ENTITY_CONTINUE); // ENTCTN } // ------------------------------ // ---CONTAINED ENTITIES END --- // ARC properties _sb.AppendLine(((int)EntitySpecificSaveCode.VISLINE_THICKNESS).ToString()); // 1004 _sb.AppendLine(DXFUtils.ValueToString(this.LineThicknessGUI, "F8")); // "0.25" foreach (string line in this.Text) { if (string.IsNullOrEmpty(line)) { continue; } _sb.AppendLine(((int)EntitySpecificSaveCode.TEXT_LINE).ToString()); // 1005 _sb.AppendLine(line); } // BPH properties tmp = (this.IsTopClosure) ? "1" : "0"; _sb.AppendLine(((int)EntitySpecificSaveCode.IS_TOP_CLOSURE).ToString()); // 1006 _sb.AppendLine(tmp); tmp = (this.IsBottomClosure) ? "1" : "0"; _sb.AppendLine(((int)EntitySpecificSaveCode.IS_BOTTOM_CLOSURE).ToString()); // 1007 _sb.AppendLine(tmp); // signify end of complex entity _sb.AppendLine(((int)EntitySaveCode.ENTITY_START).ToString()); // 0 _sb.AppendLine(DXFUtils.SEQUENCE_END); // SEQEND }