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从入门到放弃(八)相关推荐

  1. AutoLisp从入门到放弃(十二)

    AutoLisp从入门到放弃(十二) 一.文件操作 1.打开文件(open) 2.读文件(read-line.read-char) 3.写文件(write-line.write-char) 4.关闭文 ...

  2. AutoLisp从入门到放弃(五)

    AutoLisp从入门到放弃(五) 一.列表(LIST) 1.列表的创建 2.操作列表常用函数 二.DXF组码 1.DXF组码文件基本结构 2.DXF组码值类型 本章将介绍通过AutoLisp代码来查 ...

  3. AutoLisp从入门到放弃(十一)

    AutoLisp从入门到放弃(十一) 一.常用字符串处理函数 1.ascii和chr函数 2.read函数 3.strcase函数 4.strcat和strlen函数 5.substr函数 6.wcm ...

  4. AutoLisp从入门到放弃(九)

    AutoLisp从入门到放弃(九) 一.等待输入相关函数 1.getangle函数 2.getcorner函数 3.getdist函数 4.getenv函数 5.getint函数 6.getorien ...

  5. AutoLisp从入门到放弃(十四)

    AutoLisp从入门到放弃(十四) AutoLisp选择集操作 AutoLisp从入门到放弃(十四) 一.ssget 1.函数说明 2.参数说明 3.代码示例 二.ssadd.ssdel 1.函数说 ...

  6. AutoLisp从入门到放弃(六)

    AutoLisp从入门到放弃(六) 一.获取图元属性信息 二.修改图元属性信息 本章主要讲解如何通过AutoLisp代码查看.修改实体的所有属性信息,即图元信息. 一.获取图元属性信息 如果你是一个C ...

  7. AutoLisp从入门到放弃(十)

    AutoLisp从入门到放弃(十) 一.角度计算(angle) 二.距离计算(distance) 三.点坐标偏移计算(polar) 四.计算两直线交点(inters) 五.获取捕捉点(osnap) 本 ...

  8. AutoLisp从入门到放弃(七)

    AutoLisp从入门到放弃(七) 一.创建图元 二.删除图元 1.command命令 2.entdel函数 本章将介绍如何在AutoLisp代码中通过直接操作实体数据库的方式来新增和删除图元. 一. ...

  9. AutoLisp从入门到放弃(十七)

    经过之前的介绍,我们基本可以了解所有Autolisp的常用函数了.但是,从一开始到现在,我们几乎很少完整的实现一个功能.所以,从这一节开始,我们将通过一系列的实际绘图实例来进一步熟悉和巩固之前学习到的 ...

最新文章

  1. pmp每日三题(2022年3月1日)
  2. iOS-英雄联盟人物展示
  3. ftp 文件服务器预览,web文件服务器 ftp 预览
  4. python string模块template_Python标准库笔记(1) — string模块
  5. 媒体查询Media Queries详解
  6. Linux下C++ Socket编程实例
  7. ORACLE执行计划入门
  8. Python 编写自动化工具
  9. 监测生命体征、活动水平的可穿戴电子产品设计方案
  10. 交换机的Vlan技术 以及Vlan隔离和 端口隔离区别
  11. 怎么用磁盘压缩卷新建分区
  12. Android输入事件从读取到分发三:InputDispatcherThread线程分发事件的过程
  13. 成都榆熙:怎么解除拼多多商品的推广限制
  14. python宿舍管理保存_学生宿舍管理信息系统详细报告
  15. Content type 'multipart/form-data;boundary=--------------------------258075776767858126421870;chars
  16. 764. 输出字符串
  17. 【Android驱动】aw9106驱动代码流程
  18. js实现网页中英文翻译
  19. 为互联网原住民设计产品的思考
  20. GD32系列总结 - 总目录

热门文章

  1. Iframe中跨域进行父子窗口进行通信的四种方法
  2. Linux用户与内核空间交互—netlink
  3. c语言中typeof,运算符关键字typeof的使用
  4. 12.7pygame游戏开发框架(7):碰撞检测
  5. 已知空间中的三点 求三角形面积_角平分线性质中的一些演变思路
  6. js将数组中对象某个值相同的去重合并到一起(利用indexOf去重相同名)
  7. win10电脑录屏快捷键是什么?win10电脑录屏软件下载
  8. uniapp打开docx文件方法
  9. 求解神经网络的权重系数,神经网络的权重的含义
  10. Social Distancing