Teigha4.0加载显示Dwg文件

网上显示Dwg的例子不是很好找,最好还是去官网下载例子。
这里的demo大抵参考官网例子完成的。

初始化驱动

在窗体加载事件里面初始化显示驱动,代码怎么看都很奇怪,但人家就是这种写法
需要注意的是加载模块的名称,官网例子是WinOpenGL.txv、3.0版本的是WinGDI.gs、这里加载WinBitmap.txv模块,这几个到底啥含义没有去深究。

           PaintGraphics = Graphics.FromHwnd(panel.Handle);GsModule gsModule = (GsModule)SystemObjects.DynamicLinker.LoadModule("WinBitmap.txv", false, true);Device = gsModule.CreateDevice();Device.Properties.AtPut("WindowHWND", new RxVariant(panel.Handle));Device.Properties.AtPut("WindowHDC", new RxVariant(PaintGraphics.GetHdc()));Device.Properties.AtPut("DoubleBufferEnabled", new RxVariant(true));Device.Properties.AtPut("EnableSoftwareHLR", new RxVariant(true));panel.Resize += Panel_Resize;

加载数据显示

首先打开数据源->创建数据上下文->初始化布局->设置数据显示范围
    OpenFileDialog openFileDialog = new OpenFileDialog();openFileDialog.RestoreDirectory = true;openFileDialog.Filter = "DWG文件(*.dwg)|**.dwg";if (openFileDialog.ShowDialog() == DialogResult.OK){DwgDatabase = new Database(false, false);DwgDatabase.ReadDwgFile(openFileDialog.FileName, FileOpenMode.OpenForReadAndReadShare, false, "");ContextForDbDatabase contextForDbDatabase = new ContextForDbDatabase(DwgDatabase);contextForDbDatabase.UseGsModel = true;LayoutHelper = LayoutHelperDevice.SetupActiveLayoutViews(Device, contextForDbDatabase);LayoutHelper.UserGiContext = contextForDbDatabase;LayoutHelper.SetLogicalPalette(Device.DarkPalette);Rectangle rectangle = panel.Bounds;rectangle.Offset(-panel.Location.X, -panel.Location.Y);LayoutHelper.OnSize(rectangle);panel.Invalidate();}

释放资源

在窗体关闭时需要释放相关的对象实例
  if (DwgDatabase != null){DwgDatabase.Dispose();Device.Dispose();LayoutHelper.Dispose();PaintGraphics.Dispose();}

全部代码

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 Teigha.DatabaseServices;
using Teigha.GraphicsInterface;
using Teigha.GraphicsSystem;
using Teigha.Runtime;namespace WindowsFormsApp1
{public partial class Form1 : Form{public Form1(){InitializeComponent();}public Database DwgDatabase { get; set; }public Device Device { get; set; }public LayoutHelperDevice LayoutHelper { get; set; }public Graphics PaintGraphics { get; set; }private void Form1_Load(object sender, EventArgs e){CreateDevice();}private void panel_Paint(object sender, PaintEventArgs e){if (LayoutHelper == null){return;}LayoutHelper.Update();}private void Panel_Resize(object sender, EventArgs e){if (LayoutHelper == null){return;}Rectangle rectangle = panel.Bounds;rectangle.Offset(-panel.Location.X, -panel.Location.Y);LayoutHelper.OnSize(rectangle);}private void 打开ToolStripMenuItem_Click(object sender, EventArgs e){OpenFileDialog openFileDialog = new OpenFileDialog();openFileDialog.RestoreDirectory = true;openFileDialog.Filter = "DWG文件(*.dwg)|**.dwg";if (openFileDialog.ShowDialog() == DialogResult.OK){DwgDatabase = new Database(false, false);DwgDatabase.ReadDwgFile(openFileDialog.FileName, FileOpenMode.OpenForReadAndReadShare, false, "");CreateLayout();}}private void CreateDevice(){PaintGraphics = Graphics.FromHwnd(panel.Handle);GsModule gsModule = (GsModule)SystemObjects.DynamicLinker.LoadModule("WinBitmap.txv", false, true);Device = gsModule.CreateDevice();Device.Properties.AtPut("WindowHWND", new RxVariant(panel.Handle));Device.Properties.AtPut("WindowHDC", new RxVariant(PaintGraphics.GetHdc()));Device.Properties.AtPut("DoubleBufferEnabled", new RxVariant(true));Device.Properties.AtPut("EnableSoftwareHLR", new RxVariant(true));panel.Resize += Panel_Resize;}private void CreateLayout(){ContextForDbDatabase contextForDbDatabase = new ContextForDbDatabase(DwgDatabase);contextForDbDatabase.UseGsModel = true;LayoutHelper = LayoutHelperDevice.SetupActiveLayoutViews(Device, contextForDbDatabase);LayoutHelper.UserGiContext = contextForDbDatabase;LayoutHelper.SetLogicalPalette(Device.DarkPalette);Rectangle rectangle = panel.Bounds;rectangle.Offset(-panel.Location.X, -panel.Location.Y);LayoutHelper.OnSize(rectangle);panel.Invalidate();}private void Form1_FormClosing(object sender, FormClosingEventArgs e){if (DwgDatabase != null){DwgDatabase.Dispose();Device.Dispose();LayoutHelper.Dispose();PaintGraphics.Dispose();}}}
}

Teigha4.0加载显示Dwg文件相关推荐

  1. python 实例 cadu_【示例详解】AutoCAD处理控件Aspose.CAD 8月新更!支持加载大型DWG文件...

    Aspose.CAD for .NET是一个独立的AutoCAD处理API.它提供将DWG,DWF和DXF文件转换为高质量PDF和光栅图像的功能.开发人员可以从AutoCAD文件中选择和转换特定的布局 ...

  2. 【示例详解】AutoCAD处理控件Aspose.CAD8月新更!支持加载大型DWG文件

    Aspose.CAD for .NET是一个独立的AutoCAD处理API.它提供将DWG,DWF和DXF文件转换为高质量PDF和光栅图像的功能.开发人员可以从AutoCAD文件中选择和转换特定的布局 ...

  3. python autocad库_在Python中加载AutoCad DWG文件

    在Python中需要渲染AutoCad DWG文件. 我的第一个问题是 1:-是否可以在python中渲染/加载dwg文件并在python环境中查看文件/图像?在 2:-我该怎么做?我尝试过使用arc ...

  4. Android中使用WebChromeClient显示Openlayers加载本地GeoJson文件显示地图(跨域问题解决)

    场景 Openlayers中加载GeoJson文件显示地图: Openlayers中加载GeoJson文件显示地图_BADAO_LIUMANG_QIZHI的博客-CSDN博客 上面加载显示GeoJso ...

  5. opengl加载显示3D模型UC类型文件

    opengl加载显示3D模型UC类型文件 前置条件 注意事项 项目展示 项目完整C++源代码 前置条件 opengl三方库freeglut,显示uc格式的三维模型文件, 注意事项 源代码 model_ ...

  6. opengl加载显示3D模型3d类型文件

    opengl加载显示3d模型UC类型文件 前置条件 注意事项 项目展示 项目完整C++源代码 前置条件 opengl三方库freeglut,显示3d格式的三维模型文件, 注意事项 源代码 model_ ...

  7. opengl加载显示3DS模型3DS类型文件

    opengl加载显示3DS模型UC类型文件 前置条件 注意事项 项目展示 项目完整C++源代码 前置条件 opengl三方库freeglut,显示3DS格式的三维模型文件 注意事项 源代码 model ...

  8. opengl加载显示3D模型3MF类型文件

    opengl加载显示3D模型3MF类型文件 前置条件 注意事项 项目展示 项目完整C++源代码 前置条件 opengl三方库freeglut,显示3MF格式的三维模型文件 注意事项 源代码 model ...

  9. opengl加载显示3D模型AC类型文件

    opengl加载显示3D模型AC类型文件 前置条件 注意事项 项目展示 项目完整C++源代码 前置条件 opengl三方库freeglut,显示AC格式的三维模型文件 注意事项 源代码 model_f ...

最新文章

  1. java emailbuilder 样式_Java8通用Builder了解一下
  2. 微软开发者的年度回顾
  3. SVN需要忽略的文件类型
  4. 信息学奥赛一本通(2044:【例5.12】回文字串)
  5. [Unity] GameFramework 学习记录 1
  6. druid数据库连接池整合到SpringMvc
  7. 获取手机唯一标识插件_非常强大的几款手机浏览器,适用于某些黑科技功能
  8. 源文件py编译为pyc文件
  9. https协议为什么比http协议更加安全
  10. {电脑救助站}常用知识2
  11. 微信小程序需要的软件下载
  12. HTML5期末大作业:仿悦世界游戏网站设计——仿悦世界游戏官网(6页) HTML+CSS+JavaScript web网页设计实例作业
  13. 云脉自定义模板识别大大提高资料数据格式化的效率
  14. JDK各个版本安装以及配置,超详细
  15. 欢迎回家,希尔顿集团全力迎接凯旋归来最美逆行者
  16. 根式为什么是根式?(我可能疯了?)
  17. Linux TTY基本概念之ttys*、tty*、ttyS*、console理解
  18. 面试项目经理,这12个问题一定会被问到(建议收藏)
  19. Windows10远程桌面连接配置
  20. 各大电商API详细数据获取

热门文章

  1. C# winform 学习(一)
  2. 第十四届全国大学生信息安全竞赛-线上赛Writeup
  3. 前端速成-CSS | 04.li标签样式、标签的正常、悬停、触发状态样式
  4. 学习C++该看什么书?
  5. 【python】打开网页和下载文件
  6. linux dmesg命令参数及用法详解
  7. 缓和曲线与原曲线任意点坐标计算程序
  8. [06][03][01] MySQL架构与SQL执行流程
  9. 【天光学术】财务会计论文:家电连锁零售企业财务分析方法与注意问题(节选)
  10. (C语言实现)页面置换——先进先出算法(FIFO)