




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章访问和修改图形数据库 9 1获取图元的名字AutoCAD的图形是由多个图形对象组成的 最基本的图形对象称作图元 图元之间是以链表的形式存储的 每个图元都有一个用16进制表示的唯一的名字 entnext函数可以获取图形库第一个图元的名字或指定图元的下一个图元的名字 entlast函数可以获取图形库最后一个 即最新生成的图元的名字 通过entnext函数 可以访问到图形库的每一个图元 假定本作业依次绘制了一条直线 一个圆和一个圆弧 setqe1 entnext 返回图形库第一个图元即这条直线的图元名 并将其赋给了变量e1 setqe2 entnexte1 返回图形库e1的下一个图元即这个圆的图元名 并将其赋给了变量e2 setqe3 entnexte2 返回图形库e2的下一个图元即即这个图弧的图元名 并将其赋给了变量e3 setqe4 entlast 返回图形库最后一个图元即这个图弧的图元名 并将其赋给了变量e1 因为圆弧既是第3个图元 也是最后一个图元 所以e3和e4记录的是同一图元的名字 例9 1 绘制下图所示的4个带有中心线的螺纹孔 要求首先获取中心线的螺纹孔的图元名 然后复制这些指定名字的图元 以下表达式首先生成了两条中心线和1个螺纹孔 在生成这些图元的同时获取并保存了这些图元的名字为e1 e2 e3和e4 command layer m zhongxin l center command line 5 0 5 0 setqe1 entlast command line 0 5 0 5 setqe2 entlast command layer m cuxian lw 0 3 command circle 0 0 3 setqe3 entlast command layer m xixian command arc 3 5 0 0 3 5 0 3 5 setqe4 entlast 以下表达式调用AutoCAD的copy命令 复制3个带有中心线的螺纹孔 command copy e1e2e3e4 m 0 0 12 0 24 0 36 0 例9 2 定义绘制图b所示图形的命令 插入点p0 直径d 宽度b和h作为绘制该图形时交互输入的参数 该例的主要目的是示范如何利用图元名实现AutoCAD的图形编辑和填充剖面线 ab defunc keyway setqpc getpoint 输入定位点 setqd getdistpc 输入轴的直径 setqb getdistpc 输入键槽的宽度 setqw getdistpc 输入键槽的深度 setqr 0 5d command circle pcr 绘制圆 setqe1 entlast 将entlast返回的该圆的图元名赋给e1 setqp0 polarpc0r p0是圆上一点 将用于修剪该圆 setqp1 list carpc cadrpc 0 5b setqp2 list carpc 1 2r cadrp1 command line p1p2 setqe2 entlast 将entlast返回的该直线的图元名赋给e2 setqp3 list carpc cadrpc 0 5b setqp4 list carp2 cadrp3 command line p3p4 setqe3 entlast 将entlast返回的该直线的图元名赋给e3 setqp5 list carpc rw cadrpc 0 5b setqp6 list carpc rw cadrpc 0 5b command line p5p6 setqe4 entlast 将entlast返回的该直线的图元名赋给e4 e1 e2等作为剪切边 p0 p1等点确定被剪边和剪去哪一段 command trim e1e2e3e4 p0p1p2p3p4 e1 e2等作为剖面域的边界绘制剖面线 command hatch ansi31 2 0 e1e2e3e4 9 2图元表图元表记录着图元的名字 类型 几何数据 图层 颜色等信息 通过修改或创建图元表 可以实现编辑或生成图元 9 2 1获取图元表例如输入下面3个表达式 command text 10 20 50 ABCDE 书写文本 setqe entlast 获取文本的图元名 将图元的名字赋给变量e setqelist entgete 获取图元名字为e的图元表 在 Command 提示下键入 elist或在控制台 提示下键入elist 即可得到以下该图元的图元表 1 图元名 0 TEXT 图元种类 330 软指针句柄 5 19F 图元描述字 100 AcDbEntity AutoCAD图元 67 0 模型空间 410 Model 模型空间标识 8 0 所在图层名 100 AcDbText AutoCAD文本 1010 020 00 0 定位点坐标 40 5 0 文本字高 1 ABCDE 文本内容 50 0 0 文本的旋转角度 41 1 0 文字的宽度因子 51 0 0 文字的倾斜角度 7 STANDARD 字样的名字 71 0 正常文本 非左右或上下镜像的文本 72 0 左下角点对齐方式 110 00 00 0 辅助的定位点坐标 2100 00 01 0 厚度方向 100 AcDbText AutoCAD文本 73 0 不垂直书写 对图元表的补充说明 1 图元表的每个元素还是表 子表的第一个元素是具有一定含义的整数 其含义与图元在DXF 图形交换文件 中实体代码的含义相同 详见AutoCAD有关DXF文件的介绍 2 多数的子表采用了点对结构 这样既节省存储空间 也可以简化运算 详见第2 4节数据的存储结构 3 其他种类图元的图元表的非几何信息部份基本相同 几何信息部份有些差异 9 2 2对图元表的操作假定elist是某图元的图元表 利用AutoLISP有关表处理的函数可以修改图元表 1 了解图元的种类 cdr assoc0elist 该表达式的内层表达式中 用0作为关键字 在elist表中寻找相关的子表 返回有关图元种类的子表 0 图元种类 由于此表为点对 所以cdr函数返回它的第2个元素 图元种类 若此图元为直线 则返回 LINE 若此图元为单行文本 则返回 TEXT 2 了解图元所在图层的名字 cdr assoc8elist 该表达式的内层表达式中 用8作为关键字 返回elist表中有关图层名字的子表 8 图层名 由于此表为点对 所以cdr函数返回它的第2个元素 图层名 3 了解圆 圆弧的半径或单行文本的字高 cdr assoc40elist 该表达式的内层表达式中 用40作为关键字 返回elist表中有关圆 圆弧的半径或单行文本的字高的子表 40 数值 由于此表为点对 所以cdr函数返回它的第2个元素具体的数值 4 了解直线的起点 圆 圆弧的中心或单行文本的定位点 cdr assoc10elist 该表达式的内层表达式中 用10作为关键字 返回elist表中有关直线的起点 圆 圆弧的中心或单行文本的定位点的子表 10数值数值数值 注意此表不再是点对 所以cdr函数返回去掉它的第1个元素之后的子表 即点的XYZ坐标 5 用圆 圆弧的半径或单行文本的新值取代其老值 setqelist subst cons40h assoc40elist elist cons40h 构造一个新的点对子表 例如 40 3 5 assoc40elist 返回elist表内的点对子表 例如 40 5 0 subst函数用新子表 例如 40 3 5 替换elist表内的老子表 40 5 0 最外层的setq函数将替换后的赋给了变量elist 6 更新图形库的图元表 entmodelist entmod函数的功能是更新图形库的指定图元表的图元 即更新了实际图形对象 例如单行文本的字高由5 0改变为3 5 9 2 3举例 例9 3 定义将本作业所有的单行文本改变为指定高度的命令 右图所示为修改图形数据库内单行文本字高的程序流程图 其中e1是用于存放图元名的变量 单行文本的图元种类是TEXT 用MTEXT书写的是段落文本 它的图元种类是MTEXT 因此本程序不能修改用MTEXT书写的文本 否 否 是 是 以下是定义改变本作业所有单行文本为指定的高度命令的程序代码 defunc cth heel setqh getdist n输入文本新的字高 setqe entnext 得到第一个图元的名字 whilee 当e有定义时做以下运算 setqel entgete 得到第一个图元的图元表 if TEXT cdr assoc0el progn 如果图元的类型为 TEXT 时做以下运算 setqel subst cons40h assoc40el el 新字高替换图元表的原字高 if 3 cdr assoc72el 如果文本为Align方式对齐 setqel subst cons720 assoc72el el 忽略第二个定位点 entmodel 更新图形数据库的el图元表 setqe entnexte 令e等于e的下一个图元名 princ 静默退出 9 3选择集选择集是有名字的一些图元名的集合 常用于编辑或修改图形对象的命令 9 3 1常用的有关选择集的函数 1 ssget 选择方法 点1 点2 点表 过滤表 创建一个选择集 有以下一些选择方法 C Crossing 与点1 点2所确定的窗口相交的那些对象被选中 CP Cpolygon 与点表所确定的多边形相交的那些对象被选中 F Fence 与点表所确定的折线相交的那些对象被选中 I Implied 处于夹取 Grips 状态的那些对象被选中L Last 最新的 最后绘制的那个图元被选中 由于在多文档环境下最后绘制的对象并不一定是可见的 例如 这个绘图窗口被最小化或未放置在顶层 这时使用该选项将返回nil P Previous 上一次创建的选择集 W Window 整体在点1 点2所确定的窗口之内的那些对象被选中 WP Wpolygon 整体在点表所确定的多边形之内的那些对象被选中 X 整个数据库 包括被关闭 被冻结图层上的对象和屏幕之外的那些对象被选中 E 通过光标拾取框的那些对象被选中 N 在该函数的执行过程中 为选定对象调用ssnamex函数获得容器块和转换矩阵的附加信息 只有通过 W C 和点拾取选择方法时 才可以使用这一附加信息 S 只允许单一选择集 点1 点2 点表和过滤表是与选择方法配合使用的 过滤表的功能是根据过滤表描述的条件对所选的对象进行筛选 只保留满足过滤条件的对象 过滤表是entget函数返回的图元表中的点对 例如 0 LINE 8 LAYER1 6 center 62 1 点对的第1个元素是图形交换文件中的组码 详见AutoCAD有关DXF文件的介绍 如果仅提供了一个点 该函数认为用户通过这个点来选择单个的对象 如果省略所有的参数 在调用该函数时将出现 Selectobjects 提示 这用户以交互方式选择对象 在这种情况下 亮显被选取的对象 该函数忽略当前设置的对象捕捉模式 由于选择集会占用临时文件存储区 所以AutoLISP不允许同时打开128以上的个选择集 如果成功该函数返回创建选择集的名称 例如 否则返回nil 以下是调用该函数的一些表达式 setqs1 ssget 22 创建一个选择集 如果存在一个通过点 2 2 的图元 它将被选中并将返回的选择集的名字赋给变量s1 setqs2 ssget w 00 1010 创建一个选择集 它的成员是所有整体在对角点 0 0 和 10 10 窗口内的图元 如果成功则将选择集的名字赋给变量s2 setqs3 ssget X 0 LINE 62 5 0 LINE 62 5 是过滤表 该选择集的成员是当前作业中所有蓝色的直线 如果成功将选择集的名字赋给变量s3 setqs4 ssget 以交互方式创建一个选择集 执行到该表达式时 自动切换到图形窗口 出现 Selectobjects 提示 等待用户操作 用户此时可用各种选择方法多次选择 直至用空回车响应 Selectobjects 提示 选择集由交互选择的这些图元组成 将选择集的名字赋给变量s4 2 entsel 提示信息 提示用户以单点方式选择单个对象 若省略提示信息 则提示信息为 Selectobject 返回值为两个元素组成的表 第一个元素是所选的图元名 第二个元素是用户选择对象时拾取点在当前UCS下的坐标 3 ssadd 图元名 选择集 将指定的图元加入到选择集 如果调用该函数时无参数 将创建一个空选择集 如果只提供图元名 将创建一个仅含该图元的选择集 4 ssdel图元名选择集 从选择集内移去指定的图元 5 sslengthss 返回选择集的长度 即选择集内图元的数量 6 ssname选择集序号 返回选择集中由序号指定的那个图元名 选择集内第一个元素的序号为零 9 3 2举例 例9 4 定义将选到的单行文本改变为指定高度的命令 defunc csth hs1neel setqh getdist n输入文本的高度 setqs1 ssget 以交互方式得到一个选择集 setqn0 序号的初值为0 repeat sslengths1 重复执行 执行的次数等于所选对象的个数 setqe ssnames1n 得到选择集内第n个对象的图元名 setqel entgete 得到这个对象的图元表 if TEXT cdr assoc0el 判断这个对象是否为TEXT progn 是TEXT setqel subst cons40h assoc40el el 用新字高替换图元表的原字高点表 if 3 cdr assoc72el 如果文本为Align方式对齐 setqel subst cons720 assoc72el el 忽略第二个定位点 entmodel 更新图形数据库的el图元表 setqn 1 n 序号n的数量加1 9 4符号表AutoCAD的符号表是指视窗表 线型表 图层表 字样表 视图表 用户坐标系表 用户应用程序标识表 尺寸式样表和块记录表 在某些情况下 仅从图元表不能了解图元的全部特性 例如当图元的颜色 线型与所在图层一致时 图元表中没有记录颜色 线型的子表 因此 了解这样图元的颜色 就需要访问图层表 9 4 1符号表操作函数 1 tblnext表的种类 回绕 表的种类可以是 LAYER LTYPE VIEW STYLE BLOCK UCS APPID DIMSTYLE 和 VPORT 若回绕项为T 则返回指定种类的第一个符号表 若该项为nil或缺省 则返回指定种类的当前表符号的下一个符号表 例如返回图层表 若当前作业的图层名依次是 0 layer1 layer2 和 layer3 随时输入表达式 tblnext layer T 都返回 0 LAYER 2 0 70 0 62 7 6 CONTINUOUS 因为回绕项为T 所以返回当前作业的第一个图层表 接着输入表达式 tblnext layer nil 或 tblnext layer 返回 0 LAYER 2 layer1 70 0 62 7 6 CONTINUOUS 因为回绕项为nil或缺省 所以返回当前图层表的下一个图层表 同样的操作依次返回layer2 layer3的图层表 再输入这个表达式 将返回nil 因为layer3是最后的图层 例如返回块定义表 若当前作业已定义了名字为 BOX 的图块 输入表达式 tblnext block 返回 0 BLOCK 2 BOX 70 0 109 02 00 0 2 2 tblobjname表的种类表名 返回指定种类表的图元名 如果找到 返回符号表的图元名 返回的图元名可以用于entget和entmod操作 例如 tblobjname layer 0 返回名字为0的图层表的图元名 3 tblsearch表的种类表名 设置下一个 返回指定种类和名字的符号表 如果 设置下一个 为T 该表将作为定位点 随后调用tblnext函数在不回绕的设置下 就会返回该表的下一个表 例如 tblsearch layer t 返回 0 LAYER 2 layer1 70 0 62 7 6 CONTINUOUS 图层表 且layer1为定位点 接着输入表达式 tblnext layer 返回 0 LAYER 2 layer2 70 0 62 7 6 CONTINUOUS 图层表 例9
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理札记读后感:细节与本质的再思考
- 长江艺术工程职业学院《食工仪表自动化》2023-2024学年第二学期期末试卷
- 护理文件书写规范及要求
- 江苏省百校2024-2025学年高三下学期期初开学联考物理试题含解析
- 南充科技职业学院《中学生物课程资源开发与应用》2023-2024学年第二学期期末试卷
- 四川西南航空职业学院《化工热力学实验》2023-2024学年第二学期期末试卷
- 江苏航运职业技术学院《城乡空间分析与规划新技术》2023-2024学年第一学期期末试卷
- 中华女子学院《食品工厂设计概论》2023-2024学年第二学期期末试卷
- 十堰市茅箭区2024-2025学年小升初总复习数学测试题含解析
- 石家庄信息工程职业学院《FPGA数字系统课程设计》2023-2024学年第二学期期末试卷
- 北京市朝阳区2025届高三下学期一模试题 数学 含答案
- 运输公司安全管理制度
- 2025届吉林省长春市高三下学期4月三模政治试题(原卷版+解析版)
- 2025届江苏省扬州市中考一模语文试题(含答案)
- 2025年河北省唐山市中考一模道德与法治试题(含答案)
- 2025年一级注册计量师考试题库大全及答案
- 放疗皮肤反应分级护理
- 工程造价咨询服务投标方案(专家团队版-)
- 2024年广东省中考生物+地理试卷(含答案)
- 小小科学家《物理》模拟试卷A(附答案)
- 劳务派遣劳务外包服务方案(技术方案)
评论
0/150
提交评论