几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量

几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 (http://www.dimcax.com/hust/index.php)
-   ObjectARX(AutoLISP) (http://www.dimcax.com/hust/forumdisplay.php?f=178)
-   -   求计算重量的vlisp或 dvb,各位老师帮忙啊 (http://www.dimcax.com/hust/showthread.php?t=10346)

yang686526 2009-04-25 05:19 PM

求计算重量的vlisp或 dvb,各位老师帮忙啊
 
求计算重量的vlisp或 dvb,各位老师帮忙啊
www.dimcax.com
求计算重量的vlisp或 dvb,各位老师帮忙啊

在方框内,点下,就可以得到这个圆柱的重量,怎么实现???

大家看看我这个代码怎么优化,我不懂,自己写的,能用,可我觉得不可靠,不能判断是不是封闭正四边形,,,,汗^^^^^^!
(defun c:zl( / ax ay pt ss key xy ct vv dx1 dx2 dy1 dy2 dj txt cm os)
(setq ax nil ay nil) ;创建表(数组)
(command "-layer" "off" "*" "y" "")
(command "-layer" "on" "1轮廓实线层" "")
(command "-layer" "on" "0" "")
(command "-layer" "on" "排图层" "")
(command "-layer" "s" "排图层" "" "")
(setq cm (getvar "clayer"))
(setq os (getvar "osmode"))
(setvar "osmode" 0)
(while (setq pt (getpoint "\n选取点: "))
(command "-boundary" pt "")
(setq ss (entget(entlast)))
(setq i -1)
(setq key 10)
(foreach xy ss
(if (eq (car xy) key)
(progn
(setq pe (cdr xy))
(setq y (cadr pe))
(setq x (car pe))
(setq ax (cons x ax))
(setq ay (cons y ay))
)
)
)
)
(command "-layer" "on" "*" "")
(command "-layer" "off" "消隐层" "")
(setq s (ssget "x" (list (cons 8 "排图层"))))
(command "erase" s "")
(setq ax (reverse ax)) ;顺序取反
(setq ay (reverse ay));顺序取反
(setq ct 0)
(setq vv 0)

(repeat (fix (* (length ax) 0.25))
(setq dx1 (nth (* 4 ct) ax))
(setq dy1 (nth (* 4 ct) ay))
(setq dx2 (nth (+ 2 (* 4 ct)) ax))
(setq dy2 (nth (+ 2 (* 4 ct)) ay))
(setq dx (- dx1 dx2))
(setq dy (- dy1 dy2))
(setq vv (+ vv (* (* (* (* dy dy) pi) 0.25) dx)))
(setq ct (+ 1 ct))
)
(print vv);打印体积
(setq dj (*(* vv 7.85) 0.000001)) ;算重量
(setq txt (strcat "锻件重: " (rtos dj 2 3) "kg"))
(command "-layer" "s" "6文字层" "" )
(command "text" "j" "mc" (getpoint "\n选取点: ") "30" "0" txt);将重量写在图形上
(command "-layer" "s" cm "" )
(setvar "osmode" os)
;(command "-layer" "off" "排图层" "y" "");没有使用,使用该命令总是关不上该图层,不知道为什么,请高手解决
)


所有的时间均为北京时间。 现在的时间是 07:12 PM.