帮助:然后查找最长的行
你好我需要一些帮助来设置一系列图形的限制(LIMMIN,LIMMAX)。
限制要设置为标题栏框架,标题栏框架被分解:(有时会移动!我尝试混搭一些lisp,但没有成功。我认为这应该是最简单的方法:
-在层“TB”上查找最长的行[应在标题栏层上查找2行(顶部和底部)]。
-找到左下角,从找到的线的坐标中找到右上角。
-相应地分配LIMMIN和LIMMAX。
可选:删除LIMMIN和LIMMAX之外的所有内容。
“Lee Mac”和“alanjt”的Lisp程序让我开始:
http://www.cadtutor.net/forum/archive/index.php/t-51523.html
谢谢 欢迎来到CADTutor luctifo。
考虑以下功能:
http://lee-mac.com/ssboundingbox.html 谢谢你的帮助!
(defun c:TBLimits (/ ss i l1 l2 ll ur bb)
; With help from function "SelectionSet BoundingBox" by Lee Mac
(setq ss (ssget "X" '((0 . "LINE") (8 . "_TB"))))
(repeat (setq i (sslength ss))
(vla-getboundingbox (vlax-ename->vla-object (ssname ss (setq i (1- i)))) 'll 'ur)
(setq l1 (cons (vlax-safearray->list ll) l1)
l2 (cons (vlax-safearray->list ur) l2)
)
)
(setq bb (mapcar '(lambda (a b) (apply 'mapcar (cons a b))) '(min max) (list l1 l2)))
(setvar "LIMMIN" (list (car (car bb)) (cadr (car bb)) ))
(setvar "LIMMAX" (list (car (cadr bb)) (cadr (cadr bb)) ))
(princ)
)
(vl-load-com)
嗨,luctifo,
请阅读适用于我网站上所有代码的使用条款,并在使用我的代码的地方保留我的代码标题。
对于您的程序,只需按如下方式调用我的函数:
(defun c:tblimits ( / box sel )
(if (setq sel (ssget "_X" '((0 . "LINE") (8 . "_TB"))))
(progn
(setq box (LM:SSBoundingBox sel))
(setvar 'limmin (mapcar '+ (carbox) '(0 0)))
(setvar 'limmax (mapcar '+ (cadr box) '(0 0)))
)
)
(princ)
)
(vl-load-com) (princ)
;;--------------=={ SelectionSet BoundingBox }==--------------;;
;; ;;
;;Returns the lower-left and upper-right points of a ;;
;;rectangle bounding all objects in a supplied SelectionSet ;;
;;------------------------------------------------------------;;
;;Author: Lee Mac, Copyright © 2011 - www.lee-mac.com ;;
;;------------------------------------------------------------;;
;;Arguments: ;;
;;ss - SelectionSet for which to return the BoundingBox ;;
;;------------------------------------------------------------;;
;;Returns:Point List decribing BoundingBox (in WCS) ;;
;;------------------------------------------------------------;;
(defun LM:SSBoundingBox ( ss / i l1 l2 ll ur )
(repeat (setq i (sslength ss))
(vla-getboundingbox (vlax-ename->vla-object (ssname ss (setq i (1- i)))) 'll 'ur)
(setq l1 (cons (vlax-safearray->list ll) l1)
l2 (cons (vlax-safearray->list ur) l2)
)
)
(mapcar '(lambda ( a b ) (apply 'mapcar (cons a b))) '(min max) (list l1 l2))
)
页:
[1]