Message 1 of 2
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
HI
I try to arrange them vertically
Can be arranged without LISP
THIS IS LISP
(defun C:SORT_SECTION_VIEW (/ ss n blk minpt maxpt LL UR BB_REFY BE_SELECTION BLKN ENTLIS ENTN ENTS LL_REFY MM PT_REFY SS1 SS2); = Stack Blocks in Y direction
(vl-load-com)
(princ "/NSELECT SECTION_VIEW")
;(setq ss1 (ssget '((0 . "AECC_GRAPH_SECTION_VIEW"))))
(if (setq ss1 (ssget '((0 . "AECC_GRAPH_SECTION_VIEW"))));;VER 2021
(progn
(setq BE_Selection (ssadd))
(setq entLIS NIL)
(setq n (SSlength ss1))
(while (setq blkN (ssname ss1 (setq n (1- n))))
(progn
(setq entS (vlax-get (vlax-get (setq entN (vlax-ename->vla-object blkN)) 'PARENT) 'STATION))
(setq entLIS (CONS (LIST entS blkN) entLIS))
)
)
(setq ss2 (vl-sort entLIS'(lambda(a b)(<(car a)(car b)))))
(setq ss(mapcar 'cadr SS2))
(repeat (setq n (length ss))
(progn
(setq blk (NTH (setq n (1- n)) ss))
(ssadd blk BE_Selection)
)
);;(repeat
)
)
(if (AND (setq ss BE_Selection)
(setq pt_refY (GETPOINT "\n-> Specify a point :"))
)
(repeat (setq n (sslength BE_Selection))
(setq blk (ssname ss (setq n (1- n))))
(vla-getboundingbox (vlax-ename->vla-object blk) 'minpt 'maxpt)
(setq LL (vlax-safearray->list minpt))
(setq MM (vlax-safearray->list maxpt))
(if pt_refY
(progn ; then
(command "_.move" blk ""
"_none" LL
"_none" (list (car pt_refY) (caDr pt_refY));
); command
(vla-getboundingbox (vlax-ename->vla-object blk) 'minpt 'maxpt)
(setq ll_refY (vlax-safearray->list minpt))
(setq bb_refY (vlax-safearray->list maxpt))
(setq pt_refY (list (car ll_refY) (- (cadr ll_refY) (+ 50 (- (cadr bb_refY) (cadr ll_refY))) ))); move
); progn
;;;
); if
); repeat
); if
(princ)
); defun
Solved! Go to Solution.