Textstil von Mtext und Text ändern ohne Eigenschaftenfenster / Lisp
Manuel486 14. Feb. 2020, 07:59

Guten morgen,

habe mal wieder eine lange suche hinter mir, aber finde nichts...
Ich möchte gerne Mtexte und danach auch Texte auf einen anderen Schriftstil legen lassen.

Es sollte wie folgt ablaufen Mtexte auswählen mit:
^C^C(sssetfirst nil (ssget "_X" '((0 . "MTEXT")(410 . "Model"))))

Jetzt habe ich gedacht der Befehl _textstyle hilft mir weiter.
Dieser Befehl setzt aber nur einen bestimmten Textstil aktuell.

Mit _change komme ich nicht weiter...
Gibt es denn keinen Befehl um das nicht von Hand machen zu müssen?

Der komplette Ablauf wäre:
-Mtexte auswählen
- auf Schriftstil ISOCP-1 legen
- Ursprung (_explode)
-Texte auswählen
- auf Schriftstil ISOCP-1 legen
- Breitenfaktor auf 0.8
FERTIG


MFG
Manuel486

CADmium 14. Feb. 2020, 08:05

Ändere im Eigenschaftsfenster für die getätigte Auswahl Befehl: _properties    -- Ansonsten  -> kleines Lisp

Manuel486 14. Feb. 2020, 09:51

Ich will es ja gerade NICHT mit dem Eigenschaftenfenster machen.
Der Befehl _properties öffnet ja nur das Eigenschaftenfenster,
oder verstehe ich hier was falsch ?!

Meldin 14. Feb. 2020, 10:57

Also ich denke jetzt nur mal laut 
Anhand der Menge an Beiträgen die du in der kurzen Zeit hier aufgemacht hast und vor allem das du das alles immer in ein Befehlsscript packen möchtest.
Mehr an Unhandlichkeit geht einfach nicht; keine Fehlerkorrektur; keine Ablaufverfolgung und und und. Es ist und bleibt ein basteln was du da machst. Aufgrund des Umfangs deiner Abläufe würde ich dir davon abraten. Ein oder 2 Befehle aufrufen wäre noch OK alles andere erinnert an den Kampf der Leute die nur die LT Version besitzen und versuchen sich mit solchen Buttons etwas Erleichterung zu verschaffen. Und da lehne ich mich jetzt mal aus dem Fenster und würde sagen keiner der hier ein paar LISP Zeilen hinbekommt käme auf die Idee diese in ein Befehlsscript zu packen.
Aber zu deiner Frage es ist wie CADmium geschrieben und du vermutest. Händisch oder LISP. 

Andreas Kraus 14. Feb. 2020, 11:05

Kommentarlos

Code:
(if (= (type
(setq satz (ssget "_X" '((0 . "TEXT,MTEXT") (410 . "Model"))))
      )
      'PICKSET
    )
  (mapcar '(lambda (ent_name)
    (vla-put-StyleName
      (vlax-ename->vla-object ent_name)
      "isocp-1"
    )
  )
  (vl-remove-if-not
    '(lambda (dummy) (= (type dummy) 'ENAME))
    (mapcar 'cadr (ssnamex satz))
  )
  )
)

Manuel486 17. Feb. 2020, 09:20

(defun c:TXT2ISOCP1 (/)
(if (= (type
(setq satz (ssget "_X" '((0 . "TEXT,MTEXT") (410 . "Model"))))
      )
      'PICKSET
    )
  (mapcar '(lambda (ent_name)
    (vla-put-StyleName
      (vlax-ename->vla-object ent_name)
      "isocp-1"
    )
  )
  (vl-remove-if-not
    '(lambda (dummy) (= (type dummy) 'ENAME))
    (mapcar 'cadr (ssnamex satz))
  )
  )
)

So hab ich die LISP abgelegt.

In Autocad zeigt er das hier an:
Befehl: (Load "c:/cad/faust/_LISP/Alle Texte auf ISOCP1")
Falsch formatierte Liste in Eingabe
Befehl: TXT2ISOCP1
Unbekannter Befehl "TXT2ISOCP1". Drücken Sie F1-Taste für Hilfe.

Meldin 17. Feb. 2020, 09:45

Ja dann ist doch alles in Ordnung     
Weil Acad kann dea nicht verarbeiten.
1 Was ist mit einer Dateiendung z.B. .lsp
2 dein Pfad nicht mit / sondern mit \\
und dann teste nochmal ich hatte dir aber in einem anderen Beitrag schon geschrieben wie eine lsp geladen wird.