明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1429|回复: 6

怎样更改线宽?

[复制链接]
发表于 2010-12-3 19:41:31 | 显示全部楼层 |阅读模式
      在LISP程序中,怎样才能改变LWPOLYLINE 线的宽度?请高手指教。。。。。。。
发表于 2010-12-3 21:04:24 | 显示全部楼层
直接使用命令CHPROP或PEDIT
 楼主| 发表于 2010-12-3 23:21:01 | 显示全部楼层
哦。。。对哦。。。一语惊醒梦中人啊。。。谢谢版主。。。。。
发表于 2010-12-3 23:41:15 | 显示全部楼层
change也行
发表于 2010-12-4 08:37:41 | 显示全部楼层
;;;批次修改线宽
;;;autocad 2008 测试 o.k.
(defun dxf(code elist)
(cdr (assoc code elist))
)
;
(defun dtr(a)(* pi (/ a 180.0)))
(defun rtd(a)(/ (* a 180.0) pi))
(defun C:chwid(/ ss1 emax count et en ed )
(setvar "BLIPMODE" 0)
(setvar "cmdecho" 0)
  (prompt "***** 改变线或多义线的宽度 *****")
;  (setq width(getreal"请输入线宽<30>:"));

;     (IF (/= width NIL) (SETQ width-S width)(PROGN (SETQ width 10)(SETQ width-S width)))
;         (PRINC "\n 请输入线宽 <")(PRINC width)(PRINC ">:")
;      (setq width (GETDIST))
;      (IF (= width "")(SETQ width width-S))
;  (if (null width) (setq width 30.0));
;     (IF (/= width NIL) (SETQ width-S width) (SETQ width 0))
;         (PRINC "\n 请输入线宽 (")(PRINC width)(PRINC "):")
;    (setq width (GETDIST))
;     (IF (= width NIL)(SETQ width width-S))

     (IF (/= width NIL) (SETQ width-S width)(PROGN (SETQ width 30)(SETQ width-S width)))
         (PRINC "\n 请输入线宽 <")(PRINC width)(PRINC ">:")
      (setq width (GETREAL))
      (IF (= width NIL)(SETQ width width-S))
                  

(if  (setq ss1(ssget));
(progn
  (setq emax(sslength ss1));
  (setq count 0)
  (setq nonline 0)
   (while (< count emax)
        (setq en(ssname ss1 count))
        (setq ed(entget en))
        (setq et(dxf 0 ed))
        (cond
          ((= et "LINE")
            (command "pedit" en "w" width "")
          );
          ((= et "ARC")
            (command "pedit" en "w" width "")
          );
          ((= et "POLYLINE")
            (command "pedit" en "w" width "")
          );
          ((= et "LWPOLYLINE")
            (command "pedit" en "w" width "")
          );

          ((= et "CIRCLE")
              (setq cn(dxf 10 ed)
                    ra(dxf 40 ed)
                    insr(* (- ra width) 2)
                    outr(* ra 2))
                    (command "erase" en ""
                             "donut" insr outr cn ""
                    )
          )
          ((= et "TRACE")
             (setq x1(dxf 10 ed))
             (setq y1(dxf 11 ed))
             (setq x2(dxf 12 ed))
             (setq y2(dxf 13 ed))
             (setq pt1(polar x1 (angle x1 y1) (/ (distance x1 y1) 2)));
             (setq pt2(polar x2 (angle x2 y2) (/ (distance x2 y2) 2)));
             (command "erase" en ""
                      "pLINE" pt1 "w" width "" pt2 "")
          )
          ((and (/= et "LINE") (/= et "POLYLINE") (/= et "ARC") (/= et "CIRCLE") (/= et "TRACE"))
            (setq nonline (1+ nonline))
          );
        );cond
        (setq count(1+ count));
   );while
   (if (/= nonline 0)
       (progn(princ "所选")
             (princ emax)
             (princ "个实伐中有")
             (princ nonline)
             (princ "个无法改变其宽度!")
       );progn
   );if
);progn
(princ"\n没有找到目标")
);if
(setvar "BLIPMODE" 1)
(setvar "cmdecho" 1)
(princ);
);defun
 楼主| 发表于 2010-12-5 15:44:58 | 显示全部楼层
谢谢各位。。。最后决定用PEDIT解决问题。。。。呵呵。。。。。
发表于 2010-12-5 18:33:06 | 显示全部楼层
(DEFUN C:PW(/ ENTGRP WIDTH COUNT ENT )
  (PRINC "\n编辑复线宽度:")
  (PRINC "\n注:需编辑部分必须串成复线")
  (SETVAR "CMDECHO" 0)
  (COMMAND "_.UNDO" "M")
  (PROMPT "\n请选择编辑部分:")
  (SETQ ENTGRP (SSGET '((0 . "LWPOLYLINE"))))
  (SETQ WIDTH (GETREAL "\n请输入宽度:"))
  (SETQ COUNT 0)
  (REPEAT (SSLENGTH ENTGRP)
    (SETQ ENT (SSNAME ENTGRP COUNT))
    (COMMAND "_.PEDIT" ENT "W" WIDTH "")
    (SETQ COUNT (1+ COUNT))
  )
  (PRINC "\n--------OK!!---------")
  (PRINC)
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-2 16:23 , Processed in 0.169135 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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