;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Projiziere Block auf DGM ;;; ;;; Autor: (c) Udo Hübner - www.CAD-Huebner.de ;;; ;;; letztes Update 11.02.2007 ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; getestet mit Civil 3D 2007 ;;; ;;; Aufruf: PRJBLOCK2DGM, DGM in Grafik wählen, Blöcke wählen: ;;; ;;; Verschiebt Blockreferenzen auf die Höhe des gewählten DGMs ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; akzeptiert wird eine beliebige Blockreferenz ;;; ;;; die Z-Höhen der Punkte werden mittels "FindElevationAtXY Method" des DGM-Objektes ;;; ;;; bestimmt und danach geändert, Attributhöhen werden aber nicht verändert, ;;; ;;; sonst evt. COMMAND _MOVE benutzen ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (vl-load-com) (defun C:PRJBLOCK2DGM ( / dgmobj ssdgm vlax-dgmobj) (prompt "\nProjiziere/verschiebe Blockref. auf DGM Höhe V1.1\nwww.CAD-Huebner.de - 11.02.2007") ; TIN wählen, wenn kein AECC_TIN_SURFACE, dann auch keine Civil ActiveX Funktionen (prompt "\nDGM wählen:") (if (setq ssdgm (ssget "_:S" '((0 . "AECC_TIN_SURFACE")))) (progn ; Elementname in Objektname überführen (setq vlax-dgmobj (vlax-ename->vla-object (ssname ssdgm 0))) ; DGM Name ermitteln und ausgeben (prompt (strcat "\ngewähltes DGM: <" (vlax-get-property vlax-dgmobj "name") "> ...")) (prompt "\nzu verschiebende Blockreferenzen wählen:") (prjblock2dgm vlax-dgmobj (ssget '((0 . "INSERT")))) ) (prompt "\nkein DGM vom Elementtyp gewählt.") ) (princ) ) ;; Unterfunktion (defun PRJBLOCK2DGM (vlax-dgmobj ssblref / cnt elevation inspnt) (setq cnt (sslength ssblref)) (while (>= (setq cnt (1- cnt)) 0) (setq inspnt (cdr (assoc 10 (entget (ssname ssblref cnt)))) elevation (vlax-invoke-method vlax-dgmobj "FindElevationAtXY" (car inspnt)(cadr inspnt)) ) ; Blockreferenzen sollten auf einem ungesperrten layer liegen (entmod (subst (list 10 (car inspnt)(cadr inspnt) elevation) (cons 10 inspnt) (entget (ssname ssblref cnt)) ) ) ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (prompt "\nPRJBLOCK2DGM.lsp geladen, Start mit PRJBLOCK2DGM.") (princ)