当前位置: 首页 > news >正文

WPF程序通过CadLib4加载CAD .dwg格式文件

1、下载CadLib相关dll文件,主要用到的:WW.dll、WW.Cad.dll、WW.GL.dll

2、程序中引用dll库。

3、创建WPF程序,使用Canvas来加载dwg文件,支持拖动和放大缩小。

4、部分代码:

public void Init(string filename)
{try{string extension = System.IO.Path.GetExtension(filename);if (string.Compare(extension, ".dwg", true) == 0){model = DwgReader.Read(filename);}else{model = DxfReader.Read(filename);}#region calculate the model's bounds to determine a proper dots per inch// The dots per inch value is important because it determines the eventual pen thickness.graphicsConfig = (GraphicsConfig)GraphicsConfig.WhiteBackgroundCorrectForBackColor.Clone();BoundsCalculator boundsCalculator = new BoundsCalculator();if (model.ActiveLayout == null || model.Header.ShowModelSpace){boundsCalculator.GetBounds(model);}else{boundsCalculator.GetBounds(model, model.ActiveLayout);}bounds = boundsCalculator.Bounds;WW.Math.Vector3D delta = bounds.Delta;Size estimatedCanvasSize = new Size(500d, 500d);double estimatedScale = Math.Min(estimatedCanvasSize.Width / delta.X, estimatedCanvasSize.Height / delta.Y);graphicsConfig.DotsPerInch = 100d / estimatedScale;#endregiongraphicsCache = new WireframeGraphics2Cache(false, false);graphicsCache.Config = graphicsConfig;if (model.ActiveLayout == null || model.Header.ShowModelSpace){graphicsCache.CreateDrawables(model, Matrix4D.Identity);}else{graphicsCache.CreateDrawables(model, model.ActiveLayout);}wpfGraphics = new WpfWireframeGraphics3DUsingDrawingVisual();wpfGraphics.Config = graphicsConfig;this.Dispatcher.Invoke(() => {canvas.Children.Add(wpfGraphics.Canvas);canvas.SizeChanged += canvas_SizeChanged;});UpdateWpfGraphics();}catch (Exception ex){this.Dispatcher.Invoke(() => {msg.Text = $"文件加载出现异常,详细:{ex.Message}";});}
}

如果想设置文字颜色,在Read后增加代码:

foreach (DxfEntity entity in model.Entities){// 检查实体是否为DxfText或DxfMTextif (entity is DxfText textEntity){// 设置DxfText的颜色textEntity.Color = EntityColors.Red; // 替换为你想要的颜色}else if (entity is DxfMText mTextEntity){// 设置DxfMText的颜色mTextEntity.Color = EntityColors.Red; // 替换为你想要的颜色}}

5、Demo地址

WPF程序通过CadLib4加载CAD.dwg格式文件资源-CSDN文库

相关文章:

WPF程序通过CadLib4加载CAD .dwg格式文件

1、下载CadLib相关dll文件,主要用到的:WW.dll、WW.Cad.dll、WW.GL.dll 2、程序中引用dll库。 3、创建WPF程序,使用Canvas来加载dwg文件,支持拖动和放大缩小。 4、部分代码: public void Init(string filename) {tr…...

图表全能王(ChartStudio) 上架VisionPro!

图表全能王(ChartStudio) - 终极图表制作工具!支持条形图、折线图、面积图、柱形图、条形图、饼图、玫瑰图、雷达图、牛肉图、风琴图、旭日图、桑基图等图表。 https://apps.apple.com/app/chartstudio-data-analysis/id6474099675 https://apps.apple.com/cn/app/…...

【云原生】Job一次性任务详解

Job一次性任务 文章目录 Job一次性任务一、Job介绍二、运行示例Job 一、Job介绍 Job会创建一个或者多个Pod,并将继续重试Pod的执行,直到指定数量的Pod成功终止。随着Pod成功借宿,Job跟踪记录成功完成的Pod个数。当数量达到指定的成功个数阈值…...

化工厂人员定位采用多种定位技术的融合定位系统的好处

由于化工厂内环境的复杂性和危险性,通常单一的定位技术很难满足全厂区的人员定位需求,如果能将不同定位技术融合在一起,发挥出它们各自的优势,那么就能解决以上问题。 融合定位技术诞生背景 随着科技的不断发展,多种定…...

使用AI绘图工具生成风景图像的教程

随着人工智能技术的飞速发展,AI绘图工具在图像生成和艺术创作方面变得越来越强大,无论你是一个设计师、艺术家,还是仅仅对生成艺术感兴趣的爱好者,AI绘图工具都可以帮助你轻松地创作出惊艳的风景图像。 在这篇教程中,…...

迷你主机:华硕PN65和nuc13pro如何选择?

华硕PN65与NUC 13 Pro:如何做出选择? 在追求高效能与便携性的今天,迷你主机成为了越来越多用户的选择。华硕PN65与英特尔NUC 13 Pro作为市场上两款备受瞩目的产品,各自拥有独特的优势和特点。本文将从处理器性能、扩展性、接口丰…...

分享一个好用的印花重绘工具

本文向大家介绍一款革命性的 AI 工具,它能够将模糊不清的图片转化为具有照片级别的高清图像。这项前沿项目依托于大规模人工智能技术,革新了图像恢复领域。通过文本驱动和智能修复功能,它巧妙地结合了先进的 AI 技术与创新理念,为…...

力扣题解(递增的三元子序列)

334. 递增的三元子序列 给你一个整数数组 nums &#xff0c;判断这个数组中是否存在长度为 3 的递增子序列。 如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k &#xff0c;使得 nums[i] < nums[j] < nums[k] &#xff0c;返回 true &#xff1b;否则&#…...

做不好PPT的原因

新手制作PPT长犯的10个错误 1.Word搬家 为了节约时间&#xff0c;直接把Word素材复制粘贴到PPT上&#xff0c;没有提炼 2.堆积图表 每个页面上堆积了大量的图表&#xff0c;却没有说明数据反映了什么趋势 3.图表业余 想用图表达自己的逻辑&#xff0c;但没有专业的模板&a…...

嵌入式人工智能(45-基于树莓派4B的扩展板-舵机驱动板PCA9685)

1、简介 智能小车、机械臂、摄像头云台会有多个舵机&#xff0c;而微控制器芯片的PWM输出引脚不够的情况下&#xff0c;就可以用PCA9685&#xff08;16路舵机&#xff09;来解决这一问题。 PCA9685是一款I2C总线控制的16通道LED控制器&#xff0c;专为红/绿/蓝/琥珀&#xff…...

【数据结构与算法】建立多个栈的三种方案的优缺点分析

在一个算法中需要建立多个栈时可以选用以下三种方案之一&#xff0c;试问这三方案相比各有什么优缺点&#xff1f; &#xff08;1&#xff09;分别用多个顺序存储空间建立多个独立的顺序栈。 &#xff08;2&#xff09;多个栈共享一个顺序存储空间。 &#xff08;3&#xff09;…...

DjangoRF-14-创建request子应用

注意&#xff0c;本应该是requests模块&#xff0c;为了区分&#xff0c;避免错误&#xff0c;用request 1、进入apps,创建request django-admin startapp request 2、因为只发送请求&#xff0c;没有数据库相关&#xff0c;不需要model。 3、进行序列化 from rest_framework …...

SOMEIP_ETS_005:检查字节序

测试目的&#xff1a; 验证DUT在发送和接收参数时对字节序的处理能力。 描述 本测试用例旨在检验DUT在处理具有不同字节序的参数时&#xff0c;是否能够正确地发送和接收数据&#xff0c;并确保返回的UINT32值是传入的两个参数&#xff08;UINT8和UINT16&#xff09;的和。 …...

为什么要对医疗器械进行网络安全评估?

对医疗器械进行网络安全评估的原因主要有以下几点&#xff1a; 一、保障患者安全 直接关联患者健康&#xff1a;医疗器械与患者的生命健康直接相关&#xff0c;任何网络安全漏洞都可能导致设备被非法控制或数据泄露&#xff0c;进而威胁患者的生命安全。例如&#xff0c;黑客可…...

沃尔玛1P账号的强悍作用重要反映在那些方面?——WAYLI威利跨境助力商家

沃尔玛作为全球最大的零售商之一&#xff0c;其品牌影响力非常强大。商家通过入驻沃尔玛商超并开设1P账号&#xff0c;能够借助沃尔玛的品牌影响力来提升自身的品牌知名度和美誉度。这种品牌背书的效应&#xff0c;有助于商家吸引更多的消费者关注和购买自己的产品。 一、沃尔玛…...

学习python你不能不知道的几个接单平台!实现如月上万不是梦

学Python后&#xff0c;寻找兼职平台是一个很好的实践和提升技能的方式。以下是一些比较推荐的Python兼职平台&#xff1a; 国内平台 程序员客栈 网址&#xff1a;https://www.proginn.com介绍&#xff1a;程序员客栈是中国非常领先的自由工作平台&#xff0c;为中高端程序员、…...

Golang面试题三(map)

1.map底层实现 由图看出&#xff0c;其实map的底层结构体是hmap&#xff0c;同时hmap里面维护着若干个bucket数组&#xff08;即桶数组&#xff09;。bucket数组中每个元素都是bmap结构的&#xff0c;bmap中存储着8个key-value的键值对&#xff0c;如果是满了的话&#xff0c;当…...

[windows10]win10永久禁用系统自动更新操作方法

WinR打开运行 输入regedit打开注册表 点击确定打开注册表 按照如下路径找到UX 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings 在空白处点击鼠标右键&#xff0c;新建选择DWORD&#xff0c;然后重命名为FlightSettingsMaxPauseDays 双击FlightSet…...

《西行取经:大学生编程之路的禅悟与陷阱规避2》

《西行取经&#xff1a;大学生编程之路的禅悟与陷阱规避2》 阿弥陀佛&#xff0c;贫僧唐僧&#xff0c;虽身处古代&#xff0c;心却向往智慧之光。观今世大学生于编程之途&#xff0c;犹如我等西天取经&#xff0c;路途遥远且布满荆棘。今欲以吾之“取经”心得&#xff0c;为尔…...

JVM从入门到放弃

前言&#xff1a;关于JVM&#xff0c;其实有很多大厂开发了不同版本的JVM&#xff0c;比较知名的有&#xff1a;Sun HotSpot VM、BEA JRockit VM、IBM J9 VM、 Azul VM、 Apache Harmony、 Google Dalvik VM、 Microsoft JVM等等。现在使用的比较多的JDK8版本就是Sun HotSpot V…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...

DBLP数据库是什么?

DBLP&#xff08;Digital Bibliography & Library Project&#xff09;Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高&#xff0c;数据库文献更新速度很快&#xff0c;很好地反映了国际计算机科学学术研…...

《信号与系统》第 6 章 信号与系统的时域和频域特性

目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...

TCP/IP 网络编程 | 服务端 客户端的封装

设计模式 文章目录 设计模式一、socket.h 接口&#xff08;interface&#xff09;二、socket.cpp 实现&#xff08;implementation&#xff09;三、server.cpp 使用封装&#xff08;main 函数&#xff09;四、client.cpp 使用封装&#xff08;main 函数&#xff09;五、退出方法…...

PH热榜 | 2025-06-08

1. Thiings 标语&#xff1a;一套超过1900个免费AI生成的3D图标集合 介绍&#xff1a;Thiings是一个不断扩展的免费AI生成3D图标库&#xff0c;目前已有超过1900个图标。你可以按照主题浏览&#xff0c;生成自己的图标&#xff0c;或者下载整个图标集。所有图标都可以在个人或…...

【版本控制】GitHub Desktop 入门教程与开源协作全流程解析

目录 0 引言1 GitHub Desktop 入门教程1.1 安装与基础配置1.2 核心功能使用指南仓库管理日常开发流程分支管理 2 GitHub 开源协作流程详解2.1 Fork & Pull Request 模型2.2 完整协作流程步骤步骤 1: Fork&#xff08;创建个人副本&#xff09;步骤 2: Clone&#xff08;克隆…...