Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  -WBLOCK Namen der Ausgabedatei eingeben

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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


Sehen Sie sich das Profil von Manuel486 an!   Senden Sie eine Private Message an Manuel486  Schreiben Sie einen Gästebucheintrag für Manuel486

Beiträge: 194
Registriert: 31.01.2020

erstellt am: 23. Sep. 2020 10:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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.dwg

0,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.




Sehen Sie sich das Profil von Peter2 an!   Senden Sie eine Private Message an Peter2  Schreiben Sie einen Gästebucheintrag für Peter2

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Manuel486 10 Unities + Antwort hilfreich

Der Standardbefehl "Layout in Modell exportieren / EXPORTLAYOUT" passt nicht für dich?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 23. Sep. 2020 11:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Manuel486 10 Unities + Antwort hilfreich

>>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


Sehen Sie sich das Profil von Manuel486 an!   Senden Sie eine Private Message an Manuel486  Schreiben Sie einen Gästebucheintrag für Manuel486

Beiträge: 194
Registriert: 31.01.2020

erstellt am: 23. Sep. 2020 12:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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.dwg

0,0,0
_P

_.FILEDIA 1


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 23. Sep. 2020 13:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Manuel486 10 Unities + Antwort hilfreich

>> 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


Sehen Sie sich das Profil von Manuel486 an!   Senden Sie eine Private Message an Manuel486  Schreiben Sie einen Gästebucheintrag für Manuel486

Beiträge: 194
Registriert: 31.01.2020

erstellt am: 23. Sep. 2020 15:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 23. Sep. 2020 15:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Manuel486 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Manuel486 an!   Senden Sie eine Private Message an Manuel486  Schreiben Sie einen Gästebucheintrag für Manuel486

Beiträge: 194
Registriert: 31.01.2020

erstellt am: 24. Sep. 2020 09:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 24. Sep. 2020 10:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Manuel486 10 Unities + Antwort hilfreich

>>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



Sehen Sie sich das Profil von spider_dd an!   Senden Sie eine Private Message an spider_dd  Schreiben Sie einen Gästebucheintrag für spider_dd

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Manuel486 10 Unities + Antwort hilfreich

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
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 24. Sep. 2020 11:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Manuel486 10 Unities + Antwort hilfreich

[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.. hmm

Hi 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


Sehen Sie sich das Profil von Manuel486 an!   Senden Sie eine Private Message an Manuel486  Schreiben Sie einen Gästebucheintrag für Manuel486

Beiträge: 194
Registriert: 31.01.2020

erstellt am: 24. Sep. 2020 11:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von Manuel486 an!   Senden Sie eine Private Message an Manuel486  Schreiben Sie einen Gästebucheintrag für Manuel486

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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: nil

Befehl: 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
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 02. Okt. 2020 11:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Manuel486 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Manuel486 an!   Senden Sie eine Private Message an Manuel486  Schreiben Sie einen Gästebucheintrag für Manuel486

Beiträge: 194
Registriert: 31.01.2020

erstellt am: 02. Okt. 2020 12:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


1Untergeschoss.dwg

 
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
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 02. Okt. 2020 12:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Manuel486 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Manuel486 an!   Senden Sie eine Private Message an Manuel486  Schreiben Sie einen Gästebucheintrag für Manuel486

Beiträge: 194
Registriert: 31.01.2020

erstellt am: 05. Mrz. 2021 13:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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_FinRepT

Mit 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


Sehen Sie sich das Profil von Manuel486 an!   Senden Sie eine Private Message an Manuel486  Schreiben Sie einen Gästebucheintrag für Manuel486

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ich habe noch etwas weiter geforscht.
Es gibt eine Lisp:
http://www.lee-mac.com/tabsort.html

Diese 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
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 21. Mai. 2021 15:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Manuel486 10 Unities + Antwort hilfreich


>>"@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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz