-ikarus- Mitglied Zeichner
Beiträge: 142 Registriert: 12.02.2007 ACAD 2015,PSP 2011, Showcase 2015, Mudbox 2015 Indesign CC, Illustrator CC, Photoshop CC, After Effects CC, Premiere Pro CC, Edge Animate CC, Acrobat DC Pro mit PitStop Pro, Visual Studio 2013 Notepad++ Rechner: HP Z620 Workstation NVIDIA Quadro K4000
|
erstellt am: 11. Nov. 2014 12:53 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich wollte mal fragen, warum MTEXT der über (command "mtext" pt1 pt2 ) erstellt wird sich wie -MTEXT verhält. Außerdem sind die Griffe anders als bei MTEXT der über den Befehl MTEXT erstellt wurde und wenn ich den Text verschiebe, hat er beim Verschieben optisch einen Rahmen, der wieder verschwindet, sobald man den verschieben Befehl abgeschlossen hat. Ich habe mir eine Lisp gebaut, in der ich MTEXT unter einen bestehenden MTEXT mit einem Abstand setzten will und dazu habe ich den Befehl (command "MTEXT" ...) verwendet und da ist mir das aufgefallen. Kurz gefragt gibt es unterschiedliche MTEXTE in AutoCAD und wenn ja, wo unterscheiden sie sich? Code:
(defun C:MTEXTABSATZ ( / *error* OBJ spf-eingabe spf ent AWS MTEXTbasis ptX ptY ptZ MTEXTboxhoehe MTEXThoehe MTEXTboxbreite MTEXTfaktor MTEXTzeilen MTEXTabsatzY MTEXTzeilenhoehe OLDLAYER ofang ) (vl-load-com);;;;;;;;;;;;;;;;;;; (defun *error* ( msg ) (LM:endundo (LM:acdoc)) (if (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*")) (princ (strcat "\nError: " msg)) ) (princ) ) (setq ofang (getvar "osmode" )) ;Legt fortlaufende Objektfangmodi fest (setvar "osmode" 0 ) ;Objektfan auf aus (if (= spf2 nil )(setq spf2 25 )) (princ "\n Geben Sie den gewünschten Absatzabstand an: [17.5 / 20 / 22.5 / 25 / 30] Aktuell <" )(princ spf2 )(princ "> : " ) (if (not (setq spf-eingabe (getreal )))(setq spf-eingabe (float spf2 ))) (setq spf2 (float spf-eingabe)) (setq spf (float spf-eingabe)) (while (not (and (setq ent (car(entsel "\nMText wählen: ")))(= (cdr (assoc 0 (entget ent))) "MTEXT")))) (setq AWS (entget ent)) (setq OBJ(vlax-ename->vla-object ent)) (setq MTEXTzeilenhoehe (vlax-get-property obj 'LineSpacingDistance )) (command "bks" "Objekt" ent ) (setq MTEXTbasis (cdr (assoc 10 AWS ))) (setq MTEXTbasis (trans MTEXTbasis 0 1 )) (setq ptX (car MTEXTbasis )) (setq ptY (cadr MTEXTbasis )) (setq ptZ (caddr MTEXTbasis )) (setq MTEXTboxhoehe (cdr (assoc 43 AWS ))) (setq MTEXThoehe (cdr (assoc 40 AWS ))) (setq MTEXTboxbreite (cdr (assoc 41 AWS ))) (setq MTEXTfaktor (cdr (assoc 44 AWS ))) (setq MTEXTzeile (rtos (/ MTEXTboxhoehe MTEXTzeilenhoehe ) 2 1 )) (setq MTEXTzeilen (substr MTEXTZeile 1 (- (strlen MTEXTZeile) 2)) ) (setq MTEXTabsatzY (+ (* (atoi MTEXTzeilen) MTEXTzeilenhoehe ) spf )) (setq ptXN ptX ) (setq ptYN (- ptY MTEXTabsatzY )) (setq ptZN ptZ) (setq ptXN2 (+ ptX MTEXTboxbreite )) (setq ptYN2 (- ptY (+ MTEXTabsatzY 50.0 ))) (setq ptZN2 ptZ ) (setq ptN (list ptXN ptYN ptZN )) (setq ptN2 (list ptXN2 ptYN2 ptZN2)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (initget 1 " Text Makierung ") (setq prüf (getkword "\nText Punktmakierung setzen bzw. neuen MText eingeben: [Makierung / Text] <Makierung>")) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (if (or (= prüf "Makierung")(= prüf "")(= prüf "M")) (progn (princ "\nEs wird ein Makierungspunkt gesetzt!")(princ) (if (= nil (tblsearch "LAYER" "K-Linie")) ; sucht in der Layerliste nach K-Linie (progn (entmake (list '(0 . "LAYER") '(100 . "AcDbSymbolTableRecord") '(100 . "AcDbLayerTableRecord") ;erstellt den Layer K-Linie (cons 2 "K-Linie") '(70 . 0) '(62 . 6) '(6 . "Continuous") ; '(290 . 0) ; ;'(370 . 0 ) ) ) ) ) (setq OLDLAYER (getvar "CLAYER" )) (setvar "clayer" "K-Linie" ) (command-s "_.point" ptN ) (setvar "clayer" OLDLAYER ) ) (progn (princ "\nEs wird ein MText gesetzt bitte geben sie den Text ein!" )(princ) (command-s "_.MTEXT" ptN ptN2 ) ) ) (command "bks" "W" ) (setvar "osmode" ofang ) ;Objektfan auf ein (princ) )
[Diese Nachricht wurde von -ikarus- am 12. Nov. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |