明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3377|回复: 10

图层转换的问题?!

[复制链接]
发表于 2007-7-13 13:25:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2007-7-13 13:32:46 编辑

:帮忙编LISP,条件如下:

1.将图层名字layer12 改成sdd11

2.如果sdd11已经存在,则layer12合并到sdd11,

3.原来layer12 的线型为CONTINUOUS变为CENTER,颜色红色变为黄色.

非常之急,请各位高手帮帮忙.谢谢谢谢

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2007-7-13 15:57:00 | 显示全部楼层

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

 

 

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2007-7-13 18:38:00 | 显示全部楼层
因为我手上的施工图,有大量的旧图层,按单位要求,要把不同类的图层,转换成新的图层...不仅仅是一类图层需要转换..还有很多.我只是抛砖引玉,只要有高手,编出LISP的重点的部分,剩下的我自己再根据图纸上的具体情况.进行完善.
谢谢英雄无敌
 楼主| 发表于 2007-7-13 18:56:00 | 显示全部楼层

英雄无敌,你的LISP操作的结果不能满足要求!

1.将图层layer12改成sdd11后,layer12这一图层应该不存在.(你的LISP操作的结果,对图中的块不起作用.所以layer12这一图层还存在!).只有不满足第1个条件后,才执行第2步.

2.如果sdd11已经存在,则layer12合并到sdd11,

3.原来layer12 的线型为CONTINUOUS变为CENTER,颜色红色变为黄色.

非常之急,请各位高手帮帮忙.谢谢谢谢

发表于 2007-7-13 20:13:00 | 显示全部楼层
这应该叫抛玉引砖吧,
发表于 2007-7-15 04:57:00 | 显示全部楼层
本帖最后由 作者 于 2007-7-15 5:00:31 编辑

写了个通用函数.
  1. (xdellay) = 删除图层 ----by 狂刀.2007.7
  2. 功能: 1. 删除图层 2. 原图层实体改层,改颜色,线型 3.新图层设置
  3. 格式: (xdellay 图层1 图层2 颜色 线型)
  4. 参数: 图层1  字符串格式,要删除的图层名.如: "sdd12"
  5.       图层2  字符串格式,原图层1实体要改换到的图层名.如: "sdd11"
  6.              实体表格式,可生成或修改图层2的属性.如:((1 . "sdd11")(62 . 1)(6 . "CENTER"))
  7.       颜色   原图层1实体直接赋予颜色(不随层)
  8.       线型   原图层1实体直接赋予线型(不随层)
  9. 返回: 表,(选集 图块名列表).包含处理过的实体选集和图块列表.
  10.       如: (<Selection set: 26fd> ("A$C66672C40" "A$C1EAC634A"))
  11. 版本: v1.0 2007.7
  12. 实例:
  13. (defun c:tt()(xdellay "sdd12" "sdd11" 2 "CENTER"))
  14. (defun c:tt2 ()(xdellay "sdd12" '((1 . "sdd11")(62 . 1)(6 . "CENTER")) nil nil))
  15. (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/

 楼主| 发表于 2007-7-15 18:00:00 | 显示全部楼层
无痕, 能不能提供原文件?!谢谢
 楼主| 发表于 2007-7-19 00:06:00 | 显示全部楼层
求救大家了!!
发表于 2007-8-14 10:34:00 | 显示全部楼层
本帖最后由 作者 于 2007-8-14 11:11:40 编辑

你还是用CAD自带的图层转换器来合并吧,虽然当sadd11不存在时可以用rename,但当其存在时是用不了的,

而用图层转换器(命令:laytrans),可以实现你的功能。

输入命令后,会弹出对话框,在转换为你点新建,(你的程序新建为sadd11)

再先选中转换自中的“lay12","sadd11"(如果有的话),点击映射,再点转换就行了。

 

 楼主| 发表于 2007-8-14 20:02:00 | 显示全部楼层

谢谢!图层转换器,我已经学用了,只不过想用LISP大批量自动完成.用图层转换器,要一个一个的映射,有点麻烦.用起来就是不那么顺手.

呵呵,我已经自己学出了LISP程序了!不过还是谢谢大家的热忱帮助!

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-17 06:41 , Processed in 0.183511 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表