AutoLisp从入门到放弃(八)
AutoLisp从入门到放弃(八)
- 一、修改图元图层
- 1、新建图层
- 2、删除图层
- 3、更改实体图层
- 二、修改图元颜色
本章将介绍如何使用AutoLisp操作图元的图层、颜色。
一、修改图元图层
使用lisp代码修改图层本质上也是对图元数据列表的修改,但是在正式开始介绍如何修改图层之前,我们应该需要了解如何通过AutoLisp新建和删除图层。
1、新建图层
在这一部分我们介绍两种创建图层的方法,首先来看第一种,使用command命令新建图层:
(setq #strNewLayer "NewTestLayer")
(command "-layer" "n" #strNewLayer "c" "1" #strNewLayer "")
执行上述代码可以新建一个名为NewTestLayer的图层。使用command命令创建图层较为简单,这里不做过多赘述,我们直接来看如何通过实体数据库新建图层。
在这里我们要接触到一个新的函数:
函数名称 | 函数功能 |
---|---|
(entmakeX) | 创建一个新对象或图元,赋给它一个句柄和图元名(但不指定所有者),并返回新图元的名称。 |
此函数的用法与entmake类似:
(entmakeX (list '(0 . "LAYER") '(100 . "AcDbSymbolTableRecord") '(100 . "AcDbLayerTableRecord") '(70 . 0) (cons 2 "NewLayerFromLisp")))
这样,我们就成功创建了一个名为NewLayerFromLisp的图层。
2、删除图层
删除图层的方法这里不做重点介绍,直接通过command命令删除即可:
(command "-layer" "del" "NewLayerFromLisp" "")
但需要注意,在使用command命令删除图层时,不能删除0层、当前层以及存在实体的图层。
3、更改实体图层
之前已经提到过,更改实体涂层的操作实际也是对列表的操作,这里不再讲解原理,直接展示代码:
(defun c:ModifyEntityLayer(/ #eName #eData #strNewLayer #oldLayer #newLayer)(setq #strNewLayer "NewTestLayer")(command "-layer" "m" #strNewLayer "c" "1" #strNewLayer "") ;; 生成一个新图层并设置为当前层,如果该图层已经存在,则只是将其设置为当前层;; 循环选中实体,修改实体图层,鼠标右键结束(while (setq #eName (entsel))(setq #eData (entget (car #eName)))(setq #oldLayer (assoc 8 #eData))(setq #newLayer (cons 8 #strNewLayer))(setq #eData (subst #newLayer #oldLayer #eData))(entmod #eData));while
)
二、修改图元颜色
更改图元颜色的方法和更改图层一致,只不过是修改了不同的列表元素而已,所以直接展示代码:
(defun c:ModifyEntityColor(/ #eName #eData #oldColor #newColor);; 循环选中实体,修改实体颜色,鼠标右键结束(while (setq #eName (entsel))(setq #eData (entget (car #eName)))(setq #newColor (cons 62 3)) ;; 更改为绿色(if (setq #oldColor (assoc 62 #eData))(setq #eData (subst #newColor #oldColor #eData))(setq #eData (append #eData (list #newColor))))(entmod #eData))
)
AutoLisp从入门到放弃(八)相关推荐
- AutoLisp从入门到放弃(十二)
AutoLisp从入门到放弃(十二) 一.文件操作 1.打开文件(open) 2.读文件(read-line.read-char) 3.写文件(write-line.write-char) 4.关闭文 ...
- AutoLisp从入门到放弃(五)
AutoLisp从入门到放弃(五) 一.列表(LIST) 1.列表的创建 2.操作列表常用函数 二.DXF组码 1.DXF组码文件基本结构 2.DXF组码值类型 本章将介绍通过AutoLisp代码来查 ...
- AutoLisp从入门到放弃(十一)
AutoLisp从入门到放弃(十一) 一.常用字符串处理函数 1.ascii和chr函数 2.read函数 3.strcase函数 4.strcat和strlen函数 5.substr函数 6.wcm ...
- AutoLisp从入门到放弃(九)
AutoLisp从入门到放弃(九) 一.等待输入相关函数 1.getangle函数 2.getcorner函数 3.getdist函数 4.getenv函数 5.getint函数 6.getorien ...
- AutoLisp从入门到放弃(十四)
AutoLisp从入门到放弃(十四) AutoLisp选择集操作 AutoLisp从入门到放弃(十四) 一.ssget 1.函数说明 2.参数说明 3.代码示例 二.ssadd.ssdel 1.函数说 ...
- AutoLisp从入门到放弃(六)
AutoLisp从入门到放弃(六) 一.获取图元属性信息 二.修改图元属性信息 本章主要讲解如何通过AutoLisp代码查看.修改实体的所有属性信息,即图元信息. 一.获取图元属性信息 如果你是一个C ...
- AutoLisp从入门到放弃(十)
AutoLisp从入门到放弃(十) 一.角度计算(angle) 二.距离计算(distance) 三.点坐标偏移计算(polar) 四.计算两直线交点(inters) 五.获取捕捉点(osnap) 本 ...
- AutoLisp从入门到放弃(七)
AutoLisp从入门到放弃(七) 一.创建图元 二.删除图元 1.command命令 2.entdel函数 本章将介绍如何在AutoLisp代码中通过直接操作实体数据库的方式来新增和删除图元. 一. ...
- AutoLisp从入门到放弃(十七)
经过之前的介绍,我们基本可以了解所有Autolisp的常用函数了.但是,从一开始到现在,我们几乎很少完整的实现一个功能.所以,从这一节开始,我们将通过一系列的实际绘图实例来进一步熟悉和巩固之前学习到的 ...
最新文章
- pmp每日三题(2022年3月1日)
- iOS-英雄联盟人物展示
- ftp 文件服务器预览,web文件服务器 ftp 预览
- python string模块template_Python标准库笔记(1) — string模块
- 媒体查询Media Queries详解
- Linux下C++ Socket编程实例
- ORACLE执行计划入门
- Python 编写自动化工具
- 监测生命体征、活动水平的可穿戴电子产品设计方案
- 交换机的Vlan技术 以及Vlan隔离和 端口隔离区别
- 怎么用磁盘压缩卷新建分区
- Android输入事件从读取到分发三:InputDispatcherThread线程分发事件的过程
- 成都榆熙:怎么解除拼多多商品的推广限制
- python宿舍管理保存_学生宿舍管理信息系统详细报告
- Content type 'multipart/form-data;boundary=--------------------------258075776767858126421870;chars
- 764. 输出字符串
- 【Android驱动】aw9106驱动代码流程
- js实现网页中英文翻译
- 为互联网原住民设计产品的思考
- GD32系列总结 - 总目录