Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Layoutwechsel per Script

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:  Layoutwechsel per Script (972 / mal gelesen)
Plotter
Mitglied



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

Beiträge: 267
Registriert: 11.02.2004

Windows 10 64-bit
AutoCAD 2021
DDS-CAD
Adobe Acrobat Pro DC

erstellt am: 01. Apr. 2021 09:23    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 mich an meinem ersten Script versucht und komme irgentwie nicht weiter. Wer kann mir auf die Sprünge helfen?

Aufgabe:
In einer Datei soll auf allen Layouts (nicht im Modell) alle Elemente in einem bestimmten Bereich gelöscht werden (da dies ggf. in mehreren Dateien genutzt werden soll, wollte ich es als Script anlegen und bei Bedarf einfach in die DAtei ziehen). Die Layouts haben immer unterschiedliche Namen.

Ansatz:

Code:
_ZOOM _w -50,-50 650,400
_ERASE _w 470,25 570,290

_ZOOM g


Nun habe ich keine Ahnung, wie ich eine Schleife hinbekomme, welche alle Layouts einmal behandelt?

------------------
- Plotter -
------------------

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

Bernd P
Ehrenmitglied V.I.P. h.c.
cook-general



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

Beiträge: 3358
Registriert: 07.06.2001

W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365

erstellt am: 01. Apr. 2021 09:53    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 Plotter 10 Unities + Antwort hilfreich

Servus, geht ALLE Layouts durch und tut was.

Code:
(foreach n (layoutlist) (setvar "ctab" n) (command "_zoom" "g"))


------------------
<----- Bitte Systeminfo eintragen, warum siehst du hier. Schöne Grüsse aus der Steiermark  Bernd P.

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

Plotter
Mitglied



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

Beiträge: 267
Registriert: 11.02.2004

Windows 10 64-bit
AutoCAD 2021
DDS-CAD
Adobe Acrobat Pro DC

erstellt am: 01. Apr. 2021 10:33    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 sieht nach Lisp aus!?
(bin allerdings Anfänger im Thema Lisp und Script)

Wie bekomme ich das denn nun in Scriptform?

------------------
- Plotter -
------------------

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: 01. Apr. 2021 10: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 Nur für Plotter 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Plotter:
Wie bekomme ich das denn nun in Scriptform?

AutoCAD versteht Lisp, du brauchst also nichts ändern,
lediglich den Teil welcher "in einem Layout" ausgeführt werden soll,
den musst du nun Lisp-konform ändern in Bernds Zeilen.
(Es gibt keinen AutoCAD-Befehl für "lauf mir durch alle Layouts", daher muss man diese Lisplösung nutzen)

Dieser Teil hier: (command "" "" "") ist der gesuchte,
Command sendet alles nachfolgende an die Befehlszeile - wie du es auch von deinen Scripten her kennst.
Script:
CLAYER
0
sieht im Command so aus:
(command "CLAYER" "0")

Versuche es mal händisch - einfach in der Befehlszeile [F2]

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

Bernd P
Ehrenmitglied V.I.P. h.c.
cook-general



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

Beiträge: 3358
Registriert: 07.06.2001

W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365

erstellt am: 01. Apr. 2021 10:53    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 Plotter 10 Unities + Antwort hilfreich

eigentlich recht einfach....

Am Anfang ein Command dann der Befehl und alles unter Anführungszeichen setzen.

_ZOOM _w -50,-50 650,400 wird zu (command "_zoom" "_W" "-50,-50" "650,400")

und du kannst den Rest auch anhängen
_ERASE _w 470,25 570,290
_ZOOM g

(command "_zoom" "_W" "-50,-50" "650,400" "_ERASE" "_w" usw.)

------------------
<----- Bitte Systeminfo eintragen, warum siehst du hier. Schöne Grüsse aus der Steiermark  Bernd P.

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

Plotter
Mitglied



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

Beiträge: 267
Registriert: 11.02.2004

Windows 10 64-bit
AutoCAD 2021
DDS-CAD
Adobe Acrobat Pro DC

erstellt am: 01. Apr. 2021 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

Danke für die Erläuterungen!
So ähnlich hatte ich mir es auch schon fast gedacht.
Allerdings bricht die Frunktion immer ab.
Sieht für mich nach dem letzten ZOOM Befehl aus.
In der Befehlszeile klappt es mit G und mit ALLE, in dem Lisp nicht!?

Sieht im F2 Textfenster so aus:

Code:
Befehl: (foreach n (layoutlist) (setvar "ctab" n) (command "_zoom" "_W" "-50,-50" "650,400" "_ERASE" "_W" "470,25" "570,290" "_ZOOM" "ALLE"))
_zoom
Fensterecke angeben, Skalierfaktor eingeben (nX oder nXP) oder
[Alles/Mitte/Dynamisch/Grenzen/Vorher/FAktor/FEnster/Objekt] <Echtzeit>: _W
Erste Ecke angeben: -50,-50 Entgegengesetzte Ecke angeben: 650,400
Befehl: _ERASE
Objekte wählen: _W
Erste Ecke angeben: 470,25 Entgegengesetzte Ecke angeben: 570,290 0 gefunden

Objekte wählen: _ZOOM

*Ungültige Auswahl*
Erwartet einen Punkt oder Fenster/Letztes/Kreuzen/QUADER/ALLE/ZAun/FPolygon/KPolygon/Gruppe/Hinzufügen/Entfernen/Mehrere/Vorher/ZUrück/AUto/EInzeln/Unterobjekt/Objekt
; Fehler: Funktion abgebrochen


------------------
- Plotter -
------------------

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: 01. Apr. 2021 11:13    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 Plotter 10 Unities + Antwort hilfreich

Schau mal genau in den Ablauf:


Erste Ecke angeben: 470,25 Entgegengesetzte Ecke angeben: 570,290 0 gefunden

Objekte wählen: _ZOOM

1. wird in deiner Ansicht bei den gegebenen Koordinaten per Fensterwahl nichts gefunden
2. unabhängig davon beendest du die Objektwahl auch nicht.

Das mit dem "nicht gefunden" ist das eine, der Punkt2 zeigt aber eindeuitg: Du machst es per Hand anders  
Denn du machst das per Hand wie folgt: Löschen aufrufen, dann Fensterpunkt1 dann Fensterpunkt2 und
dann beendest du die Objektwahl durch eine Leereingabe.
Im Script ist das ein Zeilenumbruch, auf der Tastatur ein Enter, im Makro ein ; und mit der Maus ein Rechtsklick,
für den Command ist es eben genau das gleiche: "NurEnter" senden, also ""

Warum er zunächst nichts gefunden hat, dafür müßte man wissen ob du den Objektfang berücksichtigt hast und wie
denn überhaupt die Testdatei aussieht.. sonst kann man nur raten.

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: 01. Apr. 2021 11:17    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 Plotter 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Plotter:
(bin allerdings Anfänger im Thema Lisp und Script)

Dann solltest du in der Hilfe nachlesen was es mit OSNAPCOORD auf sich hat
und in deinen Scripten am Anfang OSNAPCOORD auf 1 setzen.
Diese Einstellung darf gern die Standardeinstellung in deinem Programm sein,
wenn man es aber ins Script einbindet, dann ist es SICHER auf 1 gestellt.

Osnapcoord auf 2 (Voreinstellung) berücksichtigt die fortlaufenden Objektfänge (falls eingeschaltet),
damit rechnet der Anfänger nicht. Mit diesem Tip kannst du dir nun Stunden, Tage, Wochen - bis hin zu deinem Job sichern*

*Härtefall, aber theoretisch möglich 

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

Plotter
Mitglied



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

Beiträge: 267
Registriert: 11.02.2004

Windows 10 64-bit
AutoCAD 2021
DDS-CAD
Adobe Acrobat Pro DC

erstellt am: 01. Apr. 2021 11:24    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 er nichts findet ist OK, da es vorkam, dass in einigen Layouts schon mal jemand von Hand den Bereich gelöscht hatte.

Mit dem "Enterbefehl" klappt es nun!

DANKE!
(wieder etwas gelernt  )

------------------
- Plotter -
------------------

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