找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 925|回复: 10

[求助]:求根据颜色将线加粗的LISP程序

[复制链接]
发表于 2005-10-17 08:24:03 | 显示全部楼层 |阅读模式

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

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

×
将颜色为红色的线或者扩展为选择图层中得颜色得线,(包括多义线)线宽都加粗为某一个值,窗选和全部选择两种形式。(可以实现吗?)

信箱已满需删除。by xyp1964[/COLOR]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-10-17 09:21:04 | 显示全部楼层
  1. [FONT=courier new](load "xyp_lib")
  2. ;|加载通用函数(可在签名栏直接下载)
  3. 如果已经下载xyp_lib并放到搜索路径下可以不再下载!
  4. 利用以下任何一种方式即可加载和运行通用函数内的所有子程序:
  5. 1.在acad.lsp中增加(load"xyp_lib")
  6. 2.在每个程序内增加(load"xyp_lib")
  7. 3.在command下,输入(load"xyp_lib")
  8. 4.在菜单.mnl中增加(load"xyp_lib")
  9. 5.将xyp_lib.vlx文件直接拽到cad屏幕
  10. [COLOR=red] ★通用函数下载地址:[/COLOR][url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]|;

  11. ;;;红线改线宽
  12. (defun c:test ()
  13.   (CMDLA0)
  14.   (setq        ss (ssget '((62 . 1)))
  15.         wt (UREAL 7 "" "\n线宽" wt)
  16.         i  -1
  17.   )
  18.                                         ;(mkla "TEST" 2)
  19.   (while (setq s1 (ssname ss (setq i (1+ i))))
  20.     (setq e (entget s1))
  21.                                         ;(sub_upd s1 8 "TEST")
  22.                                         ;(sub_upd s1 62 2)
  23.     (cond ((or (= (dxf 0 e) "POLYLINE")
  24.                (= (dxf 0 e) "LWPOLYLINE")
  25.            )
  26.            (command "pedit" s1 "w" wt "")
  27.           )
  28.           ((= (dxf 0 e) "LINE")
  29.            (command "pedit" s1 "y" "w" wt "")
  30.           )
  31.           (t (princ))
  32.     )
  33.   )
  34.   (CMDLA1)
  35. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2005-10-17 11:17:46 | 显示全部楼层
最初由 kaishuibaihn 发布
[B]这样得线不能加粗,有办法没有 [/B]

发个dwg图。
(defun X-putweight (ename weight)
  (cond        ((or (= (dxf 0 (entget ename)) "POLYLINE")
             (= (dxf 0 (entget ename)) "LWPOLYLINE")
         )
         (command "pedit" ename "w" weight "")
        )
        ((= (dxf 0 (entget ename)) "LINE")
         (command "pedit" ename "y" "w" weight "")
        )
        (t (princ))
  )
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-17 11:44:38 | 显示全部楼层
图纸如下(所有颜色随层(注意是层颜色是红色)得线都要求加粗)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-19 13:37:51 | 显示全部楼层
  1. [FONT=courier new](load "xyp_lib")
  2. ;|加载通用函数(可在签名栏直接下载)
  3. 如果已经下载xyp_lib并放到搜索路径下可以不再下载!
  4. 利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
  5. ★1·在acad.lsp中增加(load"xyp_lib")
  6. ■2·在每个程序内增加(load"xyp_lib")
  7. ■3·在command下,输入(load"xyp_lib")
  8. ■4·在菜单.mnl中增加(load"xyp_lib")
  9. ■5·将xyp_lib.vlx文件直接拽到cad屏幕
  10. ★通用函数下载地址:
  11. [url]http://www.xdcad.net/forum/attachme...&postid=1606661[/url]
  12. [url]http://www.mjtd.com/bbs/dispbbs.asp...ID=37554&page=1[/url]|;

  13. ;;;加粗红色或层颜色是红色的线
  14. (defun c:test (/ la co ln ss)
  15.   (cmdla0)
  16.   (if (null no1)
  17.     (setq no1 100)
  18.   )
  19.   (setq        no1 (UREAL 7 "" "\n线宽" no1)
  20.         la  (tblnext "layer" t)
  21.   )
  22.   (while la
  23.     (setq co (dxf 62 la)
  24.           LN (dxf 2 la)
  25.     )
  26.     (if        (= co 1)
  27.       (progn
  28.         (if (setq ss (ssget "X" (list '(0 . "LINE,ARC") (cons 8 LN))))
  29.           (command "Pedit" "m" ss "" "y" "w" no1 "")
  30.         )
  31.         (if (setq ss (ssget "X" (list '(0 . "*POLYLINE") (cons 8 LN))))
  32.           (command "Pedit" "m" ss "" "w" no1 "")
  33.         )
  34.       )
  35.     )
  36.     (setq la (tblnext "layer" nil))
  37.   )
  38.   (if (setq ss (ssget "X" '((0 . "LINE,ARC") (62 . 1))))
  39.     (command "Pedit" "m" ss "" "y" "w" no1 "")
  40.   )
  41.   (if (setq ss (ssget "X" '((0 . "*POLYLINE") (62 . 1))))
  42.     (command "Pedit" "m" ss "" "w" no1 "")
  43.   )
  44.   (cmdla1)
  45. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-27 11:08:29 | 显示全部楼层
xyp1964 兄
可否将此LISP再扩展一下,先要求选择颜色,然后根据颜色加粗(包括随层的同颜色的线)还有可否最后处理时增加一个窗选图形和全部选择图形控制键。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-27 14:29:26 | 显示全部楼层
  1. [FONT=courier new]
  2. ;;;加粗红色或层颜色是红色的线
  3. (defun c:test (/ la co ln ss)
  4.   (cmdla0)
  5.   (if (null no1)
  6.     (setq no1 100)
  7.   )
  8.   (if (null num)
  9.     (setq num 1)
  10.   )
  11.   (setq        num  (UINT 1 "" "\n颜色号" num)
  12.         no1  (UREAL 7 "" "\n线宽" no1)
  13.         mode (UKWORD 1 "1 2" "\n选择方式 : 1-全部/2-窗选" mode)
  14.         la   (tblnext "layer" t)
  15.   )
  16.   (if (= mode "1")
  17.     (progn
  18.       (while la
  19.         (setq co (dxf 62 la)
  20.               LN (dxf 2 la)
  21.         )
  22.         (if (= co num)
  23.           (progn
  24.             (if
  25.               (setq ss (ssget "X" (list '(0 . "LINE,ARC") (cons 8 LN))))
  26.                (command "Pedit" "m" ss "" "y" "w" no1 "")
  27.             )
  28.             (if        (setq
  29.                   ss (ssget "X" (list '(0 . "*POLYLINE") (cons 8 LN)))
  30.                 )
  31.               (command "Pedit" "m" ss "" "w" no1 "")
  32.             )
  33.           )
  34.         )
  35.         (setq la (tblnext "layer" nil))
  36.       )
  37.       (if (setq ss (ssget "X" (list '(0 . "LINE,ARC") (cons 62 num))))
  38.         (command "Pedit" "m" ss "" "y" "w" no1 "")
  39.       )
  40.       (if (setq ss (ssget "X" (list '(0 . "*POLYLINE") (cons 62 num))))
  41.         (command "Pedit" "m" ss "" "w" no1 "")
  42.       )
  43.     )
  44.     (progn
  45.       (while la
  46.         (setq co (dxf 62 la)
  47.               LN (dxf 2 la)
  48.         )
  49.         (if (= co num)
  50.           (progn
  51.             (if
  52.               (setq ss (ssget (list '(0 . "LINE,ARC") (cons 8 LN))))
  53.                (command "Pedit" "m" ss "" "y" "w" no1 "")
  54.             )
  55.             (if        (setq
  56.                   ss (ssget (list '(0 . "*POLYLINE") (cons 8 LN)))
  57.                 )
  58.               (command "Pedit" "m" ss "" "w" no1 "")
  59.             )
  60.           )
  61.         )
  62.         (setq la (tblnext "layer" nil))
  63.       )
  64.       (if (setq ss (ssget (list '(0 . "LINE,ARC") (cons 62 num))))
  65.         (command "Pedit" "m" ss "" "y" "w" no1 "")
  66.       )
  67.       (if (setq ss (ssget (list '(0 . "*POLYLINE") (cons 62 num))))
  68.         (command "Pedit" "m" ss "" "w" no1 "")
  69.       )
  70.     )
  71.   )
  72.   (cmdla1)
  73. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-20 10:00:57 | 显示全部楼层
xyp1964兄,还得麻烦你帮我看一下,如果是全选所有得红线都可以加粗,可是窗选却选不到对象,这是图形文件,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-3-20 10:12:08 | 显示全部楼层
线宽值为零不行啊!请斑竹再完善一下。
有时出现提示 “错误: AutoCAD 变量设置被拒绝: "clayer" nil”
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-3-20 19:58:34 | 显示全部楼层
  1. [FONT=courier new];;;加粗特定颜色(或层颜色)的线
  2. (defun c:test (/ la co ln ss)
  3.   (cmdla0)
  4.   (if (null int)
  5.     (setq int 1)
  6.   )
  7.   (if (null no1)
  8.     (setq no1 100)
  9.   )
  10.   (setq        int (UINT 7 "" "\n颜色号" int)
  11.         no1 (UREAL 1 "" "\n线宽" no1)
  12.         ukw (UKWORD 7 "1 2" "\n选择方式 : 1-全部/2-窗选" ukw)
  13.         i   -1
  14.   )
  15.   (if (= ukw "1")
  16.     (setq ss (ssget "X"))
  17.     (setq ss (ssget))
  18.   )
  19.   (while (setq s1 (ssname ss (setq i (1+ i))))
  20.     (setq etype (xyp-get-dxf 0 s1))
  21.     (if        (= (xyp-get-Color s1) int)
  22.       (xyp-put-CurveWeight s1 no1)
  23.     )
  24.     (if        (or (= etype "CIRCLE")
  25.             (= etype "ELLIPSE")
  26.         )
  27.       (command "chprop" (entlast) "" "c" int "")
  28.     )
  29.   )
  30.   (cmdla1)
  31. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-21 18:27 , Processed in 0.196351 second(s), 53 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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