明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: PhantomFox

求解一个在CAD中,快速查看任意形状最小矩形截面的程序!

  [复制链接]
 楼主| 发表于 2011-12-13 15:20:40 | 显示全部楼层
ahwx0814 发表于 2011-12-13 14:38
哈哈,搞定。

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

使用道具 举报

 楼主| 发表于 2011-12-13 17:28:30 | 显示全部楼层
你太有才了
回复

使用道具 举报

 楼主| 发表于 2011-12-13 17:31:49 | 显示全部楼层
ahwx0814 发表于 2011-12-13 17:11
加上了文字了
可以框选 多段线、块、样条曲线等

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

使用道具 举报

发表于 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)
)

评分

参与人数 2明经币 +1 金钱 +10 收起 理由
yoyoho + 1 赞一个!
PhantomFox + 10 赞一个!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2011-12-13 19:02:26 | 显示全部楼层
byghbcx 发表于 2011-12-13 17:51
(defun tt( / en p1 p2 x y a_min p0 n a ro p11 p22);最小包络矩形
    (vl-load-com)
(setq en (car (e ...

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

使用道具 举报

发表于 2011-12-13 19:55:41 | 显示全部楼层
PhantomFox 发表于 2011-12-13 17:31
请教,里面的精度是指的什么意思?

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

使用道具 举报

 楼主| 发表于 2011-12-13 20:16:36 | 显示全部楼层
ahwx0814 发表于 2011-12-13 19:55
看到14#的帖子,发现我的代码有可以改进的地方,能提高速度,明天改了以后发给你。
精度就是计算的次数,如 ...

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

使用道具 举报

发表于 2011-12-14 08:15:05 | 显示全部楼层
PhantomFox 发表于 2011-12-13 20:16
貌似14楼的程序运行不了啊!是直接运行TT吧!没见动静!

(tt)运行,

评分

参与人数 1金钱 +15 收起 理由
PhantomFox + 15 很给力!补充奖励哈~~~呵呵~~感谢你的指导~

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2011-12-14 09:03:56 | 显示全部楼层
byghbcx 发表于 2011-12-14 08:15
(tt)运行,

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

使用道具 举报

发表于 2011-12-14 10:49:48 | 显示全部楼层
不错的,收藏
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-23 05:05 , Processed in 0.172985 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表