明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 603|回复: 2

[提问] 求大神修改下这个线宽加粗,这个程序每次执行选择了一个后就不能再选其他了

[复制链接]
发表于 2020-8-8 15:55:00 | 显示全部楼层 |阅读模式
  求大神修改下,下面程序选择一个后就不能执行了,求改成可以多选
(defun c:XKJC( / sh s ss ww ssn)
    (princ"\n程序功能:支持*LINE,ARC,CIRCLE,ELLIPSE加粗")
    (setq sh (getvar "peditaccept"))
    (setvar "peditaccept" 0)
    (setvar "cmdecho" 0)
    (if (= jcxw_0 Nil) (setq jcxw_0 1))
    (setq ww (getdist (strcat "\n 请输入线宽 <" (rtos jcxw_0 2) ">: ")))
    (if (= ww nil) (setq ww jcxw_0))(setq jcxw_0 ww)
    (setq ss (ssget '((-4 . "<or")(0 . "LINE")(0 . "CIRCLE")(0 . "ARC")
                         (0 . "POLYLINE")(0 . "LWPOLYLINE")(-4 . "or>"))))
    (setq s 0) (command "undo" "be")
    (repeat (if ss (sslength ss) (progn (princ "\n 未选择对象。") 0))
       (setq ssn (ssname ss s) entyp (cdr (assoc 0 (entget ssn))))
       (cond ((= entyp "CIRCLE") (progn
           (setq rr (cdr (assoc 40 (entget ssn)))
                cen (cdr (assoc 10 (entget ssn))))
           (command "donut" (* 2 (- rr (/ ww 2))) (* 2 (+ rr (/ ww 2))) cen "")
           (command "erase" ssn "")))
           ((= entyp "LINE") (command "pedit" ssn "y" "w" ww ""))
    ((= entyp "ARC") (command "pedit" ssn "y" "w" ww ""))
           ((= entyp "LWPOLYLINE") (command "pedit" ssn "w" ww ""))
    ((= entyp "POLYLINE") (command "pedit" ssn "w" ww ""))
       )(setq s (1+ s))
     )(command "undo" "e")
     (setvar "peditaccept" sh)
    (princ)
)


"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2020-8-8 16:42:18 | 显示全部楼层
(defun c:tttt( / sh s ss ww ssn)
    (princ"\n程序功能:支持*LINE,ARC,CIRCLE,ELLIPSE加粗")
    (setq sh (getvar "peditaccept"))
    (setvar "peditaccept" 0)
    (setvar "cmdecho" 0)
    (if (= jcxw_0 Nil) (setq jcxw_0 1))
    (setq ww (getdist (strcat "\n 请输入线宽 <" (rtos jcxw_0 2) ">: ")))
    (if (= ww nil) (setq ww jcxw_0))(setq jcxw_0 ww)
    (while (setq ss (ssget '((-4 . "<or")(0 . "LINE")(0 . "CIRCLE")(0 . "ARC")
                         (0 . "POLYLINE")(0 . "LWPOLYLINE")(-4 . "or>"))))
    (setq s 0) (command "undo" "be")
    (repeat (if ss (sslength ss) (progn (princ "\n 未选择对象。") 0))
       (setq ssn (ssname ss s) entyp (cdr (assoc 0 (entget ssn))))
       (cond ((= entyp "CIRCLE") (progn
           (setq rr (cdr (assoc 40 (entget ssn)))
                cen (cdr (assoc 10 (entget ssn))))
           (command "donut" (* 2 (- rr (/ ww 2))) (* 2 (+ rr (/ ww 2))) cen "")
           (command "erase" ssn "")))
           ((= entyp "LINE") (command "pedit" ssn "y" "w" ww ""))
    ((= entyp "ARC") (command "pedit" ssn "y" "w" ww ""))
           ((= entyp "LWPOLYLINE") (command "pedit" ssn "w" ww ""))
    ((= entyp "POLYLINE") (command "pedit" ssn "w" ww ""))
       )(setq s (1+ s))
     ))(command "undo" "e")
     (setvar "peditaccept" sh)
    (princ)
)
发表于 2020-8-9 10:55:01 | 显示全部楼层
;稍微改了下,当练练手,加了个错误处理
  1. (defun c:tt ( / *error* s ss ww x sysvar values i )
  2.   (defun *error* (msg)
  3.     (mapcar 'setvar sysvar values)
  4.     (princ)
  5.   )
  6.   (setq sysvar '(cmdecho peditaccept) values (mapcar 'getvar sysvar))
  7.   (mapcar 'setvar '("CMDECHO" "PEDITACCEPT") '(0 1))
  8.   (princ"\n程序功能:支持*LINE,ARC,CIRCLE加粗")
  9.   (if (= jcxw_0 nil) (setq jcxw_0 1))
  10.   (setq ww (getdist (strcat "\n 请输入线宽 <" (rtos jcxw_0 2) ">: ")))
  11.   (if (= ww nil) (setq ww jcxw_0))(setq jcxw_0 ww)
  12.   (command "undo" "be")
  13.   (if (setq ss (ssget ":L" '((0 . "line,*POLYLINE,arc,CIRCLE"))))
  14.     (repeat (setq i (sslength ss))
  15.       (setq s (ssname ss (setq i (1- i))))
  16.       (setq x (cdr (assoc 0 (entget s))))
  17.       (cond
  18.         ((wcmatch x "LINE,ARC")
  19.           (command "_.pedit" s "_j" "" "_w" ww "")
  20.         )
  21.         ((wcmatch x "*POLYLINE")
  22.           (vla-put-constantWidth (Vlax-Ename->Vla-Object s)ww)
  23.         )
  24.         ((eq x "CIRCLE")
  25.           (setq rr (cdr (assoc 40 (entget s))) cen (cdr (assoc 10 (entget s))))
  26.           (command "donut" (* 2 (- rr (/ ww 2))) (* 2 (+ rr (/ ww 2))) cen "")
  27.           (entdel s)
  28.         )
  29.       )
  30.     )
  31.   )
  32.   (command "undo" "e")
  33.   (*error* nil)
  34. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-17 20:39 , Processed in 0.163884 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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