AutoCAD开发小记

本文介绍了AutoCAD的二次开发工具,重点讲述了从ADS到ARX的发展,以及ARX在AUTOCAD2000中的应用。文章详细解析了AutoCAD数据库的结构,包括符号表和对象字典,以及如何创建和访问基本实体、图块、属性块。此外,还讨论了对象字典的操作和使用,以及扩展记录的概念。最后,简要提及了三维实体造型和布尔运算在复杂零件造型中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

AUTOCAD二次开发工具

       ARX(AutoCAD Runtime eXtension实时运行扩展)作为继AutoLISPADS后的第三代开发工具,采用全新的面向对象编程技术。

 

       19856月推出的AutoCAD2.17版本使用AutoLISP作为AUTOCAD内嵌语言,与AUTOCAD绑定一起,向用户提供了用AutoLISP设计应用程序的二次开发环境。AutoLISP是种解释型语言,主要用来修改和扩充ACAD的命令及系统菜单、设计对话框驱动程序、实现对图形库的直接访问和修改。这是AUTOCAD提供的第一代开发环境

       第二代开发环境是R11版本提供的ADSAUTOCAD Development System)开发系统。该系统实际上向用户提供了用C语言编写应用程序的开发环境。ADS环境用C语言编写,除了可以使用标准C库函数外,还可以使用对AUTOCAD进行操作的ADS函数。ADS虽脱离了AUTOCAD环境,但其编写的程序不能单独运行,只能作为一组外部函数被AUTOLISP装入和调用,实际上就是在AUTOLISP之上包了一层,是AUTOLISP的客户。

如今,在AUTOCAD2000中不再支持ADS开发。ADS已完全被ARX所取代。

       AUTOCAD第三代开发环境和工具包括ObjectARXVBAVisual LISP

 

    存储在AutoCAD数据库的对象(DBObject),包括可见几何实体对象和不可见的非几何对象等,以组符号表和一个有名对象字典的结构形式组织而成,符号表和数据字典为容器对象(Container Object),包含了其他对象,其作用是组织和管理数据库对象。数据库主要包括有9个符号表和1个对象字典。 

 

符号表 

AutoCAD数据库中的9个符号表,分别是: 

1)块表(BlockTabLe) 

2)尺寸标注样式表(DimStyleTable) 

3)层表(LayerTable) 

4)线型表(LinetypeTable)   

5)应用程序注册表(RegAppTable) 

6)文字样式表(TextStyleTable) 

7)用户坐标系表(UCSTable) 

8)视口表(ViewportTable) 

9)视图表(ViewTable) 

     

    块表中存储实体的记录称为块表记录,即所有的实体均存储在块表记录中,通常的实体都存储在MODEL_SPACE块中;层表中的记录存储层的有关信息;尺寸标注样式表、层表、线型表和文字样式表等均用来存储相应的表记录。 

 

对象字典 

    有名对象字典是存储一般对象的容器,可用来存储任何数据库对象和子类,主要包括组(GROUP)和多线(MLINE)样式两个数据库字典。用户也可以创建一个新的“用户对象字典”,并存储于对象字典中。 在实际开发中,可以将应用程序的“扩展对象”存放在“用户对象字典”中,“扩展对象”的“扩展记录和数据”通过链表的形式存储在对象字典中,对于该类对象,不另外存储到块表。关于扩展对象,后面有详细说明。

 

 

数据库的创建及访问

 

数据库的初始化

       进入AUTOCAD环境,系统会自动生成一个缺省的数据库,库中包含9个符号表和一个有名对象字典。如,层表有一个0层记录;块表中有“MODEL_SPACE”(模型空间)和“PAPER_SPACE(图纸空间)两条记录;线型表中有“CONTINUOUS”、“BY_LAYER”和“BY_BLOCK”记录;应用程序注册表中有“ACAD”记录;文字样式表中有“STANDARD”记录;有名对象字典中包含“GROUP字典”和“MLINE字典”,其中“MLINE字典”中有一条“STANDARD”字体样式记录。

 

基本实体的创建及访问

 

 

图块

       图块是若干实体的集合,也是AUTOCAD数据库中的一种对象,通常分为不带属性的简单图块和带属性的复杂图块两种。作为一个整体来看待,以简化操作。

       用户自定义的图块分为“块”和“属性块”两种。块只包含图形信息,属性块还可以包含非图形信息,这些属性信息是块的组成部分之一。属性块必须先用ATTDEF定义属性,然后用BLOCK将其定义为图块的一部分。

 

简单块的定义

 

属性块的定义

       属性块是由构成图块的实体和附加信息(属性)组成。定义属性块主要包括块和属性的的定义,块的定义与不带属性块简单块一样,属性的定义主要是通过调用AcDbAtrributeDefinition实现。如下示例代码定义了圆度公差标注符号,其中圆度公差值定义为块的属性,在图块插入时输入,缺省值为0.3

       //1.定义块

       OdDbBlockTableRecord *pBTableRec = new OdDbBlockTableRecord();

       pBTableRec->setName();

       ….   ..

       OdDbBlockTable *pBTable = pDwgDB->getBlockTable(pBTable,acdb:kForWrite);

       OdDbObjectID id;

       pBTable->add(id,pBTableRec);

       //2.生成组成块的实体:基本线、圆

       //基本实体创建过程略

       ……

       //将实体附到块中

       pBTableRec->appendAcDbEntity(pLine,id);

       pBTableRec->appendAcDbEntity(pCirle,id);

       ……

       //3.定义块的属性

       OdGePoint3d pt(8,1.5,0);

       OdDbAtrributeDefinition *pAttDef = new OdDbAtrributeDefinition();

       //设置块的属性值


       pAttDef->setPoint(pt);                                      //设置属性位置

       pAttDef ->setPrompt(“请输入圆度公差:”);      //设置属性提示

       pAttDef->setTextString(0.3);                             //设置缺省值

       pAttDef->setXXX();

       ……

       //4

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值