当前位置:文档之家› 利用VB二次开发AutoCAD提升打印功能_徐天晓

利用VB二次开发AutoCAD提升打印功能_徐天晓

利用VB二次开发AutoCAD提升打印功能_徐天晓
利用VB二次开发AutoCAD提升打印功能_徐天晓

[计算机应用/C A D]

利用V B二次开发A u t o C A D提升打印功能*

徐天晓

(七★八研究所 上海 200011)

[关键词]V B;A u t o C A D;二次开发;打印

[摘 要]利用V B(V i s u a l B a s i c)技术,对A u t o C A D的打印功能进行二次开发。所编写的程序使A u t o C A D打印P D F格式的电子图纸文件的速度显著提高。该文主要介绍了开发过程中的一些主要技巧。

[中图分类号]U662.9 [文献标识码]A [文章编号]1001-9855(2009)03-0061-04

I m p r o v i n g A u t o C A D's p r i n t f u n c t i o nb y V Bt e c h n o l o g y

X u T i a n x i a o

K e y w o r d s:V B;A u t o C A D;r e d e v e l o p m e n t;p r i n t i n g

A b s t r a c t:T h i sp a p e ri n t r o d u c e ss o m es k i l l so f r e d e v e l o p i n gA u t o C A D p r i n t f u n c t i o n su s i n gV

B t e c h n o l o g y.

A u t o C A Dd r a w i n g s c a n b e p r i n t e dm u c h e a s i e r a n df a s t e r u s i n g t h e s o f t w a r e t h a t r e d e v e l o p e d,e s p e c i a l l y t o P D F f o r m a t f i l e s.

0 引 言

A u t o C A D是船舶与海洋工程设计过程中最常用的工具之一。对A u t o C A D进行二次开发,往往能够显著提高设计绘图效率。

随着各大船级社逐渐开始采用基于P D F格式的电子图纸送审方式,图纸的设计绘制人员也将更多的参与到电子图纸的打印过程中。如果用A u t o-C A D本身的打印功能打印一份新的图纸,我们就需要设定打印机、打印样式表、图纸尺寸、打印范围、打印偏移、打印比例、图形方向等各个选项,显然,这一设置过程非常耗时,无法满足快速批量打印多种不同尺寸图纸的要求。因此,需要对A u t o C A D的打印功能进行二次开发,让程序自动完成除打印机和打印样式表外所有的设置项的设定,提高批量打印效率。本文主要介绍了用V B6.0开发打印程序过程中的一些技巧。1 程序的主要功能

本打印程序的目标用户为七★八研究所研发中心的图纸设绘人员,针对其使用特点,我们开发的

A u t o C A D打印程序具有以下功能:

1.1 独立保存的设置文件

程序将打印设置项保存在独立的i n i格式文件中,包括上次打印设置以及多个可自定义的常用设置组。程序启动时自动载入i n i文件中的上次打印设置。用户可从“打印预设”(参见图1)的多选框中选取需要的设置组,程序自动完成界面上多个打印选项的设定。

1.2 局部打印功能

考虑到设计人员在图纸绘图过程中常常需要打印图纸的局部区域用于研讨,程序提供了“局部打印”(参见图1)功能。在设定打印机、打印样式表、以及图纸尺寸(一般为A4或A3)以后,可直接选择任意矩形区域,以布满图纸的方式输出到打印机。

61

*[收稿日期]2008-12-15

[作者简介]徐天晓(1982.12-),男,汉族,浙江人,助理工程师,主要从事船舶与海洋工程轮机设计工作。

1.3 对图纸的排序功能

程序提供多种方式对图纸的打印顺序进行排列,比如按方位排列顺序或者按页码块中的页码顺序、或者由用户以栏选的方式指定顺序等。

1.4 图纸尺寸和比例的自动识别

A u t o C A D图纸的模型空间中,可能存在不同尺寸和比例的图纸。程序能够识别所使用的标准图框,并自动设置图纸尺寸和打印比例。(标准图框通常包括封闭多段线图框和块图框,因为七★八研究所用的图框为多段线图框,所以本文主要介绍对多段线图框的处理。)

2 程序的实现

打印的设置过程主要是对当前打开的d w g文件的布局对象(l a y o u t o b j e c t,这里定义为L a y o u t O b j)进行设置的过程。下面详细介绍打印设置项自动设定的实现过程。

2.1 打印机、打印样式表的设定

打印机和打印样式表都可通过调用i n i文件中

的设置项来设定。

用L a y o u t O b j.G e t P l o t D e v i c e N a m e s获取本机的打印机列表,并添加到多选框中;然后通过与i n i文件中的设置比较,将选用的打印机显示在“打印机名称”(参见图1)所对应的多选框中,同时赋值给L a y o u t O b j.C o n f i g N a m e,从而设定了打印机。

用L a y o u t O b j.G e t P l o t S t y l e T a b l e N a m e s获取本机的打印样式列表,添加到多选框中。通过与i n i文件中设置的比较,将选用的打印样式表显示在“样式表名称”(参见图1)所对应在多选框中,同时赋值给L a y o u t O b j.S t y l e S h e e t,从而设定了打印样式表。2.2 打印范围的设定

图框所包含的区域就是打印范围,所以程序可以通过读取图框的坐标来自动设定打印区域。

如图1所示,“指定图框特性”按钮可以让我们通过选择图框对象获得对应于多段线图框的图层和颜色特性或者对应与块图框的块名特性。然后,当我们用“选择并打印”按钮选择打印对象的时候, S e l e c t方法就可以这些特性作为F i l t e r T y p e和F i l t e r-D a t a的参数,自动过滤选择符合这些特性的图框,并添加到选择集中。

图1 打印程序界面

对于选择集中的每一个图框对象,程序会在其被打印时用G e t B o u n d i n g B o x P t M i n、P t M a x法得到图框区域的左下角点和右上角点坐标,我们也就得到了打印范围的坐标,同时可计算出打印区域的尺寸大小。用下面语句设定该图框对象的打印范围: L a y o u t O b j.S e t W i n d o w T o P l o t P t M i n,P t M a x。

需要注意的是,G e t B o u n d i n g B o x法得到的是世界坐标系的坐标(a c W o r l d),而打印过程使用的坐标是显示坐标系下的坐标(a c D i s p l a y D C S),因此需要用T r a n s l a t e C o o r d i n a t e s法进行坐标系转换,以避免在少数情况下,因显示坐标系与世界坐标系不同而造成的打印异常偏移的现象。这一点在A u t o C A D 所附带的开发帮助《A c t i v e Xa n d V B AR e f e r e n c e》中并没有说明,因此要特别注意。

2.3 图纸尺寸和打印比例的自动化设置

标准多段线图框内表示图纸信息的属性块,如页码块或者面积块等,其块的比例与图框的比例特性是一致的。程序读取属性块的比例作为图纸的比例,并与打印区域的尺寸结合起来可计算出该图框

62

对应的图纸尺寸,用于自动设置打印的图纸尺寸项。用L a y o u t O b j.S e t C u s t o m S c a l e法可以设置打印比例,用L a y o u t O b j.C a n o n i c a l M e d i a N a m e属性可以设置图纸尺寸。

如图1中“图纸尺寸”设置项,只有在使用局部打印功能,或者识别出来的图纸在图纸尺寸列表中没有找到对应项的情况下才被使用。其他情况下,程序忽略此项设置,只根据计算得到的图纸尺寸来设定该页的图纸尺寸。

因为设定图纸尺寸时的参数是图纸尺寸名称的字符串,比如“A4”、“A3”等,而我们计算得到的图纸尺寸只是数据,比如210×297、297×420等(单位:m m)。所以,可在打印机中自定义一系列用其尺寸来表示其名称的图纸,比如“210×297”、“297×420”,将两者一一对应起来,程序就可以根据图纸的尺寸来设定图纸了。用注册表的导入导出功能可以方便地对打印机自定义纸张进行移植。

2.4 打印偏移与图形方向的设置

打印偏移设定为居中打印,使用下面的语句:

L a y o u t O b j.C e n t e r P l o t=T r u e

图形方向可以通过计算打印范围的长宽比和图纸尺寸的长宽比来决定是纵向还是横向。通过L a y-o u t O b j.P l o t R o t a t i o n属性可设定图形方向。

最后,可以用下列语句实现打印:

`设置打印的份数,默认为1

A c a d D o c.P l o t.N u m b e r O f C o p i e s=1

`关闭后台打印方式

A c a d D o c.S e t V a r i a b l e"

B A

C K G R O U N

D P L O T",0

`打印错误报告切换为静默错误模式

A c a d D o c.P l o t.Q u i e t E r r o r M o d e

`打印到打印机

A c a d D o c.P l o t.P l o t T o D e v i c e l a y o u t O b j.C o n f i g N a m e

对选择集中的各个图框对象按顺序处理,批量打印就会进行下去直到完成。程序的编制过程中,还涉及到几个问题,在下文会作补充说明。

2.5 图纸尺寸列表和小尺寸框的过滤

通常,打印机的图纸尺寸非常多(20个以上),该项列表会非常长,并且列表中的很多图纸尺寸是我们不可能用到的图纸尺寸。在我们需要手动设定图纸尺寸的情况下,这会降低选择效率。所以,程序根据其名称规律,设置了“图纸过滤”选项(参见图1),过滤掉不会用到的图纸尺寸,仅保留常用的图纸尺寸,方便用户选择。

多段线图框的颜色和图层特性并不足以保证过滤后得到的全都是图框对象,一些小的封闭多段线可能因为它们的颜色和图层特性与标准的图框一样而被收入选择集中。这些多段线尺寸通常小于A4,可以以此为特征过滤掉这些小多段线。另外,在“按特定属性块中页码”(参见图1)顺序打印时,图框对象在排序的过程中,没有页码块的多段线图框对象会被从选择集中删除,而页码重复的图框对象仅保留一个,其他会被删除,以避免打印错误。

2.6 V B与A u t o C A D的连接

在一般情况下,V B与A u t o C A D连接可以用下面几个语句:

S e t A c a d=G e t O b j e c t(,"A u t o C A D.A p p l i c a t i o n")

S e t A c a d=C r e a t e O b j e c t("A u t o C A D.A p p l i c a t i o n") S e t A c a d=A c a d A p p l i c a t i o n

说明:第一句用于已经开启A u t o C A D软件后, V B程序与A u t o C A D的连接;第二句则在A u t o C A D 没有启动的时候,用于启动连接A u t o C A D;第三句能够根据A u t o C A D是否已经启动,从而自动连接或者启动A u t o C A D。但是,本语句只有在引用了A u t o-C A D的类库(T y p e L i b r a r y)的时候才能使用,第一、第二句则可以在不引用A u t o C A D的类库的时候使用。其优点是,不会因为编译时所引用类库的版本而导致对其他版本A u t o C A D软件的兼容性问题。

值得一提的是,如果一台电脑中安装有多个版本的A u t o C A D时,如果用上面语句,程序往往只会连接到程序列表中的第一个A u t o C A D程序。当然,我们也可以根据A u t o C A D版本号来选择连接顺序。下面举了几个对应版本号的例子:

A u t o C A D2004 对应 R16.0

A u t o C A D2006 对应 R16.2

可以用以下语句来选择软件版本的优先顺序: S e t A c a d=G e t O b j e c t(,"A u t o C A D.A p p l i c a t i o n.16.0")

I f E r r t h e n

E r r.c l e a r

S e t A c a d=G e t O b j e c t(,"A u t o C A D.A p p l i c a t i o n.16.2")

E n d i f

上述语句优先连接A u t o C A D2004,如果连接出错,则会连接A u t o C A D2006。

63

利用V B二次开发A u t o C A D提升打印功能

2.7 程序界面的切换

V B编译后的打印程序作为二次开发程序,在操作中需要能够使程序界面与A u t o C A D程序的界面进行相互切换,但S e t F o r e g r o u n d W i n d o w这个A P I 函数在w i n d o w s X P操作系统中存在一些问题:需要切换到前端显示的程序往往只会在任务栏中呈现橙色的闪烁,并不会显示到屏幕的最前端。因此,需要使用一个名为F o r c e F o r e g r o u n d W i n d o w的自定义函数,该函数引用G e t W i n d o w T h r e a d P r o c e s s I d,A t t a c h T h r e a d I n p u t,S h o w W i n d o w等A P I函数,通过将目标程序与当前最前端显示程序的线程交换,来强制实现目标程序的最前端显示,达到更方便地使用本程序的目的。3 结 语

A u t o C A D的广泛应用不仅仅因为其本身功能的强大,更在于其所支持的二次开发功能的强大。对A u t o C A D进行合理有效的二次开发,能在很大程度上提高工作效率。

本打印程序已经在七★八研究所得到了实际应用。在配合p d f F a c t o r y虚拟打印软件打印P D F电子图纸文件时,能大大提高打印速度;利用本程序直接批量打印A4、A3纸张的速度也很快,取得了良好的实用效果。

(上接第49页)

 表6 “海洋石油229”号改造前、后

运动特征参数理论预报结果

驳船状态“海洋石油

229”号

(改造前)

“海洋石油

229”号

(改造后)

“海洋石油

229”号

(改造后)

运输结构物30000t

导管架

30000t

导管架

25000t

平台组块

排水量(t)712466488064880吃 水(m)6.56.56.5

初稳性高G M(m)13.686.189.03

横摇角(°)4.443.6914.01

纵摇角(°)5.485.505.11

横荡幅值(m)6.196.045.89

垂荡幅值(m)7.737.637.63

纵荡幅值(m)3.933.703.70

横摇加速度(°/s2)0.680.832.45

纵摇加速度(°/s2)1.691.731.64

首摇加速度(°/s2)0.600.630.73

横荡加速度(g)0.220.170.40

垂荡加速度(g)0.270.290.30

纵荡加速度(g)0.140.140.12

说明:30000t导管架假定重心高度:51m,假定长度:200m;

25000t平台组块假定重心高度:42m;

分析海域:南中国海;有义波高H

s

:8.5m;波浪周期T p:

10.5s~16s;浪向:0°~180°;

分析软件:A Q WA-L I N E;分析时域:3小时;

横荡、纵荡加速度值中包含重力分量。

3 结 语

综合上述研究,“海洋石油229”号导管架下水

图9 “海洋石油229”号在正横浪中的

横摇角理论预报结果

驳船“浮托法”安装改造后,可填补中海油10000t ~25000t平台组块“浮托法”安装能力的空白,并仍保持约24000t导管架下水作业能力;同时,为我国后续大型导管架下水驳船的设计开阔了新思路,即大型导管架下水驳船可设计为前窄后宽的船型,兼顾大型导管架的下水和大型组块的“浮托法”安装作业能力,使大型导管架下水驳船发挥出更大的效能,更好地服务于海上安装工程。

[参考文献]

[1] A l pK o c a m a n,R i c h a r d N e w h o u s e,L e e T a y l o r,J u a nS e-

t o,R a yS c i p p a.I n t e r m a c650:C h a n g i n gf o r m f o r c h a n-

g i n g t i m e s[J].O f f s h o r e,2006,66(8):106~112.

[2] 海洋石油工程股份有限公司.3万吨导管架下水驳船

改造概念设计分析报告[R].2008.

[3] 杨晓刚.深水导管架滑移下水的安装分析技术和设计

方法[J].中国海上油气(工程),2003,15(3):4~9.

642009年6月

第3期

船 舶

S H I P&B O A T

J u n e,2009

N O.3

2021年如何选择autocad二次开发的工具

如何选择autocad二次开发的工具AutoCAD提供了三种主要的开发工具,分别是:使用C/C++的ObjectARX,VB/VBA的ActiveX开发,以及AutoLISP/VisualLISP开发工具。每一个开发者都有自己的爱好,但是抛开所有的偏爱,人们经常想知道哪一种最好,我到底应该选择哪种工具?给这些人的答案是:“它取决于你要完成什么工作。”每一种开发工具都有不同的东西,在某谢情况下都有不可比拟的优点。当决定究竟使用什么开发工具时,你可以问自己四个问题:哪种语言让我感觉最顺手(舒服)?我有多少时间?谁是我的目标用户,他们有多少使用AutoCAD的经验?我到底需要对AutoCAD控制到什么程度,需要多少可能的窗口类型来尽快完成工作?当我介绍不同开发工具所具有的不同功能时,你可能会明白为什么这四个问题是重要的。在谈及这几种开发工具时,我仅仅将它们看作在AutoCAD中使用的功能,而不将它们看作独立的应用程序。 ObjectARX: 在三种开发工具中,这种工具拥有对AutoCAD最深入的控制能力,能够提供最多类型的窗体。使用ARX可以向AutoCAD注册自己的命令,用户运行你的程序时无需了解关于AutoCAD更多的知识。这种便利的代价就是编制ARX程序比VBA和LISP程序需要花费更多的时间,因此用来编制简单的绘图工具有点浪费了。要掌握ARX的前提是你对C和C++非常熟悉,从个人观点来说,我最喜欢这种工具,但那是因为我做的99%的程序都是用C和C++语言,选择ARX意味着我

不用学习一门新语言。对我来说,回答“哪种语言让我感觉最顺手?”就足够了。ARX能够访问很多的AutoCAD底层工具(这些东西可能VBA和LISP并不能访问),这是大多数开发者选择ARX的主要原因,他们需要作一些用其他两种开发工具不能完成的工作。此外,这也是唯一一种能够确保你的代码安全(不被别人阅读或非法复制)的开发工具。如果你需要开发自定义实体,使用空间过滤,扩展一个使用其他开发工具的应用程序的功能,正在开发用于销售的第三方工具,或者用到一大堆用VBA和LISP不能访问的东西(或者费很大力气去实现的东西),那么ObjectARX是你的最佳选择。 VBA: 如果你是第一次开发AutoCAD应用程序,那么这就是最适合你的工具!这种工具对初学者来说非常友好,Visual Basic的代码阅读起来非常容易,很多初学者仅读了函数的名称就能理解一个问题。无论如何创建或者执行LISP命令来扩充你的访问手段,这种开发工具没有ARX和LISP那么多对AutoCAD访问的方式(译者注:这也有情可原,毕竟VBA和另外两种开发工具比起来年轻得多!)如果你对VBA非常精通,可以通过再对AutoCAD命令行进行仔细研究和分类(这句话可能不太通顺,原文是:you can subclass the AutoCAD command line),这样你就能实现LISP所能完成的所有功能!对VBA来说,最大的遗憾就是不能向AutoCAD注册命令,必须先用各种加在应用程序的方法将其对应的dvb文件加载,然后通过“工具/宏/宏”菜单项执行,或者在菜单项和自定义的工具栏按钮中执行,如果你的用户的基础知

AutoCAD二次开发实验一

实验一 ObjectARX .NET托管开发包的使用 一,主要内容 1、下载安装ObjectARX .NET托管开发包 2、创建AutoCAD命令 3、创建自定义用户菜单 4、创建自定义用户工具条 5、创建用户自定义窗体 二,主要步骤 1,下载安装ObjectARX 不同的ACAD版本用不同的开发包及开发环境 ACAD2000~ACAD2002 : VC++ 6.0 ACAD2004~ACAD2006 : https://www.doczj.com/doc/038730132.html, 2002 ACAD2007~ACAD2009 : https://www.doczj.com/doc/038730132.html, 2005 ACAD2010~ACAD2011 : https://www.doczj.com/doc/038730132.html, 2008 ACAD2012~ : https://www.doczj.com/doc/038730132.html, 2010 下载ObjectARX 在打开打开默认网页浏览器并浏览网站. 的网页上,点击License & Download(许可&下载). 填写必填字段并选择ObjectARX for AutoCAD 2012. 点击Submit(提交)按扭. 在下载页, 点击Download Now(现在下载)使用下载管理器或点击Standard Download Method(标准下载方法)使用你的网页浏览器的默认下载方法下载. 点击Save(保存)或用于保存文件到你的本地驱动器的选项。指定下载ObjectARX SDK安装包文件存放的位置。一旦安装包文件下载完成,就浏览你保存在本地的安装并双击它,安装向导将显示在ObjectARX <释放>对话框中, 指定一个新的安装位置或接受默认的安装位置。点击Install(安装)按扭. 如果没有遇到问题,安装向导完成后关闭它 安装ObjectARX向导和托管项目模板 一旦 ObjectARX SDK被安装,请使用默认目录c:\ObjectARX 浏览它的安装文件夹。 (1)AtuoCAD的类库都在此库。 2,Hello World程序创建 1)在https://www.doczj.com/doc/038730132.html, 2012中建项目HelloWorld 采用.NET托管API →从“项目类型”列表中选择第二个“Visual C#”,从模板中选择“类库”,输入项目名称“HelloWorld” →.单击“确定”按钮 如果弹出如下对话框说明没安装正确,可以手动加载托管DLL →从ObjectARX安装目录下加载acmgd.dll和acdbmgd.dll →使用.NET对象浏览器查看 AcMgd.dll--AutoCAD .NET托管类

基于VBA的AutoCAD二次开发及应用实例

基于VBA的AutoCAD二次开发及应用实例 时间:2011-10-03 18:25:09 来源:作者: 1引言 AutOCAD2005是AutOdesk公司的系列产品,该软件从其使用和设计思路上都秉承了工程制图人员的绘图习惯,能够非常轻松地绘制出带有平面视图和三维渲染效果的工程图纸,是绘图人员的一个理想工具。随着CAD基础理论和应用技术的不断发展,对CAD系统的功能要求也越来越高。因而AutoCAD 不可能完全满足每个用户的具体而特定的要求。设计人员希望它能从本质上减轻大量简单烦琐的工作量,使他们能集中精力于那些富有创造性的高层次思维活动中。 AutoCAD提供的开放式体系结构允许用户和开发者采用高级编程语言对其进行扩充和修改,即二次开发,能最大限度地满足用户的特殊要求,更方便、更规范、更专业的实现设计和绘图中的应用。VBA最早是建立在0ffice97中的标准宏语言,由于它在开发方面的易用性及具有的强大功能,许多软件开发商都将其嵌入自己的应用程序中,作为一种开发工具提供给用户使用。AutOdeSk公司自从Aut0CADRl4.0l版开始,内置了VBA开发工具。 新一代程序开发工具ViSual BaSic,不仅继承了面向对象方法的特性,同时具备可视化程序语言及程序产生器的概念。 VBA(visual Basic For Apphcation)是AutoCAD R12以后推出的一种新的编程环境,提供了以Visual Basic为基础的面向对象的开发特征及程序接口,能真正快速地访问AutOCAD图形数据库,能明显提高软件开发和维护的效率。 2 VBA的技术特性 2.1 VBA开发AUTOCAD的技术特点 VBA是微软开发出来的应用程序共享一种通用的自动化语言,它可以使常用的程序自动化,并可以创建自定义的解决方案。 VBA被集成到AutoCAD中,VBA和AutoCAD中强大的Activex自动化对象模型的结合,代表了一种新型的定制AutoCAD的模式构架。通过VBA,我们可以操作AutoCAD2004,控制ActiveX和其它一些应用程序,使之相互之间发生互易活动下面就是VBA的主要功能: (1)VBA提供强大的窗体创建功能,为应用程序建立对话框及其他屏幕界面。 (2)可以创建自己的工具条。 (3)可以创建功能强大的模块级宏指令,宏名实质上就是模块的过程名。 (4)提供建立类模块的功能,这对开发大型工程非常有用,因此类可以提供重用组。 (5)具备完善的数据访问和管理能力,通过ADO(ActivexData Objects),可以对Access数据库或其他外部数据库(像dBase,FoxPro等)实现访问和管理。此功能比直接使用AutoCAD的数据库管理系统要方便,且功能强大。 2.2 VBA AutoCAD ActiveX Automation对象模型 VBA是通过AutoCAD ActiveX Automation接口来建立和AutoCAD对象问的联系。ActiveX是建立在COM对象模型之上的一个标准通信协议,它允许对象之间通过一定的接口相互通信。

AutoCAD二次开发教程复习总结

CAD复习题及答案1、AutoLISP 2、VisualLISP 3、VBA 4、ADS 5、ObjectARX

6、.NET 托管API 7、ActiveX Automation

8、Visual Java 1、 AutoCAD二次开发方式有哪些?各自优缺点? 2、 AutoCAD 中实现ObjectARX .NET API 的有哪些优点? 3、 AutoCAD .NET API 的三个主要的DLL文件是? 4、简述ObjectARX .NET API所对应的https://www.doczj.com/doc/038730132.html,版本。 5、简述AutoCAD数据库的组成。 AutoCAD数据库是用来管理当前图形中的图元实体和其他非几何信息的容器对象,一个AutoCAD数据库包含一套固定的符号表和命名的对象词典,每一个符号表包含一个特定符号

表记录类的实例,例如层表(AcDbLayerTable)中包含层表的记录,块表(AcDbBlockTable)中包含块表记录,所有的AutoCAD实体均包含于块表记录中。词典提供了一种通用容器来存储对象,它可以保存AcDbObject对象以及其它对象,也可以创建新的对象词典,将新的数据库元素加入其中。 AutoCAD数据库的组成如图所示,从图中我们可以看出数据库主要由一下内容组成:1)层表AcDbLayerTable和层表记录AcDbLayerTableRecord,。 2)块表AcDbBlockTable和块表记录AcDbBlockTableRecord。AutoCAD中所有可见实体均存储在块表记录。块表中包含有两条特殊的记录*MODEL_SPACE(模型空间)和*PAPER_SPACE (图纸空间)。 3)其他符号表和符号表记录。 4)命名对象词典。缺省情况下当AutoCAD数据库被建立以后,词典中就包括了组词典以及MILINE样式词典。 5)符号表和命名对象词典都是存储数据库对象的容器,用于组织和管理数据库对象。AutoCAD数据库通常有9个固定类型的符号表,开发者不能向数据库中新增或者删除任何一种类型符号表,能实现的是向符号表中添加对应的符号表记录。 6、 Application 对象是AutoCAD .NET API 对象模型的根对象,它包括哪些部分? Application 对象是层次结构的根,而且它提供对AutoCAD 的主窗口的访问。

AutoCAD的二次开发

浅谈AutoCAD的二次开发 林学与园林学院 06园林傅欣蕾 摘要:通过对AutoCAD软件发展史的概述,从中归纳出CAD的总体发展趋势。从当今各行业所需的CAD专业化功能,提出对其进行二次开发的意义及具体实施步骤。 关键词:AutoCAD 发展史二次开发专业化功能 1.AutoCAD的发展简史: 1.1、第一次CAD技术革命—曲面造型系统 60年代出现的三维CAD系统只是极为简单的线框式系统。这种初期的线框造型系统不能有效表达几体数据间的拓扑关系。进入70年代,随着贝赛尔算法促使人们用计算机处理由线及曲面问题变得可行。 1.2、第二次CAD技术革命—实体造型技术 1979年世界上第一个完全基于实体造型技术的大型CAD软件发布。由于实体造型技术能够精确表达零件的全部属性,在理论上有助于统一CAD、CAE、CAM的模型表达,给设计带来了惊人的方便性。 1.3、第三次CAD技术革命—参数化技术 1.4、第四次CAD技术革命—变量化技术 成功运用参数化技术之后,开发人员发现了参数化技术尚有许多不足之外。首先,“全尺寸约束”这一硬性规定就干忧和制约着设计者创造力及想象力的发挥。再者,如在设计中关键形体的拓扑关系发生改变,失去了某些约束特征也会造成系统数据混乱。 1993年全新体系结构的I-DEAS Master Series软件问世,它第一次将变量化付诸实践。变量化技术既保持了参数化技术的原有优点,同时又克服了它的不足之处。无疑,变量化技术成就了SDRC,也驱动了CAD发展的第四次技术革命。 1.5、CAD的发展方向 任何一种软件都是有缺陷而非完美无瑕的。AutoCAD这一软件也是一样,只有在不断的发展中,找到自己的不足力求弥补,才能趋向臻化,达到一种完美。 纵观CAD的发展史,我们可以大略地看出该软件是朝着“人工智能化”、“专业应用化”等方向发展的。 而实现这样的发展方向的最佳手段就是通过对CAD的二次开发。将各类专业设计技术研制成CAD系统的各类设计工具和知识,从而使使用者能按照专业设计的方向进行,可以大大提高CAD的设计效率。

AutoCAD的二次开发

AutoCAD的二次开发主要涉及以下内容: (1)编写各种用户自定义函数并形成若干LISP、ARX、VLX或ADS文件,以及一些DCL文件。 (2)建立符合自己要求的菜单文件,一般可在AutoCAD原菜单文件内添加自己的内容,对于AutoCAD2000版本还可增加部分菜单文件,然后经交互方式加入到系统中去。 (3)在系统的ACAD.LSP或类似文件中加入某些内容以便进行各种初始化操作,如在启动时立即装入一些文件等。 (4)通过系统对话框设置某些路径。这些操作在程序开发成功后向其它AutoCAD系统上安装应用,特别是需要大批安装时,需要进行很多文件检索、内容增删、子目录创建、文件拷贝、系统设置等繁琐工作,如能令上述工作全部自动进行,使整个二次开发程序在无人干预的情况下嵌入系统,将大大提高工作效率。为此笔者用VC++开发了一套自动安装程序,使原本需要五、六分钟的人工操作在十几秒内即可自动完成。 一、基本思路 整个安装程序遵循以下思路: 1)首先获得所在机器AutoCAD2000系统的安装路径; 2)寻找菜单文件AutoCAD2000\\support\\acad.mnu,打开文件并将要添加的内容加至末尾; 3)寻找LISP文件AutoCAD2000\\support\\acad2000doc.lsp,打开文件并将要添加的内容加至末尾; 4)创建一个预先命名的子目录,将所有二次开发形成的各类文件拷入;

5)给出信息框,告知安装成功,如有问题则告知安装失败。 需要指出的是,在添入acad2000doc.lsp的内容中须有如下语句:(command“_menu”(strcat (getvar "menuname") ".mnu")),目的是为了强制执行菜单文件装入命令,将改动后的acad.mnu文件编译后装入。另外,在添入acad2000doc.lsp的内容中还有一赋值语句,将准备创建的包含所有二次开发生成文件的子目录全路径名赋予一全局变量,以供二次开发程序在需要时调用,从而避免了在AutoCAD环境下交互设定路径的麻烦。 二、实现方式及关键函数 为获得AutoCAD2000的安装路径,需要利用WINDOWS系统注册表的有关功能。 首先通过RegOpenKey函数打开注册表: HKEY hKey; LONGret=RegOpenKey( HKEY_LOCAL_MACHINE, "Software\\Autodesk\\AutoCAD\\R14.0\\ACAD-1:804", &hKey); 其中第一参数HKEY_LOCAL-MACHINE为注册表中预定义的主键句柄,第二参数为注册表中HKEY_LOCAL_MACHINE下的子键内容,第三参数hKey将返回一子键句柄,用于接下来的键值查询。若该函数运行成功,将返回一长整型数ERROR_SUCCESS。 接下来利用RegQueryValueEx函数进行键值查询: DWORD dwType=REG_SZ; BYTE szData[100];

Autocad-VBA二次开发简易教程

第一课:入门 1.为什么要写这个教程 市面上ACAD VBA的书不多,它的帮助是英文版的,很多人看不懂。其实我转行已经好几年了,而且手艺也慢慢生疏了,写个教程对自己来说也是一次复习。 2.什么是Autocad VBA? VBA是Visual Basic for Applications的英文缩写,它是一个功能强大的开发工具,学好VBA可以成倍甚至成百、成万倍提高工作效率,在工作中,有很多任务仅用ACAD命令不可能完成的,只要学好VBA就可以做到,相信到时候您一定会得到同事的佩服、老板的器重。 3、VBA有多难? 相信大家都知道Basic是的含义。应该承认,我的水平还不高,错误之处在所难免,如果大家发现错误一定要提出批评,以便及时更正。 4、怎样学习VBA? 介绍大家一个学习公式:信心+恒心=开心。仔细阅读本教程,完成例题,在学习的过程中一定要多思考,多想一些是什么、为什么。本教程将陆续发布在CAD世界论坛上,您不需要付费就可以学习。本作者在此郑重承诺:关于本教程中有任何疑问,可以跟贴提问,只要有时间,本人一定会耐心解答。我不会发到任何人的邮箱中,您自己在论坛上找就可以了,请不要再向我索要这份教程。 5、现在我们开始编写第一个程序:画一百个同心圆 第一步:复制下面的红色代码 第二步:在模型空间按快捷键Alt+F8,出现宏窗口 第三步:在宏名称中填写C100,点“创建”、“确定” 第四步:在Sub c100()和End Sub之间粘贴代码 第五步:回到模型空间,再次按Alt+F8,点击“运行” Sub c100() Dim cc(0 To 2) As Double '声明坐标变量 cc(0) = 1000 '定义圆心座标 cc(1) = 1000 cc(2) = 0 For i = 1 To 1000 Step 10 '开始循环 Call ThisDrawing.ModelSpace.AddCircle(cc, i * 10) '画圆 Next i End Sub 也许您还看不懂上面的代码,这没有关系,只要能把同心画出来就可以了,祝您成功。 第二课编程基础 本课主要任务是对上一课的例程进行详细分析 下面是源码: Sub c100() Dim cc(0 To 2) As Double '声明坐标变量 cc(0) = 1000 '定义圆心座标 cc(1) = 1000 cc(2) = 0 For i = 1 To 1000 Step 10 '开始循环 Call ThisDrawing.ModelSpace.AddCircle(cc, i * 10) '画圆

AutoCAD二次开发教程

第 1章 Hello World: 工程的创建 在这一章中,我们将不使用ObjectARX向导来创建一个新的工程。我们将使用Visual Studio .NET来创建一个新的类库工程。通过这个工程,你可以创建一个能被AutoCAD装载的.NET dll文件。这个dll文件会向AutoCAD加入一个名为“HelloWorld”的新命令。当用户运行这个命令后,在AutoCAD 命令行上将显示“Hello World”文本。 1) 启动Visual https://www.doczj.com/doc/038730132.html,,选择”文件>新建>工程”(File> New> Project)。在新建工程对话框中选择工程类型为”Visual Basic 工程”,然后选择”类库”模板,在工程名字框中输入”Lab1”,然后选择工程存放的位置。点击确定按钮来创建工程。 2) 在工程的Class1.vb文件中,一个公有类“Class1”已经被系统自动创建了。接下来向这个类加入命令。要加入命令,你必须使用AutoCAD .NET托管封装类。这些托管封装类包含在两个托管模块中。要加入对这两个托管模块的引用,请用鼠标右键单击”引用”然后选择”添加引用”。在弹出的”添加引用”对话框中选择”浏览”。在”选择组件”对话框中,选择AutoCAD 2006的安装目录(这里假定为C:\Program Files\AutoCAD 2006\),在这个目录下找到“acdbmgd.dll”然后选择并打开它。再一次选择”浏览”,在AutoCAD 2006 的安装目录下找到“acmgd.dll”并打开它。当这两个组件被加入后,请单击”添加引用” 对话框中的”确定”按钮。正如它们的名字所表示的,acdbmgd.dll包含ObjectDBX托管类,而acmgd.dll包含AutoCAD托管类。 3) 使用对象浏览器(Visual https://www.doczj.com/doc/038730132.html,的”查看>其它窗口>对象浏览器”菜单项)来浏览加入的两个托管模块所提供的类。请展开“AutoCAD .NET Managed Wrapper”对象(在对象浏览器中显示为acmgd),在整个教程中我们将使用这个对象中的类。在本章中,我们将使用“Autodesk.AutoCAD.EditorInput.Editor”类的一个实例来在AutoCAD命令行中显示文本。请再展开“ObjectDBX .NET Managed Wrapper” 对象(在对象浏览器中显示为acdbmgd),这个对象中的类将被用来访问和编辑AutoCAD图形中的实体(这部分内容将在以后的章节中介绍)。 4) 引用了ObjectARX .NET 封装类后,我们就可以导入它们。在Class1类的声明语句(位于Class1.vb文件的顶部的)之前,导入ApplicationServices, EditorInput 和 Runtime 命名空间。 Imports Autodesk.AutoCAD.ApplicationServices Imports Autodesk.AutoCAD.EditorInput Imports Autodesk.AutoCAD.Runtime 5) 接下来在类Class1中加入命令。要加入能在AutoCAD 中调用的命令,你必须使用“CommandMethod”属性。这个属性由Runtime命名空间提供。在类Class1中加入下列属性和子程序。注意续行符” _”的使用。 Public Class Class1 _ Public Sub HelloWorld() End Sub End Class 6) 当“HelloWorld”命令在AutoCAD中运行的时候,上面定义的HelloWorld子程序就会被调用。在这个子程序中,一个Editor类的实例将被创建。Editor类拥有访问AutoCAD命令行的相关方法,它还包括选择对象和其它一些重要的功能。AutoCAD当前活动文档的Editor 对象可以使用Application类来访问。当Editor对象被创建后,你可以使用它的

AutoCAD二次开发

第一课:入门 1.为什么要写这个教程市面上ACAD VBA的书不多,它的帮助是英文版的,很多人看不懂。其实我转行已经好几年了,而且手艺也慢慢生疏了,写个教程对自己来说也是一次复习。 2.什么是Autocad VBA? VBA是Visual Basic for Applications的英文缩写,它是一个功能强大的开发工具,学好VBA可以成倍甚至成百、成万倍提高工作效率,在工作中,有很多任务仅用ACAD命令不可能完成的,只要学好VBA就可以做到,相信到时候您一定会得到同事的佩服、老板的器重。 3、VBA有多难?相信大家都知道Basic是的含义。应该承认,我的水平还不高,错误之处在所难免,如果大家发现错误一定要提出批评,以便及时更正。 4、怎样学习VBA?介绍大家一个学习公式:信心+恒心=开心。仔细阅读本教程,完成例题,在学习的过程中一定要多思考,多想一些是什么、为什么。本教程将陆续发布在CAD世界论坛上,您不需要付费就可以学习。本作者在此郑重承诺:关于本教程中有任何疑问,可以跟贴提问,只要有时间,本人一定会耐心解答。我不会发到任何人的邮箱中,您自己在论坛上找就可以了,请不要再向我索要这份教程。 5、现在我们开始编写第一个程序:画一百个同心圆第一步:复制下面的红色代码第二步:在模型空间按快捷键Alt+F8,出现宏窗口第三步:在宏名称中填写C100,点“创建”、“确定” 第四步:在Sub c100(和End Sub之间粘贴代码第五步:回到模型空间,再次按Alt+F8,点击“运行” Sub c100( Dim cc(0 To 2 As Double '声明坐标变量 cc(0 = 1000 '定义圆心座标 cc(1 = 1000 cc(2 = 0 For i = 1 To 1000 Step 10 '开始循环 Call ThisDrawing.ModelSpace.AddCircle(cc, i * 10 '画圆 Next i End Sub 也许您还看不懂上面的代码,这没有关系,只要能把同心画出来就可以了,祝您成功。第二课编程基础本课主要任务是对上一课的例程进行详细分析下面是源码: Sub c100( Dim cc(0 To 2 As Double '声明坐标变量 cc(0 = 1000 '定义圆心座标 cc(1 = 1000 cc(2 = 0 For i = 1 To 1000 Step 10 '开始循环 Call ThisDrawing.ModelSpace.AddCircle(cc, i * 10 '画圆 Next i End Sub 先看第一行和最 后一行:Sub C100( …… End Sub C100是宏的名称,也叫过程名称,当用户执行 C100时程序将运行sub和end sub之间的所有指令。第二行: Dim cc(0 To 2 As Double '声明坐标变量后半段“'声明坐标变量”自动变为绿色字体,它是代码语句的注释,它不会影响程序运行,它的作用是告诉阅读者程序员的想法。对于简单的程

AutoCAD二次开发工具的比较

AutoCAD二次开发工具的比较 AutoCAD是美国Autodesk公司的产品,是当今世界最为流行的计算机辅助设计软件之一,广泛应用于机械、建筑、电子、工程等许多领域。它如此风靡的原因除了具有各种强大的绘图及编辑功能、友好的用户界面、易于操作等特性之外,还在于它所具有的开放式结构(Open Architecture,即允许用户开发自己的命令、标准库文件和各种应用程序)使得通过对AutoCAD进行二次开发来完成各类设计工作变得更加容易。 现在对AutoCAD二次开发工具的几种方法作一个介绍,对比各自的优势及不足,给出各自的适用条件。 1.AutoLISP AutoLISP是AutoCAD最早的一种二次开发语言。它是一种嵌入在AutoCAD内部的CommonLisp程序设计语言子集,并扩充了极强的图形处理功能。此外还可为AutoCAD添加某些特殊的函数功能,如制作幻灯片、菜单等。 AutoLISP应用程序既可完成通常的科学计算和数学分析,又能直接调用几乎全部AutoCAD命令。这两者的有机结合,使它成为专业CAD开发者强有力的理想工具。而Lisp是目前研究和开发人工智能与专家系统CAD的主要编程语言。 AutoLISP有如下优点:(1)语言规则十分简单,易学易用。对计算机了解不太深入的工程专业人员,仅需经短期的学习,就可以熟练掌握这门语言。该语言的简洁性是其它许多计算机语言所无法相比

的。(2)直接针对AutoCAD,解释执行,易于交互。AutoLISP提供的大多数函数都是直接针对AutoCAD操作的,用AutoLISP可编写访问AutoCAD图形数据库(DWG)的操作。(3)解释执行立竿见影。程序员既可以一次运行一段AutoLISP代码,也可以在AutoCAD 的”Command:”下逐条键入AutoLISP指令,立即得到结果。 随着计算机技术的发展,CAD编程逐渐复杂,代码越来越庞大,AutoLISP的缺点也越来越明显。如,综合处理能力差、程序运行速度慢、软件质量不易保证、开发环境集成度低和与人的思维方式不太一致等。由于AutoLISP的这些特点,它仅适合于有能力的终端用户作些自己的开发任务,如今AutoLISP的使用已经逐渐被其它几种开发工具所取代。 2.ADS 它是AutoCAD开发系统(AutoCAD Development)的简称。ADS 的编程界面可使用户用C语言来实现AutoCAD的用户化,既可运行第三方开发的ADS应用程序,也可以编写自己的ADS应用程序。 与AutoLISP相比,ADS程序的优越性如下:(1)具备错综复杂的综合大规模处理能力;(2)由于是编译开发环境,可以检查程序设计语言的逻辑错误,且执行速度快;(3)程序源代码的可读性好于LISP;(4)引入C++高级语言后,ADS也同样具有面向对象的功能,程序层次分明,清晰可读,从而使软件的可维护性得到提高;(5)经过良好封装,ADS C++的程序代码比ADS C程序简洁得多,许多时候比AutoLISP更简洁;(6)ADS C++的程序能够减少程序出错的概率。

利用C#进行AutoCAD的二次开发

利用C#进行AutoCAD的二次开发(一)转自明经通道 众所周知,对AutoCAD进行二次开发用到的主要工具有:ObjectArx,VBA,VLisp。但它们的优缺点是显而易见的:ObjectArx功能强大,编程效率高,但它的缺点是编程者必须掌握VC++,而这门语言非常的难学;VBA和VLisp虽然简单易上手,但它们对于开发大型的程序好象无能为力。那究竟有没有一种语言能结合它们的优点而尽量避免它们的缺点呢? 回答是肯定的,那就是微软新推出的21世纪编程语言C#。关于C#的详细介绍,大家可以参考有关的文章。 C#是通过AutoCAD ActiveX 这座桥梁来和AutoCAD之间进行通讯的。AutoCAD ActiveX 使用户能够从AutoCAD 的内部或外部以编程方式来操作AutoCAD。它是通过将AutoCAD 对象显示到“外部世界”来做到这一点的。一旦这些对象被显示,许多不同的编程语言和环境就可以访问它们。关于AutoCAD ActiveX 的情况,大家可以参考AutoCAD自带的帮助。 呵呵,说了这么多无聊的,还是让我们通过一个具体的例子来说明怎样利用C#进行AutoCAD的二次开发吧。在介绍例子之前先讲一下有关的配置: (1)Visual Studio .net (2003和2002都可以,我用的是2002)(2)AutoCAD2000以上版本(我用的是2004)这个例子非常简单,就是通过C#建立的窗体来启动AutoCAD并画一条直线。下面是编程的具体步骤: (1)通过Visual Studio .net 建立一C#的windows应用程序。 (2)在“解决方案资源管理器”中右击“引用”标签,在弹出的菜单中选择“添加引用”,在“添加引用”对话框中选择“com"选项卡下的下拉列表框中的“AutoCAD 2004 Type Library"项(注意:不同版本的CAD的数字不同),单击右边的“选择”按钮,最后单击下面的“确定”按钮。(3)在C#窗体中加入两个文本框和一个按钮,分别用于输入直线起点、终点的坐标和在CAD中画直线。下面主要解释一下添加的代码。(a)在程序的开头加入:using AutoCAD;//导入AutoCAD引用空间 (b)在窗体的变量声明部分加入: private AcadApplication a;//声明AutoCAD对象 (c)在窗体的构造函数部分加入:a=new AcadApplicationClass();//创建AutoCAD对象 a.Visible=true;//使AutoCAD可见 (d)在按钮的消息处理函数中加入: double[] startPoint=new double[3]; //声明直线起点坐标 double[] endPoint=new double[3];//声明直线终点坐标 string[] str=textBox1.Text.Split(',');//取出直线起点坐标输入文本框的值,文本框的输入模式为"x,y,z" for(int i=0;i<3;i++) startPoint=Convert.ToDouble(str);//将str数组转为double型 str=textBox2.Text.Split(',');//取出直线终点坐标输入文本框的值 for(int i=0;i<3;i++) endPoint=Convert.ToDouble(str); a.ActiveDocument.ModelSpace.AddLine(startPoint,endPoint);//在AutoCAD中画直线 a.Application.Update();//更新显示 好了,简单吧,你可以试着编译一下。关于上面一些语句的用法,我会在下一讲中作详细介绍。

关于VB对AutoCAD二次开发学习笔记

关于VB对AutoCAD二次开发学习笔记 □By OYLS 基于VB对AutoCAD的二次开发,主要是通过运用VB编程对AutoCAD软件中的基本绘图操作进行控制,了解AutoCAD软件中的常用命令。在编程过程中我们要借助AutoCAD软件中的“帮助文件”,即“AutoCAD开发人员帮助”文档。 一、获取VB对AutoCAD的控制权: 先定义变量acadApp,acadDoc: Public acadApp As AcadApplication Public acadDoc As AcadDocument Function boot_CAD() As Boolean On Error Resume Next Set acadApp = GetObject(, "AutoCAD.Application") If Err Then Err.Clear Set acadApp = CreateObject("AutoCAD.Application") If Err Then MsgBox "您没有安装AutoCAD ,或安装版本错误!", vbOKOnly + vbInformation, "CAD简易绘图系统" boot_CAD = False BtOK = False Exit Function End If End If Set acadDoc = acadApp.ActiveDocument acadApp.Visible = True boot_CAD = True End Function 需要说明的是,我们只有先对CAD获取了控制权以后才能有效地运用VB编程方式进行CAD的基本绘图操作。不然,以后的各种对CAD的操作将无法得以实现。 二、基本绘图思路: 先了解所绘对象的基本属性,可以说,也正是由于对象的各种属性才构成了一个特性为一而标准的实体。对象的属性特点我们可以事先通过CAD帮助文件查找得出。接下来我们就应了解创建方法,同样,我们也是通过CAD帮助文件进行查找。可以看出,在整个绘图编程过程中我们都离不开CAD帮助文件,所

用VB对AutoCAD进行二次开发

用VB对AutoCAD进行二次开发|用VB对AutoCAD进行二次开发 A utoCAD一直是CAD市场中的主流产品。随着AutoCAD的日益普及,在其上进行二次开发的工具也不断更新。从早期的Auto Lisp、ADS、 DCL到现在流行的 Object ARX、ActiveX Automation、Visual Lisp,均可十分方便地对AutoCAD进行二次开发。本文主要讨论关于运用Visual Basic对AutoCAD基于ActiveX Automation的二次开发技术。选用ActiveX有两个原因,一是因为Visual Basic的普及性与易用性,二是采用这种方法进行二次开发可方便地实现与其它图形软件的接口,如与Solid Works实现实体造型与二维绘图的结合,以及根据用户的特殊需要开发出一定功能的软件。 二、ActiveX Automation技术 AutoCAD中的ActiveX Automation是微软公司ActiveX规范的具体应用。它通过基于ActiveX的自动化对象,为其他应用程序提供了访问AutoCAD内部功能的方法,是AutoCAD最新的开发接口。在运行时,AutoCAD与其他应用程序之间的关系是服务器与客户的关系,开发人员使用支持ActiveX规范的编程语言(如VB、Dephi等)能通过访问AutoCAD的对象模型,把AutoCAD的强大功能集成到应用程序中.AutoCAD的对象模型是一种树型结构模型,根为"AutoCAD Application",AutoCAD中的所有对象都是AutoCAD Application的子对象。图1所示为AutoCAD对象模型的层次结构树,其中父对象与子对象之间的关系并不是对象继承关系,而是包含关系。 图1 AutoCAD中ActiveX对象的总结构图 三、ActiveX Automation的使用方法 1. Application对象 如果在计算机系统上安装了AutoCAD,则Windows会自动将其所有的信息注册到系统注册表里。那么在启动Visual Basic后,用户可以象调用VB自己的对象一样调用AutoCAD所提供的ActiveX。 在编程、调试或运行时至少应该有一个AutoCAD副本在运行。可以通过以下的代码创建AutoCAD对象。 Dim AcadApp as Object ’定义一个对象 On Error Resume Next Set AcadApp =GetObject(,"AutoCAD.Application") If Err Then ’如果没有一个AutoCAD副本在运行 Err.Clear Set AcadApp =CreateObject("AutoCAD.Application") AcadApp.Visable =True ’启动一个AutoCAD副本并设为可见 If Err Then MsgBox Err.Description ’如果失败,给出错误提示 Exit Sub End If End If 2. Preferences与Document对象 与AutoCAD中的Preferences对话框的作用相同,通过Preferences对象可以读取或设置AutoCAD的一些基本设置。Preferences对象通过Application的Preferences 属性返回。 Dim AcadPref as Object

1AUTOCAD二次开发C#系列

AutoCAD二次开发C#系列(1)--AutoCAD对象基础 刚发了开篇,就有人提出了不少意见,首先声明,我也才接触不久,不是专家,仅供学习交流之用.错误之处请见谅,并指出. 一.AutoCAD对象分为: 1.图形对象,例如直线(Lines),球体(Sphere),文本(Text)和尺寸(Dimensions) 2.样式设置对象,例如线型(Linetypes)和尺寸标注样式(DimStyles)等. 3.组织结构,例如图层(Layers)和组(Groups)和块(Blocks)等. 4.图形显示对象,例如视图(View)和视口(Viewport)等. 5.AutoCAD应用程序(Application)和文档(Document). 其中最上面一层是AutoCAD应用程序对象,是对象模型的基础,称为根对象.各个对象之间的层次关系将在以后的章节中得到体现,下面介绍AutoCAD对象的创建以及图形文件的一般操作. 二.图形文件的使用(简单的不做详细介绍) 1.创建新图形文件: AcadApplication app=new AcadApplication(); AcadDocument doc=app.ActiveDocument; 2.打开已有图形文件,使用Documents对象的Open方法: public CADHelper(string filepath) { if(!File.Exists(filepath)) throw new Exception("文件不存在!"); app=new AcadApplication(); app.Visible=true; doc=app.Documents.Open(filepath,Type.Missing,Type.Missing); }//C#中默认的参数使用Type.Missing代替. 3.保存图形文件,使用ActiveDocument的Save和SaveAs方法: app.ActiveDocument.Save();和 app.ActiveDocument.SaveAs("f:/CAD/Mydwg.dwg",Type.Missing,Type.Missing); 4.导入(Import)导出(Export)文件. object.Import(FileName,InsertionPoint,ScaleFactor)

用Autolisp对AutoCAD进行二次开发

用AutoLISP对AutoCAD进行二次开发 一、什么是CAD的二次开发?(为什么需要对CAD进行二次开发) 我们在设计、绘图时采用AutoCAD、ProE、Solidwork、UG等设计软件,在复杂问题或特殊用途的设计中,各种软件的原有功能往往难以解决问题,例如CAD里没有直接绘制正弦曲线和抛物线等曲线的命令。因此,只是会使用各软件的基本功能是不够的,根据我们的特殊用途进行软件的用户化定制和二次开发,往往能够大大提高工作效率和技术水平。 二、什么是AutoLisp?如何用其进行二次开发? AutoLISP是由Autodesk公司开发的一种LISP程序语言,LISP是List Processor的缩写。通过autolisp 编程,可以节省工程师很多时间。AutoLISP语言作为嵌入在AutoCAD内部的具有智能特点的编程语言,是开发应用AutoCAD不可缺少的工具。 当前AutoCAD的二次开发工具主要有:VisualLisp(它是AutoLisp的集成开发环境)、VBA、ObjectARX和.NET API等,这里只介绍AutoLisp。 下面由浅入深地介绍一下如何应用AutolLisp进行二次开发。 最简单的应用是在命令行中编写和执行lisp语句,进行简单的计算、绘图、查询等操作。 稍复杂些的就要把语句(代码)放到扩展名为lsp的文件中,用的时候先加载到CAD中,然后输入自定义的函数名执行。 当开发的程序越来越多,就需要进行有效的管理,使我们能方便的找到和应用这些程序。到那个程度的时候就需要用到用户自定义的工具按钮、菜单和对话框了。 图1 根据程序数量选择二次开发形式 (1)在命令行中编写和执行程序 例1:(+ 2 3) 例2:(setq a 2) (setq b 3) (+ a b) 例3:(setq a 2)(setq b 3)(+ a b) 例4:(setq p1 (list 0 0))(setq p2 (list 200 200))(command “line” p1 p2 “”) ;;语句之间不空格 例5:(setq p1 (list 0 0)) (setq p2 (list 200 200)) (command “line” p1 p2 “”) ;;语句之间空格 ;; 表示语句(程序代码)的注释

相关主题
文本预览
相关文档 最新文档