CAD二次开发软件

2024-05-25

CAD二次开发软件(精选十篇)

CAD二次开发软件 篇1

关键词:裂缝检测,Auto Lisp,VBA,二次开发

0 引言

近年来, 随着城市建设发展的不断加快, 越来越多的建筑已经建成并且投入使用, 但是, 在建筑物的使用过程中, 建筑物构件的表面会产生大量的裂缝, 这些裂缝可以说是量大面广。然而随着生活水平的不断提高, 人们对生活质量的要求也不断提高, 当业主们发现自己的房屋存在裂缝问题时, 由于大多数业主并没有专业的建筑结构知识, 再加上近年来各种信息技术手段的不断普及与发展以及因房屋质量问题而产生的重大事故见诸报端, 很多业主就难免会对自己房屋的质量产生疑虑, 他们会怀疑自己建筑的安全性, 是不是有了裂缝就不能放心地住下去了。而我们也不可能因为建筑物有了裂缝就放弃对该建筑物的使用, 甚至重新建造, 因此, 对产生的裂缝进行检测与鉴定, 就具有十分重要的意义。通过对这些裂缝进行准确合理的检测鉴定, 可以达到以下目的:

1) 可以确保各类房屋的住用安全;

2) 可以促进城市危旧房屋的改造;

3) 进行司法仲裁技术鉴定的作用。

由此可见, 在实际工程中, 会有大量的此类工作产生, 据统计, 在国家建设工程质量监督检验中心每年承接的检验鉴定工作中, 结构构件裂缝问题及涉及该类问题的项目所占的比例超过每年检测鉴定项目总数的1/2。如此大的工作量, 而现有的检测方法往往会使检测工作和检测后数据的处理显得十分繁琐, 为此, 我们必须开发出一种可以在检测现场快速记录原始数据, 并且快速生成检测报告的方法, 在满足市场需求的同时, 保证检测质量, 从而提高生产效率。

1 现有技术

现有的裂缝检测及报告生成过程, 以南京工大建设结构检测部为例, 首先, 采用DJCK-2裂缝测宽仪 (如图1所示) , 现场对裂缝的宽度进行读数并且将裂缝宽度在裂缝处标出, 与此同时, 根据房屋的建筑施工图图纸, 在现场记录表上确定该裂缝所在的轴线位置, 并绘制出裂缝的走势以及在关键位置标出裂缝的位置, 完成现场检测之后, 在计算机中, 将现场手绘的图片再用CAD绘制一遍, 这个绘制过程需要花费大量的精力, 由于一个项目通常有几百户人家, 会有大量现场检测的纸质原始记录, 这些记录在检测结束后, 需要花费大量时间进行整理, 然后再输入电脑, 这个过程相当于将整个工程再重新做一遍, 尤其是很多由于温度变化等引起的表面裂缝, 这些裂缝会在工程中大量出现, 而这些裂缝的走势和位置, 并不像大多数结构裂缝那样有大致的形式和几乎固定的位置, 这些裂缝通常是千变万化的, 所以在绘制检测报告的时候显得异常复杂和繁琐, 大大增加了后期数据处理和报告生成的工作量, 从而降低了工作的效率。再加上如此之大的数据量, 非常容易在输入过程中产生错误, 在完成检测报告之后, 还需要花费大量的时间和人力对报告进行复核, 所以工作效率非常低。

2 Auto CAD二次开发

Auto CAD是Autodesk公司推出的一款功能强大的供用户从事设计和绘制图形的专业软件, 它为使用者提供了许多可以进行二次开发的平台, 其二次开发的主要内容有:

1) 编写各种Lisp文件用于实现某些具有特殊用户需要的命令, 并且编写dcl配梁文件, 以对话框的形式实现交互式的使用所编写的命令;

2) 定制针对不同项目的系统菜单, 通过编写MNU文件, 实现对不同工作项目的不同操作界面的设置, 同时也可运用交互式的输入方式调用CAD系统原有菜单, 从而建立符合自己需求的工作空间;

3) 对系统原有的Lisp文件进行修改, 或者通过交互式的方法, 在系统对话框中修改某些系统设置的路径, 从而使得在下次启动CAD时, 在原有CAD功能基础上加入新的初始化设置;

4) 用户可根据自己需要, 编写相关程序与CAD进行对接, 从而实现对CAD的二次开发。

当前对于Auto CAD的二次开发的工具主要有:VBA, VisualLisp, Object ARX以及.NET API等, 这些开发手段各有特点, 使用者可以根据自身需要, 灵活选用不同的开发手段进行开发, 在本文中, 将选用VBA以及Visual Lisp两种手段进行开发。

1) Visual Lisp。

Visual Lisp是一个完整的集成开发环境, 是为加速Auto Lisp程序开发而设计的软件开发工具, 在该环境下, 可快捷、高效地对CAD进行二次开发, 对开发后的程序进行编译, 可得到运行效率高、代码紧凑的应用程序, 与此同时, 可对源代码进行良好的保护。Visual Lisp不但可以兼容Auto Lisp程序, 而且还扩充了许多新的功能, 利用这些功能, 可以进行各种工程的计算分析、定义新命令、驱动对话框、自动绘制复杂的图像, 并且为CAD扩充更多的智能化、参数化功能。

2) VBA。

VBA即Microsoft office中的Visual Basic for Applications, 在CAD中, 集成了VBA的编辑器, 从而为开发者提供了一种对CAD进行二次开发的选择, 同时也为用户访问CAD中丰富的技术框架开辟了一条新的道路, VBA与Auot CAD通过强大的Active X进行结合, 不但可以控制CAD的数据库, 还可以使得CAD和Word, Excel等外部程序进行数据的交换, 从而实现对CAD的二次开发。

3 工程实例

1) 工作空间的定制。

首先使用VBA的菜单定制语言, 针对裂缝检测的现场工作流程需要, 重新定制了Auto CAD 2014的工作空间, 其中, 菜单新增了:初始化、构件、配件、零件、裂缝等菜单选项, 在工具按钮中, 添加了“工作环境初始化”“绘制裂缝”“标注裂缝”三个按钮, 使得工程检测人员可以在现场快速绘制所需要的裂缝图像。

2) 使用Auto Lisp以及dcl配梁语言编制“标注裂缝”命令。

Auto CAD 2014允许用户自己定制一个dcl配梁对话框, 这样的操作是目前最为流行的人机交互, 它可以为使用者提供一个可视化环境, 使操作更加快捷。本工程中, 在标注裂缝时, 需要人机交互输入裂缝宽度并且标注在指定位置上。输入窗口如图2所示。

具体代码如下:

但是用dcl配梁语言来编写的对话框只是一个简单的界面描述, 用户并不能单独依靠它完成显示和指令。只有利用Auto Lisp程序来驱动它才能实现用户希望它达到的功能。

Auto Lisp采用了与Common Lisp相近的语法及习惯约定, 并吸收了Lisp语言的主要函数, 同时增加了针对Auto CAD特点的许多功能, 因此Lisp语言编程能够十分灵活的在Auto CAD的平台上很好的运用。

Auto Lisp是以*lsp为扩展名的文本文件, 源程序的编辑过程是:首先运行Auto CAD然后加载已编辑好的Lisp程序最后调用程序并运行函数。

在本工程中, 实现标注裂缝的Lisp程序代码如下:

4 结语

该插件的开发主要运用于建筑物表面裂缝的现场检测时的原始记录的采集与绘制, 运用该软件, 可以让工程技术人员在房屋安全监测鉴定的现场, 利用平面电脑, 快速记录和绘制检测的原始数据, 使得过去需要花费大量时间的二次输入过程可以在现场就直接完成, 从而快速的生成检测报告。

该软件基于Auto CAD平台, 利用Win8操作系统提供的触摸功能, 使得运用该软件, 将不再使用过去现场纸质记录的手段, 这样, 不但可以省去大量的整理工作, 更重要的是可以使得在检测数据记录和处理的过程中, 减少不必要的人为因素的干扰, 从而减少生成检测报告过程中的错误, 提高生产效率。

该软件具有以下特点:

1) 样板化。

该软件提供了在检测现场可以直接使用的CAD图形样板, 采用该样板, 可以在检测现场省去了对于初始化CAD后对图层、文字样式、标注样式等内容的设置, 使得现场检测人员可以直接进行现场记录的绘制。

2) 参数化。

使用该软件绘制检测报告中的裂缝示意图时, 对使用到的常用构件, 可以进行面向对象的参数化绘制, 这样可以大大减少绘制时间, 从而简化了现场绘制的过程, 使得检测过程更加高效。

3) 可视化。

对于常用构件的选择, 该软件采用了可视化的方法, 以幻灯片的形式, 将技术人员现场绘制时所用的构件类型, 非常直观的展现在了用户面前, 让用户一目了然的可以选择到自己所需要的构件, 从而可以加快绘图的速度, 并且提高了绘图的准确率。

4) 模块化。

该软件根据现场检测过程, 将软件界面进行了友好界面的设计, 使得软件的使用更加方便人机交互的过程, 并且对CAD常用的快捷键进行了优化, 使得使用者在使用过程中, 可以根据自己的需要快速进行绘制从而提高绘制效率。将检测步骤进行了模块化的分类和整理, 并且在此基础上将其进行标准化的管理, 使得原始数据可以有效而快速的生成最终的检测报告, 而每次使用到的新增模块, 可以有效地记录下来, 从而在使用过程中, 可以将用到的构件库进行不断的扩充, 为原始数据的积累提供保证。

参考文献

[1]李学志.Visual Lisp程序设计[M].北京:清华大学出版社, 2006.

[2]张帆.AutoC AD VBA二次开发教程[M].北京:清华大学出版社, 2006.

CAD二次开发软件 篇2

(DEFUNSELSTUFF(E/SS);E:指定的图素名称

(SETQSS(SSADD))

(IF(NULLE)(SSADD(SETQE(ENTNEXT))SS))(WHILE(SETQ E(ENTNEXT E))(SSADDESS)))

产生新层的函数

(defunnewlayer(layernamecolorltype)

(command“layer”“n”layername“c”colorlayername“l”ltypelayername“"))

Color参数可取整数或颜色字符串,层名和线型自变量必须用字符串。AUTOCAD中常用的线型名称为:continuous,center,hidden,phantom

;水平对称函数(对称轴为水平):

;str: 点变量的符号字符串(比如,已知变量为p1,p2...pn,则str应为”p“;i: 点变量的起始下标,如上例应为1

;n: 连续的点变量数目,如上例应为n

;p0 : 对称轴上的任一点

(defun hsym(str i n p0 / xx yy)

(repeat n;此函数一共可同时求出n个对称点坐标值,故循环n次

(setq xx(read(strcat str(itoa i)”hsym"));构造对称点变量名(如:p1hsym)yy(read(strcat str(itoa i))));得到已知点变量名(如:p1)(set xx(list(car(eval yy));为对称点变量赋值(-(*(cadr p0)2)(cadr(eval yy)))))

CAD二次开发软件 篇3

摘 要:目前CAD技术已经广泛的应用于建筑制图中,本文通过对CAD二次开发技术应用的分析,提出了在建筑制图中CAD技术二次开发的手段和形式,为制图人员更好的利用CAD提供参考意见和建议。

关键词:CAD二次开发;建筑制图;手段;形式

一、CAD二次开发的概念

CAD是Computer Aided Design的英文缩写,是利用计算机及其图形设备帮助设计人员进行设计工作的一个软件。目前,建筑制图行业广泛使用的CAD软件是美国AUTODESK公司开发的Auto CAD软件,它是一个功能强大、易学易用、具有开放型结构的软件,不仅便于用户使用,而且系统本身可不断地扩充和完善。AutoCAD成为全球二维CAD的标准,它不但具有开放的体系结构,而其还允许用户和开发者采用高级编程语言对其进行扩充和修改,即二次开发。二次开发能最大限度地满足用户的特殊要求,它可以根据客户的特殊用途进行软件的客户化定制,从而能够大大缩短制图的时间,还是一种有效的提高正确性的途径。

二、建筑制图CAD二次开发的主要内容

建筑制图中要经常使用很多标准和图库。不同国家不同公司都有自己的制图规定和标准。通常使用的AutoCAD不可能涵盖全部。这样对于制图人员,如果使用没有二次的CAD,需要进行大量的初始设置和标准建立,浪费大量的时间,而且极易产生错误。针对这些问题,使用者利用软件本身的开放结构,对CAD进行二次开发,其主要内容包括:①用户自己编写各种自定义函数,形成若干LISP、ARX、VLX或ADS等文件。②建立便于建筑制图使用者自身要求的菜单文件,简单的做法就是在AutoCAD原菜单文件内添加自己的内容,然后通过调用的方式加入到系统中去,便于使用。③在系统的ACAD.LSP或类似文件中加入使用者自己的程序以便进行各种初始化操作,在启动时自动装入一些文件等。④设置某些路径。这些操作在程序开发成功后向其它AutoCAD系统上安装应用,特别是需要大批安装时,需要进行很多文件检索、内容增删、子目录创建、文件拷贝、系统设置等繁琐工作,令上述工作全部自动进行,使整个二次开发程序在每次使用Auto CAD情况下自动嵌入系统。

三、建筑制图CAD二次开发的手段

既然二次开发是非常必要的,如何进行有效的开发就成为使用者主要考虑的问题。针对不同的使用情况,采用不同的二次开发手段。以下总结了三种常用的CAD二次开发手段,根据实际情况采用:

(1)通过标准库文件,改造或建立建筑制图的标准库文件。通过定制修改屏幕、对话框及下拉选单,定制修改标准建筑模块形或绘图符号、线型和阴影图案等。

(2)与其它软件之间的数据交换。如使用图形交换文件进行交换;利用剪贴板进行静态数据传递及存储等。

(3)使用Auto LISP、ADS、APR 及VBA等进行编程,这是二次开发的主要内容。Auto CAD共提供了4种不同层次的开发工具:①Auto LISP程序设计语言是一种用于Auto CAD环境的解释语言。由于其语法灵活、简洁,表达能力强,非常容易掌握。大多数开发人员都是用Auto LISP进入开发的。还有如Auto LISP内置于Auto CAD中,与Auto CAD通信简便。同时,在编制大系统中,可以将一个大系统分成若干个模块,利用Auto CAD中函数实现相应的功能,并在函数之间相互调用,通过主程序加以控制。因此,完全胜任大系统的编程要求。②ADS开发系统.ADS是Auto CAD提供的基于C语言开发应用程序的系统。它对开发人员的C语言要求较高,ADS作为一组Auto LISP外部函数由Auto LISP解释器装入、解释并请求Auto CAD运行。由于ADS程序必须通过Auto LISP解释加载,所以,ADS各方面使用性能相应受到限制,同时,随着网络技术的迅速发展,面向过程的ADS已经有些力不从心了。越来越少的开发人员使用这种手段。③ARX开发环境.面向对象的编程环境ARX在编写应用程序时不需经过Auto LISP解释加载,它可和Auto CAD进行共享地址空间并拥有同一线程,这使ARX编写的命令与Auto CAD中的Line、Circle等命令处于同一级别,显然要比Auto LISP、ADS方式得到更快响应,同时ARX程序一经注册,即被添加到Auto CAD原始命令集中,成为Auto CAD命令集的一部分。④利用VBA组件进行开发。这使得开发者对于Auto CAD系统内部的模块的替换和添加成为可能。但这必须建立在开发者对于VBA熟悉,把Auto CAD中的实体作为对象,对这些实体的操作作为方法,编制处理过程或宏命令。这一开发手段,使得开发者能进入至Auto CAD内部进行用户化处理。这样Auto CAD向可用户化迈进一步。

四、建筑制图CAD二次开发的形式

根据Auto CAD提供的开发手段,最常用的Auto CAD开发形式有参数化CAD、成组CAD、交互式CAD和智能化CAD四种主要形式:

1.参数化CAD

参数化CAD应用软件主要用于标准化;系列化和通用化程度比较高的定型产品。输入建筑制图的主要参数,通过计算机量规的数据库中的数据,进行必要的计算,将查询或计算得到的数据,在标准图样上进行变量代换,实现参数化绘图,最后生成符合要求的图样。可见,这类软件使用时效率较高,但由于专业性较强,使其推广受到限制。因此,它适于企业技术人员自行进行开发。

2.成组CAD

成组CAD应用软件利用成组技术原理,将需要设计的零件特征编码与源设计编码相比较,通过屏幕提示,决定对源设计零件直接引用或进行修改。但是,由于成组CAD是针对某一类或一系列产品进行开发,所以应用的广泛性受到了一定程度上的约束。

3.交互式CAD

交互式CAD应用软件由于利用人机交互的方式进行设计,模拟了制图人员的制图过程。利用Auto CAD中菜单的定制及制图人机交互的对话框等,从而满足在制图时人机交互的需要。交互式CAD具有应用广泛性、使用灵活性、设计对象的适应性等特性,但对于开发人员的设计水平要求较高。

4.智能化CAD

智能化CAD就是将人工智能技术与CAD技术融为一体的专家系统。系统的更高的创造性思维活动层次上给予人员有效的辅助,是真正意义上的计算机辅助设计。如专家系统技术的引入,可引进专家设计的思路,提供设计方案的选择,最终能够模拟专家设计过程,根据设计中的问题提出合理的解决方案。显然,采用智能化CAD的专家设计系统也可能使一般的設计人员做出专家级水平的设计来。

五、结论

从各方面分析来看,Auto LISP仍然是Auto CAD的基本开发手段。ADS将逐步被更为完善的ARX所取代。VBA则成为Auto CAD用户二次开发的另一支生产军。Auto CAD提供的开发手段让各类开发者都能有适合于自己的开发工具。CAD的二次开发给建筑制图带来了革命性的进步,不仅大幅度的减少了作图时间,减轻制图者的负担,而且作图的质量也得到了保证。未来建筑CAD二次开发必将得到更广泛的应用。

参考文献:

[1]李琛琛;建筑CAD基础与应用.北京:机械工业出版社,2010.9.

[2]耿国强,张红松,胡仁喜,等.AutoCAD2010 中文版入门与提高.北京:化工出版社,2009.

CAD二次开发软件 篇4

工程建设的规划、设计、施工阶段,都需要以地质勘测资料作为依据,地质图是可以直接利用和使用方便的图表资料,主要包括地质构造图,等值线填充图,地质剖面图等。对其分析、阅读过程中,经过图案填充的地质图可以更加直观地了解地质构造。地质图填充的常规方法是利用AutoCAD中图案填充功能,借助其绘图实体丰富,图形绘制简易方便。图形修改工具齐全,编辑功能强大等特点,在不同封闭区域中添加拾取点人工进行填充。但是,这种方法在面对复杂区域大量数据时工作过于繁琐。本文基于.NET API的CAD二次开发方式可以有效提高绘图自动化水平,实现区域的自动填充。.NET是微软新推出的开发平台,基于.NET平台对AutoCAD进行二次开发,在保证功能强大的前提下大大提高开发速度。在新推出的AutoCAD 2006中,Autodesk为其开发增加了.NET API。.NET API提供了一系列托管的外包类(Managed Wrapper Class),使开发人员可在.NET框架下,使用任何支持.NET的语言。本文采用C#作为开发工具。其优点是完全面向对象,在拥有与C++相匹配的强大功能的同时,具有方便易用的特点,是较为理想的AutoCAD二次开发工具。

1 区域填充算法流程

区域填充的过程中,可以把整个区域看作是由多个面域组成。对其进行追踪和填充就可实现整个区域的填充。具体的思想是:首先确定区域范围,然后根据边界与地层线的交点,地层线之间的交点列出交点表。显然,这种拓扑结构可以采用图的邻接表进行存储。最后利用区块追踪算法进行填充。为实现该算法,先定义一些数据结构。

1.1 交点描述数据结构

1.2 交点表描述数据结构

在交点数据结构中,分别用Point[0],Point[1]来表示交点的X,Y坐标。GSortType是枚举类型,将排序方向组织成一组枚举列表。mSortType是一个GSortType型变量,表示交点按X,Y方向排序。在交点表结构中mCrossLine是个整形变量,表示交线下标,也就是地层线表的序号。mPos是一个GPoint2d型变量,存储交点坐标。mRefCount是一个整型变量,表示在块体追踪过程中交点被引用的次数。AcArray是AutoCAD动态链接库中的模板类,以数组形式存储交点信息。

下面以地质剖面图的区域自动填充为例,具体描述拓扑交点表的建立。为了对剖面的范围进行控制,需要建立并计算地层线号15-1,15-2 (如图1所示)的区域。整个交点的排序原则按照地层线按X方向排序,左右边界按Y方向排序。根据交点结构体的不同情况,把GCross Point2d分为自身交点和相交线交点。如果点到折线的最短距离小于层交点误差范围(交点误差范围根据项目需求设定),则其为自身交点。相交线交点即为地层线之间交点或地层线与边界的交点。在地层线与边界交点的获取时应当还要考虑边界交点误差范围。在建立交点表之前,需要判断地层线的起点与终点的距离小于层交点误差范围这种特殊情况,因为这是无需建立交点表的。拓扑表建立过程中首先追踪地层线起点,寻找它与其它层的交点。如果没有和其它地层相交,判断是否是左边界交点。交点既不是边界点又不和其它地层线相交的情况被视为错误情况。然后用同样的方式追踪地层线终点。在以上每次交点的建立过程,应该遵循修正端点,加入自身交点,加入相交线交点的顺序建表(如图2所示)。

得到以上交点表以后,还需要进一步对中间交点制导。为了便于说明制导过程,假定地层线上的两个控制点A、B,交线的终点C。已知终点C的坐标,按照X方向追踪,求与其它地层线的交点。C点的范围在两个控制点之间或在某个控制点上。通过(AX-CX)*(BX-CX)<=0,(CY-AY)*(BX-CX)=(BY-CY)*(CX-AX)对其它地层线进行循环遍历。从而,可以快速的对中间交点制导。

下面描述一下2D区域自动填充的追踪算法。每个剖面区块按照逆时针方向进行追踪。从地层线起点按照X方向开始。到达交点处时需要对追踪方向进行判断,通过交点引到交点p[k]的前一个控制点p[k-1],联立两点坐标生成直线方程,并利用公式将图顺时针旋转θ角:



经过旋转后可以方便的对交点P[k]处的走向进行判断。首先通过交点表索引到控制点A、B,然后按照控制点坐标Y值大的走向进行追踪。在追踪过程中交点最多被引用两次,从而完成整个剖面区块的追踪过程。

2 区域自动填充的实现与应用

在Microsoft Visual C#2003平台上,先新建一个Class Library项目,再将AutoCAD2006安装目录下的acdbmgb.dll与acmgb.dll作为引用添加进项目中。这两个文件包含了.NET API中所有的外包类。在2D区域自动填充中利用.NET API外包类设计一个交互式的友好界面,完成地层线数据的提取和剖面区块颜色的填充。

为了使用户界面和AutoCAD实现无缝链接,要尽可能在所有的地方使用同样的用户界面结构。这会使应用程序看起来与AutoCAD结合的很好,并有效地减少代码的重复。使用.NET API,可以创建一个无模式窗体并把它放到面板中。可以实例化一个自定义的‘PaletteSet’对象来包含窗体,并可以把这个PaletteSet定义成用户喜欢的样式。

地层线数据利用选择集进行提取,选择集是与用户进行交互的最重要的方式之一,因为它允许通过所选择的实体从绘图窗口获取信息。可以要求用户选择实体,也可以使用过滤器来进行选择。选择集实际上就是被用户或程序所选择的一组实体。一个选择集就是AutoCAD当前图形的一组实体,选择集类似于AutoCAD实体“组”的概念。一旦拥有一个选择集就可以确定组成选择集的实体数量。知道实体数量后,采用循环遍历选择集中每个实体,并读取和修改实体。针对不同实体数据的提取,依据其特性采用选择集过滤模式。在过滤模式中过滤参数是一个结果缓冲区表。由于地层线多采用Polyline,2DPolyline,MLine绘制,所以使用选择集过滤模式时,首先用户在选择无模式窗体上选择地层线所在的图层,然后程序过滤图层中的实体信息,完成地层线信息的提取。剖面自动填充先根据地层线号坐标找到所属的剖面区块,然后把剖面区块的坐标写入Polyline类进行剖面绘制并使用Hatch类对其填充。

在成都理工大学设计的工程地质建模软件中,利用获得的铁道第二勘察设计院营山至蓬安段地质数据(如图4所示),采用本文的二维地质剖面自动填充算法绘制的地质剖面图(如图5所示)。

3 结语

本文针对常规的区域填充方法提出了一种新的方法,该方法不需要在AutoCAD环境下对填充区域进行判断,具有填充位置更加合理,图面美观,自动化程度高等特点。本算法可以适应复杂区域的自动填充。地质剖面填充图就是一个很好的例子。本算法已经在工程地质建模软件系统中得到了很好的应用,如构造图绘制,剖面填充图绘制等,效果良好。

摘要:针对AutoCAD制图工作中区域填充问题,提出了一种区域自动填充算法。该算法克服了传统的填充方式过于繁琐的问题,并能有效地实现在AutoCAD环境下,复杂区域结构的自动填充。该算法在地质剖面属性自动填充的实例应用中取得了很好的效果。

关键词:NET API,区域自动填充,AutoCAD二次开发

参考文献

[1]李世国等.AutoCAD高级开发技术:ARX编程及应用[M].北京:机械工业出版社,1999.

[2]孙家广等.计算机图形学[M].北京:清华大学出版社, 2003.

CAD软件购买申请 篇5

公司领导:

2014年6月25日,我们收到欧特克软件(中国)有限公司关于我公司未取得合法的授权许可使用欧特克集团旗下的Autodesk系列软件(CAD软件)告知函,并提出我公司至少对10套CAD软件正版化,方免于追责。经调查,模具中心、技术与新产品开发部、品质保证部等部门确实存在使用盗版CAD软件的行为,经与对方多次交涉,对方最终同意我公司购买5套正版CAD软件,方不予追究我公司使用盗版CAD软件的法律责任。

为维护公司形象及利益,避免出现法律纠纷,同时考虑公司实际需求,现申请购买5套正版CAD软件,软件价格为2.7万元/套,共计13.5万元。

妥否,请批示。

企管部

CAD二次开发软件 篇6

1 三维CAD二次开发技术现状

所谓的二次开发就是将目前市场上通过的CAD系统软件实现用户化、本地化的过程。以往的对CAD软件的二次开发属于一个比较繁琐的过程, 现在的CAD二次开发夹住实体建模软件作为图形支撑, 以某个数据库系统作为底层数据环境, 利用图形界面工具, 使用编程语言, 从而形成一个独立的CAD系统。

三维CAD二次开发的主要工作内容包括完善交互式系统、接口设计、参数化设计模块的设计、界面设计等等。完成对三维CAD二次开发最终结果就是需要更好的满足用户需求, 保证结果正确、操作方便以及友好的人机交互界面。目前针对三维CAD二次开发工具主要使用第三方工具或者是CAD本身提供的开发平台。在对三维CAD二次开发的过程中一类必不可少的工具即程序设计语言, 比较常用的C语言、Fortran、Pascal、Basic、Java等。

目前, 比较常用的CAD软件二次开发有基于Pro/E的二次开发、UG的二次开发、Solid Works的二次开发、CATIA的二次开发。

2 基于设计计算的三维CAD二次开发技术

以基于设计计算的UG的二次开发为例, UG的二次开发可以有两种方式, 一种是以进程内组件程序的开发, 另一种是进程外组件程序的开发。UG作为一个全三维参数化设计的造型系统, 具有强大的实体造型、曲面造型、工程图设计等功能, 另外能更好的方便用户进行二次开发。其中的UG/Open GRIP和UG/Open API程序设计和UG/Open Menu Scrip、UG/Open UIStyler辅助开发模块, 能提供良好的高级语言接口, 便于用户开发更加适合自己的CAD系统。不管是那种开发, 其大致流程是以交互式图形系统作为主要支撑, 利用图形系统的用户语言为进程的控制者, 利用高级语言为系统连接和数据库转换的枢纽, 开发出一个及参数化设计零件、交互式编辑图形、数据的系统管理作为一体的CAD软件系统。

以UG的二次开发为例, 目前包含两套系统, 一个是Open, 另一个是NX/Open。第一种主要针对造型方面, 第二种则比较全面。基于设计参数的三维CAD二次开发技术, 最终能使得CAD系统具有交互式绘图功能, 同时还能具有自动绘图的功能, 借助参数化设计能有效提高设计效率。整个参数化设计的过程为:输入各独立参数→合理→计算相关参数→合理→根据参数设计→计算特征 (其他后续分析) →特性分析。参数化设计采用的是对图形数据操作的参数驱动机制与约束联动机制, 能同时从几何参数和几何形状两个方面进行设计。参数化设计的基本步骤是先分析是否需要进行参数化设计, 符合需要进行参数化设计要求之后开始进行零件的形体分析, 确定其设计变量和建模策略, 之后进行参数化建模以及提取, 最后进行模型炎症。

以变压器的参数化设计为例, 使用UG NX软件, 对变压器的各个组成部分进行三维设计, 之后进行参数化编程。通过对UG的二次开发, 实现UG与变成工具的连接, 从而开发出变压器参数化设计系统, 该系统能进行变压器贴心参数化设计、线包参数化设计以及变压器器身整体装配设计。进行UG软件环境的设置、菜单的编写、NX/Open与VB.NET的接口连接、ADO.NET数据库访问, 之后开始进行变压器参数化设计系统的开发与实现。

3 结语

本文以UG软件系统为例进行了变压器的三维CAD软件参数化设计。通过这种方式在提高目前CAD应用水平的基础上提高简化设计人员繁琐的工序流程, 提高设计人员的设计质量与效率, 对提高企业的市场竞争力有着重要意义。

参考文献

[1]胡添元, 余雄庆.基于参数化CAD模型的飞行器气动/隐身一体化设计[J].宇航学报, 2009 (1) .

[2]吴新波, 王耕耘.基于三维CAD实体模型的模具BOM表自动生成方法研究[J].模具工业, 2007 (2) .

CAD二次开发软件 篇7

关键词:钢包车,SolidWorks,二次开发,VB

0引言

产品的开发过程是一项非常复杂的系统工程。据不完全统计, 在工程实际中超过80%以上的设计均是通过对现有产品进行创新和改进来完成的, 所以继承和沿用成为产品设计的两个重要途径, 同时也是节约开发成本、缩短产品研发周期的最有效途径。钢包车是炼钢设备最重要的部件之一, 随着炼钢产品在设计、制造等方面的发展, 钢包车已成为系列化、通用化部件, 由于其工况为强冲击、重载, 因此具有较高的设计要求, 所以对钢包车进行三维参数化设计和建模具有重要的理论和实际意义。

SolidWorks是一套基于Windows的CAD/CAE/CAM/PDM桌面集成系统, 是由美国SolidWorks公司在总结和继承了大型机械CAD软件的基础上, 在Windows环境下实现的一款机械三维CAD软件, 具有丰富的零件实体建模功能。同时, 为了便于用户进行二次开发, SolidWorks提供了几百个API函数, 这些函数是Windows的OLE或COM接口, 用户可以使用VB/VBA/VC++等多种编程语言进行二次开发, 建立适合用户需要的、专用的Windows模块。

1参数化设计方法

1.1 参数化设计简介

参数化设计是Revit Building的一个重要思想, 它分为两个部分:参数化图元和参数化修改引擎。通过将模型中的定量信息变量化, 使之成为任意调整的参数。对于变量化参数赋予不同数值, 就可得到不同大小和形状的零件模型。

1.2 参数化设计方法

SolidWorks软件中实现机械零部件参数化设计的方法主要有以下两种:一是利用在内嵌的Excel表中指定特征参数, 创建多个系列零件或部件;二是利用编程语言 (如VB、VC等) 作为开发工具, 对其进行二次开发, 通过程序驱动实现参数化设计。

1.2.1 基于系列表配置的参数化设计

在SolidWorks中利用Excel表配置实现参数化设计时, 首先建立目标零部件的基准模型, 然后对系列零件设计表中的各个参数进行修改, 从而可对基准零部件在不同配置下创建多个系列的零件或部件, 这种方法适合于参数较少、较简单的零件;对于比较复杂的零部件, 将其参数划分为主动参数和从动参数, 并建立两者之间的函数关系, 从动参数的变化可由主动参数来驱动, 只需对主动参数进行配置即可实现系列零部件的生成。

1.2.2 基于SolidWorks二次开发的参数化设计

本文选用VB6.0软件对SolidWorks2007进行二次开发, 所选用的方法有以下两种:一是完全用程序驱动来实现三维模型的参数化设计, 该方法实现过程比较困难, 它要求程序开发人员必须精通大量的API函数, 所以开发周期较长, 优点在于能完成非常复杂零件的实体造型;二是在建立零部件三维模型的过程中, 预先设置合理的参数, 并用SolidWorks特有的宏命令将建模过程的操作完全录制下来, 再通过VB6.0程序来驱动设计变量从而实现零件的更新。后一种方法编程较简单, 通用性好, 还能通过VB6.0建立的操作界面来实现完全的人机交互, 便于操作。因此本文中选用第二种方式。

2钢包车CAD系统开发过程

2.1 钢包车零部件参数化设计

2.1.1 在SolidWorks环境下建模

以钢包车一级部件车架参数为例, 在SolidWorks零件环境下建立其模型, 如图1所示, 并将此过程用宏完全记录。在上述建模过程中需要保证其规范性, 以减少不相关、冗长代码的出现, 从而简化程序的调试过程。

2.1.2 编译宏程序代码

SolidWorks宏代码为VBA语言, 为使其能在VB环境下打开, 需要进行必要的编译。上述钢包车车架建模宏文件编译后部分程序代码如下:

Dim swApp As Object

Dim Part As Object

Dim boolstatus As Boolean

Set swApp = CreateObject ("SldWorks.Application")

Set swPart = swApp.NewPart

Set SelMgr = swPart.SelectionManager

boolstatus = swPart.Extension.SelectByID2 ("前视基准面", "PLANE", 0, 0, 0, False, 0, Nothing)

swPart.CreateLine2 (0, 0, 0, 0.14, 0, 0) .ConstructionGeometry = True

swPart.FeatureFillet5 195, 0.021, 0, 0, 0, 0, 0

swPart.ViewZoomtofit2

2.1.3 关联参数配置

部件由于其结构复杂, 很难直接用程序驱动生成, 因此文中选用基于程序驱动和系列表配置相结合的方式进行部件的参数化建模。即在零件参数化设计的基础上, 对装配体关键尺寸进行关联配置, 并与零件特征尺寸相关联, 从而保证部件在主动尺寸改变时驱动零件进行相应的改变。以钢包车装配体部件为例, 其主动、从动尺寸间的关系见表1, 小车工程图如图2所示。

2.2 模型数据库

在小车零部件参数化建模时, 设定主动尺寸, 并利用ACCESS数据库建立主动尺寸相应的参数库, 然后与图3、图4所示人机交互界面的text文本框、ADO数据控件等建立一一对应关系, 具体的操作过程, 可参阅文献[4]。通过数据库系统, 用户在进行钢包车零部件建模时, 可首先输入特征参数进行所需零部件的查询, 如存在便可直接引用, 减少了数据的重复输入;若不存在可通过直接输入或修改个别参数来完成建模。同时, 上述数据库为开放式的, 用户可以进行添加、删除等操作。

2.3 基于VB的用户窗体开发

利用VB6.0创建可视化的人机交互式界面, 用text文本框作为输入参数的窗口, 并与驱动程序中对应的设计变量连接从而实现调用。将编辑后的宏代码复制到确定按钮的单击命令下, 再进行必要的修改, 具体操作参阅文献[5]。选择数据库数据或输入所需各项数据后, 按下建模按钮完成参数调用及建模过程, 并生成所需小车零部件的三维模型。

2.4 二次开发程序与SolidWorks的集成

为了提高二次开发程序的可操作性, 文中将其生成DLL文件, 以插件的形式直接嵌入SolidWorks内部。在这一过程, 必须定义DLL文件与SolidWorks连接的接口。SolidWorks插件文件与SolidWorks接口的函数如下:

SWAddin.ConnectToSW和SWAddin.DisconnectFormSW

建立连接后, 插件文件可以通过添加菜单的形式来形成进程内调用, 如图5所示。这种方法可以较大节省内存空间, 并且调用外部程序非常方便, 同时实现了和SolidWorks软件之间的无缝集成, 大大提高了设计效率。

插件的加载和卸载代码如下所示:

ii=iSldWorks.AddMenu (swDocPART, "钢包车CAD系统 (&G) ", 5) //菜单添加代码

bRet=iSldWorks.RemoveMenu (swDocPART, "钢包车CAD系统 (&G) ", "") //菜单卸载代码

3应用实例

加载钢包车CAD系统 (D) 插件, 进入图4所示的建模界面, 选择或输入合适的参数, 点击“建模”得钢包车装配体模型效果图, 如图6所示。

4结论

本文基于SolidWorks二次开发, 实现了可进行零部件参数查询、建模的小车CAD系统, 实现了整个设计过程的自动化;同时, 该开发系统以DLL插件的形式与SolidWorks实现了无缝集成, 大大提高了工作效率, 也使得操作更加简单方便, 为产品的设计提供了一条有效的途径。

参考文献

[1]张峰, 李兆前.参数化设计的研究现状与发展趋势[J].机械工程师, 2002 (1) :13-15.

[2]何宁, 白海清.基于VB开发SolidWorks标准件[J].机械与电子, 2004 (6) :18-19.

[3]朱成实, 叶龙, 李铁军, 等.基于SolidWorks的塑料注射机螺杆的参数化设计[J].机械设计与制造, 2008 (3) :33-35.

[4]江洪, 魏峥, 王涛威.SolidWorks二次开发实例解析[M].北京:机械工业出版社, 2005.

CAD二次开发软件 篇8

车辆悬架弹簧是典型的变刚度元件, 其刚度随所联接的弹簧上、下刚体间相对位移的变化而变化。同时悬架弹簧对车辆的行驶平顺性及乘员舒适性起到非常重要的作用。传统的金属弹簧分为钢板弹簧、螺旋弹簧和扭杆弹簧[1,2,3]。对于螺旋弹簧又分为普通弹簧和变刚度弹簧。随着汽车工业的高端化发展, 为满足不同工况下对弹簧刚度的要求, 变刚度弹簧的应用越来越广, 同时被给予更多的重视。因而, 变刚度弹簧的研究对汽车技术的发展具有重要的现实意义。

通常, 设计人员在进行螺旋弹簧设计三维建模时需建立弹簧螺旋线, 然后利用管道扫描成型。考虑到设计时, 对于变刚度弹簧螺旋线建立的复杂性以及建模的高效性, 本文旨在建立一个悬架用变刚度螺旋弹簧的模型库。这样当设计人员需要设计、分析弹簧时, 即可直接调用零件库里的弹簧, 然后根据自己所要求的设计参数来形成弹簧实体模型。

基于此, 本文采用UG软件平台进行悬架用变刚度螺旋弹簧零件库的设计开发。

1 螺旋弹簧的变形及刚度

螺旋弹簧受轴向载荷P作用时的变形x可用下式表示

x=8PD3n/Gd4 (mm) (1)

式中 P—轴向载荷 (N) ;

D—弹簧中径 (mm) ;

d—弹簧钢丝直径 (mm) ;

n—弹簧工作圈数;

G—弹簧材料的剪切弹性模量 (MPa) 。

其刚度k为

undefined) (2)

2 变刚度螺旋弹簧的参数化设计

目前, 在UG 软件中, 二次开发的参数化设计方法有两种, 即基于图形模板的参数化设计方法和基于参数化程序的设计方法。每种方法都可以通过UG/Open API编程、UG/open Grip编程和UG/open API与UG/open Grip混合编程三种方式实现。本文选取基于图形模板的参数化设计方法。

基于图形模板的参数化设计方法的思想是通过修改图形模板的特征, 从而驱动图形模板发生相应的变化, 达到参数化设计的目的。通常情况下, 修改特征通过修改特征的参数来实现:首先获得特征的参数, 然后改变该参数值, 最后利用函数UF_MODL_update更新模型, 使得对参数的修改反映到图形上, 其基本过程如图1所示。

2.1 创建图形模板[4,5,6]

利用UG软件平台, 采用表达式建模, 创建了四种变刚度弹簧的图形模板, 如图2~5所示。

2.2 对话框及程序设计[7]

利用UG/Open UIStyler对话框设计, 然后在VC中, 根据VC向导建立应用程序框架, 用UG/Open API编写回调函数, 编译、连接。对话框界面如图6所示。

图6中, b、c、d、e图分别是a图的四个展开图, 对应四种弹簧的设计界面。在此对话框中, 有17个参数输入框、有【读入三维模型】按钮、【确定】按钮、【应用】按钮、【取消】按钮和4张图片控件。

3 运行实例

启动UG, 选择工具条, 出现系统主界面, 如图7所示。

四个类型的变刚度螺旋弹簧, 例如“复杂型变刚度螺旋弹簧”单击【读入三维模型一】按钮, 如图8所示。

输入框中更改相应的参数, 单击【应用】或【确定】按钮, 程序自动完成变刚度螺旋弹簧的设计与建模, 如图9所示。

其他类型的操作大致相同, 此处不再赘述。

4 结论

本设计选取了悬架常用的复杂型、A-B型、纺锤型、变丝径型四种变刚度螺旋弹簧。采用表达式建模, VC编译连接, 最终设计出四种典型变刚度螺旋弹簧。实例证明本文所开发的专用CAD软件能方便、快捷地创建汽车悬架常用变刚度螺旋弹簧模型。可以帮助设计人员高效地进行变刚度螺旋弹簧的设计建模, 对后续工作的弹簧分析和优化有很重要的实用价值。

参考文献

[1]陈家瑞.汽车构造 (下册) [M].北京:机械工业出版社, 2001:199-206.

[2]王望予.汽车设计[M].北京:机械工业出版社, 2000:183-199.

[3]赵波, 陈相军.相关参数化设计培训教程[M].北京:清华大学出版社, 2007:35-40.

[4]尹显东, 刘春燕, 崔树礼, 等.UG的二次开发及其应用技术研究[J].机械, 2002, 29 (增刊) :32-34.

[5]王水林, 孟凡平.基于UG二次开发的齿轮参数化模块的建立[J].计算机应用技术, 2010, 37 (6) :59-62.

[6]黄勇.UG/open API开发实例详解[M].北京:国防工业出版社, 2009:119-144.

CAD二次开发软件 篇9

Visual LISP(简称Vlisp)是Auto CAD软件自带的可视化、集成型CAD二次开发的计算机语言,采用递归的语法结构控制计算机的运行,程序的设计比较简单,易于使用户接受。作为CAD软件的二次开发工具,它完整地提供了集成开发环境,使用户能够快捷地调用CAD命令,高效地调试程序。

宅基地管理信息系统是地理信息系统的一个分支,是将宅基地权属信息及规划等信息在计算机技术的支持下,按照住户信息或者地籍属性以一定的格式输入、存储、管理、分析、检索、统计、显示以及应用决策的地理信息系统。

宅基地信息管理系统创建的关键是宅基地基本信息库的建立,而宅基地基本信息库的主要指标之一是从宅基地数字化地籍图中提取宅基地宗地界址点坐标。为了适应这一需求,本文依据宅基地信息管理系统中宅基地基本信息库文件的格式需求,应用Vlisp计算机语言对CAD软件进行了二次开发的学习研究。

二、获取数字化地籍图中特定数据格式的程序开发

(一)宅基地宗地基础数据库格式要求

在获得宅基地Auto CAD地籍图的基础上,为了明确工作的内容,我们先确定出所需输出的数据的文件格式,即:

提取日期,户主姓名,界址点1,X坐标,Y坐标,宗地编号

提取日期,户主姓名,界址点2,X坐标,Y坐标,宗地编号

提取日期,户主姓名,界址点3,X坐标,Y坐标,宗地编号

提取日期,户主姓名,界址点4,X坐标,Y坐标,宗地编号

通过分析数据格式,我们可以知道,该格式中需要人工输入确认的数据只有户主的相关信息,即姓名汉字拼音简称,其他如提取时间、户主姓名、界址点序号,坐标及宗地编号都是地籍图上已有的内容或可以通过计算机后台完成,完全可以通过Vlisp计算机语言进行快速且准确地提取。

(二)Vlisp计算机语言对宅基地宗地信息的编程实现

Vlisp计算机程序设计语言通过特定的计算机语法结构可让用户对Auto CAD软件进行二次开发。

在计算机技术中,只要建立文件,就必须确定文件的存储路径及文件名称。本文为了方便文件管理,将所输出文件存储于宅基地数字化地籍图所在的计算机路径下,命名为该主文件名+ 界址点文件,后缀根据需要设定为所需的格式后缀。为了确定输出文件的路径及名称,可以读取Vlisp语言中的dwgprefix函数,该函数能够给出当前Auto CAD中活动文件的具体路径,如Auto CAD中当前打开的文件名为“** 地籍图.dwg”的文件保存于计算机D盘中的“** 村地籍图文件”文件夹下,在读取dwgprefix函数后,计算机在Auto CAD软件中便会显示该文件路径为:“D:** 村地籍图文件”,在用Vlisp语言实现中我们将读取的文件路径定义为变量wjmlj,语言代码为:(setq wjmlj(getvar "dwgprefix"));所需输出数据的文件名称可以读取DWGNAME函数,该函数直接给出Auto-CAD软件当前活动文件的文件名,如“** 地籍图.dwg”,我们所需的文件名称应该为“** 地籍图界址点文件.txt”,这一步的实现首先需要将“** 地籍图.dwg”中的文件名后缀“.dwg”去掉,得到一个只代表文件名“** 地籍图”,通过组合字符“界址点文件.txt”确定出所要输出的文件名称,这一步的Vlisp语言代码可综合整理为:(setqwjm(getvar"DWGNAME")ln(strlenwjm)wjm(substr wjm 1(- ln 4)))(setq wjm1(strcat wjmlj wjm "界址点文件.txt"))。

在确定了工作中所要输出的文件的存储路径及文件名称后,需要完成宅基地基础数据库所需数据的计算机写出工作,针对输出的数据格式要求,先确定计算机可以自动识别的“提取日期”数据,这一数据可以通过直接读取计算机当前日期,在Vlisp计算机语言中可以用特定的函数cdate来实现。在编程中,需要定义一个有关当天日期的变量,根据Vlisp计算机语言的语法结构,我们定义rq为“提取日期”的变量名称,具体实现表达式为:(setq rq(atoi(rtos(getvar "cdate")2 0)));对数据库中所需的“户主姓名,宗地编号”两项需要在编程过程中赋予字符型变量类型,变量名称分别定义为hzxm,zdbh,通过直接提取宅基地Auto CAD地籍图中的相应图块列表来实现,实现代码可以写成(setq hzxm(cdr(assoc 1(entget(car(entsel"n请拾取户主姓名:"))))))及(setqzdbh(cdr(assoc1(entget(car(entsel"n请拾取相应宗地编号:"))))))。

现在,必须确定要输出的相应宗地的界址点序号及相应的坐标数据,这需要使用Vlisp语言的循环语法。界址点序号变量通过代码(setq rm1 " 界址点")首先定义出界址点序号中不变的部分,再在循环过程中首先定义一个从数字1 开始的变量i,然后在循环中根据变量i的递增通过定义新的变量(setq rmm1(strcat rm1(rtos i 5)))确定其界址点序号。界址点坐标数据则通过从宅基地Auto CAD地籍图上点取各相应宗地的界址点坐标,应用Vlisp语言的getpoint函数提取相应界址点图块,并将其赋予特定的变量中(本文中定义p1 及p为该变量),然后通过car及cadr函数将特定点的坐标从其图块列表中分离出来,变量定义为x1,y1 及xp,yp;编码(setqp1(getpoint "n指定第一个界址点:")(setq y1(rtos(car p1)2 3)(setq x1(rtos(cadr p1)2 3))确定了第一个界址点的坐标信息,这时需要将从宅基地数字化地籍图中获得的数据信息按数据格式要求输出到特定路径下的特定文件中去,这里根据数据格式需要应用Vlisp语言代码(setq fn1(open wjm1"a")),(write-line (strcat rq "," hzxm "," "" "," rmm1 "," x1"," y1 "," zdbh)fn1)。由于建立宅基地基础信息库是个比较耗费时间的工作,为了防止重复提取或遗漏,通过每完成一户在特定图层绘制pline线加以区分,首先在编程过程中通过编码(command "-layer" "m" " 界址点连线" "c" "3" "" """")建立一个名称为“界址点连线”的颜色为绿色的新图层用于存放提取界址点坐标时新绘的pline线,代码(command"pline" p1 "w" "0.5" "0.5" )用来调用Auto CAD中的pline命令在Auto CAD软件平台上绘制pline线,Vlisp语言的while循环语句以空格作为循环结束控制,所以,Vlisp语言循环语法提取相应宅基地宗地界址点信息的代码(while((progn(initget 8 "x")(setq p(getpoint "n指定下一放线点:"))(com-mand p)(if(= 'list(type p))(prong(setq i(+ i 1))(setq rmm(rtos i 5))(setq rmm1(strcat rm1 rmm))(setq yp1 (rtos(carp)2 3))(setq xp1(rtos(cadr p)2 3))(write-line(strcat rq "," hzxm "," "" "," rmm1 "," xp1 "," yp1 "," zdbh)fn1))))))通过循环逐个按特定的数据格式将相应宅基地宗地的界址点坐标及宅基地信息管理系统所需的数据输出到了计算机特定路径下的特定文件中。

(三)Vlisp程序语言与Auto CAD软件的衔接

在Vlisp计算机程序语言的编程代码经过编译运行无误后,需要在Auto CAD软件下便捷使用,Auto CAD软件提供了对应的接口,可以在Auto CAD软件界面直接使用其命令ap-pload加载Vlisp编译的相应程序文件,通过在Auto CAD中直接键入Vlisp语言定义的特定命令名称来执行所需的工作;也可以在Auto CAD软件的菜单文件中加入使用Vlisp计算机语言编制的命令,通过menuload命令更新Auto CAD菜单的方式实现Vlisp语言编写的程序命令。

结语

使用Vlisp计算机程序语言编译的从数字化地籍图提取宅基地基础信息的程序能较大程度且准确地提高宅基地基础信息数据库的建设效率,通过其对Auto CAD软件的二次开发,扩展了Auto CAD软件在特定专业需求的功能,能使宅基地基础信息库的建立顺利开展。

摘要:宅基地基本信息库的建设是项耗费时间的繁复工作,为了提高宅基地基本信息库建设的效率并保证基础数据的准确性,通过应用Vlisp计算机程序语言对AutoCAD软件的二次开发,编译了从宅基地数字化地籍图中提取宗地基本信息数据的应用与AutoCAD软件程序命令。

CAD二次开发软件 篇10

Auto CAD作为一款成功的计算机辅助软件在工程绘图中具有广泛的应用, 它可以帮助设计人员进行绘图设计。CAD已经成为现代工程设计最常用的工具, 在机械、建筑、电子等领域得到了广泛的应用。但由于CAD软件的通用性, 可能造成在某些专业领域内的功能不足或缺失[1]。因此, 有必要对CAD进行二次开发, 设计出符合特定领域的专业模块。这样可以扩展CAD的应用范围, 同样可以提高设计人员的工作效率还可以减少设计时出现的错误, 具有很强的实用价值。

以实际工程中法兰的绘制为例, 不同法兰的直径, 材质, 螺孔数, 厚度等参数均不同。因此, 如果对每一个法兰盘都进行绘制将浪费工程师大量的时间, 而且不便于管理。利用CAD二次开发技术, 不但可以快速准确的绘制所要求的法兰盘, 而且通过数据库技术可以将CAD与企业的ERP管理系统链接起来, 更方便企业的综合管理, 提高企业的管理效率, 节约成本。

1 Auto CAD.NET API概述

目前Auto CAD二次开发的工具比较多, 如Visual Lisp、VBA和Object ARX等。它们各存在着不同的优缺点, Visual Lisp采用Lisp语言开发, 简单但不直观。VBA采用Visual Basic语言开发, 开发简单方便但功能不足。而Object ARX是基于Visual C++开发语言的, 功能强但难以掌握[2]。

Auto CAD.NET API使用户可通过编程的方法利用程序集和开放库操作Auto CAD和图形文件。通过开放的对象, 它们可被许多不同的编程语言和环境访问。在Auto CAD中实现.NET API具有以下优点:

1) 有更多的编程环境可以访问Auto CAD图形。而之前的开发工具仅限于使用相应的语言。如VBA只能使用Visual Basic语言。

2) NET框架可以为32位及64位操作系统进行设计, 而VBA只能为32位操作系统设计。

3) 与那些传统编程语言相比, 如C++, .NET具有更低的学习要求来访问高级接口。

4) C#相比VC++采用了垃圾回收机制, 自行判断内存回收的时机并实行回收, 通过Dispose函数进行资源自动释放, 从而解决了内存泄漏问题。同时VC#NET的二次编译技术也使得其开发的程序编译成功之后可以实现编译后的程序与硬件无关, 从而使得程序员只是专注于程序本身, 因而成为了程序员开发工具的首选。因此, 在.NET框架下利用C#语言对Auto CAD进行二次开发, 具有完全面向对象、方便易用的特点, 是最合适的Auto CAD二次开发工具[3]。

2 Auto CAD中的插件开发

在Auto CAD二次开发中, 一般有两种实现方式。一种是通过外部应用程序启动Auto CAD, 并在CAD中作图;另一种是在CAD中加载插件, 利用插件来弹出我们所需的面板, 在面板上输入参数, 并可在CAD中画出图形。这两种方法的实现方法和原理大致相同, 只是实现的方式有所不同, 在这里我们以更具普遍性和代表性的插件开发为例来进行说明[4]。

在Auto CAD二次开发中, 为了使用.NET API托管封装的类, 我们需要先引入上述的这些DLL文件。先启动Visual studio 2008, 新建一个类库项目, 然后将鼠标放在项目名称上, 鼠标右键单击“引用”, 然后选择“添加引用”。在“添加引用”对话框中选择“浏览”, 然后找到上述的Ac Db Mgd.dll、Ac Mgd.dll、Ac Cui.dll文件, 点击确定将这些组建添加到项目中。此时, 我们已经将C#与.NET API连接起来了, 接下来我们就可以专心进行CAD的开发了[5]。

首先我们在Auto CAD的菜单项中, 添加我们的插件菜单, 这里将该菜单项命名为“法兰”, 其含有下拉子菜单。在项目添加一个类文件, 添加如下代码:

通过以上代码我们可以实现在C A D中添加插件菜单和去其子菜单, [Command Method (“Add Menu”) ], 可以在CAD中添加命令, 如在命令行中输入, Add Menu相当于单击“堵板”菜单。根据我们的要求可以任意添加菜单和子菜单, 最终可生成如下图所示的形式。

3 Auto CAD中的面板设计与绘图

添加好所要求的插件菜单和其子菜单后, 就可以对各个子菜单添加命令以实现各自不同的功能。现在假设当点击子菜单后弹出的是面板形式, 那么我们首先需要在项目中添加一个Windows Form窗体, 并将该窗体的命令与子菜单的命令相对应, 则可实现单击子菜单弹出相应的窗体。

而面板的设计则相对的比较容易, 我们可以根据Visual studio 2008集成环境中提供的各种控件如文本框、标签、按钮等, 设计自己想要的面板。我们以法兰为例设计一种面板, 如图2所示。

该面板比较简洁, 左上方为Data Grid View控件, 主要与数据库中的数据进行交互绑定, 通过查询等一些命令来显示数据库中的相关信息。左下方为Text Box控件, 主要用来输入数据下达命令。右上方为Picture Box控件, 主要用来显示预览图片, 右下方为按钮控件。这些按钮控件具体实现什么功能, 主要取决于内部包含相应的代码。双击控件我们就可以进入该控件的编程界面, 根据所实现的功能编写相应的程序。

对Auto CAD进行二次开发, 主要是用来绘图的, 下面我们就来介绍一下通过面板怎样实现在CAD中作图。由上述内容我们知道, 直线、园、注释、图层等均为Auto CAD的对象, 因此我们可以利用这些类来绘制图形, 下面以法兰为例进行说明。设置好面板上的相关数据后, 单击作图按钮, 则相应图形将显示在CAD的绘图界面中。法兰图形如图3所示。

4 Auto CAD与数据库链接

在工程应用中, 设计人员可能经常需要将设计好的图形保存下来, 如果图形太多则不方便管理, 查找起来也比较困难, 也不利于公司内部进行资源交流。因此, 在进行二次开发的时候将A u t o C A D与数据库联系起来是很有必要的。同时, 数据库也是CAD与企业的ERP管理系统链接起来的纽带, 这样方便企业的整体管理, 可以提高管理效率。

数据库主要分为本地数据库和远程数据库两种。本地数据库安装在所使用电脑上, 一般比较小, 用于个人电脑上的信息存储;远程数据库一般在公司的服务器上, 一般来说比较大, 远程数据库与本地数据库通过局域网或因特网进行连接, 实现本地与服务器之间的传递与下载。本文中我们以My SQL为本地数据库, 以SQL Server为远程数据库。由于它们之间操作方法类似, 我们主要以My SQL数据库为例进行说明。

要想实现Auto CAD与My SQL的连接, 必须在工程项目中引入My SQL的一个组件, 即my Sql data.dll[6]。

先在数据库中建一个表, 该表有四列型号、直径、螺孔数、厚度。在查询中, 我们可以根据已知的某些信息查找出所有符合条件的零件。实现代码如下:

从上述代码可以看出, 其过程是先与数据库取得连接, 然后通过查询语句返回我们所需要的信息。图2左上角中显示了库存中厚度为80mm的法兰信息。

5 结论

当设计好需要的插件时, 便可以对程序进行编译, 最终生成一个dll文件, 可以在CAD中输入Netload命令进行加载, 但显然这种方法太繁琐, 我们更希望每次在CAD启动时能自动加载。此时可在CAD安装文件support中的acad2007.lsp的末尾处添加命令 (COMMAND"Net Load""D:/Program Files/Auto CAD 2007/Support/My Menu.dll") 即可[5]。

本文主要介绍C#与.NET API技术相结合的一种Auto CAD二次开发方法, 并对其原理及实现各种功能的流程进行了简要的阐明。从文中的介绍中, 我们可以看到利用该方法可轻松实现Auto CAD的二次开发, 并且比较容易掌握, 只需具备一定的C#基础和CAD的一些基本常识便可以进行CAD的二次开发, 具有很好的实用价值。

摘要:AutoCAD二次开发技术在工程实践中起到了越来越重要的作用, 它可以帮助绘图人员从繁重重复的工作中解脱出来, 并且适合于不同的工程领域。本文详细介绍了基于.NET API的二次开发实现方法。利用该方法可以轻松的开发我们需要的各种插件, 准确的绘制各种图形。本文以工程中常见的法兰为例, 介绍了CAD插件的开发、面板的设计、图形的绘制, 及CAD与零件数据库的连接等。同时介绍如何将CAD软件与ERP管理系统连接起来, 提高企业的管理效率。通过实际的开发应用, 可以发现利用基于C#的.NET API技术, 能够轻松的实现CAD的二次开发, 而且该方法容易掌握, 实用性强, 可以大大提高工作效率。

关键词:AutoCAD二次开发,C#语言,.NETAPI,数据库,ERP,法兰

参考文献

[1]方毅.基于C#与AutoCAD的断面图绘制程序设计与应用[J].地理空间信息.2012, 10.10 (5) .

[2]余甚洋, 谢元礼.AutoCAD平台下坐标文件图形化模块C#实现[J].西北大学学报.2008, 9.6 (5) .

[3]蒋元星.基于C#的AutoCAD二次开发技术研究及应用[J].中国制造业信息化.2007, 9.36 (17) .

[4]尧燕.基于VC#.NET对AutCAD二次开发方法的研究[J].科学技术与工程.2008, 12.8 (23) .

[5]曾洪飞.AutoCAD VBA&VB.NET开发基础与实例教程[M].中国电力出版社.2009.

上一篇:柴油机的正确使用下一篇:法律