Ejemplo n.º 1
0
        private static void AddLayerDefinitionToExport(ref StringBuilder _sb, string _layer_name, string _ltype_name, SharpDX.Color _color, bool _marked_as_hidden)
        {
            if (_sb == null || string.IsNullOrEmpty(_layer_name))
            {
                return;
            }
            string ltype = (string.IsNullOrEmpty(_ltype_name)) ? "Continuous" : _ltype_name;

            _sb.AppendLine(((int)DXFSpecSaveCodes.ENTITY_TYPE).ToString());          // 0
            _sb.AppendLine(DXFUtils.LAYER);                                          // LAYER
            _sb.AppendLine(((int)DXFSpecSaveCodes.SUBCLASS_MARKER).ToString());      // 100
            _sb.AppendLine("AcDbSymbolTableRecord");
            _sb.AppendLine(((int)DXFSpecSaveCodes.SUBCLASS_MARKER).ToString());      // 100
            _sb.AppendLine("AcDbLayerTableRecord");

            _sb.AppendLine(((int)EntitySaveCode.ENTITY_NAME).ToString());            // 2
            _sb.AppendLine(_layer_name);                                             // ENTITY_NAME

            /*
             *  70: Standard flags (bit-coded values)
             *  1 = Layer is frozen; otherwise layer is thawed.
             *  2 = Layer is frozen by default in new viewports.
             *  4 = Layer is locked.
             *  16 = If set, table entry is externally dependent on an xref.
             *  32 = If this bit and bit 16 are both set, the externally dependent xref has been successfully resolved.
             *  64 = If set, the table entry was referenced by at least one entity in the drawing the last time the drawing was edited.
             */
            _sb.AppendLine("70");                                                    // 70
            _sb.AppendLine("0");
            _sb.AppendLine(((int)DXFSpecSaveCodes.COLOR_INDEX).ToString());          // 62
            DXFImportExport.DXFColor dxf_color = new DXFImportExport.DXFColor((float)_color.R, (float)_color.G, (float)_color.B, (float)_color.A, true);
            int ic = DXFImportExport.DXFColor.DXFColor2Index(dxf_color);

            if (_marked_as_hidden)
            {
                ic = (ic / 10) * 10 + 1;
            }
            _sb.AppendLine(ic.ToString());
            //_sb.AppendLine(((int)DXFSpecSaveCodes.TRUE_COLOR).ToString());         // 420
            //long tc = DXFImportExport.DXFColor.DXFColor2TrueColor(new DXFImportExport.DXFColor((float)_color.R, (float)_color.G, (float)_color.B, (float)_color.A, true));
            //_sb.AppendLine(tc.ToString());
            _sb.AppendLine(((int)DXFSpecSaveCodes.LINETYPE_NAME).ToString());        // 6
            _sb.AppendLine(ltype);
        }
Ejemplo n.º 2
0
        public static void Add3dPolylineToExport(ref StringBuilder _sb, string _layer_name, SharpDX.Color _color,
                                                 List <Vector3> _vertices, bool _is_closed = true)
        {
            if (_sb == null)
            {
                return;
            }
            if (_vertices == null || _vertices.Count == 0)
            {
                return;
            }
            string tmp = string.Empty;

            _sb.AppendLine(((int)DXFSpecSaveCodes.ENTITY_TYPE).ToString());     // 0
            _sb.AppendLine("POLYLINE");

            // common
            _sb.AppendLine(((int)DXFSpecSaveCodes.SUBCLASS_MARKER).ToString()); // 100
            _sb.AppendLine("AcDbEntity");

            _sb.AppendLine(((int)DXFSpecSaveCodes.LAYER_NAME).ToString());      // 8
            tmp = (string.IsNullOrEmpty(_layer_name)) ? "0" : _layer_name;
            _sb.AppendLine(tmp);

            _sb.AppendLine(((int)DXFSpecSaveCodes.COLOR_INDEX).ToString()); // 62
            DXFImportExport.DXFColor dxf_color = new DXFImportExport.DXFColor((float)_color.R, (float)_color.G, (float)_color.B, (float)_color.A, true);
            int ic = 256;                                                   // DXFImportExport.DXFColor.DXFColor2Index(dxf_color);

            _sb.AppendLine(ic.ToString());                                  // 256 = ByLayer

            //_sb.AppendLine(((int)DXFSpecSaveCodes.TRUE_COLOR).ToString());      // 420
            long tc = DXFImportExport.DXFColor.DXFColor2TrueColor(dxf_color);

            //_sb.AppendLine(tc.ToString());

            // 3d polyline
            _sb.AppendLine(((int)DXFSpecSaveCodes.SUBCLASS_MARKER).ToString()); // 100
            _sb.AppendLine("AcDb3dPolyline");

            _sb.AppendLine(((int)DXFSpecSaveCodes.ENT_FLOW_FLAG).ToString());    // 66
            _sb.AppendLine("1");

            _sb.AppendLine(((int)DXFSpecSaveCodes.POINT_LOCATION_X).ToString()); // 10
            _sb.AppendLine("0");
            _sb.AppendLine(((int)DXFSpecSaveCodes.POINT_LOCATION_Y).ToString()); // 20
            _sb.AppendLine("0");
            _sb.AppendLine(((int)DXFSpecSaveCodes.POINT_LOCATION_Z).ToString()); // 30
            _sb.AppendLine("0");

            _sb.AppendLine(((int)DXFSpecSaveCodes.POLYLINE_FLAG).ToString());     // 70: closed(1) 3d polyline(8)
            tmp = (_is_closed) ? "9" : "8";
            _sb.AppendLine(tmp);

            // 3d polyline vertices
            foreach (Vector3 v in _vertices)
            {
                Vector3 v_corrected = new Vector3(v.X, -v.Z, v.Y);
                DXFUtils.Add3dPolylineVertexToExport(ref _sb, v_corrected, _layer_name, 256, tc);
            }

            // mark end of vertex sequence
            _sb.AppendLine(((int)DXFSpecSaveCodes.ENTITY_TYPE).ToString());     // 0
            _sb.AppendLine("SEQEND");

            _sb.AppendLine(((int)DXFSpecSaveCodes.SUBCLASS_MARKER).ToString()); // 100
            _sb.AppendLine("AcDbEntity");

            _sb.AppendLine(((int)DXFSpecSaveCodes.LAYER_NAME).ToString());      // 8
            tmp = (string.IsNullOrEmpty(_layer_name)) ? "0" : _layer_name;
            _sb.AppendLine(tmp);

            _sb.AppendLine(((int)DXFSpecSaveCodes.COLOR_INDEX).ToString());     // 62
            _sb.AppendLine(ic.ToString());

            //_sb.AppendLine(((int)DXFSpecSaveCodes.TRUE_COLOR).ToString());      // 420
            //_sb.AppendLine(tc.ToString());
        }
Ejemplo n.º 3
0
        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
        }