| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: -WBLOCK Namen der Ausgabedatei eingeben (1824 mal gelesen)
|
Manuel486 Mitglied Technischer Zeichner Elektro
Beiträge: 194 Registriert: 31.01.2020
|
erstellt am: 23. Sep. 2020 10:48 <-- editieren / zitieren --> Unities abgeben:
Guten morgen, ich komme hier leider nicht weiter. Ich möchte in Architekturplänen alle Planrahmen/Stempel im Layout als Wblock ablegen. Mein Code ist folgender:
Code: _.-LAYER _Make E-_RAHMEN _.AI_SELALL _.CHPROP _Layer E-_RAHMEN _.SETBYLAYER _P _Yes _Yes ; ; ; _.FILEDIA 0 _.-WBLOCK C:\CAD\_Aufbereiten\Rahmen\RAHMEN1.dwg0,0,0 _P _.FILEDIA 1
Bei einem Layout klappt das auch super. Ich hätte aber gerne das er mehrere Layouts abspeichert. Es hängt alles am Dateinamen. Wenn ich jetzt z.B. eine DWG habe mit Layout1 + Layout2 + Layout3, hätte ich gerne das ich die Dateinamen Rahmen-Layout1 + Rahmen-Layout2 Rahmen-Layout3 generiert bekomme. Ich habe gehofft das (rahmen-(getvar "CTAB")) Abhilfe bringt, aber dem ist nicht so. Ich wäre schon zufrieden, wenn er mir den Layoutnamen ausliest und diesen als Wblock Dateinamen nimmt. Habe viel und lange gesucht, aber leider nichts zum Thema gefunden... Ich würde meinen fertigen Befehl dann hiermit auf alle Layouts anwenden:
Code: (foreach L (append(layoutlist))(setvar "CTAB" L)(command "_.SCRIPTCALL" "G:/1000SONS/CAD/Faust/SCRIPT/Vorlagen/Planstempel Aufbereiten.scr"))
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3701 Registriert: 15.10.2003 Win 10/64 Pro AutoCAD MAP 3D 2018 / 2023 BricsCAD 22
|
erstellt am: 23. Sep. 2020 10:56 <-- editieren / zitieren --> Unities abgeben: Nur für Manuel486
|
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 23. Sep. 2020 11:05 <-- editieren / zitieren --> Unities abgeben: Nur für Manuel486
>>Ich habe gehofft das (rahmen-(getvar "CTAB")) Abhilfe bringt, aber dem ist nicht so.rahmen- ist keine Lispfunktion (wenn du diese nicht selbst erstellt hast), kann also nicht funktionieren. Die Funktion zum verketten von Zeichenketten ist STRCAT [F1]zB. (strcat "rahmen-" (getvar "CTAB")) >> Ich wäre schon zufrieden, wenn er mir den Layoutnamen ausliest und diesen als Wblock Dateinamen nimmt. >> Habe viel und lange gesucht, aber leider nichts zum Thema gefunden... Aber genau das nötige Puzzleteil hast du doch schon weiter unten stehen* >>Ich würde meinen fertigen Befehl dann hiermit auf alle Layouts anwenden: Code: (foreach L (append(layoutlist))(setvar "CTAB" L)(command "_.SCRIPTCALL" "G:/1000SONS/CAD/Faust/SCRIPT/Vorlagen/Planstempel Aufbereiten.scr"))
*Innerhalb dieses Foreach-Ausdrucks verbirgt sich in L der Layoutname, wenn du nun also mit STRCAT die Pfadangabe, "Rahmen-" und die Variable L verkettest, dann hast du genau das! (strcat (getvar 'DWGPREFIX) "Rahmen-" L) oder (strcat (getvar 'DWGPREFIX) "Rahmen-" L ".dwg") aber auch (strcat (getvar 'DWGPREFIX) "Rahmen-" (getvar 'CTAB)) würde funktionieren Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Manuel486 Mitglied Technischer Zeichner Elektro
Beiträge: 194 Registriert: 31.01.2020
|
erstellt am: 23. Sep. 2020 12:05 <-- editieren / zitieren --> Unities abgeben:
Ich stehe noch etwas auf dem Schlauch, wo was hin müsste... Zitat: Befehl: -WBLOCK Namen der Ausgabedatei eingeben: (strcat "rahmen-" (getvar "CTAB"))"(strcat "rahmen-" (getvar "CTAB"))": Ungültiger Dateiname.
Der Code:
Code: (foreach L (append(layoutlist))(setvar "CTAB" L)(command "_.SCRIPTCALL" "G:/1000SONS/CAD/Faust/SCRIPT/Vorlagen/Planstempel Aufbereiten.scr"))
läuft in ein Layout und führt die Befehlskette Planstempel Aufbereiten.scr 3x aus, im selben Layout. Warum nicht in jedem? Bei diesem Code für PDF-Dateien auszulesen klappt es:
Code: (foreach L (append(layoutlist))(setvar "CTAB" L)(command "_.-PLOT" "_No" "" "" "Adobe PDF" "_No" "_No" "_Yes"))
Oder hat es was mit dem Scriptcall zu tun? Der komplette Code Planstempel Aufbereiten.scr sieht so aus. Code: ;;;Planstempel Aufbereiten ; ;Alle Layer Entsperren / ;Alle Layer Tauen / ;Alle Layer Ein / ;Alle Layer Linienstärke Vorlage / ;Alle Layer Farbe 7 / ;Layer 0 aktuell / ; _.-LAYER _Unlock * _Thaw * _On * _LWeight _Default * _Color 7 * _Set 0 ; ; ; ;Führt 10x Burst aus / ; _.BURST _All _.BURST _All _.BURST _All _.BURST _All _.BURST _All _.BURST _All _.BURST _All _.BURST _All _.BURST _All _.BURST _All ; ; ; ;Wählt alle Ansichtsfenster im aktuellen Bereich der Zeichnung aus, wenn es welche gibt, wird Löschen ausgeführt / ; (if (ssget "_X" (list '(0 . "VIEWPORT")(cons 410 (getvar 'CTAB))))(command "_.ERASE" "_P" "")) ; ; ; ;ARIAL-1 wird erstellt / ;Standard wird aktuell gestellt / ;Lädt die LISP: CHTEXT.lsp / ;Wählt alle MTexte im aktuellen Bereich der Zeichnung aus, wenn es welche gibt, wird Ursprung ausgeführt / ;Wählt alle Texte im aktuellen Bereich der Zeichnung aus, wenn es welche gibt, werden alle Texte auf Stil ISOCP1 und auf Breite 0.8 gelegt / ; _.-STYLE ARIAL-1 "arial narrow" 0 1.0 0 _No _No _.TEXTSTYLE Standard (load "G:/1000SONS/CAD/Faust/LISP/CHTEXT.lsp") (if (ssget "_X" (list '(0 . "MTEXT")(cons 410 (getvar 'CTAB))))(command-s "_.SCRIPTCALL" "G:/1000SONS/CAD/Faust/SCRIPT/SCRIPTCALL/Texte auf ARIAL1.scr")) (if (ssget "_X" (list '(0 . "MTEXT")(cons 410 (getvar 'CTAB))))(progn (initcommandversion)(command "_.EXPLODE" "_P" ""))) (if (ssget "_X" (list '(0 . "TEXT")(cons 410 (getvar 'CTAB))))(command-s "_.SCRIPTCALL" "G:/1000SONS/CAD/Faust/SCRIPT/SCRIPTCALL/Texte auf ARIAL1.scr")) ; ; ; ;Wählt alle Polylinien im aktuellen Bereich der Zeichnung aus, wenn es welche gibt, wird Ursprung ausgeführt / ; (if (ssget "_X" (list '(0 . "LWPOLYLINE")(cons 410 (getvar 'CTAB))))(progn (initcommandversion)(command "_.EXPLODE" "_P" ""))) ; ; ; ;Wählt alle 2D/3D-Polylinien im aktuellen Bereich der Zeichnung aus, wenn es welche gibt, wird Ursprung ausgeführt / ; (if (ssget "_X" (list '(0 . "POLYLINE")(cons 410 (getvar 'CTAB))))(progn (initcommandversion)(command "_.EXPLODE" "_P" ""))) ; ; ; ;Wählt alle Bilder im aktuellen Bereich der Zeichnung aus, wenn es welche gibt, wird Löschen ausgeführt / ; (if (ssget "_X" (list '(0 . "IMAGE")(cons 410 (getvar 'CTAB))))(command "_.ERASE" "_P" "")) ; ; ; ;Wählt alle PDF-Unterlagen im aktuellen Bereich der Zeichnung aus, wenn es welche gibt, wird Löschen ausgeführt / ; (if (ssget "_X" (list '(0 . "PDFUNDERLAY")(cons 410 (getvar 'CTAB))))(command "_.ERASE" "_P" "")) ; ; ; ;Löst alle Xrefs in der gesamten Zeichnung / ; (command "_.-XREF" "_Detach" "*") ; ; ; ;Lädt die LISP: REFBEREINIG.lsp / nicht referenzierte / nicht gefundene / entfernte Bilder/PDF´s lösen ; (load "G:/1000SONS/CAD/Faust/LISP/REFBEREINIG.lsp") REFBEREINIG++ ; ; ; ;Wählt alle Punkte im aktuellen Bereich der Zeichnung aus, wenn es welche gibt, wird Löschen ausgeführt / ; (if (ssget "_X" (list '(0 . "POINT")(cons 410 (getvar 'CTAB))))(command "_.ERASE" "_P" "")) ; ; ; ;Wählt alle Abdeckungen im aktuellen Bereich der Zeichnung aus, wenn es welche gibt, wird Löschen ausgeführt / ; (if (ssget "_X" (list '(0 . "WIPEOUT")(cons 410 (getvar 'CTAB))))(command "_.ERASE" "_P" "")) ; ; ; ;Wählt alle Schraffuren im aktuellen Bereich der Zeichnung aus, wenn es welche gibt, wird Hatchedit ausgeführt / Stellt alle Schraffuren auf Assoziativ Nein / ; (if (ssget "_X" (list '(0 . "HATCH")(cons 410 (getvar 'CTAB))))(progn (initcommandversion)(command "_.-HATCHEDIT" "_P" "" "_DIsassociate"))) ; ; ; ;Wählt alle Schraffuren im aktuellen Bereich der Zeichnung aus, wenn es welche gibt, wird auf Farbe 9 und ganz nach unten gelegt / ; (if (ssget "_X" (list '(0 . "HATCH")(cons 410 (getvar 'CTAB))))(command "_.CHPROP" "_P" "" "_Color" "9" "" "_.DRAWORDER" "_P" "" "_Back")) ; ; ; ;Führt den Befehl -AECDWGSETUP aus / Stellt auf Dezimeter / Vorhandene Objekte NICHT neu skalieren / ;Führt den Befehl -AECDWGSETUP aus / Stellt auf Meter / Vorhandene Objekte NICHT neu skalieren / ; (command "_.-AECDWGSETUP" "_Units" "5" "" "" "" "" "" "" "" "" "_Yes" "_No" "") (command "_.-AECDWGSETUP" "_Units" "6" "" "" "" "" "" "" "" "" "_Yes" "_No" "") ; ; ; _.-LAYER _Make E-_RAHMEN _.AI_SELALL _.CHPROP _Layer E-_RAHMEN _.SETBYLAYER _P _Yes _Yes ; ; ; _.FILEDIA 0 _.-WBLOCK C:\CAD\_Aufbereiten\Rahmen\RAHMEN1.dwg0,0,0 _P _.FILEDIA 1
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 23. Sep. 2020 13:16 <-- editieren / zitieren --> Unities abgeben: Nur für Manuel486
>> Ich stehe noch etwas auf dem Schlauch, wo was hin müsste... 1. Genau dahin wo es ist, 2. aber du scheinst "per Hand" getestet zu haben und in dem Fall (wblock) funktioniert das nicht. Versuche es mit einem Script oder in Lisp, dann läufts. Allerdings fehlt noch der Pfad und ggf. Dateierweiterung. >> Der Code X läuft in ein Layout und führt die Befehlskette Planstempel Aufbereiten.scr 3x aus, im selben Layout. Warum nicht in jedem? 3. Ich kenne dein Script "Aufbereiten.scr" nicht, also ist aus meiner Sicht allein schon der Inhalt der mögliche Grund dafür. 4. Ein anderer könnte eine Timingproblem sein. Teste doch mal das CTAB umschalten mit COMMAND stand SETVAR, also einfach das setvar Gedöns raus und mit in den Command-Ausdruck hinein (command "CTAB" L ....) >> Oder hat es was mit dem Scriptcall zu tun? 5. Keine Ahnung, probiere es doch aus! Öffne die Datei und gebe deine Zeile direkt ein: (foreach L (append(layoutlist))(setvar "CTAB" L)(command "_.SCRIPTCALL" "G:/1000SONS/CAD/Faust/SCRIPT/Vorlagen/Planstempel Aufbereiten.scr")) Das Problem sollte entsprechend wieder auftauchen, falls das so ist, rufe dieses Mal das Script über den Befehl SCRIPT auf!
PS: Es lohnt sich die Zeit zu investieren für die Fehlersuche ;-) >>Der komplette Code Planstempel Aufbereiten.scr sieht so aus. 6. Das schaue ich mir jetzt doch nicht so genau an ;D Aber im Groben sollte es passen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Manuel486 Mitglied Technischer Zeichner Elektro
Beiträge: 194 Registriert: 31.01.2020
|
erstellt am: 23. Sep. 2020 15:19 <-- editieren / zitieren --> Unities abgeben:
Das hier klappt jetzt Prima: Code: _.FILEDIA 0 _.-WBLOCK (strcat (getvar 'DWGPREFIX) "Rahmen-" (getvar 'CTAB))0,0,0 _P _.FILEDIA 1
Wie müsste der Code aussehen das er ihn immer im Pfad C:\CAD\_Aufbereiten\Rahmen ablegt, egal wo die geöffnete DWG liegt? Bzw. wenn ich (strcat (getvar 'DWGPREFIX) "Rahmen-" (getvar 'DWGNAME)"-" (getvar 'CTAB)) schreibe, macht er immer dwg hinter den Dateinamen... Habe den Code jetzt etwas umgebaut:
Code: (foreach L (append(layoutlist))(command "CTAB" L "_.SCRIPTCALL" "G:/1000SONS/CAD/Faust/SCRIPT/Vorlagen/Planstempel Aufbereiten.scr"))
Problem ist aber weiterhin. Wenn ich im Modellbereich den o.g. Code Eingebe, wechselt er ins Layout1, macht nichts, wechselt in Layout2, macht nichts und im letzten Layout führt er dann den Scriptcall aus... Habe anstatt "_.SCRIPTCALL" auch schon "_.SCRIPT" versucht.
[Diese Nachricht wurde von Manuel486 am 23. Sep. 2020 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 23. Sep. 2020 15:29 <-- editieren / zitieren --> Unities abgeben: Nur für Manuel486
Zitat: Original erstellt von Manuel486: Das hier klappt jetzt Prima: (strcat (getvar 'DWGPREFIX) "Rahmen-" (getvar 'CTAB)) Da hatte ichwohl mal einen Glückstreffer ;) Habe den Code jetzt etwas umgebaut: Ich hatte es ja mal angesprochen, gruselig weil sinnlos (append(layoutlist)) -> (layoutlist) (command "CTAB" L "_.SCRIPTCALL" "G:/1000SONS/CAD/Faust/SCRIPT/Vorlagen/Planstempel Aufbereiten.scr"))[/code] Problem ist aber weiterhin. Wenn ich im Modellbereich den o.g. Code Eingebe, wechselt er ins Layout1, macht nichts, wechselt in Layout2, macht nichts und im letzten Layout führt er dann den Scriptcall aus... Wie ich ja einräumte 'könnte' es an deiner Vermutung mit dem ScriptCall liegen Habe anstatt "_.SCRIPTCALL" auch schon "_.SCRIPT" versucht. Das kannst du doch überhaupt nicht einfach austauschen, du startest das Script doch aus einem Script heraus, oder nicht? Daher schrieb ich ja auch:
Zitat: Original erstellt von cadffm: >> Oder hat es was mit dem Scriptcall zu tun? 5. Keine Ahnung, probiere es doch aus! Öffne die Datei und gebe deine Zeile direkt ein: (foreach L (append(layoutlist))(setvar "CTAB" L)(command "_.SCRIPTCALL" "G:/1000SONS/CAD/Faust/SCRIPT/Vorlagen/Planstempel Aufbereiten.scr")) Das Problem sollte entsprechend wieder auftauchen, falls das so ist, rufe dieses Mal das Script über den Befehl SCRIPT auf!
Ich nehme an du hast meinen Vorschlag doch etwas abgewandelt.. Mache es noch einmal wie von mir beschrieben, Datei auf Befehl: (foreach L (append(layoutlist))(setvar "CTAB" L)(command "_.SCRIPTCALL" "G:/1000SONS/CAD/Faust/SCRIPT/Vorlagen/Planstempel Aufbereiten.scr")) Problem mit sicherheit vorhanden, Datei erneut auf (falls nötig) starte das Script nun über Script statt scriptCall (foreach L (append(layoutlist))(setvar "CTAB" L)(command "_.SCRIPT" "G:/1000SONS/CAD/Faust/SCRIPT/Vorlagen/Planstempel Aufbereiten.scr")) Und? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Manuel486 Mitglied Technischer Zeichner Elektro
Beiträge: 194 Registriert: 31.01.2020
|
erstellt am: 24. Sep. 2020 09:51 <-- editieren / zitieren --> Unities abgeben:
Ich habe den Code zum abspeichern noch etwas umgebaut: Code: (strcat (getvar 'DWGPREFIX) "Rahmen-" (getvar 'DWGNAME) "-" (getvar 'CTAB))
Die DWG heißt: TEST.dwg Das erste Layout heißt: xxx1 Das Ergebnis ist: Rahmen-TEST.dwg-xxx1.dwg Wie könnte ich das .dwg beim Dateinamen weg bekommen, oder gar nicht? Habe keine Systemvariable gefunden die das macht. Zitat: Mache es noch einmal wie von mir beschrieben, Datei auf Befehl: (foreach L (append(layoutlist))(setvar "CTAB" L)(command "_.SCRIPTCALL" "G:/1000SONS/CAD/Faust/SCRIPT/Vorlagen/Planstempel Aufbereiten.scr")) Problem mit sicherheit vorhanden,Datei erneut auf (falls nötig) starte das Script nun über Script statt scriptCall (foreach L (append(layoutlist))(setvar "CTAB" L)(command "_.SCRIPT" "G:/1000SONS/CAD/Faust/SCRIPT/Vorlagen/Planstempel Aufbereiten.scr"))
Ich habe jetzt alle möglichen Varianten durch. Sowohl in einem Script, wie auch als Text in die Befehlszeile... Egal wie ich es mache. Entweder geht er gar nicht in die Layouts, oder er läuft bis zum letzten durch, führt das Script richtig aus und Ende. Zitat: Habe den Code jetzt etwas umgebaut: Ich hatte es ja mal angesprochen, gruselig weil sinnlos (append(layoutlist)) -> (layoutlist)
Wenn ich das mache läuft es gar nicht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 24. Sep. 2020 10:20 <-- editieren / zitieren --> Unities abgeben: Nur für Manuel486
>>Wie könnte ich das .dwg beim Dateinamen weg bekommen, oder gar nicht?[F1] VL-FILENAME-BASE >>Ich habe jetzt alle möglichen Varianten durch. Sowohl in einem Script, wie auch als Text Okay, ich schau es mir noch einmal an, dann hatte ich wohl einen Testfehler.. hmm
>>Wenn ich das mache läuft es gar nicht. Dann empfehle ich eine komplette Formatierung der festplatte und Neuaufsetzung von Betriebssystem und allen Programmen nach den jeweiligen Installationsempfehlungen, denn das Ergebnis ist dasselbe - sollte dadurch etwas anders laufen, dann stimmt was nicht.
Befehlszeile... Befehl: (append(layoutlist)) ("Layout1" "Layout2") Befehl: (layoutlist) ("Layout1" "Layout2") Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1111 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 24. Sep. 2020 10:42 <-- editieren / zitieren --> Unities abgeben: Nur für Manuel486
Zitat: Original erstellt von Manuel486:
Wie könnte ich das .dwg beim Dateinamen weg bekommen.
Das geht so:
Code:
(substr (getvar 'dwgname) 1 (- (strlen (getvar 'dwgname)) 4))
Und Code:
(foreach L (layoutlist) (...) )
funktioniert schon Probier mal folgendes (schreibt alle Layoutnamen raus) Code:
(foreach L (layoutlist) (command "CTAB" L) (print (getvar "CTAB")))
Statt (print (getvar "CTAB")) dann Deinen Scriptaufruf einsetzen. HTH Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 24. Sep. 2020 11:09 <-- editieren / zitieren --> Unities abgeben: Nur für Manuel486
[QUOTE]Original erstellt von cadffm: >>Ich habe jetzt alle möglichen Varianten durch. Sowohl in einem Script, wie auch als Text Okay, ich schau es mir noch einmal an[i], dann hatte ich wohl einen Testfehler.. hmmHi Manuel486, leider ist das wohl so - heute kann ich es nicht mehr ausführen wie beschrieben, einzige Erklärung: Ich hatte gestern einen Fehler beim testen gemacht, ich erinnere mich jedoch nicht daran. Sorry Dann doch alles in (command ....) packen und ohne diese Scriptdatei auskommen, das würde funktionieren.
Ansonsten müßte man etwas wilder zaubern (spätestens da wechselt man dann soch das eine Script oder das andere gegen eine Lispfunktion, aber um zu zeigen das es machbar ist mir den verschachtelten Scripten und den Layouts: ) Merken wieviele Layouts vorhanden sind, das erste Layout aktuell setzen usw. am ende nachsehen ob alle bearbeitet wurden, falls nicht: Script noch mal aufrufen und das 2.Layout abarbeiten usw.
das Script 1.scr welches das Script 2.scr in der Datei aufruft ==================== (setq LLN (length(layoutlist))) (command "_.SCRIPTCALL" "D:/2.scr") und das Script 2.scr ==================== CTAB (nth (setq LLN (1- LLN)) (layoutlist)) ;; Hier Beispielcode, stellvertrtend für dein Script "pro Layout" _.-WBLOCK (strcat (getvar 'DWGPREFIX) "Rahmen-" (vl-filename-base(getvar"DWGNAME")) "-" (getvar 'CTAB)) 0,0,0 _all ;; Ende des eigentlichen Scripts und dann noch (if (< 0 LLN)(command "_.SCRIPTCALL" "D:/2.scr")) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Manuel486 Mitglied Technischer Zeichner Elektro
Beiträge: 194 Registriert: 31.01.2020
|
erstellt am: 24. Sep. 2020 11:59 <-- editieren / zitieren --> Unities abgeben:
Zitat: Probier mal folgendes (schreibt alle Layoutnamen raus)Code: (foreach L (layoutlist) (command "CTAB" L) (print (getvar "CTAB"))) Statt (print (getvar "CTAB")) dann Deinen Scriptaufruf einsetzen.
Code: (foreach L (layoutlist)(command "CTAB" L)(command "_.SCRIPTCALL" "G:/1000SONS/CAD/Faust/SCRIPT/Vorlagen/Planstempel Aufbereiten.scr"))
Er läuft egal in welchem Bereich (Modell/Layout) ich bin, durch alle Layouts durch, ohne das Script auszuführen. Dann sucht er sich meist das letzte Layout von z.B. fünf Layouts und führt dort das Script aus, macht es aber in den anderen nicht. Ich habe auch ein Script getestet das einfach nur alles im Layout löschen soll, selber "Fehler" wie oben beschrieben. Scriptcall oder Script ist wohl in foreach nicht umzusetzen... Ich teste jetzt mal den Ansatz von CADFFM. EDIT: Habe es getestet, funktioniert super. Vielen vielen dank, an alle fleißigen Helfer. @CADFFM Bin immer wieder von den Socken, was du für ein Wissen hast [Diese Nachricht wurde von Manuel486 am 24. Sep. 2020 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Manuel486 Mitglied Technischer Zeichner Elektro
Beiträge: 194 Registriert: 31.01.2020 Windows 10 Pro - 64-Bit - Lenovo Thinkstation P520 - Intel Xeon W-2255 CPU @ 3.70 GHz 10 Kerne - 3x32GB DDR4 RAM @ 2933 MHz - WD Blue SN570 SSD 1000GB - Samsung MZVLB512HAJQ-000L7 SSD 500GB - NVIDIA Quadro P2200 5GB - Elgato Stream Deck 15 Tasten - AutoCAD MEP 2019 - Revit 2018+2019+2020+2021+2022
|
erstellt am: 02. Okt. 2020 10:30 <-- editieren / zitieren --> Unities abgeben:
Der Befehl ist bis jetzt immer durch gelaufen. Jetzt habe ich ein Layout das mit 2 Leerzeichen endet... Das passt ihm dann nicht. Gibt es da eine Möglichkeit das er durch läuft, außer händig die Leerzeichen zu entfernen?
Code: Befehl: (command "_.SCRIPTCALL" "G:/1000SONS/CAD/Faust/SCRIPT/SCRIPTCALL/Planstempel Aufbereiten.scr") _.SCRIPTCALL Scriptdateinamen eingeben <C:\CAD\_Aufbereiten\_Vorstellung\Aufbereiten\x1 Untergeschoss.scr>: G:/1000SONS/CAD/Faust/SCRIPT/SCRIPTCALL/Planstempel Aufbereiten.scr Befehl: nilBefehl: CTAB Neuen Wert für CTAB eingeben <"1 Untergeschoss ">: (nth (setq LLN (1- LLN)) (layoutlist)) "1 Untergeschoss " Kann CTAB nicht auf diesen Wert setzen. *Ungültig*
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 02. Okt. 2020 11:14 <-- editieren / zitieren --> Unities abgeben: Nur für Manuel486
Spontan würde ich sagen: Das ist eine Fremddatei, in AutoCAD werden führende wie auch nachstehende Leerzeichen bei der Namensvergabe (ob neu oder durch umbenennen) ignoriert(gelöscht). In AutoCAD kann man sowas also nicht erstellen, das Programm rechnet offenbar auch nicht damit. Es wäre schön die Datei zu bekommen, Geometrie kannst du ja vorher löschen und bereinigen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Manuel486 Mitglied Technischer Zeichner Elektro
Beiträge: 194 Registriert: 31.01.2020
|
erstellt am: 02. Okt. 2020 12:30 <-- editieren / zitieren --> Unities abgeben:
Keine Autodesk-DWG-Datei. Diese DWG-Datei wurde von einer Software-Anwendung gespeichert, die nicht von Autodesk entwickelt oder lizenziert wurde. Autodesk kann die Anwendungskompatibilität oder Integrität dieser Datei nicht garantieren. Datei im Anhang. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 02. Okt. 2020 12:49 <-- editieren / zitieren --> Unities abgeben: Nur für Manuel486
Cool. Wie gesagt fällt mir nicht ein wie man das in ACAD "erstellen" könnte, unabhängig davon ob man einen Weg dafür kennt oder nicht: Acad hat damit Probleme. Aktuell hast du eine Problem mit CTAB gefunden, aber auch Befehl LAYOUT mit Optionen Setzen und Umbenennen funktioniert nicht. Nächster Gedanke: Was funktioniert noch alles nicht was man aktuell nich nicht auf dem Schirm hat? .. Mein Weg wäre es: Wenn sowas gefunden wird, Problem lösen statt so belassen (wenn nichts anderes dagegen spricht). Ich sehe keine verräterischen Hinweise auf ein bestimmtes Fremdprogramm (kenne mich aber auch nicht so aus), außer MEP und das hast du ja hineingebracht. Layouts benannt hast du aber nicht nehmen ich an, lol. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Manuel486 Mitglied Technischer Zeichner Elektro
Beiträge: 194 Registriert: 31.01.2020
|
erstellt am: 05. Mrz. 2021 13:51 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich greife dieses Thema nochmals auf, weil es doch immer öfter vorkommt, dass eine Leerzeile am Ende des Layoutnamens steht. Ich habe es jetzt über ein Programm (BW_FinRepT) versucht, welches auch Layoutnamen umbenennen kann, aber das funktioniert nicht... Es soll ein Leerzeichen gegen einen Bindestrich ersetzt werden. Wenn ich ein Layout 01 UG-Gesamt habe, ist das Ergebnis 01-UG-Gesamt. Sobald zum Schluss ein Leerzeichen steht, gibts nen Fehler. Code: Befehl: BW_FinRepTMit Dialogführung [Ja/Nein] <Nein> ? ... Ja "Automatisierungsfehler Ungültige Eingabe"
Gibt es eine Möglichkeit wenn
Zitat: Kann CTAB nicht auf diesen Wert setzen. *Ungültig*
ausgegeben wird, das anschließend ein Textfenster geöffnet wird? (alert "Leerzeile am Ende des Layoutnamens entfernen!") Zitat: Mein Weg wäre es: Wenn sowas gefunden wird, Problem lösen statt so belassen (wenn nichts anderes dagegen spricht).
Was wäre denn dein Lösungsansatz? Zitat: Ich sehe keine verräterischen Hinweise auf ein bestimmtes Fremdprogramm (kenne mich aber auch nicht so aus),
Kommt sehr oft bei Archicad vor. MFG Manuel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Manuel486 Mitglied Technischer Zeichner Elektro
Beiträge: 194 Registriert: 31.01.2020 Windows 10 Pro - 64-Bit - Lenovo Thinkstation P520 - Intel Xeon W-2255 CPU @ 3.70 GHz 10 Kerne - 3x32GB DDR4 RAM @ 2933 MHz - WD Blue SN570 SSD 1000GB - Samsung MZVLB512HAJQ-000L7 SSD 500GB - NVIDIA Quadro P2200 5GB - Elgato Stream Deck 15 Tasten - AutoCAD MEP 2019 - Revit 2018+2019+2020+2021+2022
|
erstellt am: 21. Mai. 2021 14:49 <-- editieren / zitieren --> Unities abgeben:
Ich habe noch etwas weiter geforscht. Es gibt eine Lisp: http://www.lee-mac.com/tabsort.htmlDiese LISP macht auch die Leerzeichen weg. aus "1 Untergeschoss " wird "1-Untergeschoss--" oder aus "1 Untergeschoss " wird "1Untergeschoss" Das erste Tool was hier keinen Fehler auswirft. Diese LISP gibt es aber leider nicht als Befehlszeilenversion. Könnte man das relativ fix umschreiben? Oder würde es über die Befehlszeile dann wieder einen Crash geben? Ich habe parallel mal den Entwickler angeschrieben, mal sehen was er sagt
Zitat: Mein Weg wäre es: Wenn sowas gefunden wird, Problem lösen statt so belassen (wenn nichts anderes dagegen spricht).
@CADFFM Ich verstehe hier ehrlich gesagt nicht was du damit meinst. Was würde denn das Problem lösen? Mein jetziger weg ist, die Leerzeile händig zu löschen und mein Script erneut auszuführen... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 21. Mai. 2021 15:39 <-- editieren / zitieren --> Unities abgeben: Nur für Manuel486
>>"@CADFFM Ich verstehe hier ehrlich gesagt nicht was du damit meinst." Du fragtest nach: "Gibt es da eine Möglichkeit das er durch läuft, außer händig die Leerzeichen zu entfernen?" Was bedeutet: Problem nicht ändern, du würdest das Problem nur umgehen. Dabei läufst du aber nur mit deinem aktuellen Anliegen drumherum, alle weiteren daraus resultierenden Probleme würden weiterhin bestehen bleiben. >>"Mein jetziger weg ist, die Leerzeile händig zu löschen und mein Script erneut auszuführen..." Sehr gut, das ist der Weg den ich favorisierte, Problem lösen, dann weitermachen. ~ "Mein Weg wäre es: Wenn sowas gefunden wird, Problem lösen statt so belassen (wenn nichts anderes dagegen spricht)."
WIE du das Problem aus der Welt schaffst, dies ist eine ganz andere Sache. Ob nun von Hand, einer speziellen dafür abgestimmten Programmerweiterung, oder auch mit irgendeinem Programm was überhaupt nicht dafür vorgesehen ist, aber evtl. zufällig diesen gewünschten Nebeneffekt des Umbenennens liefert.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |