LISP SORT SECTION_VIEW __VER 2021 In one column

LISP SORT SECTION_VIEW __VER 2021 In one column

hosneyalaa
Advisor Advisor
973 Views
1 Reply
Message 1 of 2

LISP SORT SECTION_VIEW __VER 2021 In one column

hosneyalaa
Advisor
Advisor

HI 

I try to arrange them vertically
Can be arranged without LISP

 

Capture.JPGCaptureW.JPG

 

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

 

 

0 Likes
Accepted solutions (1)
974 Views
1 Reply
Reply (1)
Message 2 of 2

hosneyalaa
Advisor
Advisor
Accepted solution
(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
0 Likes