- 积分
- 3466
- 明经币
- 个
- 注册时间
- 2010-9-4
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
版主有一个根据执行的命令自动切换图层的工具,但是在我平时工作中,更多的是用一些基本的命令绘制cad基本图元,然后放置在某个图层上.
例如同样是用line画条直线,这条直线可能是挡烟垂壁可能是伸缩缝也可能只是条用于标记的注释线.
因此我自己写了一个小程序,经过多次迭代以后能满足基本的使用了,但是感觉代码太过啰嗦.而且我是初学者,很多时候因为不会用某个函数,都是用一些很别扭的方式来实现相同的功能,例如以前不知道foreach时用repeat循环.所以我发在这里希望能学到更多东西.
使用准备:
需要提前配置图层列表文件,并将该文件的路径替换lsp文件中的fn变量的值.
配置文件格式如下(可参见附件示例):
nil;2;370;62
nil;(lambda (x) x );(lambda (x) (fix (* 100 (atof x))));(lambda (x) (atoi x))
快捷代码;图层名;线宽mm;颜色索引号
1;_01临时辅助线;0.25;51
2;_02防烟分区示意图;0.5;170
3;_03最远点距离;0.25;103
文件第一行为dxf
第二行为lambda函数.由于函数中难免会有空格,分隔方式为分号.
第三行为方便用户修改配置文件时使用的行标签
第四行起是各图层的相关信息.
命令名为wyl_chlay,
使用方法,执行命令后直接按空格显示图形列表方便查询图层和切换代码的对应关系,执行命令后输入切换代码切换图层.
当空选的时候切换当前图层为目标图层,并解锁该图层.
有选择时切换(未锁定的)选择对象的图层,并且保持当前激活图层不变.
如果无目标图层,根据配置文件中的信息自动新建图层.如已有目标图层,不会调整目标图层的设置.
最新一次修改(V8)主要目的是增加扩容性,直接在图层配置文件中修改即可,由于程序是利用dxf新建的图层,因此所有可以通过dxf配置的内容均可任意增减(除前两列).
各组码含义及对应的lambda函数如下,常用的应该就是前四个:
(list
(list 370 "(lambda (x) (fix (* 100 (atof x))))" "线宽mm");dxf中存储的是线宽枚举值,数值上等于线宽mm数*100
(list 62 "(lambda (x) (atoi x))" "颜色索引号");当为负数时图层为关闭状态
(list 6 "(lambda (x) x)" "线型");字符串
(list 290 "(lambda (x) (atoi x))" "是否打印")
(list 70 "(lambda (x) (atoi x))" "锁定冻结方式")
)
每个子表的第一个为组码,对应配置文件中的第一行,第二个为lamba函数,对应配置文件的第二行(不带引号),第三个为列标签,对应配置文件的第三行.
代码中使用的正则表达式函数取自<AutoLisp葵花宝典 >常用函数中.
如果使用中发现什么bug,请提出来,谢谢.
附件见下
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
x
|