107
615
575
中流砥柱
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Koordinatenbeschriftung fόr Ansichtsfenster.lsp V1.2 ;;;;;; entstanden aus cvp.lsp ;;;;;; Erweitert und όberarbeitet von Udo Hόbner - www.CAD-Huebner.de fόr Autodesk ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Lisp-Datei zum Zeichnen von Koordinaten an Layout-Ansichtsfenster ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; erstellt 12/03 Th.J.; 06/07 einfaches Errorhandling hinzugefuegt; 06/07 Fehler bei Abweichung von Koordinatenrichtung und Winkeleinheiten beseitigt;; 07/07 Udo Hόbner / Vorgabewerte neu berechnet, Unterfunkion fόr Koordinatenanschrieb; / Gruppierung des Anschriebs; 16.07.07 Gitterkreuze zusδtzlich einfόgen; 09/07 Auswahl, ob Anschreiben innen oder aussen vom AF; 10/07 Voreinstellung der Textgrφίe auf Textsize (wenn nicht fix im Stil); Benutzung einer neuen Funktion statt #VPT_BOX; 12/07 Viewdirbestimmung zur Erkennung von nicht "Normalen" WKS Ansichten; und Ausgabwe eines Hinweises; Mφgliche Erweiterungen: Reaktor am AF, bei F Δnderung Neuerstellung der Beschriftung; Koordinatenkreuze; Vorhaben: waehle Ansichtsfenter und zeichne im Plotbereich an das AF die Koordinaten (Linien und Werte); des dargestellten (Lage)planausschnittes;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (vl-load-com) (prompt "\nKoordinatenanschrieb fόr Ansichtsfenster fόr AutoCAD Civil 3D - Start mit CVP");; Hauptprogramm;(defun C:cvp ( / alterror sblip scmd sosmode al anz x axl zen_af zen_af_x zen_af_y zen_modw zen_mod_xw zen_mod_yw br_af h_af h_mod affakt br_mod alpha liun_af_x liob_af_x reun_af_x reob_af_x liun_af_y liob_af_y reun_af_y reob_af_y element punkte liun_mb liob_mb reun_mb reob_mb liun_mb_x liob_mb_x reun_mb_x reob_mb_x liun_mb_y liob_mb_y reun_mb_y reob_mb_y startx starty delta_l delta_m delta_a cy_af richtg textht textri textausri cx_mb minx maxx delta_m1 cx_af ctext p1 p2 pt cy_mb miny maxy elemlist temp digits viewdir ) (setq alterror *error*) (setq *error* my_error) (command "_undo" "_mark") ; globale Variablen(setq *AD:TEXTHOEHE* (GETVAR "TEXTSIZE") *AD:LINIENLAENGE* (* 3.0 *AD:TEXTHOEHE*)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Unterprogramme;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun createCvp (p1 p2 textausri pt textht textri ctext / elelist) (command "_LINE" p1 p2 "") (setq elelist (list (entlast))) (if (> (cdr (assoc 40 (tblsearch "Style" (getvar "textstyle")))) 0.0); wenn aktueller Textstil keine feste Texthφhe (command "_TEXT" "_Justify" textausri pt textri ctext) (command "_TEXT" "_Justify" textausri pt *AD:TEXTHOEHE* textri ctext) ) (setq elelist (cons (entlast) elelist)) ; Rόckgabe er Liste ;(COMMAND "_-INSERT" "CVP" p1 1.0 (angtos richtg) (itoa cx_mb)) ;(CreateBLockinPaperspace "CVPRECHTS" p1 richtg (itoa cx_mb)) )(prompt "\nCoordinate Labeling for Viewports");; Sichern und Setzen einiger Systremvariable;(setq sblip (getvar "blipmode"))(setq scmde (getvar "cmdecho"))(setq sosmode (getvar "osmode"))(setq sangbase (getvar "angbase"))(setq sangdir (getvar "angdir"))(setq saunits (getvar "aunits")) (setvar "blipmode" 0)(setvar "cmdecho" 0)(setvar "osmode" 0)(setvar "angbase" 0)(setvar "angdir" 0)(setvar "aunits" 0) ; Aufforderung zur Ansichtsfensterwahl(setq anz 0 al (ssget '((0 . "VIEWPORT"))))(if al (setq anz (sslength al)) (prompt "\nNo Viewport selected !"))(setq x 0)(while (< x anz) (setq axl (entget (ssname al x))) ; ; pruefen ob ansichtsfenster ; (if (= "VIEWPORT" (cdr (assoc 0 axl))) (progn (setq zen_af (cdr (assoc 10 axl))) (setq zen_af_x (car zen_af)) (setq zen_af_y (cadr zen_af)) (setq zen_modw (cdr (assoc 12 axl))) (setq zen_mod_xw (car zen_modw)) (setq zen_mod_yw (cadr zen_modw)) (setq br_af (cdr (assoc 40 axl))) (setq h_af (cdr (assoc 41 axl))) (setq h_mod (cdr (assoc 45 axl))) (setq affakt (/ h_af h_mod)) (setq br_mod (/ br_af affakt)) (setq alpha (cdr (assoc 51 axl))) ; ; ; eckpunkte ansichtsfenster (annahme nicht gedreht) ; (setq liun_af_x (- zen_af_x (/ br_af 2.))) (setq liob_af_x (- zen_af_x (/ br_af 2.))) (setq reun_af_x (+ zen_af_x (/ br_af 2.))) (setq reob_af_x (+ zen_af_x (/ br_af 2.))) (setq liun_af_y (- zen_af_y (/ h_af 2.)))