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); }
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()); }
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 }