联系我们
全国咨询热线:0531-87069882
公司电话:0531-87069882
联系人:王经理
公司传真:0531-87087186
公司地址:山东省济南市市中区小纬四路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)
)
下一篇:没有了