找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1807|回复: 8

[求助] [求助]:在lisp程序中如何设置某层颜色线型线宽随层?

[复制链接]
发表于 2006-6-16 17:14:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
问题与标题一致。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-6-18 00:17:48 | 显示全部楼层
终于成功了,楼主试试行么?
  1. (defun c:test (/ ent ss1 slth n ent1 ent2 color object1)
  2.   (setq        ent  (entget (car (entsel "\n请选择:")))
  3.         ss1  (ssget "_X" (list (assoc 8 ent)))
  4.         slth (sslength ss1)
  5.         n    0
  6.   )
  7.   (if (/= slth 0)
  8.     (repeat slth
  9.       (setq ent1    (ssname ss1 n)
  10.             object1 (vlax-ename->vla-object ent1)
  11.       )
  12.       (vlax-put-property object1 'linetype "bylayer")
  13.       (vlax-put-property object1 'lineweight -1)
  14.       (setq ent1  (vlax-vla-object->ename object1)
  15.             ent2  (entget ent1)
  16.             color (car (member (assoc 62 ent2) ent2))
  17.       )
  18.       (if (/= color nil)
  19.         (progn
  20.           (entdel ent1)
  21.           (setq ent2 (vl-remove (assoc 62 ent2) ent2))
  22.           (entmake ent2)
  23.         )
  24.       )
  25.       (setq n (1+ n))
  26.     )
  27.   )
  28.   (princ)
  29. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2006-6-18 03:57:33 | 显示全部楼层
1   (if (/= slth 0) 条件可以用
  1. (if  (setq e (entget (car (entsel))) ss (ssget "x" (list (assoc 8 e))))
  2.   (progn
  3.     ....


2  (vlax-put-property object1 'linetype "bylayer") -> (vla-put-linetype object1 acBylayer)

3  (vlax-put-property object1 'lineweight -1) -> (vla-put-lineweight object1 acBylayer)

4 后面的颜色部分不用那么代码,用一句话代替
  1. (vla-put-color object1 acBylayer)
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-6-18 13:44:47 | 显示全部楼层
谢谢eachy斑竹!
我将程序更改后,当运行至(vla-put-linetype object1 acBylayer)句时提示“ 错误: Automation 错误。 未找到主键”,程序运行终止!
更改后代码如下:
  1. (defun c:test (/ ent ss1 slth n ent1 object1)
  2.   (setq        ent  (entget (car (entsel "\n请选择:")))
  3.         ss1  (ssget "_X" (list (assoc 8 ent)))
  4.         slth (sslength ss1)
  5.         n    0
  6.   )
  7.   (if (/= slth 0)
  8.     (repeat slth
  9.       (setq ent1    (ssname ss1 n)
  10.             object1 (vlax-ename->vla-object ent1)
  11.       )
  12.       (vla-put-linetype object1 acbylayer)
  13.       (vla-put-lineweight object1 acBylayer)
  14.       (vla-put-color object1 acBylayer)
  15.       (setq n (1+ n))
  16.     )
  17.   )
  18.   (princ)
  19. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2006-6-18 14:22:07 | 显示全部楼层
(vla-put-linetype object1 acbylayer) -> (vla-put-linetype object1 "ByLayer")
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-6-18 14:49:42 | 显示全部楼层
OK!成功了,谢谢斑竹!
  1. (defun c:test (/ ent ss1 slth n ent1 object1)
  2.   (setq        ent  (entget (car (entsel "\n请选择:")))
  3.         ss1  (ssget "_X" (list (assoc 8 ent)))
  4.         slth (sslength ss1)
  5.         n    0
  6.   )
  7.   (if (/= slth 0)
  8.     (repeat slth
  9.       (setq ent1    (ssname ss1 n)
  10.             object1 (vlax-ename->vla-object ent1)
  11.       )
  12.       (vla-put-linetype object1 "bylayer")
  13.       (vla-put-lineweight object1 -1)
  14.       (vla-put-color object1 acBylayer)
  15.       (setq n (1+ n))
  16.     )
  17.   )
  18.   (princ)
  19. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

发表于 2006-6-18 19:47:42 | 显示全部楼层
其实这个不用vlisp还要简单一点不是吗?
[php]
(defun c:test (/ en ss)
  (while (not (setq en (entsel "\n请选择图层对像:"))))
  (setq        ss (ssget "X"
                  (list (assoc 8 (entget (car en))))
           )
  )
  (foreach x (list "C" "LT" "LW")
    (command "change" ss "" "p" x "bylayer" "")
  )
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 918个

财富等级: 财运亨通

发表于 2006-7-13 21:06:59 | 显示全部楼层
如何支持多选?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-10-9 10:33:20 | 显示全部楼层
修改支持多选很容易了,修改选择命令为ssget,并增加一个最外层的循环即可。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-16 14:28 , Processed in 0.180394 second(s), 45 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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