PhantomFox 发表于 2011-12-13 15:20:40

ahwx0814 发表于 2011-12-13 14:38 static/image/common/back.gif
哈哈,搞定。

感觉上不错~~
能帮忙补充下同时在旁边显示该截面的长、宽尺寸和矩形面积,截面净面积等参数么?

PhantomFox 发表于 2011-12-13 17:28:30

你太有才了

PhantomFox 发表于 2011-12-13 17:31:49

ahwx0814 发表于 2011-12-13 17:11 static/image/common/back.gif
加上了文字了
可以框选 多段线、块、样条曲线等

请教,里面的精度是指的什么意思?

byghbcx 发表于 2011-12-13 17:51:46

(defun tt( / en p1 p2 x y a_min p0 n a ro p11 p22);最小包络矩形
    (vl-load-com)
(setq en (car (entsel "\n请选择板件放样体:")))
(if en
(progn
(vla-getboundingbox (vlax-ename->vla-object en) 'p1 'p2)
(setq p1 (vlax-safearray->list p1)
      p2 (vlax-safearray->list p2)
)
(setq x (- (car p2) (car p1))
        y (- (cadr p2) (cadr p1)))
(setq a_min (* x y))
(setq p0 (mapcar '(lambda (x y) (/ (+ x y) 2.0)) p1 p2))
(setq n 0)
(repeat 360
(command "_.rotate" en "" p0 1)
(vla-getboundingbox (vlax-ename->vla-object en) 'p1 'p2)
(setq p1 (vlax-safearray->list p1)
      p2 (vlax-safearray->list p2)
)
(setq x (- (car p2) (car p1))
        y (- (cadr p2) (cadr p1)))
(setq a (* x y))
(setq n (1+ n))
(if (< a a_min) (setq a_min a ro n p11 p1 p22 p2))
)
);end progn
);end if
(setq x (- (car p22) (car p11))
        y (- (cadr p22) (cadr p11)))
(command "_.rectang" p11 p22)
(command "_.rotate" (entlast) "" p0 (- ro))
(command "_.dimaligned" p11 (polar p11 0 x) (polar p11 (* 1.5 pi) (* 0.1 y)))
(command "_.rotate" (entlast) "" p0 (- ro))
(command "_.dimaligned" p22 (polar p11 0 x) (polar p11 0 (* 1.1 x)))
(command "_.rotate" (entlast) "" p0 (- ro))
(command "_.text" p0 5 0 (strcat "截面净面积为:" (rtos (vla-get-area (vlax-ename->vla-object en)) 2 2)
                                   ",矩形面积为:" (rtos a_min 2 2))
          "")
(princ)
)

PhantomFox 发表于 2011-12-13 19:02:26

byghbcx 发表于 2011-12-13 17:51 static/image/common/back.gif
(defun tt( / en p1 p2 x y a_min p0 n a ro p11 p22);最小包络矩形
    (vl-load-com)
(setq en (car (e ...

运行程序不是tt么?运行不了?

ahwx0814 发表于 2011-12-13 19:55:41

PhantomFox 发表于 2011-12-13 17:31 static/image/common/back.gif
请教,里面的精度是指的什么意思?

看到14#的帖子,发现我的代码有可以改进的地方,能提高速度,明天改了以后发给你。
精度就是计算的次数,如果精度越高计算的时间就越长,矩形框应该会越小!

PhantomFox 发表于 2011-12-13 20:16:36

ahwx0814 发表于 2011-12-13 19:55 static/image/common/back.gif
看到14#的帖子,发现我的代码有可以改进的地方,能提高速度,明天改了以后发给你。
精度就是计算的次数,如 ...

貌似14楼的程序运行不了啊!是直接运行TT吧!没见动静!

byghbcx 发表于 2011-12-14 08:15:05

PhantomFox 发表于 2011-12-13 20:16 static/image/common/back.gif
貌似14楼的程序运行不了啊!是直接运行TT吧!没见动静!

(tt)运行,

PhantomFox 发表于 2011-12-14 09:03:56

byghbcx 发表于 2011-12-14 08:15 static/image/common/back.gif
(tt)运行,

gg,不好意思,俺是初学者,一般不是直接运行函数名就行了么?咋还要加个括号?我去把基本课本看看!

longer1000 发表于 2011-12-14 10:49:48

不错的,收藏
页: 1 [2] 3 4 5 6
查看完整版本: 求解一个在CAD中,快速查看任意形状最小矩形截面的程序!