Contact telephone 0531-87069882


山东国泰建筑工程设计咨询有限公司



联系我们
全国咨询热线:0531-87069882

公司电话:0531-87069882

联系人:王经理

公司传真:0531-87087186

邮箱:wls01@sina.com

公司地址:山东省济南市市中区小纬四路46号

AutoCAD计算钢管重量的Lisp小程序
文章作者:山东国泰工程检测鉴定有限公司 上传更新:2016-07-22 16:52

;;;===================================================================
;;;     Tubew 统计钢管重量
;;;
;;; 选择代表重量的字符串后回车或右键,再选择组成钢管尺寸的字符串,格式
;;; 是“外径x壁厚”,以及钢管的长度,单位都为mm,如114x3.5  3100,回车后
;;; 开始选中的代表重量的字符串变成对应的钢管重量,如果还有第三个字符串
;;; 代表数量,则得到的是总重量。
;;;
;;;==========山东国泰工程检测鉴定有限公司  冯益孝========================
 
(defun C:Tubew ()
    (setq omenu (getvar "menuecho"))
    (setq ocmde (getvar "cmdecho"))
    ;(setvar "menuecho" 1)
    ;(setvar "cmdecho" 0)
    (setq ladd nil)
    (setq  os (ssget '((0 . "text"))))
    (setq ss1 (entget (ssname os 0)))
    (setq chm 0 p (ssget '((0 . "text")))) 
    (if p (progn   
(setq l 0 n(sslength p))
(while (< l n)
   (setq e (entget (ssname p l)))
   (progn                                       
(setq s (cdr (setq as (assoc 1 e))))  
 
(if (numberp (setq inumb (read s)))
   (progn
(setq chm (1+ chm))
(setq ladd (cons inumb ladd))
   )
)
(if (not (numberp (setq inumb (read s)))) 
   (progn
               (setq s (substr s 1 (strlen s)))
(setq si 1)
(while (= 1 (strlen (setq st (substr s si 1))))
       (if (or (= st "x")  (= st "X"))  
       (progn
           (setq s (strcat (substr s 1 (1- si)) " " (substr s (+ si 1))
           )
           ) 
       )
   )
   (setq si (1+ si)) 
       )
       (setq EE s)
       (setq EE (strcat "(" EE ")"))
       (setq EE (read EE))
 
(setq chm (1+ chm))                ;修改的字符串个数计数
         (setq inumb1 (car EE))  
(setq inumb2 (cadr EE)) 
(setq area1 (/ (* (* inumb1 inumb1) 3.1415926) 4))
                        (setq x1 (- inumb1 (* 2 inumb2)))
(setq area2 (/ (* (* x1 x1) 3.1415926) 4))
(setq area (- area1 area2))
(setq ladd (cons area ladd))
 
   )
)
   )
   (setq l (1+ l))
)
    ))
 
    (setq ladd (cons 0.00000785 ladd))
    (setq fadd (apply '* ladd))
    (setq c (assoc 1 ss1))
    (setq d (cons 1 (rtos fadd 2 1)))
 
    (entmod (subst d c ss1))
    (setq ss1 (entget (ssname os 0)))
(if (assoc 62 ss1)
 
        (entmod (subst (cons 62 1) (assoc 62 ss1) ss1))
(entmod (cons (cons 62 1) ss1))
)
    (princ "total ")
    (princ chm)
    (princ " text lines!  Number is: ")
    (princ fadd) 
    (setvar "menuecho" omenu)
    (setvar "cmdecho" ocmde)
)
下一篇:没有了