找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 909|回复: 0

[求助]:一个管径标注的LSP请高手帮助修改一下

[复制链接]
发表于 2009-11-7 16:52:17 | 显示全部楼层 |阅读模式

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

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

×
修改要求:1.选择多义线时能够将管径标注在鼠标点取的位置。

                  2.管径距管线的距离120mm。

(DEFUN C:ggg(/ cstr cstr0 cstr1 a0 ab num num1 pt pt0 pt1 zang1)
;;;defun err
    (defun err (msg)
    (setq *error* olderr)
    (setvar "osmode" ccmd)
    (setvar "clayer" clay)
    (setq num nil)
    (princ "操作错误!请先键入NEA,再选择管线!")
    (princ)  
    )      ;for defun fi-err
;;;main  
     (setq olderr *error* *error* err)
     (setq clay (getvar "clayer"))   
     (setq ccmd (getvar "osmode"))
     (setvar "osmode" 0)
(setq sc1 sc) ;;;get current scale
;;;the following sets current scale
(if (or (null sc) (<= sc 0))
  (if (not (numberp sc))
   (progn
     (setq sc 100 sc1 100)
     (initget (+ 2 4))
     (setq sc (getreal (strcat "图纸比例--1:<" (rtos sc1) ">")))
     (if (null sc)(setq sc sc1))
   ) ;for progn
  ) ;for if
) ;for if
     (setq num 1 num1 1)
     (setq hh(* 2.5 sc))   
     (SETQ A0 (ENTSEL "\n选择要标注的管线:"))
    (while (/= a0 nil)
     (SETQ AB (CADR A0))(SETQ AA (entget (CAR A0)))
     (if (cdr (assoc 8 aa))
         (cond
         
         ((= (cdr (assoc 8 aa)) "排水管")(setq cstr1 "150"))
         ((= (cdr (assoc 8 aa)) "雨水")(setq cstr1 "150"))
         ((= (cdr (assoc 8 aa)) "给水管")(setq cstr1 "15"))
         ((= (cdr (assoc 8 aa)) "热水")(setq cstr1 "15"))
         ((= (cdr (assoc 8 aa)) "消防")(setq cstr1 "100"))
     ));for if cond
     (if (or (= (cdr (assoc 8 aa)) "喷淋")(= (cdr (assoc 8 aa)) "水幕"))
           (progn
                (princ "\n请输入此喷头前的喷头数<")(princ num)(princ">:")
     (setq num (getint))
     (if (= num nil)(setq num num1)(setq num1 (+ num num1) num num1))
       (if num
       (cond
       ((= num 1)(setq cstr1 "25"))
       ((= num 4)(setq cstr1 "32"))
       ((and(> num 5)(<= num 7))(setq cstr1 "40"))
       ((and(> num 7)(<= num 10))(setq cstr1 "50"))
       ((and(> num 10)(<= num 14))(setq cstr1 "70"))
       ((and(> num 14)(<= num 16))(setq cstr1 "80"))
       ((and(> num 16)(<= num 60))(setq cstr1 "100"))
       ((> num 60)(setq cstr1 "150"))
       ));for if cond
           );for progn
       );for if
     (if (/= cstr0 nill)(setq cstr1 cstr0))
     (princ "默认管径值是")(princ cstr1)
     (setq cstr (getstring "\n请输入管径:"))
     (if (= cstr "")(setq cstr cstr1))
     (SETQ AB (CADR A0))(SETQ AA (entget (CAR A0)))
     (setvar "clayer" (cdr (assoc 8 aa)))
     (SETQ PT (LIST (CADR (ASSOC 10 AA))(CADDR (ASSOC 10 AA)))
           PT1 (LIST (CADR (ASSOC 11 AA))(CADDR (ASSOC 11 AA))))
     (SETQ ZANG1 (ANGLE PT PT1))
     (if (AND (>= zang1 3)(<= zang1 6.2))(setq zang1 (abs(- zang1 pi))))
     (SETQ PT0 (LIST (CAR AB) (CADR AB)))
     (setq PT0 (polar pt0 (+ zang1 (* pi 0.5)) SC))
     (setq zang1 (/ (* zang1 180) pi))     
     (command"text""S""DIM_FONT1""j""C"pt0 hh zang1 (strcat "DN" cstr))
     (command"change""l""""p""c""2""")
     (setq cstr0 cstr)
     (SETQ A0 (ENTSEL "\n选择要标注的管线:"))
     (if (or (= (cdr (assoc 8 aa)) "Z喷淋")(= (cdr (assoc 8 aa)) "水幕"))
         (setq num1 (+ num1 1) cstr0 nill)
        );for if
     );for while
     (setq *error* olderr)
     (setvar "clayer" clay)
     (setvar "osmode" ccmd)
     (princ)
);for defun
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-22 13:01 , Processed in 0.179439 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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