- 积分
- 1980
- 明经币
- 个
- 注册时间
- 2015-2-2
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|

楼主 |
发表于 2025-1-22 02:10:06
|
显示全部楼层
;;以下是根据我理解的你的思路而编制的程序。不知对否?
(defun c:calwt()
(setq area1 (car (entsel"\n选择一封闭图形:")))
(setq bz
(getreal
"\n 输入实体(材料)比重:[灰铸铁:7.0,铸钢:7.8,钢材:7.85,不锈钢:7.98 紫钢:8.9,铝:2.75,聚氯乙烯:1.35~1.4,聚四氟乙烯:2.1~2.3,聚丙烯:0.9~0.91,ABS树脂:1.02~1.08,花岗岩:2.6~3,混凝土:1.8~2.45,]<7.85>"
)
)
(if (= bz nil)
(setq bz 7.85)
)
(command "area" "o" area1)
(setq Lc (getvar "perimeter"))
(setq As (/ (getvar "area") 100.0));;将面积转换成平厘米(cm2)
(setq wt (* As 100 bz));;此处100表示为100cm,即1米。wt为单位长度重量(克)。
(setq wt (/ wt 1000.0));;转换为kg.
;;; (princ "\n")
;;; (princ (strcat "\n单位长度重量为:" (rtos wt 2 4) "kg."))
(sumoflinewt)
)
(defun sumoflinewt(/ CURVE lengthline SS N sumline)
(vl-load-com)
(setq sumline 0)
(setq SS (ssget '((0 . "CIRCLE,ELLIPSE,LINE,*POLYLINE,SPLINE,ARC"))))
(setq N 0)
(repeat (sslength SS)
(setq CURVE (vlax-ename->vla-object (ssname SS N)))
(setq lengthline (vlax-curve-getdistatparam
CURVE
(vlax-curve-getendparam CURVE)
)
)
(setq sumline (+ sumline lengthline))
(setq N (1+ N))
)
(setq sumline (/ sumline 1000))
;;; (setq sumlinekm (/ sumline 1000))
(princ (strcat "\n共选择了"
(itoa (sslength SS))
"条线段。\n总长度为:"
(rtos sumline 2 6)
"米;\n"
;;; (rtos sumlinekm 2 6)
;;; "公里。"
)
)
(prin1)
;;; (setq tiji (* (atof dbjgmj_jg) sumline));;平方厘米
;;; (princ tiji)
(setq zliang (* wt sumline));;kg.
(setq txt (strcat "\n单重为:" (rtos wt 2 4) "kg/m. " "总重为:" (rtos zliang 2 4) "kg."))
(setq pt (getpoint"\n给定文本起点:"))
(command "text" pt "" "" txt)
(princ txt)
(prin1)
) |
|