原創(chuàng)|使用教程|編輯:黃竹雯|2019-04-22 16:59:43.000|閱讀 344 次
概述:CAD .NET是一款在CAD領(lǐng)域被廣泛應(yīng)用的控件,可以快速準(zhǔn)確的閱讀DWG和DXF文件,并且通過Windows GDI+方法繪制件,支持多種文件格式,包括DWG、DXF、Gerber、光柵圖像等,并支持部分編輯功能。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
CAD .NET是一款在CAD領(lǐng)域被廣泛應(yīng)用的控件,可以快速準(zhǔn)確的閱讀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參數(shù)指定保存圖像的文件格式(Bmp,Jpeg等)。CurRect參數(shù)表示當(dāng)前顯示在屏幕上的CAD圖像部分,而clipRect確定將保存到流的部分(Stream str)。
將裁剪的部分放入內(nèi)存流后,可以從中創(chuàng)建新的位圖:
MemoryStream ms = new MemoryStream(); ... Bitmap bmp = new Bitmap(ms);
然后使用PrintDocument類在打印機(jī)頁面上繪制此位圖:
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(); }
要使用鼠標(biāo)選擇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:我們不能保存一個(gè)選定的區(qū)域,但可以保存某些CAD實(shí)體(例如CADImage.SelectedEntities):
CADImage cadImage = new CADImage(); cadImage.InitialNewImage();
A:文本字符是從存儲(chǔ)文本樣式使用的字體的字體文件(.shx .ttf)中讀取的。可能給定的文本需要一些SHX字體,但缺少所需的字體或程序根本不使用SHX字體。我們可以嘗試通過CADText.Style.FontName(單行文本)或CADMText.Style.FontName(多行文本)屬性確定所需字體的名稱。
A:在塊中更改某個(gè)實(shí)體后,需要為該實(shí)體和CADBlock對(duì)象調(diào)用CADImage.Converter.Loads()方法。例如:
cadImage.Converter.Loads(cadLine); cadImage.Converter.Loads(cadBlock);
當(dāng)塊被插入到圖紙作為INSERT實(shí)體,你需要調(diào)用CADImage.Converter.Loads()也為CADInsert對(duì)象并調(diào)用CADImage.GetExtents()方法來重新計(jì)算該圖的范圍。
如果更改后發(fā)現(xiàn)實(shí)體長(zhǎng)度改變,顯示了新的長(zhǎng)度,但選擇卻是錯(cuò)誤的,我們可以嘗試使用以下代碼更新insert中的行:
cadImage.Converter.Loads(Line) cadImage.Converter.Loads(block) cadImage.SetNewPosEntity(0, 0, 0, insert)
- 未完待續(xù) -
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn