(defun grvecscircle ( cen rad col / ang inc ) (setq inc (/ (+ pi pi) 24.0) ang 0.0) (repeat 24 (grdraw (polar cen ang rad) (polar cen (setq ang (+ ang inc)) rad) col)) ) (defun GetPointData (/ pointset idc ename) ;Das hier gibt Dir einen Auswahlsatz über alle Punkte Deiner DWG, auch auf ausgeschalteten/gefrorenen Layern: (if (setq pointdata nil pointsset (ssget '((0 . "POINT")))) (progn ;Damit gehst Du alle Punkte im Auswahlsatz durch und sammelst deren Koordinatenwerte und Entitynamen in eine Liste: (setq idx 0) (repeat (sslength pointsset ) (setq ename (ssname pointsset idx)) (setq pointdata (cons (cons ename (cdr (assoc 10 (entget ename)))) pointdata) idx (1+ idx) ) ) ;Und dann sortierst Du diese Liste z.B. aufsteigend nach dem Z-Wert: (setq pointdata (vl-sort pointdata '(lambda (tok1 tok2) (< (cadddr tok1) (cadddr tok2))))) ; Das erste Element dieser Liste (car pointdata) ist dann der Punkt mit niedrigstem Z-Wert, ; das letzte Element (last pointdata) der Punkt mit dem höchsten Z-Wert. ) ) ) (defun c:PointZmin (/ P) (redraw) (if (setq P (cdar(GetPointData))) (progn ;(command "_.ZOOM" "_c" P "") (grvecscircle P (/ (getvar 'VIEWSIZE) 30) 12)) ) (princ) ) (defun c:PointZmax (/ P) (redraw) (if (setq P (cdar(reverse(GetPointData)))) (progn ;(command "_.ZOOM" "_c" P "") (grvecscircle P (/ (getvar 'VIEWSIZE) 30) 110)) ) (princ) ) (princ "\nPointZmin und PointZmax geladen") (princ)