明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1690|回复: 4

[已解答] 完善一下程序(加粗直线)

[复制链接]
发表于 2013-5-14 11:10 | 显示全部楼层 |阅读模式
  1. ;;;加粗线程序
  2. ;(princ "\欢迎您使用加粗线程序!该程序命令名是jl。")  
  3. (defun c:jll(/ op oc p1 ss sn en n2 p2 kuan)
  4.   ;(setq oer *error* *error* myerr)
  5.   (setq op (getvar "plinewid") oc (getvar "clayer"))   
  6.   (setvar "cmdecho" 0)  
  7.   (command "undo" "g")      
  8.   (graphscr)
  9.   (if (= kuan nil) (setq kuan 60))
  10.   (princ "\n线宽<") (princ kuan)
  11.   (setq x (getint ">:") kuan (if x x kuan))
  12.   (while
  13.     (progn
  14.        (initget "W")
  15.        (setq sn (entsel (strcat "\n(线宽为" (itoa kuan) ") 改线宽W/选择要加粗的
  16. 线:")))
  17.     )   
  18.     (if (eq "W" sn)
  19.       (progn
  20.         (princ "\n线宽<") (princ kuan)
  21.         (setq x (getint ">:") kuan (if x x kuan))
  22.         (setq sn (entsel "\n选择要加粗的线:"))
  23.       )
  24.     )   
  25.     (setq n2 (* kuan 0.5) sn (car sn))
  26.     (setvar "osmode" 0)
  27.     (setq p2 (getpoint "\n哪一侧(请在加粗的一侧点取一点)<双侧加粗>:"))
  28.     (if p2 (progn
  29.         (command "offset" n2 sn p2 "")
  30.         (setq sn (entlast))
  31.     ))
  32.     (if (= (tblsearch "LAYER" "jl") nil) (command "layer" "n" "jl" ""))
  33.     (setq nam (cdr (assoc 0 (entget sn))))
  34.     (cond
  35.       ((or (= "LINE" nam) (= "ARC" nam))
  36. (command "_.pedit" sn "y" "w" kuan "")
  37. )
  38.       ((= nam "LWPOLYLINE")
  39.   (command "_.pedit" sn "w" kuan "")
  40.       )
  41.       (t
  42.   (princ "\n>>>对象类型应为:LINE / ARC / LWPOLYLINE")
  43.       )
  44.     )
  45.     ;;(command "chprop" "l" "" "la" "jl" "")
  46.   )
  47.   (setvar "clayer" oc)      
  48.   (setvar "plinewid" op)  
  49.   (command "undo" "e")
  50.   (setq *error* oer)(princ)
  51. )

程序执行到“哪一侧(请在加粗的一侧点取一点)<双侧加粗>”这里时,“出现错误: 函数被取消”这时程序需要重新设置线宽才能完成加粗的任务。请高手完善一下
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2013-5-14 11:49 | 显示全部楼层
修改线宽程序如下,供参考。
  1. (defun C:CW (/ p l n nw chm en ow enm e1)
  2.       (setq p (ssget))
  3.       (if p (progn
  4.         (setq l 0 n (sslength p) chm 0)
  5.         (while (< l n)
  6.           (setq enm (cdr (assoc 0 (setq en (entget (ssname p l))))))
  7.           (if(or (= enm "LWPOLYLINE") (= enm "POLYLINE") (= enm "LINE") (= enm "ARC")(= enm "CIRCLE"))
  8.              (progn
  9.                (if (zerop chm) (progn
  10.                (if (and (/= enm "LINE") (/= enm "ARC")) (setq ow (cdr (assoc 40 en)))
  11.                    (setq ow 0))
  12.                 (princ "\n新线宽<")
  13.                 (princ (rtos (/ ow 1) 2 2))
  14.                 (setq nw (getreal "mm>:"))
  15.                 (if (null nw) (setq nw ow))
  16.               ))
  17.            (if (= enm "CIRCLE")
  18.              (progn
  19.                ;(setq angle1 (/ pi 2))
  20.                (setq pt1 (polar (CDR(ASSOC 10 EN)) 0 (CDR(ASSOC 40 EN))))
  21.                (setq pt2 (polar (CDR(ASSOC 10 EN)) pi (CDR(ASSOC 40 EN))))
  22.                (command ".BREAK" pt1 pt2)
  23.                (command "pedit" (ssname p l) "y" "w" nw "c" "")
  24.              ))
  25.            (if (or (= enm "LINE") (= enm "ARC"))
  26.                (command "pedit" (ssname p l) "y" "w" nw "")
  27.                
  28.                (if (or(= enm "LWPOLYLINE") (= enm "POLYLINE"))
  29.                    (command "pedit" (ssname p l) "w" nw "")
  30.                )  
  31.              )
  32.               (setq  chm (1+ chm))
  33.           ))
  34.           (setq l (1+ l))
  35.         )
  36.       ))
  37.       (princ "改了") (princ chm) (princ "条线.")
  38.       (PRINC)
  39. )
 楼主| 发表于 2013-5-14 14:57 | 显示全部楼层
上面的程序不能选择加粗直线的方向,另外好像加粗的宽度不能小于10
发表于 2013-5-15 10:53 | 显示全部楼层
szx025 发表于 2013-5-14 14:57
上面的程序不能选择加粗直线的方向,另外好像加粗的宽度不能小于10

是不能加粗直线,只能加粗多义线,加粗宽度不受限制。
发表于 2013-5-15 11:03 | 显示全部楼层
其实既能加粗直线,也能加粗其他线,宽度不受限制。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-7 20:48 , Processed in 2.279778 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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