明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4168|回复: 16

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

  [复制链接]
发表于 2006-3-3 11:46:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2006-3-6 10:46:34 编辑

复杂三维实体的造型是任意的,现在作一个示例。如何编一个lisp命令获取将实体包容的长方体的长宽高信息,程序在同一文件中能重复用在多个实体。请大虾帮忙看看呀,谢谢了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

本帖被以下淘专辑推荐:

  • · 3D|主题: 8, 订阅: 0
发表于 2006-3-3 12:39:00 | 显示全部楼层

应该很简单!

;;取得围住指定物件之矩形体的二个点。
(vla-getboundingbox
  (vlax-ename->vla-object (car (entsel)))
  'MINPOINT
  'MAXPOINT
)
(mapcar 'vlax-safearray->list (list MINPOINT MAXPOINT))

 

 楼主| 发表于 2006-3-3 13:12:00 | 显示全部楼层

我的水平有限,写不出

请龙版主帮忙写个完整的代码,可以么?谢谢了啊
发表于 2006-3-3 13:27:00 | 显示全部楼层
;;取得围住指定物件之矩形体的二个点。
(defun C:TT (/ LST MAXPOINT MINPOINT)
  (vla-getboundingbox
    (vlax-ename->vla-object (car (entsel)))
    'MINPOINT
    'MAXPOINT
  )
  (setq LST (mapcar 'vlax-safearray->list (list MINPOINT MAXPOINT)))
  (setq LST (mapcar 'abs (mapcar '- (car LST) (cadr LST))))
  (prompt (strcat "\n长宽高= "
    (rtos (car LST) 2 2)
    "X"
    (rtos (cadr LST) 2 2)
    "X"
    (rtos (last LST) 2 2)
   )
  )
  (prompt
    (strcat "\n体积= "
     (rtos (* (car LST) (cadr LST) (last LST)) 2 2)
    )
  )
  (princ)
)
发表于 2006-3-3 18:22:00 | 显示全部楼层
好个龙龙仔!
 楼主| 发表于 2006-3-6 10:55:00 | 显示全部楼层

再一次请教龙版主

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2006-3-6 12:20:00 | 显示全部楼层

;;如何获取将其包容的长方体的长宽高
;;复杂三维实体的造型是任意的,现在作一个示例。如何编一个lisp命令
;;获取将实体包容的长方体的长宽高资讯,并快速用text写出来,如图中
;;的两个红色字体。(那两个红色字就是想要的结果,字高20、位置任意,
;;之后可手动移)。程式在同一档中能重复用在多个实体。请大虾帮忙看
;;看呀,谢谢了
;;取得围住指定物件之矩形体的长宽高&体积,并表列。
;;其中使用了表格公用程序

;;http://free.ys168.com/?lucas-lai
(defun C:TT (/ LST MAXPOINT MINPOINT)
  (vla-getboundingbox
    (vlax-ename->vla-object (car (entsel)))
    'MINPOINT
    'MAXPOINT
  )
  (setq LST (mapcar 'vlax-safearray->list (list MINPOINT MAXPOINT)))
  (setq LST (mapcar 'abs (mapcar '- (car LST) (cadr LST))))
  (setq
    LST (list (list "长宽高"
      (strcat
        (rtos (car LST) 2 2)
        "X"
        (rtos (cadr LST) 2 2)
        "X"
        (rtos (last LST) 2 2)
      )
       )
       (list "体积"
      (rtos (* (car LST) (cadr LST) (last LST)) 2 2)
       )
 )
  )
  (TABLE_UTIL LST (getpoint "\n表格插入点: ") "standard" 20)
  (princ)
)

请问如何获取包容长方体的右下角点的坐标呢?谢谢啦
=>(list MINPOINT MAXPOINT)--利用这两点自己算算吧!

 

 

 楼主| 发表于 2006-3-6 12:56:00 | 显示全部楼层

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

用龙版主的程序基本解决了我的问题,

就差右下角点的坐标不会求,我不知道怎么算,

那个坐标求出来我的问题就完全解决了啊

再请龙版主帮一下

发表于 2006-3-6 13:28:00 | 显示全部楼层
(list (car MAXPOINT) (cadr MINPOINT )(caddr MINPOINT))
 楼主| 发表于 2006-3-6 14:39:00 | 显示全部楼层

用九楼的不可以?

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

本版积分规则

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

GMT+8, 2024-11-22 15:31 , Processed in 0.202060 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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