コード例 #1
0
ファイル: DxfHelper.cs プロジェクト: ChrisMoreton/Test3
		/// <summary>
		/// Helper class constructor
		/// </summary>
		/// <param name="filePath">Path of the DXF file</param>
		/// <param name="fChart">Flowchart object reference</param>
		/// <param name="ExportTextAsMultiline">ExportTextAsMultiline property value</param>
		/// <param name="ExportExternalImages">ExportExternalImages property value</param>
		/// <param name="NamePattern">Image files name pattern</param>
		/// <param name="ImagePath">Path for image files saving</param>
		public DxfHelper( string filePath, FlowChart fChart, bool ExportTextAsMultiline, bool ExportExternalImages, 
			              string NamePattern, string ImagePath)
		{
			try
			{
			
				// Preparing for writing DXF file
				m_filePath = filePath;
				m_StreamWriter = new StreamWriter(filePath,	false ,	Encoding.ASCII);
				if ( m_StreamWriter	== null)
					throw new Exception("Can't open	DXF	file");

				m_ExportTextAsMultiline = ExportTextAsMultiline;
				m_ExportExternalImages = ExportExternalImages;
				provider = new UnitFormatter( m_UnitScale, ".");
				m_FlowChart = fChart;
				FileNamePattern = NamePattern;
				BasedPath = ImagePath;
				doc = new XmlDocument();

				if ( doc == null )
					throw new Exception("Can't create XML repository");

				// Getting temporarily XML storage from resource
				try
				{
					StreamReader sr = new StreamReader(Assembly.GetExecutingAssembly().
						GetManifestResourceStream("MindFusion.Diagramming.Export.DxfExporter.xml"),Encoding.ASCII);
					if ( sr == null )
						throw new Exception("Can't open stream");

					string XmlContent = sr.ReadToEnd();
					if (XmlContent == "")
						throw new Exception("Can't read content");

					doc.LoadXml(XmlContent);
			
				}
				catch (Exception)				
				{
					throw new Exception("Error loading XML template from resource");
				}
				
				
				// Hashing some temporarily XML nodes for future use
				nodeRoot = doc.DocumentElement;
				
				if ( nodeRoot == null )
					throw new Exception("Can't create nodeRoot");

				HashNode("header", ref nodeHeader);
				HashNode("tables", ref nodeTables);
				HashNode("tables/ltypes", ref nodeLtypes);
				HashNode("tables/style", ref nodeStyle);
				HashNode("tables/layer", ref nodeLayers);
				HashNode("blocks", ref nodeBlocks);
				HashNode("entities", ref nodeEntities);
				HashNode("objects", ref nodeObjects);
				
				// Setting background group				
				XmlNode node = nodeEntities.AppendChild(doc.CreateNode(XmlNodeType.Element,BACKGROUND_LAYER, ""));
				if ( node != null )
					node.InnerText = String.Format(provider, "  0\nSOLID\n  100\nAcDbEntity\n    5\n{10:X3}\n  8\n{9}\n  62\n{8:ACI}\n  100\nAcDbTrace\n  10\n{0:U}\n  20\n{1:U}\n  11\n{2:U}\n  21\n{3:U}\n  12\n{4:U}\n  22\n{5:U}\n  13\n{6:U}\n  23\n{7:U}\n",
						0, 0,
						m_FlowChart.DocExtents.Width, 0,
						0, m_FlowChart.DocExtents.Height,
						m_FlowChart.DocExtents.Width ,m_FlowChart.DocExtents.Height,
						m_FlowChart.BackColor,
						BACKGROUND_LAYER,
						99);
			
				
				// Indicates that object was initialized successfully
				m_valid	= true;
			}
				
			catch (	Exception ex )
			{
				m_valid	= false;
				m_status = ex.Message;
				Trace.WriteLine(String.Format("{0} error {1}\n","DxfHelper.Construct",ex.Message));
			}

		

		}