明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1399|回复: 4

[基础] 求获得选择对象最外范围的lisp源码

[复制链接]
发表于 2011-4-20 21:09 | 显示全部楼层 |阅读模式
求获得选择对象最外范围的lisp源码,最左,最右,最上,最下
发表于 2011-4-20 22:05 | 显示全部楼层
本版有许多这样的贴子,找找看。
发表于 2011-4-21 05:56 | 显示全部楼层
不知道楼主要求得到外围的是线条表示还是图形表示,图形表示的网上有
发表于 2011-4-21 08:40 | 显示全部楼层
(vl-load-com)
;; ! ***************************************************************************
;; ! xd_GetObjectBoundingBox
;; ! ***************************************************************************
;; ! 功  能  : 返回实体包围盒的对角点.
;; ! 参  数  : 'ename' - Any Drawing Object
;; ! 返回值  : 'Lst' - is a list of LL and UR
;; ! 说  明  : 适用 AutoCAD 2000+
;; ! e-mail  : eachy@xdcad.net
;; ! Web     : www.xdcad.net
;; ! ****************************************************************************
(defun xd_GetObjectBoundingBox (ename / ll ur)
  (vla-GetBoundingBox (vlax-ename->vla-object ename) 'll 'ur)
  (list
    (reverse (cdr (reverse (vlax-safearray->list ll))))
    (reverse (cdr (reverse (vlax-safearray->list ur))))
  )
;;;    (list
;;;    (vlax-safearray->list ll)
;;;    ((vlax-safearray->list ur)
;;;  )

)
;; ! ***************************************************************************
;; ! xd_GetSSBoundingBox
;; ! ***************************************************************************
;; ! 功  能  : 返回选择集实体包围盒的对角点.
;; ! 参  数  : 'ss' - Any Drawing Object Selection
;; ! 返回值  : 'Lst' - is a list of LL and UR
;; ! 说  明  : 适用 AutoCAD 2000+
;; ! e-mail  : eachy@xdcad.net
;; ! Web     : www.xdcad.net
;; ! ****************************************************************************
(defun xd_getSSBoundingbox (ss / ssl i ptl)
  (setq        ssl (sslength ss)
        i   -1
  )
  (repeat ssl
    (setq
      ptl
       (append (xd_getObjectboundingbox (ssname ss (setq i (1+ i))))
               ptl
       )
    )
  )
)
;|
功能:对2d,3d点表排序.
用法:(sort-pt 点表 str)
如:(sort-pt plst "x")
说明:str可以 XYZxyz 6个字的任意组合.
大写为从大到小排列,小写为从小到大排列.
字符前后说明优先级别的大小,级别大的优先考虑。
|;
;; Form www.xdcad.net fsxm 2005.5.31

(defun sort-pt-1 (plts fun n)
  (vl-sort plts
           '(lambda (a b)
              (fun (nth n a) (nth n b))
            )
  )
)
(defun sort-pt (plst xyz / fun)
  (setq xyz (vl-string->list xyz))
  (foreach n-xyz (reverse xyz)
    (if        (< n-xyz 100)
      (setq fun          >
            n-xyz (- n-xyz 88)
            plst  (sort-pt-1 plst fun n-xyz)
      )
      (setq fun          <
            n-xyz (- n-xyz 120)
            plst  (sort-pt-1 plst fun n-xyz)
      )
    )
  )
)
发表于 2011-4-21 12:35 | 显示全部楼层
       楼上的把小东的程式也来了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-20 07:05 , Processed in 0.214530 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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