;;; STA geändert von CADchup (defun C:STA (/ TXL AO MS EP was?) (setq SC 1000 ; ZE Meter, Maßstab 1:1000 TXL (* (getvar "TEXTSIZE") 10.0 ) ;_ end * ) ;_ end setq (initget "Kilometer Station Meter") (setq was? (getkword "Kilometer, Station oder Meter?")) ;Abfrage, wie bemasst werden soll (defun DOLOOP (PL / PT CPT LEN PAR FD ANG PT2 TX TO) (while (setq PT (getpoint "\nPunkt wählen: ")) (setq CPT (vlax-curve-getclosestpointto PL PT) LEN (vlax-curve-getdistatpoint PL CPT) PAR (vlax-curve-getparamatpoint PL CPT) FD (vlax-curve-getfirstderiv PL PAR) ANG (angle '(0 0 0) FD) ANG (if (> ANG pi) (+ ANG (/ pi 2)) (- ANG (/ pi 2)) ) ;_ end if PT2 (polar CPT ANG TXL) ) ;_ end setq (vla-addline MS (vlax-3d-point CPT) (vlax-3d-point PT2)) (setq TX (strcat ; Texterzeugung komplett geändert (cond ((= "Kilometer" was?) (strcat (cond ((minusp LEN) "km ") ((zerop LEN) "km 0.") (t "km +") ) (rtos (/ LEN SC) 2 3) "," (substr (rtos (/ LEN SC) 2 5) (- (strlen (rtos (/ LEN SC) 2 5)) 1) 2 ) ) ) ; Text für Kilometer ((= "Station" was?) (strcat "Stat. 0+" (rtos LEN 2 2))) ; Text für Station ((= "Meter" was?) (strcat "" (rtos LEN 2 2))) ; Text für Meter ) ;_ end cond ) ;_ end strcat TO (vla-addtext MS TX (vlax-3d-point '(0 0 0)) (getvar "TEXTSIZE") ) ;_ end vla-addtext ) ;_ end setq (vla-put-alignment TO acalignmentbottomright) (vla-put-rotation TO ANG) (vla-put-textalignmentpoint TO (vlax-3d-point PT2)) ) ;_ end while ) ;_ end defun (vl-load-com) (setq AO (vlax-get-acad-object) MS (vla-get-modelspace (vla-get-activedocument AO)) ) ;_ end setq (if (setq EP (entsel)) (DOLOOP (vlax-ename->vla-object (car EP))) ) ;_ end if (princ) ) ;_ end defun