CAD二次开发之图形数据库解析

合集下载

二次开发CAD

二次开发CAD

AcDbObjectId objId; //my : AcDbObjectId是一个典型的C++类,每一个ACAD对象都会分配一个唯一的ID号,用于查询等操作,ACAD图形本质是数据库,一个ACAD对象对应一条数据库记录,ID号相当于记录的索引或主键。

ads_name ss;AcDbObjectIdArray objIds;指向成员操作符。

要求是对象是指针。

比如你有一个类,叫CClass,则:CClass *pt = new CClass;pt->func();->运算符的左边必须是一个指针,右边必须是左边的指针指向的类中的成员。

acedSSGet()函数用法详解大多数O bjec tARX函数在处理选择集和实体时,都用名字来识别选择集或实体,该名字用一个长整型对来表示的,并对A utoCAD来维护。

在O bjec tARX中,该名字的类型为ads_name。

在对选择集或实体进行操作之前,O bjec tARX应用程序必须通过调用一个返回其名字的库函数来得到选择集或实体名字。

注意:选择集和实体的名字是不稳定的,它们仅仅在AutoCAD当前图形工作时有效。

如果从AutoCAD退出或切换到另一个图形时其值就会丢失。

对于选择集来说,它也是与当前图有关联的,所以其名字的不稳定性不会影响选择集。

但是对于实体就不一样了,因为它是被存放在图形数据库中的,名字的不稳定性要影响到对实体的操作。

应用程序必须在下一次对同一图文件中的同一实体进行操作,可以使用实体句柄,重新获取其实体名。

选择集的处理ObjectARX函数对选择集的处理类似于A utoLI SP。

acedSSGet()函数提供大多数创建选择集方法。

它一般通过以下三种方法之一创建选择集:(1)提供让用户选择对象。

(2)象交互式应用A utoCAD一样,利用RICKFIRST定义、C rossing、C ross ing P olygon、Fence、Las t、P revious、Window、Window Polygon等匹配条件的方式来选择实体对象,也可以通过指定一个单独点或Fenc e点来选择。

cad二次开发里dbobjectcollection的类解释

cad二次开发里dbobjectcollection的类解释

cad二次开发里dbobjectcollection的类解释摘要:1.概述CAD二次开发的重要性2.介绍DBObjectCollection类的作用3.DBObjectCollection类的特点和优势4.如何使用DBObjectCollection类进行二次开发5.实际应用案例分享6.总结与展望正文:【概述CAD二次开发的重要性】在现代工程设计领域,计算机辅助设计(CAD)已经成为不可或缺的工具。

随着技术的不断发展,CAD软件的功能日益丰富,用户需求不断增长。

为了满足这些需求,CAD二次开发应运而生。

二次开发指的是在原有CAD软件基础上,通过编程技术扩展和优化其功能,使之更贴近用户需求。

在这个过程中,DBObjectCollection类起到了关键作用。

【介绍DBObjectCollection类的作用】DBObjectCollection类是大多数CAD软件中的一个重要组成部分,它用于管理和操作图纸中的数据库对象。

简单来说,DBObjectCollection类是一个容器,可以存储、组织和操作CAD图纸中的各种对象,如线段、多边形、文本等。

通过使用DBObjectCollection类,开发者可以更方便地处理图纸中的数据,提高二次开发的效率。

【DBObjectCollection类的特点和优势】1.集中管理:DBObjectCollection类将图纸中的各种对象集中管理,方便开发者统一操作和处理。

2.易于扩展:DBObjectCollection类可以轻松地与其他类和模块结合,为开发者提供更多扩展功能的机会。

3.高效性能:DBObjectCollection类具有较高的性能,可以在不影响软件运行速度的前提下,处理大量数据。

4.跨平台兼容:DBObjectCollection类具有良好的平台兼容性,可以在不同操作系统和硬件环境下使用。

【如何使用DBObjectCollection类进行二次开发】在使用DBObjectCollection类进行二次开发时,首先需要了解其属性和方法。

cad二次开发里dbobjectcollection的类解释 -回复

cad二次开发里dbobjectcollection的类解释 -回复

cad二次开发里dbobjectcollection的类解释-回复CAD二次开发里的DBObjectCollection类解释在CAD(计算机辅助设计)二次开发中,DBOBjectCollection(数据库对象集合)类是一个常用的类,它用于管理和操作CAD文件中的多个对象。

在本文中,我们将详细介绍DBObjectCollection类的功能和用法。

1. DBObjectCollection类的概述DBObjectCollection类是AutoCAD平台中的一个基础类,它是一个可枚举的集合类,用于存储和管理CAD文件中的各种对象,如线、圆、多边形等。

该类提供了一些常用的方法和属性,以便我们对这些对象进行添加、删除、修改和查询等操作。

2. DBObjectCollection类的使用要使用DBObjectCollection类,首先需要获取一个DBObjectCollection对象的实例。

一般情况下,我们可以通过打开一个CAD文件或者创建一个新的CAD文档来获取该对象的实例。

下面是获取DBObjectCollection对象的实例的示例代码:c#Database database = new Database(); 创建一个新的CAD文档DBObjectCollection collection = database.ObjectCollection; 获取DBObjectCollection对象的实例3. DBObjectCollection类的常用方法DBObjectCollection类提供了一些常用的方法,以下是其中的一些方法及其功能解释:- Add方法:将一个对象添加到集合中。

- Remove方法:从集合中移除指定的对象。

- Clear方法:清空集合中所有的对象。

- Contains方法:判断集合中是否包含指定的对象。

- Count属性:获取集合中对象的数量。

- GetEnumerator方法:返回一个用于遍历集合的枚举器。

cad二次开发里dbobjectcollection的类解释 -回复

cad二次开发里dbobjectcollection的类解释 -回复

cad二次开发里dbobjectcollection的类解释-回复dbobjectcollection是CAD二次开发中的一个类,用于管理CAD图形对象集合。

它提供了一系列方法和属性,可以方便地进行图形对象的遍历、查询、添加、删除等操作。

在本文中,我们将详细解释dbobjectcollection 类的使用方法和常见应用场景。

首先,让我们来了解一下dbobjectcollection类的一些基本概念。

在CAD 中,每个图形对象都可以被看作是一个dbobject,例如线、圆等等。

而dbobjectcollection则是这些dbobject的容器,通过dbobjectcollection可以对这些图形对象进行集中管理。

在不同的CAD 软件中,dbobjectcollection可能会有不同的名称,比如AutoCAD中的BlockTable、LayerTable等等,但其基本功能和使用方法都是相似的。

在CAD二次开发中,dbobjectcollection类是非常常用的,因为它提供了很多便捷的方法来操作图形对象。

下面,我将逐步详细介绍dbobjectcollection类的各个方面。

1. 构造函数:当创建一个dbobjectcollection对象时,可以使用不同的构造函数来初始化集合。

例如,可以通过dbobjectcollection构造函数创建一个空集合,或者使用已有的dbobjectcollection对象来创建一个新集合。

这个构造函数通常会接收一个CAD数据库对象作为参数,以便初始化对象集合。

2. 遍历集合:使用foreach循环可以方便地遍历dbobjectcollection中的每个元素,即每个dbobject对象。

这样,我们就可以逐一处理集合中的每个图形对象,例如进行属性查询、数据处理等操作。

遍历集合时可以使用LINQ等语法来进行更灵活的查询和筛选操作。

3. 添加和删除对象:dbobjectcollection类提供了一些方法来添加和删除图形对象。

基于数据库技术的AutoCAD二次开发应用

基于数据库技术的AutoCAD二次开发应用
关键词 : uo A A tC D;关 系数据库 ; D 动态数据 交换 ; c vX 自动化 A O; Ate i
中圈分类号 :P 1 .2 T 3 15
文献标志码 : A
文章编 号:62- 00 2 0 )4一o9 o 17 3 9 (0 6 0 3 4一 4
S c n v l p n n p ia i n o t CAD s d o c n l g e o d De eo me ta d Ap l t fAu o c o Ba e n DB Te h o o y
1 图形数据库及用户界面的建立
首先使用 V B创 建 用 户 操 作 界 面 ( 图 1 。 见 )
L U Xi n , I a ・ l g,C NG G n ・ u L U Y n p n HE e g g o, I a - ig,Y NG Xi n z a A a -h o
( o eeo f m t nSi c n nier g Wua n esyo i c dT cnl y Wu a 3 0 1 C ia C lg f n r a o c nea dE s ei , hnU i r t f e ea eh o g , h n40 8 , hn ) l Io i e n n v i S n n c o
= 回
习 _
在 建筑 、 机械 、 电பைடு நூலகம் 、 化工 等工程 设计 领域 , 虽

I t譬啊
● 冈
膏 r习 _ 膏
然工程设计人员 能够方便地利用 A t A u C D提供 o 的可视化 对象 (i a oj t 和命令 (o m d v u b c) sl e cm a ) n 绘制工程图纸( D 3 ) 但却无法对图形元素 的 2 ,D , 数据做出实时性操纵。 如何动态地将某一测点在一段时间内的状态 趋势图反映在用户的面前 , 成为需要攻克的障碍 , 在缺少第三方控件 的情况下 , 可以借助开放性 的 A t A 。A t A u C D u C D支持 A te o o cvX自动化技术 , i 其 内嵌的 C M组件能无缝地实现应用程序间的数 O 据通信。 工程上 , 大量 的数据通常存储在关系型数据 库中( ce ,Q r r 。借助流行的面向对象 A cs S LS v ) s ee 软件开发工具 ( B V , eh) V , C D pi 将数据库 中的数 据传递到 A t A , u C D 实现数据 的实时操纵与绘图 , o 能解决工程 开发 中的许多相关应用。为示例方

AUTOCAD的二次开发及应用

AUTOCAD的二次开发及应用

计算机应用Computer Application《自动化技术与应用》2005年第24卷第8期AUT OCAD的二次开发及应用白广利1,穆祥贞2(1.黑龙江省科学院自动化研究所,黑龙江 哈尔滨 150090; 2.哈尔滨市公路工程处,黑龙江 哈尔滨 150076)摘要:如今,C AD(计算机辅助设计)技术已被各制造业广泛应用。

而美国的AutoC AD是目前在Windows环境下应用最广泛、使用人数最多的C AD支撑软件。

本次设计是在论证了C AD二次开发的可行性并比较了AutoC AD各开发系统的优劣之后,选择Object ARX开发平台,用CΠC++对AutoC AD软件进行的二次开发。

本系统设计工作共分数据库构建、文件读写、操作功能实现和交互式界面四部分。

最终完成的软件是一个具备初步的C AD软件结构、用户接口和操作方式的C AD系统,此软件随AutoC AD的启动自动运行,能够实现“读写文件”和“交互式创建、删除和修改直线实体”等功能。

关键词:应用程序接口;直线实体;交互式技术中图分类号:TP391172 文献标识码:B 文章编号:100327241(2005)0820045203The S ec o n dary de velop m e nt of Aut oCADBAI G uang-li1,MU Xiang-zhen2(1.Automation Institute of Heilongjiang Academy,Harbin150090,China;2.Harbin R oad Engineering Department,Harbin150076,China) Abstract:The C AD(C om puter Aided Design)technique has been used widely by manu facturing industry.The Object ARX is chosed as the develop2 ment environment,which use the CΠC++to develop the s oftware.The design of the system includes building the database,reading and writing the document,realizing of the operation function and designing of the interactive inter face.As with the starting of AutoC AD,the system can write and read the document,it als o can make,delete and m odify the line entity interactively.K ey w ords:Application inter face;Beeline s olid;Interactive technology1 引言利用计算机作为工具,帮助工程师进行设计的一切实用性技术的总和称为计算机辅助设计。

autocad 二次开发提取表格内容-概述说明以及解释

autocad 二次开发提取表格内容-范文模板及概述示例1:AutoCAD是一款广泛应用于建筑设计、工程图纸制作等领域的软件。

它具有强大的功能和灵活性,可以满足不同领域的需求。

而AutoCAD的二次开发则是指利用AutoCAD的开发接口(API)来扩展和定制AutoCAD 的功能,使之更适应特定应用场景的需求。

在AutoCAD中,表格是我们常见的元素之一。

它可以用来呈现和组织大量的数据,比如楼层平面图中的设备列表或者材料清单等。

而二次开发提取表格内容则是指通过编程的方式从AutoCAD图纸中自动提取出表格中的数据,以便快速、准确地分析和处理这些数据。

要实现二次开发提取表格内容,我们可以利用AutoCAD的开发接口。

首先,我们需要了解AutoCAD的对象模型,包括图纸、图层、块定义、实体等的层次关系和属性。

然后,我们可以通过编程的方式遍历图纸中的所有对象,找到我们需要的表格对象。

一种常用的方法是通过遍历实体对象,判断其属性来确定是否为表格。

AutoCAD中的表格是由网格、行和单元格组成的,我们可以通过判断实体类型以及相关属性,比如图层、颜色、线型等来定位表格对象。

一旦找到了表格对象,我们就可以进一步遍历其子对象,即行和单元格,从中提取出具体的数据。

在提取表格内容的过程中,我们还可以利用AutoCAD的属性和方法来处理数据。

比如,我们可以通过AutoCAD提供的计算属性来进行数据统计和分析。

另外,我们还可以使用AutoCAD的绘图功能,将提取出的数据在图纸上进行可视化展示,以便更直观地理解和分析数据。

需要注意的是,二次开发提取表格内容需要具备一定的编程知识和AutoCAD开发经验。

对于不熟悉编程的用户来说,建议参考AutoCAD 官方文档和相关的教程,或者寻求专业的开发人员的帮助和指导。

总之,利用AutoCAD的二次开发功能可以轻松地提取出表格内容,实现快速、准确的数据分析和处理。

这为建筑设计师、工程师等提供了更高效、便捷的工作方式,并推动了AutoCAD在各个领域的广泛应用和发展。

第四章 CAD软件的二次开发


24
4.3.4 逻辑运算函数
(3)小于函数 (<原子1 原子2 原子3 …)
如果 原子1<原子2<原子3…,函数返回T,否则返回 NIL; 例如:(if (< dcl_id 0) (exit) ) (4)大于函数(>原子1 原子2 原子3 …)
例如:(setq elast (entlast))
把最后绘制的实体用变量elast表示。 (6) 选择集 选择集是多个实体的集合。 在AutoLISP程序中可以构造一个选择集,并把它 赋予一个变量(或符号)供其它函数调用。
17
4.3.2 AutoLISP语言的程序结构
1.AutoLISP语言表达式与高级语言的区别 高级语言采用“中缀表示法”:运算符、赋值符 位于中间。 如:表达式 x=(a+b)·c → x=(a+b)*c AutoLISP语言采用“前缀表示法”:运算符、赋 值符位于前面。 如:表达式 x=(a+b)·c → (setq x ( * ( + a b) c )的数据类型
表有两种基本类型:标准表和引用表;
标准表:表中第一个元素必须是一个合法 的已存在的Autolisp函数,AutoCAD将按照 此函数的功能完成其操作;
例如: (setq b ( + a 108) ) 引用表: 在表前加一单引号(ˊ),表示不 对此表作求值处理。 例如:(setq po ˊ(100 58 96)) 表示:Po=(100 158 96)
23
4.3.4 逻辑运算函数
(1)等于函数(= 原子1 原子2 原子3 …)
原子:数或字符串;
所有原子都相等,函数返回 T,否则返回 NIL;
例如:(if (= x y z) (fx1)) (2)不等于函数(/= 原子1 原子2 …) 所有原子都不相等,函数返回T,否则返回NIL; 例如:(if (/= x y z) (fx2 ))

CAD二次开发之图形数据库

(2)了解图元所在图层的名字
(cdr (assoc 8 elist))
该表达式的内层表达式中,用8作为关键字,返回elist表中有 关图层名字的子表(8 . "图层名"),由于此表为点对,所以cdr函 数返回它的第2个元素"图层名"。
(3)了解圆、圆弧的半径或单行文本的字高
(cdr (assoc 40 elist))
以下是定义改变本作业所有单行文本为指定的高度命令的程序 代码: (defun c:cth( / h e el) (setq h(getdist "\n输入文本新的字高: ")) (setq e(entnext));得到第一个图元的名字 (while e ;当e有定义时做以下运算 (setq el(entget e));得到第一个图元的图元表 (if (= "TEXT" (cdr (assoc 0 el))) (progn ;如果图元的类型为"TEXT"时做以下运算 (setq el(subst (cons 40 h)(assoc 40 el)el));新字高替换图
9.2.2 对图元表的操作
假定elist是某图元的图元表。利用AutoLISP有关表处理的 函数可以修改图元表。
(1)了解图元的种类
(cdr (assoc 0 elist))
该表达式的内层表达式中,用0作为关键字,在elist表中 寻找相关的子表,返回有关图元种类的子表(0 . "图元种类"), 由于此表为点对,所以cdr函数返回它的第2个元素"图元种类"。 若此图元为直线,则返回"LINE",若此图元为单行文本,则返 回"TEXT"。
因为圆弧既是第3个图元,也是最后一个图元,所以e3 和e4记录的是同一图元的名字。

第15讲三维CAD系统关键技术及典型CAD系统二次开发解读

?逆向工程工具: 包括数据获取、噪声点过滤、残缺数据恢 复、区域分割、特征提取、三角网格化、参数曲面拟合重 建等功能,实现产品的快速原型设计。
?钣金设计工具: 针对钣金零件的特点专门设计供处理钣金 零件造型用的模块,它根据钣金零件的几何特征进行钣金 零件设计,钣金零件自动展开、自动排样计算。
?动画与仿真: 提供机构运动仿真、运动协调关系、运动范 围设计、运动干涉检查;机械产品可装配性检查;提供产 品真实效果显示,机器内部的漫游。
? 几何体间的并交差布尔运算; ? 局部操作(剖切、圆角、倒角、局部拉伸);
? 实体的编辑(拷贝、镜像、阵列、删除、回退 (Undo)与重作(Redo)、平移、旋转、缩放、 几何元素查询、几何信息的修改);
? 实体抽壳、曲面转实体; ? 三维实体向二维的转换(生成轮廓图及消隐)。
特征造型功能 基准特征,拉伸、旋转、扫成、放样特征,增料、 减料特征,过渡、倒角、拔模、抽壳特征
绘图辅助功能 ? 初始化功能(图形屏幕范围的设定、光标捕捉 精度、栅格显示精度) ? 用户坐标系统、图形定位、线型、颜色设定; ? 提示信息、回退(UNDO)、重作(REDO) 操作 、公制与英制的换算等。
三维造型及零件设计功能
线框造型功能
? 基本几何元素定义; ? 曲线插值和逼近; ? NURBS曲线; ? 线组合、曲线拆散、曲线光顺、曲线延伸、曲
Pro/E
美、法等国的CAD技术一直走在世界的前沿,它们拥有许多世 界闻名的CAD/CAM系统,这些系统具备十分强大的功能。
国内:清华大学、北航、新舟、浙大、华工
1、系统功能需求
以国家863三维CAD系统评测要求为例
系统综合功能 二维图形功能(工程图) 三维造型及零件设计功能 装配功能 三维模型与二维图形的关联功能 数据接口功能 系统性能需求
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

a
(defun c:keyway()
b
(setq pc (getpoint "输入定位点: "))
(setq d (getdist pc "输入轴的直径:"))
(setq b (getdist pc "输入键槽的宽度:"))
(setq w (getdist pc "输入键槽的深度:")) (setq r (* 0.5 d)) (command "circle" pc r) ;绘制圆
(command "layer" "m" "cuxian" "lw" 0.3 "" "")
(command "circle" "0,0" 3)
(setq e3(entlast))
(command "layer" "m" "xixian" "")
(command "arc" "-3.5,0" "0,3.5" "0,-3.5")
(setq e2 (entlast)) ;将entlast返回的该直线的图元名赋给e2
(setq p3(list (car pc) (- (cadr pc) (* 0.5 b)))) (setq p4(list (car p2) (cadr p3))) (command "line" p3 p4 "")
(setq elist(entget e)) ;获取图元名字为e的图元表。 在"Command:"提示下键入!elist或在控制台"_$"提示下键入 elist,即可得到以下该图元的图元表。
((-1 . <Entity name: 7ef69500>);图元名
(0 . "TEXT");图元种类
(330 . <Entity name: 7ef67d00>);软指针句柄 (5 . "19F");图元描述字 (100 . "AcDbEntity");AutoCAD图元 (67 . 0);模型空间 (410 . "Model");模型空间标识 (8 . "0") ;所在图层名 (100 . "AcDbText") ;AutoCAD文本
(setq e1 (entlast)) ;将entlast返回的该圆的图元名赋给e1
(setq p0(polar pc 0 r)) ;p0是圆上一点,将用于修剪该圆 (setq p1(list (car pc) (+ (cadr pc) (* 0.5 b)))) (setq p2(list (+ (car pc) (* 1.2 r)) (cadr p1))) (command "line" p1 p2 "")
(setq e4(entlast))
以下表达式调用AutoCAD 的copy命令,复制3个带 有中心线的螺纹孔。 (command "copy" e1 e2 e3 e4 "" "m" "0,0" "12,0" "24,0" "36,0" "")
[例9-2] 定义绘制图b所示图形的命令。插入点p0、直径d、宽度 b和h作为绘制该图形时交互输入的参数。该例的主要目的是示 范如何利用图元名实现AutoCAD的图形编辑和填充剖面线。
通过entnext函数,可以访问到图形库的每一个图 元。
假定本作业依次绘制了一条直线、一个圆和一个圆弧。
(setq e1(entnext));返回图形库第一个图元即这条直线 的图元名<Entity name: 7ef6ce88>,并将其赋给了变量e1。
(setq e2(entnext e1));返回图形库e1的下一个图元即这 个圆的图元名<Entity name: 7ef6ce90>,并将其赋给了变 量e2。 (setq e3(entnext e2));返回图形库e2的下一个图元即即这个 图弧的图元名<Entity name: 7ef6ce98>,并将其赋给了变量 e3。 (setq e4(entlast)) ;返回图形库最后一个图元即这个图 弧的图元名<Entity name: 7ef6ce98>,并将其赋给了变量 e1。 因为圆弧既是第3个图元,也是最后一个图元,所以e3 和e4记录的是同一图元的名字。
;e1、e2等作为剪切边,p0、p1等点确定被剪边和剪去哪一段
(command "trim" e1 e2 e3 e4 "" p0 p1 p2 p3 p4 "") ;e1、e2等作为剖面域的边界绘制剖面线 (command "hatch" "ansi31" "2" ) "0" e1 e2 e3 e4 "") ;
9.2 图元表
图元表记录着图元的名字、类型、几何数据、图层、颜色 等信息。通过修改或创建图元表,可以实现编辑或生成图元。
9.2.1 获取图元表
例如输入下面3个表达式:
(command "text" "10,20" 5 0 "ABCDE");书写文本
(setq e(entlast));获取文本的图元名,将图元的名字赋给变量e。
(setq e3 (entlast)) ;将entlast返回的该直线的图元名赋给e3 (setq p5(list (+ (car pc) (- r w)) (+ (cadr pc) (* 0.5 b)))) (setq p6(list (+ (car pc) (- r w)) (- (cadr pc) (* 0.5 b)))) (command "line" p5 p6 "") (setq e4 (entlast)) ;将entlast返回的该直线的图元名赋给e4
第 9章
访问和修改图形数据库
9.1 获取图元的名字
AutoCAD的图形是由多个图形对象组成的,最基本 的图形对象称作图元。图元之间是以链表的形式存储 的。每个图元都有一个用16进制表示的唯一的名字。
entnext函数可以获取图形库第一个图元的名字或 指定图元的下一个图元的名字。 entlast函数可以获取图形库最后一个,即最新生 成的图元的名字。
【例9-1】绘制下图所示的4个带有中心线的螺纹孔。要 求首先获取中心线的螺纹孔的图元名,然后复制这些指 定名字的图元。
以的同时获取并保存了这些图元的名字为 e1、 e2、e3和e4。
(command "layer" "m" "zhongxin" "l" "center" "" "") (command "line" "-5,0" "5,0" "") (setq e1(entlast)) (command "line" "0,-5" "0,5" "") (setq e2(entlast))
相关文档
最新文档