Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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
        }