| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: MTEXT (850 mal gelesen)
|
Antor Mitglied
Beiträge: 10 Registriert: 09.11.2005 Pentium 4 3,0 GHz; 2 GB RAM, Windows XP Prof SP2; ACAD 2004
|
erstellt am: 05. Feb. 2006 10:49 <-- editieren / zitieren --> Unities abgeben:
Hallo Alle, kann mir jemand helfen. ich muß bei einer ganzen Reihe MTEXTEN eine komplette Zeile löschen. Gibt es da einen Automatismus oder muß ich jeden Text einzeln editieren. Ich benutze ACAD2004. Danke! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 05. Feb. 2006 11:14 <-- editieren / zitieren --> Unities abgeben: Nur für Antor
|
Antor Mitglied
Beiträge: 10 Registriert: 09.11.2005 Pentium 4 3,0 GHz; 2 GB RAM, Windows XP Prof SP2; ACAD 2004
|
erstellt am: 05. Feb. 2006 11:19 <-- editieren / zitieren --> Unities abgeben:
|
startrek Mitglied Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 05. Feb. 2006 12:22 <-- editieren / zitieren --> Unities abgeben: Nur für Antor
Hi Antor, nicht besonders getestet, also eher für simple MTexte, kannst du mal folgendes probieren:
Code:
Sub del_second_row() Dim sset As AcadSelectionSet, ent As AcadEntity Dim rex As Object Set sset = ActiveDocument.SelectionSets.Add("set3") sset.SelectOnScreen Set rex = CreateObject("vbscript.regexp") rex.Global = True rex.Pattern = "(.*?\\P)(.*?\\P)(.*)" For Each ent In sset If TypeOf ent Is IAcadMText Then ent.TextString = rex.Replace(ent.TextString, "$1$3") End If Next sset.Delete Set rex = Nothing End Sub
Gruss Nancy
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Antor Mitglied
Beiträge: 10 Registriert: 09.11.2005 Pentium 4 3,0 GHz; 2 GB RAM, Windows XP Prof SP2; ACAD 2004
|
erstellt am: 05. Feb. 2006 12:29 <-- editieren / zitieren --> Unities abgeben:
|
Stelli1 Ehrenmitglied Verm.-Ing.
Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2013, Rasterdesign MapGuide 6.5 - 2013 Oracle 9i,10g,11g Enterprise autodesk Topobase 2-2012 VS6, VS.net
|
erstellt am: 05. Feb. 2006 12:33 <-- editieren / zitieren --> Unities abgeben: Nur für Antor
|
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 05. Feb. 2006 12:34 <-- editieren / zitieren --> Unities abgeben: Nur für Antor
Hallo Antor, probier es mal mit folgendem LISP. Zu Beachten ist aber, das Formatierungen, die über die zu löschenden Zeile hinaus gehen, zerstört werden. Also, die Ergebnisse prüfen!! Code:
;;;Jörn Bosse, 05.02.06 (defun c:mt_del_zeile (/ temp text text1 text_liste n n1 aws) (if (not JB_zeile) (setq JB_zeile 2)) (princ "\nBitte wählen Sie MTexte aus:") (if (setq aws (ssget (list (cons 0 "MTEXT")))) (progn (if (setq temp (getint (strcat "\nBitte geben Sie die zu löschende Zeilennummer an:<" (itoa JB_zeile) ">"))) (setq JB_zeile temp)) (setq n 0) (repeat (sslength aws) (setq text_liste nil) (setq text (cdr (assoc 1 (entget (ssname aws n))))) (while (vl-string-search "\\P" text) (setq text_liste (cons (substr text 1 (vl-string-search "\\P" text)) text_liste) text (substr text (+ (vl-string-search "\\P" text) 3)))) (setq text_liste (cons text text_liste)) (setq text1 "" n1 1) (mapcar '(lambda (A) (if (/= n1 JB_zeile) (setq text1 (strcat text1 A (if (< n1 (length text_liste)) "\\P" "")))) (setq n1 (+ n1 1))) (reverse text_liste)) (entmod (subst (cons 1 text1) (assoc 1 (entget (ssname aws n))) (entget (ssname aws n)))) (setq n (+ n 1)))) (alert "Sie haben keine MTexte ausgewählt.")) (princ) ) (princ "\nn.te Zeile von Mtexten löschen.") (princ "\nStart mit \"mt_del_zeile\"")
------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Mitglied Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 05. Feb. 2006 12:35 <-- editieren / zitieren --> Unities abgeben: Nur für Antor
|
Antor Mitglied
Beiträge: 10 Registriert: 09.11.2005 Pentium 4 3,0 GHz; 2 GB RAM, Windows XP Prof SP2; ACAD 2004
|
erstellt am: 05. Feb. 2006 12:40 <-- editieren / zitieren --> Unities abgeben:
|
Antor Mitglied
Beiträge: 10 Registriert: 09.11.2005 Pentium 4 3,0 GHz; 2 GB RAM, Windows XP Prof SP2; ACAD 2004
|
erstellt am: 05. Feb. 2006 12:46 <-- editieren / zitieren --> Unities abgeben:
|
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 05. Feb. 2006 13:24 <-- editieren / zitieren --> Unities abgeben: Nur für Antor
Hallo Antor, hier nochmal eine Variante: Es wird nach einem String gesucht. Wenn der String innerhalb einer Zeile eines MTextes vorhanden ist, wird die Zeile gelöscht. Auch hier wieder: Ergebnisse prüfen!!! Code:
;;;Jörn Bosse, 05.02.06 (defun c:mt_del_zeile_str (/ temp text text1 text_liste n n1 aws) (if (not JB_str) (setq JB_str "TEST")) (princ "\nBitte wählen Sie MTexte aus:") (if (setq aws (ssget (list (cons 0 "MTEXT")))) (progn (if (/=(setq temp (getstring (strcat "\nBitte Löschstring angeben. <" JB_str ">")))"") (setq JB_str temp)) (setq n 0) (repeat (sslength aws) (setq text_liste nil) (setq text (cdr (assoc 1 (entget (ssname aws n))))) (while (vl-string-search "\\P" text) (setq text_liste (cons (substr text 1 (vl-string-search "\\P" text)) text_liste) text (substr text (+ (vl-string-search "\\P" text) 3)))) (setq text_liste (cons text text_liste)) (setq text1 "" n1 1) (mapcar '(lambda (A) (if (not (vl-string-search JB_str A)) (setq text1 (strcat text1 A (if (< n1 (length text_liste)) "\\P" "")))) (setq n1 (+ n1 1))) (reverse text_liste)) (entmod (subst (cons 1 text1) (assoc 1 (entget (ssname aws n))) (entget (ssname aws n)))) (setq n (+ n 1)))) (alert "Sie haben keine MTexte ausgewählt.")) (princ) ) (princ "\nLöschen von Zeilen aus Mtexten, die einen Löschstring beinhalten.") (princ "\nStart mit \"mt_del_zeile_str\"")
------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Antor Mitglied
Beiträge: 10 Registriert: 09.11.2005 Pentium 4 3,0 GHz; 2 GB RAM, Windows XP Prof SP2; ACAD 2004
|
erstellt am: 05. Feb. 2006 13:42 <-- editieren / zitieren --> Unities abgeben:
|