热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

CAD将dwg文件导入成块

块在CAD中有很强的复用性,在CAD中经常可以看到各种各样的块,在开发中我们也经常需要创建一些属于我们自己块,创建块的方式有两种,一种是直接创建实体,然后将实体保存到一个新建的

  块在CAD中有很强的复用性,在CAD中经常可以看到各种各样的块,在开发中我们也经常需要创建一些属于我们自己块,创建块的方式有两种,一种是直接创建实体,然后将实体保存到一个新建的块表中,另一种方式则是通过导入外部的dwg文件来创建块。接下来将介绍如何讲dwg文件导入成块。



  • 首先创建一个dwg文件,创建块时默认的基点为原点



  • 通过代码读取dwg文件并创建块

1 [CommandMethod("DRK", CommandFlags.Session)]
2 public static void DRK_导入块()
3 {
4 Document doc = app.DocumentManager.MdiActiveDocument;
5 Database db = doc.Database;
6 //将dwg文件以导入成块,并创建块参照
7 string dir = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
8 string dwg = System.IO.Path.Combine(dir, "blocks", "路灯.dwg");
9 if (!System.IO.File.Exists(dwg))
10 return;
11 string filename = System.IO.Path.GetFileNameWithoutExtension(dwg);
12 using(doc.LockDocument())
13 {
14 using(Transaction tr = db.TransactionManager.StartTransaction())
15 {
16 BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForWrite) as BlockTable;
17 BlockTableRecord btr = tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
18 ObjectId btrObjid = ObjectId.Null;
19 if (!bt.Has(filename))//如果现有的文档中没有该块才导入,否则会出现块重定义
20 {
21 Database tmpDb = new Database(false, true);
22 tmpDb.ReadDwgFile(dwg, System.IO.FileShare.Read, false, "");//先把文件读进来
23 btrObjid = db.Insert(filename, tmpDb, false);//块的本质就是一天块表记录(BlockTableRecord)
24 tmpDb.Dispose();
25 }
26 else
27 {
28 btrObjid = bt[filename];
29 }
30
31 //创建块参照
32 BlockReference blk = new BlockReference(new MCAD.Geometry.Point3d(0, 0, 0), btrObjid);
33 btr.AppendEntity(blk);
34 tr.AddNewlyCreatedDBObject(blk,true);
35
36 tr.Commit();
37 }
38 }
39
40 }

运行完成结束后将在现有的文档中创建一个块参照。

 



推荐阅读
  • 解决ArcGIS中Shapefile图层空洞问题的方法
    本文介绍了一种有效的方法来修复ArcGIS中Shapefile图层存在的空洞问题。对于少量空洞,可以通过手动修补的方式解决;而对于大量空洞,则建议使用Geodatabase的拓扑关系进行批量修复。 ... [详细]
  • 本文将带您了解Cocos家族的不同版本和分支,特别是Cocos Creator的发展历程及其核心特性,帮助初学者快速入门。 ... [详细]
  • 本文介绍了如何在Django项目中使用django-crontab库来设置和管理定时任务,包括安装、配置、编写定时任务以及常见问题的解决方案。通过具体实例,帮助开发者快速掌握在Django中实现自动化任务的方法。 ... [详细]
  • 本文探讨了在iOS项目中导入MKNetworkKit库时遇到的常见问题及其解决方案。 ... [详细]
  • 如何使用MD5进行文件验证
    本文详细介绍MD5(Message-Digest Algorithm 5)的用途及如何通过MD5码来验证文件的完整性。 ... [详细]
  • 俗话说得好,“工欲善其事,必先利其器”。这句话不仅强调了工具的重要性,也提醒我们在任何项目开始前,准备合适的工具至关重要。本文将介绍几款C语言编程中常用的工具,帮助初学者更好地选择适合自己学习和工作的编程环境。 ... [详细]
  • 深入解析:OpenShift Origin环境下的Kubernetes Spark Operator
    本文探讨了如何在OpenShift Origin平台上利用Kubernetes Spark Operator来管理和部署Apache Spark集群与应用。作为Radanalytics.io项目的一部分,这一开源工具为大数据处理提供了强大的支持。 ... [详细]
  • 本文详细介绍了Java的安装、配置、运行流程以及有效的学习方法,旨在帮助初学者快速上手Java编程。 ... [详细]
  • 深入理解小程序中的Picker组件
    Picker组件是一种从屏幕底部弹出的滚动选择器,支持多种选择模式,包括普通选择器、多列选择器、时间选择器、日期选择器和省市区选择器。本文将详细介绍Picker的各种属性及其应用场景。 ... [详细]
  • 本文将指导如何向ReactJS计算器应用添加必要的功能,使其能够响应用户操作并正确计算数学表达式。 ... [详细]
  • 本文探讨了如何使用pg-promise库在PostgreSQL中高效地批量插入多条记录,包括通过事务和单一查询两种方法。 ... [详细]
  • 如何解决Windows 7桌面图标显示异常的问题
    本文提供了多种有效的方法来解决Windows 7系统中桌面图标显示为未知文件图标的问题,包括更换个性化主题、清理图标缓存等。 ... [详细]
  • MySQL 'Too Many Connections' 错误处理及优化方案
    本文详细介绍了如何诊断和解决MySQL数据库中出现的‘Too Many Connections’错误,包括查看当前连接状态、调整配置文件以及优化应用代码等方法。 ... [详细]
  • 深入解析Spring Boot自动配置机制
    本文旨在深入探讨Spring Boot的自动配置机制,特别是如何利用配置文件进行有效的设置。通过实例分析,如Http编码自动配置,我们将揭示配置项的具体作用及其背后的实现逻辑。 ... [详细]
  • 本文探讨了 Linux 系统中的 Shell 架构及其如何处理环境变量,同时详细介绍了 Source 命令的作用和应用场景。 ... [详细]
author-avatar
jinmeiyy_368
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有