原創|使用教程|編輯:黃竹雯|2019-04-22 16:59:43.000|閱讀 344 次
概述:CAD .NET是一款在CAD領域被廣泛應用的控件,可以快速準確的閱讀DWG和DXF文件,并且通過Windows GDI+方法繪制件,支持多種文件格式,包括DWG、DXF、Gerber、光柵圖像等,并支持部分編輯功能。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
CAD .NET是一款在CAD領域被廣泛應用的控件,可以快速準確的閱讀DWG和DXF文件,并且通過Windows GDI+方法繪制件,支持多種文件格式,包括DWG、DXF、Gerber、光柵圖像等,并支持部分編輯功能。
A:可以使用重載方法CADImage.SaveToStream的以下簽名將CAD圖像的一部分保存到MemoryStream:
public virtual void SaveToStream( Stream str, ImageFormat ImgFormat, DRect aCurRect, Rectangle clipRect )
ImgFormat參數指定保存圖像的文件格式(Bmp,Jpeg等)。CurRect參數表示當前顯示在屏幕上的CAD圖像部分,而clipRect確定將保存到流的部分(Stream str)。
將裁剪的部分放入內存流后,可以從中創建新的位圖:
MemoryStream ms = new MemoryStream(); ... Bitmap bmp = new Bitmap(ms);
然后使用PrintDocument類在打印機頁面上繪制此位圖:
public static void PrintBitmap(Bitmap bitmap, string printerName, int paperWidth, int paperHeight) { PrintDocument pd = new PrintDocument(); pd.PrinterSettings.PrinterName = printerName; pd.PrinterSettings.DefaultPageSettings.Landscape = true; pd.PrinterSettings.DefaultPageSettings.PaperSize = new PaperSize("Custom size", paperWidth, paperHeight); pd.DefaultPageSettings.Margins = new Margins(0, 0, 0, 0); pd.PrinterSettings.DefaultPageSettings.Margins = new Margins(0, 0, 0, 0); pd.PrintPage += (sender, args) => { Rectangle m = args.MarginBounds; if ((double)bitmap.Width / (double)bitmap.Height > (double)m.Width / (double)m.Height) { m.Height = (int)((double)bitmap.Height / (double)bitmap.Width * (double)m.Width); } else { m.Width = (int)((double)bitmap.Width / (double)bitmap.Height * (double)m.Height); } args.Graphics.DrawImage(bitmap, m); }; pd.Print(); }
要使用鼠標選擇CAD圖像的一部分,可以使用CADEditorControl.ClipRectangle工具,如下面的代碼示例所示。
using System; using System.Drawing; using System.Drawing.Imaging; using System.Drawing.Printing; using System.IO; using System.Windows.Forms; using CADImport; using CADImport.FaceModule; public partial class Form1 : Form { public Form1() { InitializeComponent(); cadEditorControl1.EditorCADPictureBox.MouseDown += EditorCADPictureBox_MouseDown; cadEditorControl1.EditorCADPictureBox.MouseUp += EditorCADPictureBox_MouseUp; } void EditorCADPictureBox_MouseUp(object sender, MouseEventArgs e) { if (cadEditorControl1.ClipRectangle.Enabled) { MemoryStream ms = new MemoryStream(); DRect curRect = new DRect(cadEditorControl1.ImageRectangleF.Left, cadEditorControl1.ImageRectangleF.Top, 0, cadEditorControl1.ImageRectangleF.Right, cadEditorControl1.ImageRectangleF.Bottom, 0); cadEditorControl1.Image.SaveToStream(ms, ImageFormat.Bmp, curRect, cadEditorControl1.ClipRectangle.ClientRectangle); Bitmap bmp = new Bitmap(ms); PrintBitmap(bmp, "Microsoft Print to PDF", 297, 210); cadEditorControl1.ClipRectangle.DisableRect(); cadEditorControl1.Image.SelectionMode = SelectionEntityMode.Enabled; } } void EditorCADPictureBox_MouseDown(object sender, MouseEventArgs e) { cadEditorControl1.ClipRectangle.EnableRect(RectangleType.Zooming); cadEditorControl1.Image.SelectionMode = SelectionEntityMode.Disabled; } }
A:我們不能保存一個選定的區域,但可以保存某些CAD實體(例如CADImage.SelectedEntities):
CADImage cadImage = new CADImage(); cadImage.InitialNewImage();
A:文本字符是從存儲文本樣式使用的字體的字體文件(.shx .ttf)中讀取的。可能給定的文本需要一些SHX字體,但缺少所需的字體或程序根本不使用SHX字體。我們可以嘗試通過CADText.Style.FontName(單行文本)或CADMText.Style.FontName(多行文本)屬性確定所需字體的名稱。
A:在塊中更改某個實體后,需要為該實體和CADBlock對象調用CADImage.Converter.Loads()方法。例如:
cadImage.Converter.Loads(cadLine); cadImage.Converter.Loads(cadBlock);
當塊被插入到圖紙作為INSERT實體,你需要調用CADImage.Converter.Loads()也為CADInsert對象并調用CADImage.GetExtents()方法來重新計算該圖的范圍。
如果更改后發現實體長度改變,顯示了新的長度,但選擇卻是錯誤的,我們可以嘗試使用以下代碼更新insert中的行:
cadImage.Converter.Loads(Line) cadImage.Converter.Loads(block) cadImage.SetNewPosEntity(0, 0, 0, insert)
- 未完待續 -
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn