jaminth 发表于 2007-7-13 13:25:00

图层转换的问题?!

本帖最后由 作者 于 2007-7-13 13:32:46 编辑 <br /><br /> <p>:帮忙编LISP,条件如下:</p><p>1.将图层名字layer12 改成sdd11</p><p>2.如果sdd11已经存在,则layer12合并到sdd11,</p><p>3.原来layer12 的线型为CONTINUOUS变为CENTER,颜色红色变为黄色.</p><p></p><p>非常之急,请各位高手帮帮忙.谢谢谢谢</p>

英雄无敌 发表于 2007-7-13 15:57:00

<p>不知道你为什么一定要用LISP编程,因为这在AUTOCAD中也不过是几步的问题,但还是给你编了一个,希望能对你有所帮助。</p><p>&nbsp;</p><p>&nbsp;</p>

jaminth 发表于 2007-7-13 18:38:00

因为我手上的施工图,有大量的旧图层,按单位要求,要把不同类的图层,转换成新的图层...不仅仅是一类图层需要转换..还有很多.我只是抛砖引玉,只要有高手,编出LISP的重点的部分,剩下的我自己再根据图纸上的具体情况.进行完善.<br/>谢谢<strong><font face="Verdana" color="#61b713">英雄无敌</font></strong>!

jaminth 发表于 2007-7-13 18:56:00

<p><strong><font face="Verdana" color="#61b713">英雄无敌,你的LISP操作的结果不能满足要求!</font></strong></p><p>1.将图层layer12改成sdd11后,layer12这一图层应该不存在.(你的LISP操作的结果,对图中的块不起作用.所以layer12这一图层还存在!).只有不满足第1个条件后,才执行第2步.</p><p>2.如果sdd11已经存在,则layer12合并到sdd11,</p><p>3.原来layer12 的线型为CONTINUOUS变为CENTER,颜色红色变为黄色.</p><p></p><p>非常之急,请各位高手帮帮忙.谢谢谢谢</p>

oyxx1023 发表于 2007-7-13 20:13:00

这应该叫抛玉引砖吧,

无痕 发表于 2007-7-15 04:57:00

本帖最后由 作者 于 2007-7-15 5:00:31 编辑

写了个通用函数.
(xdellay) = 删除图层 ----by 狂刀.2007.7
功能: 1. 删除图层 2. 原图层实体改层,改颜色,线型 3.新图层设置
格式: (xdellay 图层1 图层2 颜色 线型)
参数: 图层1字符串格式,要删除的图层名.如: "sdd12"
      图层2字符串格式,原图层1实体要改换到的图层名.如: "sdd11"
             实体表格式,可生成或修改图层2的属性.如:((1 . "sdd11")(62 . 1)(6 . "CENTER"))
      颜色   原图层1实体直接赋予颜色(不随层)
      线型   原图层1实体直接赋予线型(不随层)
返回: 表,(选集 图块名列表).包含处理过的实体选集和图块列表.
      如: (<Selection set: 26fd> ("A$C66672C40" "A$C1EAC634A"))
版本: v1.0 2007.7
实例:
(defun c:tt()(xdellay "sdd12" "sdd11" 2 "CENTER"))
(defun c:tt2 ()(xdellay "sdd12" '((1 . "sdd11")(62 . 1)(6 . "CENTER")) nil nil))
(defun c:tt3 ()(xdellay "sdd11" '((1 . "sdd12")(62 . 4)) 256 "bylayer"))对应楼主的要求,可以用tt.
附件为编译文件,不包含实例中定义的函数(c:tt c:tt2 c;tt3),可自行编写.
最近上传文件总不成功,均提示 "错误:请不要重复提交![ 重新上传 ] "
文件放到以下链接,文件名为 xdellay(删除图层).rar:
http://ys-c.ys168.com/?xdellay(删除图层).rar_67e4btjs5bs2bs5btnn4btrml0c2bk5bsmnom0bku14z97f14z
http://dreamskylxx.ys168.com/

jaminth 发表于 2007-7-15 18:00:00

<strong><font face="Verdana" color="#da2549">无痕, 能不能提供原文件?!谢谢</font></strong>

jaminth 发表于 2007-7-19 00:06:00

求救大家了!!

英雄无敌 发表于 2007-8-14 10:34:00

本帖最后由 作者 于 2007-8-14 11:11:40 编辑 <br /><br /> <p>你还是用CAD自带的图层转换器来合并吧,虽然当sadd11不存在时可以用rename,但当其存在时是用不了的,</p><p>而用图层转换器(命令:laytrans),可以实现你的功能。</p><p>输入命令后,会弹出对话框,在转换为你点新建,(你的程序新建为sadd11)</p><p>再先选中转换自中的“lay12","sadd11"(如果有的话),点击映射,再点转换就行了。</p><p>&nbsp;</p><img src="file:///c:/gfg.bmp" border="0" alt=""/>

jaminth 发表于 2007-8-14 20:02:00

<p>谢谢!图层转换器,我已经学用了,只不过想用LISP大批量自动完成.用图层转换器,要一个一个的映射,有点麻烦.用起来就是不那么顺手.</p><p>呵呵,我已经自己学出了LISP程序了!不过还是谢谢大家的热忱帮助!</p>
页: [1] 2
查看完整版本: 图层转换的问题?!