土木在线论坛 \ 建筑设计 \ CAD下载及教程 \ cad底图还能这样处理,动作宏和lsp应用实例(附代码)

cad底图还能这样处理,动作宏和lsp应用实例(附代码)

发布于:2020-12-07 14:40:07 来自:建筑设计/CAD下载及教程 [复制转发]


建筑行业设计从业者,特别是建筑专业以外的其他专业,需要在对建筑底图进行处理后才能进行本专业绘制。处理底图本身是件很耗费时间的一件事。那么有没有一种办法能够简化这个步骤,节省些时间。那就再让我来扒一扒。
简化画图步骤,不外乎两种方式: 录制动作宏 外部插件 LISP
那么无论那种方式,我们首先要捋一捋底图处理都包含什么操作,也即你要无论是录制还是外部插件的功能需求是什么。
以建筑底图处理为例说明:就是删除不必要的标注。包括:尺寸、文字、门窗编号等。另,有些公司有明确要求,为突显本专业东西,要求将底图设为颜色灰8。
需求有了,接下来就是进行工具(动作宏和编程)与需求匹配。
需求:删除不必要标注,改变底图颜色。
操作:由于尺寸、文字、门窗编号等有单独图层,那么通过或关闭、或冻结、或删除图层即可实现第一条需求。关闭图层存在不可靠,因此只考虑冻结和删除。改变图层颜色即可实现第二需求。
匹配:录制宏与外部插件LISP程序都存在选择集与界面制约。因此,删除不易实现,选择冻结图层。
方法一:将底图处理过程录制成动作宏
调出图层窗口的命令是layer,其命令行命令形式实现是—layer。
以下一个小办公室的图纸为例说明。

录制前,要 明确你都要冻结的图层名和改变颜色的图层名 。这些需要你根据自己的图纸进行确认。基本上图层名大体一样的,根据你的图纸,设置一次之后,只要建筑专业设计人员不再擅自改图层或增加图层内对你有用的东西,就可以一直用的。也是之后LISP代码仅且仅需修改的东西。
需要冻结图层名:
小尺寸标注:PUB_DIM;标高标注:DIM_ELEV;门窗编号:WINDOW_TEXT;轴线:DOTE。
需要设灰8的图层名:
除冻结外的其他所有图层:WALL;STAIR;WINDOW;AXIS;散水。
录制之前,最好把这些图层复制到一个记事本里,且图层与图层之前 用英文,分割 。记住是英文逗号,记事本会显示一个点。

录制宏过程如下,看动图。
1.冻结图层

2.改变图层颜色,灰8的真彩色是:128,128,128。不用记,可以在图层设置颜色处查询。

3.录制完成,使用。

如果后边发现建筑图层有变化,也无需重新录制,只要将输入的图层处设为“暂停以请求用户输入”,直接在使用过程中修改即可。以冻结墙体为例。若是回放最后跳出回放错误,单击继续回放即可。

方法二:将底图处理过程编程,建立 LISP 程序文档
简而言之就是将刚才执行的命令过程,用LISP语言进行编程。
程序如下:


DEFUN C:DTCL()             

  (PROMPT "\n处理底图") 
  (SETVAR "CMDECHO" 0)
  (COMMAND "LAYER" "U" "*" "")
  (VL-LOAD-COM)
  (command "undo" "be")
(COMMAND "LAYER" "S" "0" "F" "PUB_DIM,WINDOW_TEXT,DIM_ELEV,DOTE" "C" "T" "128,128,128" "WALL,STAIR,WINDOW,AXIS,散水" "")
  (PROMPT "\r处理完毕")
  (command "undo" "e")
  (COMMAND "REGEN")
  (SETVAR "CMDECHO" 1)
  (PRINC)


程序说明:
按行说明,前面数字代表行。
1   定义底图处理函数名:DTCL
2   输入命令行显示信息:处理底图。即输出字符串。与C/C++程序中的Print输入字符串类似。
3   是否显示函数运行回显。就是layer冻结和设置颜色的过程是否显示,此处设置为0,意为不显示过程。此行与(SETVAR "CMDECHO" 1)行可一起删除,不影响运行。自行查验区别。
4   command是lisp函数,layer为cad命令,lisp中调用cad命令,即用command函数。调用layer命令,u是解锁,*不特指图层,意为将所有图层均解锁。“”回车,结束命令。
5  VL-LOAD-COM是初始化activeX环境,用于随意调用lisp函数,如无此条,当调用lisp函数时,命令行会提示没有什么什么函数。类似c++语言中的表头文件预处理#include <文件名> 。
6  调用cad命令undo,撤销当前执行的其他命令。

7  设置当前图层为0层,冻结图层PUB_DIM,WINDOW_TEXT,DIM_ELEV,DOTE,设置图层WALL,STAIR,WINDOW,AXIS,散水颜色为灰8。此条就是将刚才录制宏使用的命令过程变成了代码。且多了设置当前层。此行为需要后期修改的位置, 冻结图层及设置颜色图层有变动,修改此处即可 。其他行不用动。

8  命令行输出:处理完毕。
9  呼应第6行。结束。
10 图纸重生成,re。
11 应第3行。打开回显。
12 加载完成。
注:本代码CAD2010及CAD2014版本下均对本文小办公室例图进行处理,结果均可行。因本代码经查阅相关书籍及网络相关LISP语言后进行编译,因非计算机相关专业出身,若有不当,请大佬斧正。
代码使用,如下动图。

小结
动作宏与LISP程序在使用上来说,前者容易掌握,后者需要一定语言基础,且需要熟知LISP函数调用cad函数的语言规则。LISP在对于复杂问题处理上更简易,毕竟CAD本身就是代码组成。无论选择哪种,只要便于画图,均可。毕竟我们的远大理想都是走上人生巅峰,然后成功迎娶白富美。

全部回复(0 )

只看楼主 我来说两句抢沙发
这个家伙什么也没有留下。。。

CAD下载及教程

返回版块

52.07 万条内容 · 656 人订阅

猜你喜欢

阅读下一篇

0图层和Defpoints图层的区别及用途

Defpoints图层和0图层都 是AutoCAD系统图层,均不能被改名删除,但可以更改其特性。 区别在于 0图层可以被打印,但Defpoints也不能打印 。 0图层 通用用来创建块文件, 具有随层属性 (即:在哪个图层插入该块,该块就具有插入层的属性); Defpoints图层中放置了各种标注的基准点。 在平常是看不出来的,把标注炸开就能发现,关闭其它图层后,然后选择所有对象,就会发现里面是一些点对象。

回帖成功

经验值 +10