hxh2901 发表于 2006-3-3 11:46:00

[求助]一个复杂三维实体,如何获取将其包容的长方体的长宽高 ?

本帖最后由 作者 于 2006-3-6 10:46:34 编辑 <br /><br /> <P></P>
<P>复杂三维实体的造型是任意的,现在作一个示例。如何编一个lisp命令获取将实体包容的长方体的长宽高信息,程序在同一文件中能重复用在多个实体。请大虾帮忙看看呀,谢谢了</P>

龙龙仔 发表于 2006-3-3 12:39:00

<P>应该很简单!</P>
<P>;;取得围住指定物件之矩形体的二个点。<BR>(vla-getboundingbox<BR>&nbsp; (vlax-ename-&gt;vla-object (car (entsel)))<BR>&nbsp; 'MINPOINT<BR>&nbsp; 'MAXPOINT<BR>)<BR>(mapcar 'vlax-safearray-&gt;list (list MINPOINT MAXPOINT))</P>
<P>&nbsp;</P>

hxh2901 发表于 2006-3-3 13:12:00

我的水平有限,写不出

请龙版主帮忙写个完整的代码,可以么?谢谢了啊

龙龙仔 发表于 2006-3-3 13:27:00

;;取得围住指定物件之矩形体的二个点。<BR>(defun C:TT (/ LST MAXPOINT MINPOINT)<BR>&nbsp; (vla-getboundingbox<BR>&nbsp;&nbsp;&nbsp; (vlax-ename-&gt;vla-object (car (entsel)))<BR>&nbsp;&nbsp;&nbsp; 'MINPOINT<BR>&nbsp;&nbsp;&nbsp; 'MAXPOINT<BR>&nbsp; )<BR>&nbsp; (setq LST (mapcar 'vlax-safearray-&gt;list (list MINPOINT MAXPOINT)))<BR>&nbsp; (setq LST (mapcar 'abs (mapcar '- (car LST) (cadr LST))))<BR>&nbsp; (prompt (strcat "\n长宽高= "<BR>&nbsp;&nbsp;&nbsp; (rtos (car LST) 2 2)<BR>&nbsp;&nbsp;&nbsp; "X"<BR>&nbsp;&nbsp;&nbsp; (rtos (cadr LST) 2 2)<BR>&nbsp;&nbsp;&nbsp; "X"<BR>&nbsp;&nbsp;&nbsp; (rtos (last LST) 2 2)<BR>&nbsp;&nbsp; )<BR>&nbsp; )<BR>&nbsp; (prompt<BR>&nbsp;&nbsp;&nbsp; (strcat "\n体积= "<BR>&nbsp;&nbsp;&nbsp;&nbsp; (rtos (* (car LST) (cadr LST) (last LST)) 2 2)<BR>&nbsp;&nbsp;&nbsp; )<BR>&nbsp; )<BR>&nbsp; (princ)<BR>)<BR>

无痕 发表于 2006-3-3 18:22:00

好个龙龙仔!

hxh2901 发表于 2006-3-6 10:55:00

再一次请教龙版主

请问如何获取包容长方体的右下角点的坐标呢?谢谢啦

龙龙仔 发表于 2006-3-6 12:20:00

<P>;;如何获取将其包容的长方体的长宽高<BR>;;复杂三维实体的造型是任意的,现在作一个示例。如何编一个lisp命令<BR>;;获取将实体包容的长方体的长宽高资讯,并快速用text写出来,如图中<BR>;;的两个红色字体。(那两个红色字就是想要的结果,字高20、位置任意,<BR>;;之后可手动移)。程式在同一档中能重复用在多个实体。请大虾帮忙看<BR>;;看呀,谢谢了<BR>;;取得围住指定物件之矩形体的长宽高&amp;体积,并表列。<BR>;;其中使用了表格公用程序</P>
<P>;;<A href="http://free.ys168.com/?lucas-lai" target="_blank" >http://free.ys168.com/?lucas-lai</A><BR>(defun C:TT (/ LST MAXPOINT MINPOINT)<BR>&nbsp; (vla-getboundingbox<BR>&nbsp;&nbsp;&nbsp; (vlax-ename-&gt;vla-object (car (entsel)))<BR>&nbsp;&nbsp;&nbsp; 'MINPOINT<BR>&nbsp;&nbsp;&nbsp; 'MAXPOINT<BR>&nbsp; )<BR>&nbsp; (setq LST (mapcar 'vlax-safearray-&gt;list (list MINPOINT MAXPOINT)))<BR>&nbsp; (setq LST (mapcar 'abs (mapcar '- (car LST) (cadr LST))))<BR>&nbsp; (setq<BR>&nbsp;&nbsp;&nbsp; LST&nbsp;(list (list "长宽高"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (strcat<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (rtos (car LST) 2 2)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "X"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (rtos (cadr LST) 2 2)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "X"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (rtos (last LST) 2 2)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (list "体积"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (rtos (* (car LST) (cadr LST) (last LST)) 2 2)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;)<BR>&nbsp; )<BR>&nbsp; (TABLE_UTIL LST (getpoint "\n表格插入点: ") "standard" 20)<BR>&nbsp; (princ)<BR>)</P>
<P>请问如何获取包容长方体的右下角点的坐标呢?谢谢啦<BR>=&gt;(list MINPOINT MAXPOINT)--利用这两点自己算算吧!<BR></P>
<P>&nbsp;</P>
<P>&nbsp;</P>

hxh2901 发表于 2006-3-6 12:56:00

我的LISP基础太差了,真不好意思

<P>用龙版主的程序基本解决了我的问题,</P>
<P>就差右下角点的坐标不会求,我不知道怎么算,</P>
<P>那个坐标求出来我的问题就完全解决了啊</P>
<P>再请龙版主帮一下</P>

ljpnb 发表于 2006-3-6 13:28:00

(list (car MAXPOINT) (cadr MINPOINT )(caddr MINPOINT))

hxh2901 发表于 2006-3-6 14:39:00

<P>用九楼的不可以?</P>
页: [1] 2
查看完整版本: [求助]一个复杂三维实体,如何获取将其包容的长方体的长宽高 ?