Initial commit
This commit is contained in:
123
blockpres.lsp
Normal file
123
blockpres.lsp
Normal file
@@ -0,0 +1,123 @@
|
||||
;;blockpres.lsp
|
||||
;;
|
||||
;;Routine for block presentation in a file. It sorts the selected blocks in alphabetical order, and align them to a nice grid.
|
||||
;;
|
||||
;; Created by Peter Gyetvai
|
||||
;; gyetpet@gmail.com
|
||||
;; gyetvai-peter.hu
|
||||
|
||||
|
||||
(defun C:blockpres (/ i imax j jmax ss goodsel colnr il jl distance currSel currElem newElem currTyp currPos currName currColNr currRowNr nameList nameListOrder currOrder)
|
||||
;variables:
|
||||
(setq i 0);counter to zero
|
||||
(setq imax 1);while variable
|
||||
|
||||
(setq j 0);counter to zero
|
||||
(setq jmax 1);while variable
|
||||
|
||||
(setq currColNr 0)
|
||||
(setq currRowNr 0)
|
||||
|
||||
(setq nameList ())
|
||||
(setq goodsel (ssadd))
|
||||
|
||||
(vl-load-com)
|
||||
(graphscr)
|
||||
|
||||
(prompt "\nSelect blocks: [All]")
|
||||
(setq ss (ssget));asks for selection
|
||||
(setq jl (sslength ss));length of selection
|
||||
(setq distance (getdist "\nDistance between blocks? "))
|
||||
(setq colnr (getint "\nNumber of columns? "))
|
||||
|
||||
;; gets the blocks name
|
||||
(while jmax
|
||||
(print )
|
||||
(princ "Checking element ")
|
||||
(princ (1+ j))
|
||||
(princ "/")
|
||||
(princ jl)
|
||||
|
||||
(setq currSel (ssname ss j))
|
||||
(setq currElem (entget currSel))
|
||||
(setq currName (cdr (assoc 2 currElem)))
|
||||
(setq currTyp (cdr (assoc 0 currElem)))
|
||||
(princ " - type: ")
|
||||
(princ currTyp)
|
||||
|
||||
;; checks if it's a block
|
||||
(cond
|
||||
(
|
||||
(= currTyp "INSERT");if block
|
||||
(progn
|
||||
(princ " - name: ")
|
||||
(princ currName)
|
||||
|
||||
(setq nameList (append nameList (list (strcase currName))))
|
||||
;; (print nameList)
|
||||
(ssadd currSel goodsel)
|
||||
)
|
||||
)
|
||||
(
|
||||
(not (= currTyp "INSERT"));if not block
|
||||
(progn
|
||||
(princ ": This is not a block")
|
||||
)
|
||||
)
|
||||
)
|
||||
;while specific:
|
||||
(setq j (1+ j));increments j
|
||||
(if (= j jl) (setq jmax nil));finish function if j equals jl
|
||||
)
|
||||
|
||||
|
||||
;; sorts the block names
|
||||
(setq nameListOrder (vl-sort-i nameList '<))
|
||||
|
||||
;; length of new selection set
|
||||
(setq il (sslength goodsel))
|
||||
(print )
|
||||
|
||||
;; Modify coordinates
|
||||
(while imax
|
||||
(print )
|
||||
(princ "Moving element ")
|
||||
(princ (1+ i))
|
||||
(princ "/")
|
||||
(princ il)
|
||||
|
||||
(setq currOrder (nth i nameListOrder))
|
||||
|
||||
|
||||
(setq currElem (entget (ssname goodsel currOrder) ))
|
||||
(setq currPos (assoc 10 currElem))
|
||||
|
||||
(princ " - block name: ")
|
||||
(princ (cdr (assoc 2 currElem)))
|
||||
(print )
|
||||
|
||||
(setq newPos (list 10 (* currColNr distance) (* currRowNr distance) 0))
|
||||
|
||||
(setq newElem (subst newPos currPos currElem))
|
||||
(entmod newElem)
|
||||
|
||||
;; ATTSYNC
|
||||
(command "._ATTSYNC" "N" (cdr (assoc 2 currElem)))
|
||||
|
||||
;; change col and row numbers
|
||||
(setq currColNr (1+ currColNr))
|
||||
(if (= currColNr colnr)
|
||||
(progn
|
||||
(setq currRowNr (1+ currRowNr))
|
||||
(setq currColNr 0)
|
||||
)
|
||||
)
|
||||
|
||||
;while specific:
|
||||
(setq i (1+ i));increments i
|
||||
(if (= i il) (setq imax nil));finish function if i equals il
|
||||
)
|
||||
|
||||
(setq ss nil)
|
||||
(princ)
|
||||
)
|
||||
Reference in New Issue
Block a user