明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3188|回复: 11

[讨论] autolisp如何实现批量转换线型

[复制链接]
发表于 2013-12-27 22:11 | 显示全部楼层 |阅读模式
30明经币
本帖最后由 275437962 于 2013-12-29 21:52 编辑

链接网址:http://bbs.mjtd.com/thread-108815-1-1.html

 楼主| 发表于 2013-12-30 23:02 | 显示全部楼层
唉没有人帮忙
回复

使用道具 举报

发表于 2013-12-31 09:53 | 显示全部楼层
没有表达清楚
回复

使用道具 举报

发表于 2013-12-31 22:26 | 显示全部楼层
将CAD所有图层中的(直线、多段线、圆、圆弧)这四类对象的原来线型批量转换为对应的目标线型,并保证这些对象转换后所在的图层与其原来所在的图层一致。

如:X1  转为   X10
       X2  转为   X20
       X3  转为   X30
诸如此类,有很多。。。。

X1  转为   X10
这个X1和X10指的是线性比例的值吗?
回复

使用道具 举报

发表于 2014-1-1 02:19 | 显示全部楼层
  1. (defun c:tt()
  2.   (setq ent (ssget '((0 . "*LWPOLYLINE,CIRCLE,ARC,LINE"))))
  3.   (setq i 0)
  4.   (setq xxm (getstring "\n请输入线型名:"))
  5.   (repeat (sslength ent)
  6.     (setq name (ssname ent i))
  7.     (setq en (entget name))
  8.     (if (assoc 6 en)
  9.       (entmod (subst (cons 6 xxm) (assoc 6 en) en))
  10.       (entmod (append en (list (cons 6 xxm))))
  11.     )
  12.     (setq i (1+ i))
  13.     (princ)
  14.   )
  15. )
不知道是不是你想要的!
回复

使用道具 举报

 楼主| 发表于 2014-1-3 20:37 | 显示全部楼层
312735894 发表于 2014-1-1 02:19
不知道是不是你想要的!

不是这样的,我要的是能把我上面列的线型进行批量转换,当然那只列了一部分,我还有很多线型要转换,可以自行添加!
回复

使用道具 举报

发表于 2014-1-4 12:37 | 显示全部楼层
首先你得弄一个原线型与目标线型的一个表lstys((“线型名1” “目标线型名1”)...(“线型名n” “目标线型名n”)),这个表你可以直接写在程序里边(这最简单也最不人性化),当然写在文件里边用程序去读出来组成表呢应该会好一些,最好是做个对话框之类的让人选取需要转换的线型和目标线型那就更加人性化,接下来你得确保目标线型全部有效,如果没有的得想法加载它以保证它们有效
最后就相对来说比较简单,对需要处理的图元进行(SETQ EN(ENTGET  ENAME) LSTYLE(ASSOC 6 EN))如果LSTYLE为nil,需要得到其图层的线型(setq LSTYLE(assoc 6(tblsearch"layer"(cdr(assoc 8 en)))))根据转换线型表得到它的目标线型(setq newlsty(assoc (cdr LSTYLE)lstys)),如果newlsty为nil,那么该图元的线型不需要进行转换,否则需要转换(entmod (append(vl-remove(assoc 6 en)en)(list(cons 6(last newlsty)))))这是不会引起除线型以外的变化的,这可以放心
回复

使用道具 举报

 楼主| 发表于 2014-1-4 15:20 | 显示全部楼层
llsheng_73 发表于 2014-1-4 12:37
首先你得弄一个原线型与目标线型的一个表lstys((“线型名1” “目标线型名1”)...(“线型名n” “目标线型名 ...

朋友,能否帮忙写写,自己实现水平有限,谢谢了!!!
回复

使用道具 举报

发表于 2014-1-4 15:52 | 显示全部楼层
本帖最后由 llsheng_73 于 2014-1-4 15:59 编辑
275437962 发表于 2014-1-4 15:20
朋友,能否帮忙写写,自己实现水平有限,谢谢了!!!


要做得简单不人性化就容易,要做到最人性化就比较麻烦,那涉及到动态DCL,我还不太会,另外对于线型的加载我也不在行,这就是为什么我写了一大堆但没有把代码写出来的原因
对于我学的把新旧线型对照写到文件里边用程序读取它出来组成表是从南方cass的线型转换想到的,但它那种办法也明显还不够人性化

至于水平问题,我不认为有谁就比我差,也许仅仅只是你比我接触得晚一点点,但只要多动手写,多查资料,多看人家的,上手并不太难的
回复

使用道具 举报

发表于 2014-1-4 18:56 | 显示全部楼层
问题解决了......
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-10 08:24 , Processed in 0.158948 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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