Danke.
Ich habe Ihren Vorschlag und anscheinend alles funktioniert, das ist Code :
Code:
(defun cstr)
(setq tt (ssget "_x"((0 . "text,mtext")(1 . "p*"))))))
(Repeat)
(setq tt (sssname tt (setq n (1-n))))
(setq string (entget tt))
(setq txt1 (assoc 1 string))
(setq txt1 (cdr txt1)
(setq lungh (- (strlen txt1) 60)
(setq cxy (assoc 10 string))
(setq cox (cadr cxy))
(setq coy (cadddr cxy))
(Befehl "_erase" tt ")
(setq coox (rtos cox))
(setq cooy (rtos coy))
(setq indirizzo (strcat coox," cooy))
(setq testo1 (substr txt1 2 lungh) ; nome del punto
(setq testo2 (substr txt1 (+ lungh 2)) ; dal nome del punto in poi
(Befehl "_mtext" indirizzo "_j" "_bl" "_w" 50 (Strcat testo1 "{\h0.1x;" testo2 "}")
)
Strings werden geändert und in der gewünschten Weise angezeigt oder, der erste Teil mit großen Zeichen und der zweite mit kleinen Zeichen.
der nächste Schritt, wenn ich den String wähle, wird derselbe nicht wie er erscheint zurückgegeben, sondern enthält die Kontrollzeichen, die verwendet werden, um den > großen - kleinen < Effekt zu erreichen.
Dies ist der Befehlscode einschließlich der Ergebnisse:
Code:
(defun reference (/)
(falls)
(Progn)
(Start "c:\\transformer\\helpinlinea\rif.exe "c:\\transformer\\helpinlinea\rif.tkn")
(Auszug)
)
)
(falls)
(Alert "die Referenzlinie wurde bereits eingefügt")
)
(Sectq und 1 nil)
(sing)
(= ed1 nil)
(setq ed1 (entsel "\nselect the reference line : ")))
)
(setq ed1 (entget (car ed1))
(setq txt1 (cdr 1 ed1)
(setq txt2 (cdr 10 ed1)
(princ "\n")
(princ txt)
;p2 (164,93)
(princ "\n")
(princ txt)
;(1.4988e+06 5.04244e+06 0.0)
(princ "\n")
(setq lung (strlen txt1)
(- Lunge 77)
(Setq Basisname (substr txt1 1 lungnomebase))
(princ "\n")
(Hauptname)
ANHANG
(princ "\n")
(Princ Lunge)
;
(princ "\n")
(setq notax)
(Setq Station)
(Einzelpersonen)
(cond)
((= notax "cm" ) (setq notax "miniated nail"))
((= notax "sf" ) (setq notax "spigolo fabricated"))
((= notax "sr" ) (setq notax "spigolo Zaun"))
((= notax "re" ) (setq notax "recinction"))
((= notax "st" ) (setq notax "sign to the Ground"))
((= notex "pi" ) (setq notax "picchetto"))
((= notax "to" ) (setq notax "tombino"))
((= notax "ct" ) (setq notax "centro tombino"))
)
(setq pos1 (- (strlen txt1) 58)
(setq xyz (substr txt1 pos1 34)
(princ "\n")
(princ xyz)
;4420568.319,698901.058,4529365.156
(princ "\n")
(Setq cxb (substr xyz 1 11)
(princ cxb)
;4420568.319
(princ "\n")
(setq cyb (substr xyz 13 10)
(princ cyb)
;698901.058
(princ "\n")
(setq czb (substr xyz 24 11)
(princ czb)
;4529365.156
(princ "\n")
(setq cxbb (atof cxb))
(princ cxbb)
;4.42057e+06
(princ "\n")
(setq cybb (atof cyb))
(princ cybb)
;69890
(princ "\n")
(setq czbb)
(princ czbb)
;4.52937+06
(princ "\n")
(setq note2 (strcat name puntobase " - " notax " - " station))
(setq Referenz (strcat "1|" Station "|" xyz "0.0000,000 wgs84-rtf2000]|" Note2 "")")
(setq secondline "6|l1|14122017-20:12|14122017-20:12rtrtk|pdop=1|)
(setq stringa1 (strcat reference "" zweite Zeile)
(princ string)
;1|80000|4420568.319,698901.058,4529365.156|0,000 wgs84-rtf2000]|p2 - recinzione - 80000| 6|l1|14122017-20|:1214122017-20:12rtrtk|pdop=1|
(princ "\n")
(Sectq und nil)
(sing)
(und (/= re "s") (/= re "n")
(s/n)
(setq re (getstring)
(seq re (strcase re)
)
(f)
(= s)
(Progn)
(Setq fp1 (offen "c:\\\\trasformer\\\librettopregeo.dat" "a"))
(Referenz der Schreibzeile fp1)
(writing line secondline fp1)
(Schließe fp)
)
)
(setq ind)
(setq index(strcat ind nomepuntobase))
(seq primariga) 1)
(alert string)
)
wie Sie bemerken, um den String zu bekommen, wie ich ihn brauche, muss ich ihn reinigen.
Der hierin beigefügte Code ist in einem viel längeren Term > pre.lsp < enthalten, nach der ersten Verwendung des Verweises < Befehl, auf eine neue Referenz desselben, Ich erhalte diesen Fehler:
Code:
ohne erste Anrufung (*push-error-using-command*) nicht (Befehl) von* Error* anrufbar.
Wir empfehlen die Konvertierung (Befehl) von Anrufen in (Befehle).
und ich muss wieder aufladen > vor.lsp <, so zu jeder Verwendung > Referenz <!
Ich kann nicht finden, was dieses Verhalten verursacht.
Danke.