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

上海做产地证在哪个网站录入/网站建站开发

上海做产地证在哪个网站录入,网站建站开发,wordpress 采集函数,怎么做网站步骤免费的大家好,今天我们继续讨论CAD二次开发中有关图块的话题。不过今天的内容不是新型图块,而是一个比较实用的功能,即从外部的dwg文件中导入块定义。并且结合实际工作给出一个例子,也就是在加载程序的过程中加入作图图例的块定义&#…

    大家好,今天我们继续讨论CAD二次开发中有关图块的话题。不过今天的内容不是新型图块,而是一个比较实用的功能,即从外部的dwg文件中导入块定义。并且结合实际工作给出一个例子,也就是在加载程序的过程中加入作图图例的块定义,以便使用。

    通过之前的介绍可以知道,每一个CAD文件都是一个数据库,有关更加深入的CAD文档和图形数据库的信息这里先挖个小坑,将在本系列之后的篇章中介绍。这里回归正题,导入外部文件中的块定义主要步骤如下:

    1.定义一个数据库对象,这个对象就是被导入的文件所对应的数据库

    2.调用上面数据库的方法ReadDwgFile以找到被导入文件中的块定义

    3.调用Database类的WblockCloneObjects方法将块定义加入到目标文件

8c6a6e953230be9c63541cd1a43736ac.png

0d577fb04a88b7e660cb1a0cc2624b54.png

    ReadDwgFile与WblockCloneObjects方法定义如上图所示:

    封装整个过程的方法代码如下图所示:

public static void ImportBlocksFromDwg(this Database destDb, string sourceFileName){    //创建一个新的数据库对象,作为源数据库,以读入外部文件中的对象    Database sourceDb = new Database(false, true);    try    {        //把DWG文件读入到一个临时的数据库中        sourceDb.ReadDwgFile(sourceFileName, System.IO.FileShare.Read, true, null);        //创建一个变量用来存储块的ObjectId列表        ObjectIdCollection blockIds = new ObjectIdCollection();        //获取源数据库的事务处理管理器        Autodesk.AutoCAD.DatabaseServices.TransactionManager tm = sourceDb.TransactionManager;        //在源数据库中开始事务处理        using (Transaction myT = tm.StartTransaction())        {            //打开源数据库中的块表            BlockTable bt = (BlockTable)tm.GetObject(sourceDb.BlockTableId, OpenMode.ForRead, false);            //遍历每个块            foreach (ObjectId btrId in bt)            {                BlockTableRecord btr = (BlockTableRecord)tm.GetObject(btrId, OpenMode.ForRead, false);                //只加入命名块和非布局块到复制列表中                if (!btr.IsAnonymous && !btr.IsLayout)                {                    blockIds.Add(btrId);                }                btr.Dispose();            }            bt.Dispose();        }        //定义一个IdMapping对象        IdMapping mapping = new IdMapping();        //从源数据库向目标数据库复制块表记录        sourceDb.WblockCloneObjects(blockIds, destDb.BlockTableId, mapping, DuplicateRecordCloning.Replace, false);    }    catch (Autodesk.AutoCAD.Runtime.Exception ex)    {        Application.ShowAlertDialog("复制错误: " + ex.Message);    }    //操作完成,销毁源数据库    sourceDb.Dispose();}

    接下来来看今天的例子:

842fd31beb7a4579a27549f13bd8fcd1.png

    上图是在自控设计过程中绘制可燃有毒检测器平面敷设图可能用到的图例,其中的图形就是已经定义好的属性块和动态块,我们定义一个事件,把这些块定义和相关的图层加入到新打开的文件当中,关于事件的部分也会在本系列之后的篇章中涉及,这里关注添加块定义以及图层的过程。

    这里由于篇幅有限,假定图例的路径与生成的dll的路径相同,在NETLOAD加载程序集的同时添加块定义和图层,代码如下:

using AcadApp = Autodesk.AutoCAD.ApplicationServices.Application;public class AppEvent : IExtensionApplication{ObjectId oriLayerId;           //释放源图层ObjectId cusLayerId;         //可燃气体检测器ObjectId toxicLayerId;       //有毒气体检测器ObjectId otherLayerId;          // 其他仪表ObjectId tableLayerId;     // 仪表信息public static string oriLayer = "释放源";public static string cusLayer = "可燃气体检测器";public static string toxicLayer = "有毒气体检测器";public static string otherLayer = "其他仪表设备";public static string tableLayer = "仪表信息";public void Initialize(){    Document doc = AcadApp.DocumentManager.MdiActiveDocument;    Database db = doc.Database;    string curPath = Path.GetDirectoryName(this.GetType().Assembly.Location);              //获取当前路径    string signFilename = curPath + "\\图例.dwg";    using (Transaction trans = db.TransactionManager.StartTransaction())    {        oriLayerId = db.AddLayer(oriLayer);             //添加释放源图层        db.SetLayerColor(oriLayer, 5);        cusLayerId = db.AddLayer(cusLayer);//添加可燃气体检测器层        db.SetLayerColor(cusLayer, 3);        toxicLayerId = db.AddLayer(toxicLayer);//添加有毒气体检测器层        db.SetLayerColor(toxicLayer, 1);        otherLayerId = db.AddLayer(otherLayer);//添加其他仪表层        db.SetLayerColor(otherLayer, 6);        tableLayerId = db.AddLayer(tableLayer);//添加仪表信息层        db.SetLayerColor(tableLayer, 2);        using (Transaction trans1 = db.TransactionManager.StartTransaction())        {            // 导入外部文件中的块            db.ImportBlocksFromDwg(signFilename);            //打开块表            BlockTable bt = (BlockTable)trans1.GetObject(db.BlockTableId, OpenMode.ForRead);            ObjectId id = db.CurrentSpaceId;            //Dictionary atts = new Dictionary();            //atts.Add("NUM", "1");            ////在当前空间加入块参照            //id.InsertBlockReference("0", "CombustibleGas", Point3d.Origin, new Scale3d(200), 0, atts);            trans1.Commit();        }        trans.Commit();    }}

    代码运行效果如下面的视频所示:

    视频中可以看到:关掉CAD程序后,打开一张空的CAD图纸,图层只有默认的0图层,没有块定义,在加入程序集之后,有了可燃有毒的相关图层,有了块定义并且可以插入。

    今天的内容就先介绍到这里,有关CAD图块的内容就先告一段落,本系列之后的内容还请多多关注,如果有建议或是批评指教,欢迎在公众号内留言,谢谢!

http://www.lbrq.cn/news/1270225.html

相关文章:

  • 用腾讯云做网站的好处/大连网站seo
  • 网站开发包含网页设计吗/百度学术官网入口
  • 做关于星空的网站/某企业网站的分析优化与推广
  • 信誉好的网站建设公司/济南seo顾问
  • 做行政关注什么类型的网站/网上教育培训机构哪家好
  • 宿迁建设企业网站/做直销去哪里找客户
  • 如何做网站内链/优化seo排名
  • 网站头像设计免费制作/深圳网络推广的公司
  • 满满正能量网站/专门开发小程序的公司
  • 个人网站备案 备注/大丰seo排名
  • 无锡定制网站制作公司/百度搜索指数在线查询
  • 保密和档案网站建设方案/中国舆情网
  • 网页设计与网站建设步骤/百度一下京东
  • 网站建设功能描述书/站长工具seo优化系统
  • 网站ftp根目录/今天重大新闻国内最新消息
  • 外贸社交网站排名/晋江怎么交换友情链接
  • 桂林网站seo/网络广告营销策划方案
  • wordpress 4.8教程/杭州seo排名
  • 大连模板建站软件/河南最新消息
  • 邢台网络公司做网站/简单的个人网页制作html
  • 做网站 单页数量/百度账号申诉
  • 加快网站集约化建设总结/百度优化seo
  • iis默认网站停止/seo是什么岗位的缩写
  • 对网站建设服务公司的看法/百度引擎提交入口
  • 介绍几个有趣的网站/深圳网络营销外包公司推荐
  • 简述企业网站的基本功能/网络营销方式方法
  • 产品网站有哪些/软件开发流程八个步骤
  • 昆明网站建设要多少钱/新东方考研班收费价格表
  • 做网站容易吧/拼多多跨境电商平台
  • 住房城乡建设部网站/百度百家官网入口
  • Python爬虫实战:研究SimpleCV技术,构建图像获取及处理系统
  • 初始C语言---第四讲(数组)
  • 大模型结构比较
  • Java与Kotlin中“==“、“====“区别
  • 安装 docker compose v2版 笔记250731
  • 内存网格、KV存储和Redis的概念、使用场景及异同