博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学习 Civil 3D二次开发从哪儿开始?
阅读量:6076 次
发布时间:2019-06-20

本文共 2856 字,大约阅读时间需要 9 分钟。

1.1 从哪儿开始

对于多数的工程设计人员,不完全具备上节所述的各种条件。对于Civil 3D的应用可能比较熟悉;但对于计算机语言,只限于上学时所学的一点基础知识,步入工作岗位后与计算机语言基本无缘;对于C#、VB.net可能根本就没有接触过。

只要你有一颗坚定的心,坚持学习,就一定能进入Civil 3D二次开发的大门,写出自己的程序,从而节省自己的时间、调高工作效率。

如果您是一位熟悉Civil 3D软件应用的工程设计人员,那么您就要从学习计算机语言开始。如果您是一位精通计算机语言的专业程序设计人员,那么您就要先了解Civil 3D的应用。本书面向的读者是第一类人群,如果您是第二类人员,这本书应该不适合您。

既然要学习计算机语言,从哪里学起呢?这是个问题,并且是个不好回答的问题。既然这样,我们就从阅读代码开始,虽然简单粗暴,但我相信会很快见到成效。

在利用Civil 3D创建原始地形曲面过程中,我们经常遇到类似的需求:要把普通的AutoCAD对象,诸如点、文本、块等,转化成Civil 3D的几何空间点(CogoPoint)。对于点,Civil 3D有内部命令,可以直接实现转换,但对于文本、块等对象,没有内部命令,虽然我们可以利用数据提取等方法提取数据,创建外部文件,然后再创建几何空间点,但总会有些情况需要通过二次开发才能实现。假设我们需要将AutoCAD的块对象批量转换成几何空间点,我们需要写多少行代码才能实现呢?

让我们来看以下代码:

01 public void BlockReferenceToCogoPoint()02 {03             //获取AutoCAD的Document对象04     Document doc = Application.DocumentManager.MdiActiveDocument;05             //获取Civil 3D的Document对象06     CivilDocument civilDoc = CivilApplication.ActiveDocument;07             //获取几何空间点集08     CogoPointCollection cogoPts = civilDoc.CogoPoints;09             //开始事务10     using (Transaction tr = doc.TransactionManager.StartTransaction())11     {12             //获取块表13             BlockTable blockTable=tr.GetObject(doc.Database.BlockTableId,OpenMode.ForRead)14                                    as BlockTable;15             //获取模型空间的ObjectId16             ObjectId modelSpaceId = blockTable[BlockTableRecord.ModelSpace];17             //获取块表记录(模型空间)18             BlockTableRecord modelSpace = modelSpaceId.GetObject(OpenMode.ForRead)19                                    as BlockTableRecord;20             //循环处理模型空间的每一个对象21             foreach (ObjectId id in modelSpace)22             {23                      //判断对象是否为BlockReference24                  if (!id.ObjectClass.IsDerivedFrom(RXObject.GetClass(typeof(BlockReference))))25                                       continue;26                      //获取BlockReference对象27                  BlockReference br = id.GetObject(OpenMode.ForRead) as BlockReference;28                      //向几何空间点集中添加点29                  cogoPts.Add(br.Position, br.Layer, true);30             }31             //提交事务32             tr.Commit();33     }34 }

 

这是一段用C#语言完成的代码,代码实现的功能是根据模型空间中的块创建几何空间点,几何空间点的位置采用块的插入点位置,几何空间点的描述采用块的图层名称。

这段代码不到20行,不知道您想到了多少问题?在这里我想让初学者了解的问题可不止20个。下面就让我们来看一下我想到了哪些问题:

关于程序设计的基本问题:

编写这些代码需要什么环境?

如何编译?

编译后如何加载?

加载后如何运行?

什么是方法?

如何定义方法?

如何实现方法?

什么是变量?

如何声明变量?

变量命名规则有没有约定?

怎么为变量赋值?

数据类型都有哪些?

不同数据类型能否实现转换?

如何实现循环操作?

AutoCAD二次开发问题:

程序、文档、数据库之间的关系是?

如何定义一个在AutoCAD中运行的命令?

AutoCAD数据库结构是怎么的?

什么是块表(BlockTable)?

什么是块表记录(BlockTableRecord)?

什么是块参照(BlockReference)?

从AutoCAD数据库中,如何获取指定对象?

从ObjectId如何获取相应的Object?

事务(Transaction)是什么?

如果事务未提交(Commit)会有什么后果?

Civil 3D二次开发问题:

Civil 3D数据库结构是怎样的?

从Civil 3D数据库中,如何获取指定对象?

如何创建Civil 3D对象?

如何从集合中获取某一对象?

问题已经提出,就让我们带着这些问题阅读这本书的前两部分吧。在阅读过程中,本书中有讲解不清楚的地方,您应该学会网络搜索或查阅其他书籍,本书中个别地方提供了关键字以方便您进行搜索。

转载于:https://www.cnblogs.com/myzw/p/6872620.html

你可能感兴趣的文章
Datatables的自定义columns渲染与事件注册冲突解决
查看>>
异步获取EJB 服务实例
查看>>
######建立两台主机之间的ssh信任通道
查看>>
windows server迁移工具
查看>>
PHP连接mysql时mysql_connect()函数不可用,报500错误
查看>>
php console
查看>>
Hibernate注解-实体类注解
查看>>
学习liunx决心书
查看>>
PHP 解析Maildir 邮件格式(eml文件)
查看>>
提升iOS审核通过率之“IPv6兼容测试”
查看>>
thinkphp配置文件数据库段配置
查看>>
专访孙睿 :能做自己,去做自己想做的,是件挺幸福的事儿
查看>>
开发者前期是如何学代码的(心得)
查看>>
Linux笔记(usermod命令,用户密码管理,mkpasswd)
查看>>
软件开发--深入浅出处理器
查看>>
文件查找命令
查看>>
文件权限管理
查看>>
链表节点的删除(无重复)
查看>>
eyoucms compare比较标签
查看>>
MPLS ×××概述
查看>>