使用C#三维绘图控件快速搭建DXF查看程序
本例使用AnyCAD .Net三维图形控件快速实现一个DXF文件的读取、显示、导出JPG、PNG、PDF的应用。
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using AnyCAD.Platform; namespace DxfViewer { public partial class MainForm : Form { private AnyCAD.Presentation.RenderWindow3d renderView = null ; public MainForm() { InitializeComponent(); this .renderView = new AnyCAD.Presentation.RenderWindow3d(); this .renderView.Location = new System.Drawing.Point(0, 27); this .renderView.Size = this .Size; this .renderView.TabIndex = 1; this .Controls.Add( this .renderView); } private void MainForm_Load( object sender, EventArgs e) { this .renderView.View3d.ShowCoordinateAxis( true ); this .renderView.View3d.ShowWorkingGrid( false ); renderView.ExecuteCommand( "ShadeWithEdgeMode" ); renderView.ExecuteCommand( "TopView" ); <br> //设置下背景色,像AutoCAD那样 ColorValue clr = new ColorValue(33f / 255f, 40f / 255f, 48f / 255f, 1); renderView.SetBackgroundColor(clr, clr, clr); this .renderView.RequestDraw(); } private void MainForm_Resize( object sender, EventArgs e) { if (renderView != null ) renderView.Size = this .Size; } private void openToolStripMenuItem_Click( object sender, EventArgs e) { OpenFileDialog dlg = new OpenFileDialog(); dlg.Filter = "DXF (*.dxf)|*.dxf" ; if (DialogResult.OK == dlg.ShowDialog()) { AnyCAD.Exchange.DxfReader reader = new AnyCAD.Exchange.DxfReader(); if (reader.Read(dlg.FileName, new AnyCAD.Exchange.ShowShapeReaderContext(renderView.SceneManager))) renderView.RequestDraw(); } renderView.View3d.FitAll(); } private void pDFToolStripMenuItem_Click( object sender, EventArgs e) { SaveFileDialog dlg = new SaveFileDialog(); dlg.Filter = "PDF (*.pdf)|*.pdf" ; if (DialogResult.OK == dlg.ShowDialog()) { renderView.View3d.Print(dlg.FileName); } } private void imageToolStripMenuItem_Click( object sender, EventArgs e) { SaveFileDialog dlg = new SaveFileDialog(); dlg.Filter = "Image File (*.jpg;*.png)|*.jpg;*.png" ; if (DialogResult.OK == dlg.ShowDialog()) { renderView.View3d.GetRenderWindow().CaptureImage(dlg.FileName); } } private void dToolStripMenuItem_Click( object sender, EventArgs e) { renderView.ExecuteCommand( "IsoView" ); renderView.View3d.FitAll(); } } } |
效果:
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 快收藏!一个技巧从此不再搞混缓存穿透和缓存击穿
· Blazor Hybrid适配到HarmonyOS系统
· 支付宝 IoT 设备入门宝典(下)设备经营篇
· 万字调研——AI生成内容检测
· 解决跨域问题的这6种方案,真香!