Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Automatic Dimension AutoCAD LISP??

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:  Automatic Dimension AutoCAD LISP?? (889 mal gelesen)
kadirozen
Mitglied
Technischer Zeichner


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

Beiträge: 19
Registriert: 13.07.2023

AutoCAD LT 2024

erstellt am: 13. Jul. 2023 15:40    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 Tag

ich würde gerne dieses LISP mit meiner AutoCAD LT 2024 Version verwenden, aber leider erhalte ich eine Fehlermeldung.

Fehlercode: Befehl:
Befehl: AD
ADError: Fehlerhafter Argumenttyp: lentityp nil
Befehl:


Ich kenne mich mit dem LISP-Code nicht sehr gut aus, aber ich glaube, er funktioniert mit der Vollversion und nicht mit der LT-Variante.

Wenn möglich, könnten Sie sich das bitte ansehen und mir sagen, ob es möglich ist, es mit LT zu verwenden.

Mit freundlichen Grüßen

------------------
kadir

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

archtools
Mitglied



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

Beiträge: 862
Registriert: 09.10.2004

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

erstellt am: 13. Jul. 2023 18: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 kadirozen 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von kadirozen:
Guten Tag

ich würde gerne dieses LISP


Welches Lisp?

Die ArchTools jedenfalls funktionieren nicht mit AutoCAD LT. Ich empfehle BricsCAD als Alternative dazu.

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

kadirozen
Mitglied
Technischer Zeichner


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

Beiträge: 19
Registriert: 13.07.2023

AutoCAD LT 2024

erstellt am: 14. Jul. 2023 07: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

Vielen Dank für Ihre Antwort.

https://www.kimprojects.com/free-lisp-programs/

Automatic Dimension AutoCAD LISP

Ich meine das Lisp von dieser Website.

------------------
kadir

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: 21740
Registriert: 03.06.2002

Alles

erstellt am: 14. Jul. 2023 09:57    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 kadirozen 10 Unities + Antwort hilfreich

Das Programm müsste geändert werden
damit es auch in LT (2024) funktioniert.

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

kadirozen
Mitglied
Technischer Zeichner


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

Beiträge: 19
Registriert: 13.07.2023

AutoCAD LT 2024

erstellt am: 25. Jul. 2023 16:43    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 an alle für die Antworten

Ich habe versucht, den Autor zu kontaktieren, aber leider hat er mir nicht geantwortet.

Ich bin bereit, Zeit zu investieren, um es für die AutoCad LT 24 zu konvertieren, aber ich weiß nicht, wo ich anfangen kann. Könnten Sie mir helfen, wenn das möglich ist?

Besten Dank

------------------
kadir

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

archtools
Mitglied



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

Beiträge: 862
Registriert: 09.10.2004

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

erstellt am: 25. Jul. 2023 19:18    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 kadirozen 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von kadirozen:
Ich bin bereit, Zeit zu investieren, um es für die AutoCad LT 24 zu konvertieren, aber ich weiß nicht, wo ich anfangen kann. Könnten Sie mir helfen, wenn das möglich ist?

Zwei Probleme:
1. brauchst Du den Quellcode des Programms, und
2. brauchst Du die Einwilligung des Urhebers, um den Quellcode ändern zu dürfen.

Wenn der Urheber nicht antwortet, kannst Du die gesetzlich notwendige Einwilligung nicht erhalten. Dann musst Du das Programm nachprogrammieren (lassen).

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: 21740
Registriert: 03.06.2002

Alles

erstellt am: 26. Jul. 2023 01:38    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 kadirozen 10 Unities + Antwort hilfreich


AD-AutomaticDimensionAutocad-LT.lsp

 
Hi Kadir,

Umgehe die Erstellung von Xrecords.
Hilft dir das? Falls nicht, wie soll dann so eine Hilfestellung aussehen ohne das es jemand für dich komplett umsetzt?

zu den Archtools Anmerkungen
1.) Hast du ja
2.) Je nachdem wie man es macht, imho nicht nötig, versuche dennoch weiter den Kontakt aufzubauen.

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

kadirozen
Mitglied
Technischer Zeichner


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

Beiträge: 19
Registriert: 13.07.2023

AutoCAD LT 2024

erstellt am: 26. Jul. 2023 08:07    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


Screenshot2023-07-26080556.png

 
Ich danke Ihnen für Ihre Antworten.

Ich habe nicht vor, den Code so weit zu ändern, dass er etwas völlig Neues ist. Dazu fehlen mir die Kenntnisse.

Ich dachte, das ganze AutoCAD Lisp Projekt ist OpenSource, daher können wir jedes Lisp mit Notepad öffnen und den Code durchsehen/ändern.

Wie cadffm schon sagte, habe ich bereits die lsp und den Quellcode.

Herzlichen Dank für Ihre Lösung. Sie funktioniert im Moment. Ich würde wirklich gerne mehr über dieses Thema erfahren.

Könnten Sie mir bitte erklären, wie Sie dabei vorgehen? Wie haben Sie es geschafft, das Problem zu finden und eine Lösung anzubieten?


[Diese Nachricht wurde von kadirozen am 26. Jul. 2023 editiert.]

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

archtools
Mitglied



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

Beiträge: 862
Registriert: 09.10.2004

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

erstellt am: 26. Jul. 2023 08: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 Nur für kadirozen 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von kadirozen:
Ich danke Ihnen für Ihre Antworten.

Ich habe nicht vor, den Code so weit zu ändern, dass er etwas völlig Neues ist.


Kurzform: Auch die Bearbeitung oder Änderung eines urheberrechtlich geschützten Werkes ist eine Urheberrechtsverletzung.

Langform: https://www.gesetze-im-internet.de/urhg/

Details:
§ 39 Änderungen des Werkes
(1) Der Inhaber eines Nutzungsrechts darf das Werk, dessen Titel oder Urheberbezeichnung (§ 10 Abs. 1) nicht ändern, wenn nichts anderes vereinbart ist.

§ 69c Zustimmungsbedürftige Handlungen
Der Rechtsinhaber hat das ausschließliche Recht, folgende Handlungen vorzunehmen oder zu gestatten:
2. die Übersetzung, die Bearbeitung, das Arrangement und andere Umarbeitungen eines Computerprogramms sowie die Vervielfältigung der erzielten Ergebnisse. Die Rechte derjenigen, die das Programm bearbeiten, bleiben unberührt;

§ 69d Ausnahmen von den zustimmungsbedürftigen Handlungen
(1) Soweit keine besonderen vertraglichen Bestimmungen vorliegen, bedürfen die in § 69c Nr. 1 und 2 genannten Handlungen nicht der Zustimmung des Rechtsinhabers, wenn sie für eine bestimmungsgemäße Benutzung des Computerprogramms einschließlich der Fehlerberichtigung durch jeden zur Verwendung eines Vervielfältigungsstücks des Programms Berechtigten notwendig sind.

Normale Sprache: Grundsätzlich ist die Bearbeitung und/oder Veränderung von Computerprogrammen verboten. Ausnahme sind nach §69d(1) Änderungen zur Möglichkeit der "bestimmungsgemäße Benutzung" und Fehlerbehebungen.

Meine Meinung: Das Programm ist bestimmungsmäßig unter AutoCAD Vollversion lauffähig. Deshalb ist die Nutzung des Programms unter AutoCAD LT vermutlich keine bestimmungsgemäße Benutzung, und es liegt auch kein Programmfehler vor, der dafür verantwortlich ist, dass das Programm unter AutoCAD LT nicht läuft. Also ist die Änderung ohne Zustimmung des Rechtsinhabers unzulässig.

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: 21740
Registriert: 03.06.2002

Alles

erstellt am: 26. Jul. 2023 10:10    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 kadirozen 10 Unities + Antwort hilfreich

[QUOTE]Original erstellt von kadirozen:
Ich dachte,
Aber du weißt es nicht, es steht nirgends geschrieben. Daher ganz nett wenn ab und zu jemand auch unpopulär den mahnenden Zeigefinger hebt,
aber jetzt mal wieder jedes stumpfe Gesetzt beiseite gelassen:

Auif der Seite findet sich Code von denen selbst, wie auch fremder Code und ohne ausreichende Quellenangabe.
Eines haben die Veröffentlichungen gemeinsam: Keine Aussage über die Verwendung - man hat es einfach geteilt
wie in deinem Gedanken: Quellcode, Öffentlich, also für alles und jeden (was aber als allgemeine Aussage falsch ist).


>>"Ich würde wirklich gerne mehr über dieses Thema erfahren"
Meinst du Lisp - www.autolisp.info oder
die Unterschiede in LT(2024+)?

>>"Könnten Sie mir bitte erklären, wie Sie dabei vorgehen?"
Eigentlich nicht, zumindest nicht hilfreich:
1. Testen ob dieser Code überhaupt in 2024 funktioniert
2. Schauen ob der Code in LT(2024) funktionieren kann und wieviel dazu ggf. geändert werden muss.
3. Ändern des Codes, testen, fertig.


>>"Wie haben Sie es geschafft, das Problem zu finden und eine Lösung anzubieten?"
1. WISSEN (oder testen und recherche, danach ist es aber genau das: Wissen)
2. WISSEN


Das ist wenig hilfreich, aber was soll ich sonst dazu schreiben?
- In "einfachen" AutoLisp/VLisp Codes kann ich ganz gut lesen&verstehen und natürlich auch schreiben.
- Dazu sind mir einige Einschränkungen in LT bzw der LT LispAPI bekannt, siehe Link oben.
- Ich schaute mir die Zeilen an und erkannte ein Problem (was nicht bedeutet das es nicht noch andere geben könnte)
  das hätte man mit testen und recherchieren auch schaffen können, genau so erlangt ich mein Wissen darüber auch vor drei Monaten
- Überlegung wie man die Funktion ganz oder teilweise umprogrammieren muss und kann (hier ging es um die Speicherung der Einstellungen/Optionen im Tool)

- Ich entschied mich dafür: Die Einstellungen werden nur noch in der aktuellen Dateisitzung gespeichert, nicht Sitzungsübergreifend in der Datei.
  Vorteil: Geringster Aufwand für mich, dem der das Tool nie in LT verwenden wird.


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

kadirozen
Mitglied
Technischer Zeichner


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

Beiträge: 19
Registriert: 13.07.2023

AutoCAD LT 2024

erstellt am: 27. Jul. 2023 14:58    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

Nochmals vielen Dank für die ausführliche Antwort. Ich werde auf die Antwort des Autors warten.

In der Zwischenzeit möchte ich eine weitere Frage stellen. Vielleicht wäre es besser, einen neuen Beitrag zu eröffnen.


Im Moment verwenden wir diesen Arbeitsablauf als einen Teil der täglichen Arbeit.

Ich würde ihn gerne verbessern und so weit wie möglich automatisieren.

Der Ablauf ist wie folgt.

Wir arbeiten mit 40 Layersn. Die meisten davon sind Messungen und sonstiges.

Wir exportieren die Layouts als PDF.

Wir ändern den vordefinierten Layerstatus und geben nur 8 Layer für die CNC frei. Ohne Bemassung Sonstiges etc.

Wir wählen manuell den benötigten Teil der Zeichnung aus und schreiben ihn als Block als DXF2000 und R12 auf 2 verschiedene Ordner auf dem Server.

Wenn möglich möchte ich diese Layerstatusänderung, Auswahl, Benennung und Speicherung in 2 verschiedenen DXFs mit 2 verschiedenen Formaten optimieren.

Zum Beispiel,
Dateiname 45001_002_ko.dwg
Zeichnungen Layout gespeichert als PDF 45001002.pdf in PDF Ordner
Wir haben eine Auswahl getroffen und die gleiche Zeichnung in 2 verschiedenen Formaten unter 2 verschiedenen Formatten gespeichert
45001002.dxf (R12) im R12 Ordner
45001002.dxf (2000) im Ordner 2000


Wäre es möglich, eine solche Aufgabe zu erreichen?

------------------
kadir

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: 21740
Registriert: 03.06.2002

Alles

erstellt am: 27. Jul. 2023 15:45    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 kadirozen 10 Unities + Antwort hilfreich

Hi,

>>"Vielleicht wäre es besser, einen neuen Beitrag zu eröffnen."
Eigentlich: Ja!

Auch wenn es fast keinen Unterschied machn wird:
Möchtest du das über ein Menümakro oder über Lisp machen? Je nachdem wäre dan das AutoCAD/AutoCAD LT oder das LISP Forum besser.


1. >>"Wir wählen manuell den benötigten Teil der Zeichnung aus"
funktioniert

2. >>" und schreiben ihn als Block als DXF2000 und R12 auf 2 verschiedene Ordner auf dem Server."
funktioniert

3. >>"Wir ändern den vordefinierten Layerstatus und geben nur 8 Layer für die CNC frei"
   Warum denn einen benannten(?) Layerstatus dafür ändern?
   Ohne weitere Informationen (Erklärungen und/oder so eine DWG) verstehe ich den Sinn nicht - klingt unnötig.
   Wie auch immer, irgendwas mit Layer...
wird wohl funktionieren.

>>"Wenn möglich möchte ich diese Layerstatusänderung, Auswahl, Benennung und Speicherung in 2 verschiedenen DXFs mit 2 verschiedenen Formaten optimieren."
Siehe oben: Aktuell sehe ich da kein Problem, zumal das Standardaufgaben für die Fütterung von Maschinen sind
und man daher ohnehin unmengen Tools (und Makros oder Screipte) im www als Beispiel findet.

>>"Zeichnungen Layout gespeichert als PDF 45001002.pdf in PDF Ordner"
Befehl: -PLOT
Wenn immer die gleiche Seiteneinrichtung benötigt wird, oder das Layout bereits richtig eingerichtet ist, kein Problem.


>>"Wir haben eine Auswahl getroffen und die gleiche Zeichnung in 2 verschiedenen Formaten unter 2 verschiedenen Formatten gespeichert"

Befehl: SICHALS

>>"45001002.dxf (R12) im R12 Ordner""
>>"45001002.dxf (2000) im Ordner 2000""

Ohne Lisp müßte man da den passenden Workaround finden, aber mit Lisp ab 2024 kein Problem.

>>"Wäre es möglich, eine solche Aufgabe zu erreichen?"
Ja


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

kadirozen
Mitglied
Technischer Zeichner


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

Beiträge: 19
Registriert: 13.07.2023

AutoCAD LT 2024

erstellt am: 27. Jul. 2023 16:02    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 ist wirklich gut zu hören.

Ich bin mir nicht sicher, was Sie mit Menumacros meinen, aber wenn es möglich ist, als LISP und unsere Mitarbeiter haben nur den Code eingeben, machen Sie die Auswahl und drücken Sie die ENTER taste und es speichert automatisch 2 DXF und 1 PDF, wäre es wunderbar.


Kleines Beispiel zum Status der Layerstatus. (Es ist mehr als das, aber es ist die Kurzversion)

Wir haben solche Layers

No_Seq_Ghost
No_Seq_Granit
Bemassung
Maschine_Nummer
Hilfslinien
Sonstiges
KantenDetail
Nachschneiden
Revision

Diese sind zunächst alle sichtbar und werden im Bereich Layout für den PDF-Export benötigt.

CNC Machine benötigt nur folgende Layer
No_Seq_Ghost
No_Seq_Granit
Maschine_Nummer


Wir haben also 2 Ebenenstatus
Alle Layers sind eingeschaltet.
DXF Export, mit allen anderen Layern sind ausgeschaltet nur die oben genannten 3 sind offen.

Nachdem der DXF-Exportstatus aktiviert wurde, speichern wir die Auswahl einzeln und benennen sie jedes Mal mit dem WBLOCK-Befehl.

Wenn es einen logischeren Weg gibt, diese Layers ein- und auszuschalten. Ich bin gespannt darauf, es zu erfahren.

------------------
kadir

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: 21740
Registriert: 03.06.2002

Alles

erstellt am: 27. Jul. 2023 17:04    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 kadirozen 10 Unities + Antwort hilfreich


>>" mit Menumacros meinen"
Menümakros sind das was sich hinter jeder Schaltfläche befindet und durch loslassen der der gedrückten Maustaste darauf, gestartet wird.


Menümakro um den Befehl LINIE zu starten und eine Linie und von 0,0 nach 100,5 im BKS zu erstellen:
LINIE;0,0;100,5;;
das Semikolon steht für ENTER und wie man sieht: Es ist im Grunde die notierte Abfolge von Tastatureingaben..

- -

>>"und unsere Mitarbeiter haben nur den Code eingeben"
Knopf drücken oder Befehl eintippen, die Auswahl vornehmen und fertig, ja.


>>"Wenn es einen logischeren Weg gibt"
Das passt schon und wir wissen jetzt sich was da gemacht wird (eben kein Layerstatus geändert).


Eigentlich könntest du schon anfangen!
Das Makro-Beispiel oben würde mit Lisp so aussehen um den Befehl Linie zu steuern: (command "LINIE" "0,0" "100,5" "")


TIP: Fange an mit dem Versuch die PDF per Knopfdruck zu erstellen!
Stelle dein CMDECHO an(1) und los gehts:
Befehl: (command "-PLOT")

Wie du in der Befehlsleiste/Textfenster[F2] nachlesen kannst, fragt dich der Befehl -PLOT als erstes: Detaillierte Plotkonfiguration?
was du dann mit Ja beantworten kannst:
Befehl: (command "-PLOT" "Ja")

Wie du in der Befehlsleiste/Textfenster[F2] nachlesen kannst, fragt dich AcadLT jetzt: Layoutnamen eingeben oder [?] <Modell>:
usw.

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

kadirozen
Mitglied
Technischer Zeichner


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

Beiträge: 19
Registriert: 13.07.2023

AutoCAD LT 2024

erstellt am: 28. Jul. 2023 09: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

vielen Dank für die Antwort. Ich beschäftige mich seit gestern damit, es ist zumindest eine sehr aufschlussreiche Erfahrung.

Ich habe mir die Befehlszeile angesehen und beschlossen, mit dem grundlegenden Befehl zu beginnen, den wir dafür verwenden.

(Wir müssen alle Layoutseiten in dieselbe PDF-Datei plotten. (manchmal eine einzelne Layoutseite, manchmal 2, manchmal 10 in einer Zeichnung).
Wenn ich plotte, wird nur 1 Seite in die PDF-Datei konvertiert. Ich konnte die Option für alle Layouts im Befehl -PLOT nicht auswählen.

Deshalb gehe ich zu dem Befehl, den wir manuell verwenden, und probiere ihn aus. EXPORTPDF (EPDF), ich konnte keine Möglichkeit finden, die Benutzeroberfläche zu manipulieren und fand den Befehl -EXPORT, der bis zu einem bestimmten Punkt in der Befehlszeile steht.
Es öffnet die visuelle Benutzeroberfläche und wir gehen weiter. Ich weiß nicht, ob es möglich ist, mit Hilfe von LISP/Menümacro-Routinen auf der visuellen Benutzeroberfläche Anpassungen vorzunehmen.

Ich kann die Plotkonfig mit Befehlen erreichen, aber danach öffnet sich wieder die Visual UI für die Ordnerauswahl und die Frage der Benennung und Überschreibung.

Ich möchte den Speicherort festlegen und den Namen aus der dwg-Datei selbst übernehmen und möchte Überschreibungsfragen akzeptieren.


Ich bin im Moment auf der Suche nach weiteren Schritten.

Herzlichen Dank    

------------------
kadir

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: 21740
Registriert: 03.06.2002

Alles

erstellt am: 28. Jul. 2023 10:03    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 kadirozen 10 Unities + Antwort hilfreich

Hi,

>>"Wir müssen alle Layoutseiten in dieselbe PDF-Datei plotten"
>>"Ich konnte die Option für alle Layouts im Befehl -PLOT nicht auswählen."

Die Möglichkeit gibt es weder im Plot, EPDF noch Export Befehl in AutoCAD,
das geht nur
über PUBLIZIEREN
und dafür (Steuerung über die Befehlszeile) müßte man bereits eine Planliste.dst erstellt haben.
Edit: EPDF/-EXPORT in einem Layout ausgeführt bietet diese Möglichkeit, DANKE kadirozen !!!
Oder man findet/schreibt ein Programm was den ein oder anderen Weg doch brauchbar macht, das sei hier aber nur der Vollständigkeit wegen erwähnt.


>>"Deshalb gehe ich zu dem Befehl, den wir manuell verwenden, und probiere ihn aus. EXPORTPDF (EPDF),
>>"ich konnte keine Möglichkeit finden, die Benutzeroberfläche zu manipulieren"

Wenn ein gutes altes Dialogfeld geöffnet ist, dann kann man nicht gleichzeit die Befehlszeile steuern,
Dialogfelder funktionieren also generell nicht.

>>"und fand den Befehl -EXPORT, der bis zu einem bestimmten Punkt in der Befehlszeile steht."
>>"Es öffnet die visuelle Benutzeroberfläche und wir gehen weiter."
Der Befehl -EXPORT hat keine grafische Oberfläche (das wäre Befehl EXPORT), vielleicht hast du den Befehl
nur eingetippt (statt in einem Makro oder (command zu verwenden), in dem Fall öffnet sich der
Standard Dateiwahl-Dialog um die zu erstellende Datei (Ordner/Name) anzugeben,
zumindest wenn man FileDia auf 1 stehen hat.
In einer Automatisierung wie es ein Makro oder (command "-Export" ...) ist, erkennt ACAD das und verwendet automatisch
die Befehlszeilenversion der Standard-Dateiwahl {Ausnahmen vorhanden}.

>>" Ich weiß nicht, ob es möglich ist, mit Hilfe von LISP/Menümacro-Routinen auf der visuellen Benutzeroberfläche Anpassungen vorzunehmen."
Nicht über die grafische Oberfläche, man müss schauen wie man die benötigten Einstellungen über die Befehlszeile vornimmt.
Im Fall von Plot, Export, EPDF ist das aber egal, mit keinem dieser Befehle kannst du ootb eine mehrseitige PDF erstellen.

>>"Ich kann die Plotkonfig mit Befehlen erreichen, aber danach öffnet sich wieder die Visual UI für die Ordnerauswahl und die Frage der Benennung und Überschreibung."
siehe oben: Du hast nur per Hand den Befehl eingegeben und warst nicht in einer Automatisierung,
wenn du so testen möchtest: Stelle FileDia auf 0 und versuche es erneut.
Aber: In Automatisierungen werden teilweise andere Befehlsversionen aufgerufen, daher empfehle ich
das testen mit einer Automatisierung.
CMDECHO auf 1 stellen

Befehl: (command "-EXPORT")
-EXPORT Dateiformat eingeben [Dwf/dwfX/Pdf] <Pdf>nil
Dateiformat eingeben [Dwf/dwfX/Pdf] <Pdf>*Abbruch*

Befehl: (command "-EXPORT" "Pdf")
-EXPORT Dateiformat eingeben [Dwf/dwfX/Pdf] <Pdf>Pdf Plotbereich eingeben [Anzeige/Grenzen/Fenster] <Anzeige>: nil
Plotbereich eingeben [Anzeige/Grenzen/Fenster] <Anzeige>:*Abbruch*

usw.
(command "-EXPORT" "Pdf" "" "")
-EXPORT Dateiformat eingeben [Dwf/dwfX/Pdf] <Pdf>Pdf Plotbereich eingeben [Anzeige/Grenzen/Fenster] <Anzeige>: Detaillierte Plotkonfiguration? [Ja/Nein] <Nein>:
Dateiname angeben <Zeichnung1-Model.pdf>: nil
Dateiname angeben <Zeichnung1-Model.pdf>: *Abbruch*


>>"Ich möchte den Speicherort festlegen und den Namen aus der dwg-Datei selbst übernehmen"
Speicherort: Dafür brauchzs Programmierung, LISP und dessen Funktionen STRCAT SUBSTR sind da hilfreich,
mit GETVAR fragst du ACAD-Variablen ab und für Dateipfad und Dateiname gibt es ja DWGPREFIX und DWGNAME


>>" und möchte Überschreibungsfragen akzeptieren."
Da hast du die nächste Schwierigkeit, diese Abfrage kommt ja nicht immer!? Da gibt es also auch keine einfache Möglichkeit
und man muss sich mit Programmierung helfen (ansonsten muss man immer dafür sorgen das der Ordner existent ist und entweder
immer oder gleichnamige Dateien enthält - so schafft man dann eine immer gleich Situation.


- - -

Der Punkt mit der mehrseitigen PDF ist neu und ein gröberes Problem (keine Kleinigkeit, nicht zu Lösen für dich),
was mich dann aber viel mehr verwundert ist diese Aussage: "Deshalb gehe ich zu dem Befehl, den wir manuell verwenden,"

Wie passt denn das zusammen  

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: 21740
Registriert: 03.06.2002

Alles

erstellt am: 28. Jul. 2023 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 Nur für kadirozen 10 Unities + Antwort hilfreich

Du siehst: Überall Baustellen und Probleme, da hast du leider nicht das beste Projekte "für den Anfang" gewählt
und müßtest schon Kompromisse eingehen und Codes von anderen verwenden. Aber egal, jeder Automatisierungsschritt
ist eine Optimierung und somit positiv.

Da die Plot-Geschichte nicht so einfach zu lösen ist (wobei mich noch immer interessiert was ExportPDF damit zutun hat und wie du aktuell an deine Mehrseitige PDF kommst)
Edit: EPDF/-EXPORT in einem Layout ausgeführt bietet diese Möglichkeit, DANKE kadirozen !!!

Dann gehe das Thema DXF-Export an, zunächst nur mit der Ablage einer DXF-Version im selben Ordner,
wenn das dann funktioniert, gibt du das für den R12-Dateinamen ein:

(if (or (vl-file-directory-p (strcat(getvar'DWGPREFIX)"R12"))(vl-mkdir (strcat(getvar'DWGPREFIX)"R12")))
    (strcat(getvar'DWGPREFIX)"R12\\" (vl-filename-base(getvar 'DWGNAME))".dxf")
    (alert (strcat "Cancel, Problems with '" (getvar'DWGPREFIX) "R12") "' directory")
)

  

Also, CMDECHO auf 1 und mit (command "-WBLOCK") fängt es an, los gehts

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

kadirozen
Mitglied
Technischer Zeichner


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

Beiträge: 19
Registriert: 13.07.2023

AutoCAD LT 2024

erstellt am: 28. Jul. 2023 10:46    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

vielen Dank für die Antwort.

Tatsächlich habe ich noch einmal nachgeschaut und wir können mehrere Layoutpages mit der folgenden Befehl exportieren

Befehl: -EXPORT
Dateiformat eingeben [Dwf/dwfX/Pdf] <Pdf>
Plotbereich eingeben [aKtuelles Layout/Alle Layouts]<Alle Layouts>: alle


Nach Auswahl von Speicherort und Name werden alle Layouts in eine einzige PDF-Datei exportiert.

Sie haben Recht mit dem Beispiel der Baustelle. Trotzdem fühle ich mich ganz gut, wenn ich die Dokumentation durchforste und etwas für mich völlig Neues lerne. Hoffentlich verliere ich in den nächsten Tagen nicht meine Motivation. Es ist in der Tat sehr kompliziert.

Zu den überschriebenen Dokumenten.

Leider kommt es immer wieder vor, dass wir im Laufe des Tages Dokumente überschreiben. Anstatt Revisionsdokumente zu führen, fügen wir einfach ein kleines Rev.datum in der rechten unteren Ecke unserer Kopfzeile ein und aktualisieren es jedes Mal und überschreiben gleichzeitig die DXF- und PDF-Daten.

Eine Einschränkung, die ich im Moment sehe, ist, dass, wenn die Datei irgendwo anders geöffnet oder im Windows-Explorer angeklickt wird, die Aufforderung zum Überschreiben so lange verhindert wird, bis die Datei entweder geschlossen oder abgewählt wird. Das passiert hier von Zeit zu Zeit zwischen 25 Leuten und wir müssen wie bei einer Kopfjagd suchen, wer die PDF-Datei geöffnet oder im Windows-Explorer angeklickt hat.

Ich bin mir nicht sicher, ob ich in der Lage bin, einen solchen Code für automatisierte PDF-Dateien zu schreiben, aber dieser letzte Schritt wäre eine Herausforderung.

------------------
kadir

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: 21740
Registriert: 03.06.2002

Alles

erstellt am: 28. Jul. 2023 11: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 kadirozen 10 Unities + Antwort hilfreich

[QUOTE]Original erstellt von kadirozen:
Tatsächlich habe ich noch einmal nachgeschaut und wir können mehrere Layoutpages mit der folgenden Befehl exportieren

Befehl: -EXPORT
Dateiformat eingeben [Dwf/dwfX/Pdf] <Pdf>
Plotbereich eingeben [aKtuelles Layout/Alle Layouts]<Alle Layouts>: alle

DANKE, das EPDF und -EXPORT
diese Möglichkeit bietet ist mir wohl entfallen in all den Jahren
Ich selbst nutze dafür ständig Publizieren, aber wenn es nur um eine Datei geht, dann ist EPDF/-Export Vorteilhaft.

>>" Hoffentlich verliere ich in den nächsten Tagen nicht meine Motivation. "
Da die PDF-Erstellung doch kein Problem ist, wirst du schnell Erfolg haben,
danach will man mehr  
1. Scheinen die Seiteneinrichtungen vorhanden und 2. Hast du einen in der Befehlszeile steuerbaren Befehl dafür.
Fang also doch mit der PDF Erstellung an, -EXPORT und los gehts!

>>"Leider kommt es immer wieder vor, dass wir im Laufe des Tages Dokumente überschreiben."
Das ist ja nicht das Problem, aber wenn man ein "JA, überschreib den ollen Mist!" abfeuert
und in dem Ordner liegt überhaupt keine Datei, dann fragt Acad auch nicht nach dem Überschreiben..
Umgekehrt das gleiche Problem, feuert man es nicht ab, so funktioniert es nur beim 1.Mal.
Kein Problem: Du kannst mit Lisp auch Dateien löschen, somit stellst du sicher das NIE gefragt wird :-)
oder du prüfst du Situation und sendest je nachdem die Bestätigung zum überschreiben, oder halt nicht.

>>"Eine Einschränkung, die ich im Moment sehe,"

So lösche ich die Datei vorher (was der bessere Weg ist) und sollte das nicht funktionieren, stoppt das Programm:
(if (or
       (not(findfile   "d:\\armerleidenderdummy.txt"))
       (vl-file-delete "d:\\armerleidenderdummy.txt")
    )
    (progn
      (alert "Prg läuft weiter")
    )
    (alert "Prg gestoppt, Datei kann nicht überschrieben werden")
)

Die Zeilen kannst du so 1:1 in die Befehlszeile kopieren zum testen.

>>" Anstatt Revisionsdokumente zu führen, fügen wir einfach ein kleines Rev.datum in der rechten unteren Ecke unserer Kopfzeile"
>>" ein und aktualisieren es jedes Mal und überschreiben gleichzeitig die DXF- und PDF-Daten."

Also ein weiterer Punkt für die Optimierung/Automatisierung


>>"Ich bin mir nicht sicher, ob ich in der Lage bin, einen solchen Code für automatisierte PDF-Dateien zu schreiben,"
Für die eigentliche PDF-Erstellung muss man ja nicht programmieren, den Befehl -Export gibt es ja bereits,
du musst nur die Befehlsfolge in ein (command "-EXPORT" ....) bringen und schon läufts.
Was das überschreiben angeht, das habe ich dir eben geschenkt, also auch kein Problem mehr :-)
Wenn es dann läuft, dann fängst du an dir die Codezeilen anzusehen und zu zerlegen und STRCAT SUBSTR usw. zu lernen.
www.autolisp.info
- - -

Los gehts  

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2686
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2022
Plateia, Canalis
Visual Basic

erstellt am: 28. Jul. 2023 11: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 kadirozen 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von kadirozen:
Das passiert hier von Zeit zu Zeit zwischen 25 Leuten und wir müssen wie bei einer Kopfjagd suchen, wer die PDF-Datei geöffnet oder im Windows-Explorer angeklickt hat.

Oder man fragt den System-Administrator  Der kann auf dem entsprechenden Server nachsehen, von wem die betreffende Datei aktuell zum Lesen/Schreiben geöffnet ist

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

kadirozen
Mitglied
Technischer Zeichner


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

Beiträge: 19
Registriert: 13.07.2023

AutoCAD LT 2024

erstellt am: 28. Jul. 2023 15: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

Ich habe mich entschieden, mit LISP-WriteBlock zu beginnen, weil das für uns am meisten Zeit in Anspruch nimmt.

Ich habe ein gewisses Niveau mit dem Code erreicht, aber ich versuche immer noch herauszufinden, was wirklich los ist.

Ich habe die Befehle DXFOUT WBLOCK und SAVEAS ausprobiert, dxf out funktioniert tatsächlich, aber die Daten, die damit erstellt werden, sind beschädigt und können nicht geöffnet werden.

Wblock geht auch nicht weiter.

Mit dem Befehl SAVEAS komme ich auf eine bestimmte Ebene.

Ich bleibe bei der Objektauswahl stecken. Mein ssget-Befehl und selected_entities funktionieren nicht in der SAVEAS-Befehlszeile.

Ich komme nicht weiter und brauche noch ein paar weitere Angaben zum Speichern von DXF-Dateien, wie z. B. die Genauigkeit und den Speicherort im Ordner. Wenn ich es dazu bringen könnte, mit meiner vorherigen Auswahl zu arbeiten, wäre das ein guter Schritt nach vorn.


Code:
(defun c:ABC ( / dwg_name dxf_name folder_r12 folder_2000 selected_entities)
(setq dwg_name (getvar "dwgname")) ; Get the current DWG file name
  (setq base_name (vl-filename-base dwg_name)) ; Extract the base name without the extension
  (setq dxf_name (substr base_name 1 5)) ; Extract the first 5 characters from the base name
  (setq dxf_name (strcat dxf_name (substr base_name 7 3))) ; Append characters 7, 8, and 9 from the base name
 
  (setq folder_r12 "C:\\Users\\kadir.oezen\\Desktop\\AutoLISP\\R12\\") ; Set the R12 format destination folder path
  (setq folder_2000 "C:\\Users\\kadir.oezen\\Desktop\\AutoLISP\\2000\\") ; Set the 2000 format destination folder path
  (princ dxf_name)
 
  (setq selected_entities (ssget))


(if (or
      (not(findfile (strcat folder_r12 dxf_name ".dxf")))
      (vl-file-delete (strcat folder_r12 dxf_name ".dxf"))
    )
    (progn
(alert "OK")
    ; Save the DXF file with DXF R12 format
  (command "+SICHALS" "f" "r12" "" "o" selected_entities )
    )
    (alert "Prg gestoppt, Datei kann nicht überschrieben werden")
)
)


------------------
kadir

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

kadirozen
Mitglied
Technischer Zeichner


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

Beiträge: 19
Registriert: 13.07.2023

AutoCAD LT 2024

erstellt am: 28. Jul. 2023 16:12    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 konnte es nicht ausgiebig testen, aber dieser Code funktioniert im Moment.

Ich suche nach einer Möglichkeit, beide if-Anweisungen zu kombinieren, um eine Bedingung zu erfassen und zu machen, so dass, wenn ein Fehler auftritt, das Programm beendet werden kann, bevor es weitergeht.


Der nächste Schritt wäre, die Änderung des Layerstatus am Anfang hinzuzufügen, ich habe ein wenig gesucht, konnte aber leider nicht viele Informationen zu diesem Thema finden.

Code:
(defun c:RZ ( / dwg_name dxf_name folder_r12 folder_2000 selected_entities)
(setq dwg_name (getvar "dwgname")) ; Get the current DWG file name
  (setq base_name (vl-filename-base dwg_name)) ; Extract the base name without the extension
  (setq dxf_name (substr base_name 1 5)) ; Extract the first 5 characters from the base name
  (setq dxf_name (strcat dxf_name (substr base_name 7 3))) ; Append characters 7, 8, and 9 from the base name
 
  (setq folder_r12 "C:\\Users\\kadir.oezen\\Desktop\\AutoLISP\\R12\\") ; Set the R12 format destination folder path
  (setq folder_2000 "C:\\Users\\kadir.oezen\\Desktop\\AutoLISP\\2000\\") ; Set the 2000 format destination folder path
  (princ dxf_name)
 
  (setq selected_entities (ssget))


(if (or (not(findfile (strcat folder_r12 dxf_name ".dxf")))
        (vl-file-delete (strcat folder_r12 dxf_name ".dxf"))  
)
    (progn
;;(alert "OK1")
    ; Save the DXF file with DXF R12 format
(command "SICHALS" "d" "v" "r12" "o" selected_entities "" "16" (strcat folder_r12 dxf_name ".dxf"))
 
    )
    (alert "Programm gestoppt, Datei kann nicht überschrieben werden. Schließen Sie die geöffneten Dateien und versuchen Sie es erneut R12")
)
(if (or (not(findfile (strcat folder_2000 dxf_name ".dxf")))
        (vl-file-delete (strcat folder_2000 dxf_name ".dxf"))  
)
    (progn
;;(alert "OK2")
    ; Save the DXF file with DXF R12 format
(command "SICHALS" "d" "v" "2000" "o" selected_entities "" "16" (strcat folder_2000 dxf_name ".dxf"))
    )
    (alert "Programm gestoppt, Datei kann nicht überschrieben werden. Schließen Sie die geöffneten Dateien und versuchen Sie es erneut 2000")
)


(alert (strcat dxf_name "R12 - 2000 ist erfolgreich gespeichert."))
)


------------------
kadir

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: 21740
Registriert: 03.06.2002

Alles

erstellt am: 28. Jul. 2023 16: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 kadirozen 10 Unities + Antwort hilfreich

>>"dxf out funktioniert tatsächlich, aber die Daten, die damit erstellt werden, sind beschädigt und können nicht geöffnet werden."
Interessant, kannst du davon mal ein Beispiel posten?`(also die DWG und die erstellte DXF).


>>"Wblock geht auch nicht weiter."
Wie, geht auch nicht weiter??


>>"Mit dem Befehl SAVEAS komme ich auf eine bestimmte Ebene."
>>"Ich bleibe bei der Objektauswahl stecken."
>>"Mein ssget-Befehl und selected_entities funktionieren nicht in der SAVEAS-Befehlszeile."

>>" weitere Angaben zum Speichern von DXF-Dateien / wie z. B. die Genauigkeit"
Was willst du darüber wissen, ihr erstellt doch schon Jahrelang DXF Dateien,
aber offenbar hat es bisher nicht interessiert 
Siehe auch https://help.autodesk.com/view/ACDLT/2024/DEU/?guid=GUID-0FC24222-2C6A-4068-8ECF-DB7DDCEE6656
Nutze 16 Stellen.

>>"und den Speicherort im Ordner."
Das habe ich dir oeben bereits fix&fertig serviert, aber teste doch erst einmal mit "dummen" Pfaden,
schreibe also für dein eine Testsituation einfach einen Pfad in den code.
Entweder mit Slashs oder doppelten Backslashs, einfache Backslashs kannst du nicht zu Pfadangabe nutzen.

>>" Wenn ich es dazu bringen könnte, mit meiner vorherigen Auswahl zu arbeiten,"
Deine vorherige Auswahl ist die vorherige Auswahl, also Objektwahlmethode VORHER, kurz V
aber du meinst ja vermutlich eh die Auswahl welche du an selected_entities gebunden hast,
also geht auch selected_entities

>>"gewisses Niveau mit dem Code erreicht,"
HUCH, gleich ein ganzes Programm, bis eben haben wir noch über eine einzige (Command-Anweisung gesprochen!? Wow.

Na dann bin ich mal gespannt ..<<ich lese den code>>
Das sieht doch super aus, versuche mal diesen Code mit ein paar Ergänzungen
-nur für R12 und du musst deine Pfade nochmal anpassen, denn ich werde im Code sicher nicht auf einen
localen Windows-Profil Ordner verweisen lassen, den Desktop schon gleich garnicht.
(warum werden die Dateien nicht ordentlich in zwei Unterordnern der DWG archiviert? Interessiert mich)

Code:

(defun c:ABC ( / dwg_name dxf_name folder_r12 folder_2000 selected_entities)
  (if (and
  (setq dwg_name (getvar "dwgname")) ; Get the current DWG file name
  (setq base_name (vl-filename-base dwg_name)) ; Extract the base name without the extension
  (setq dxf_name (substr base_name 1 5)) ; Extract the first 5 characters from the base name
  (setq dxf_name (strcat dxf_name (substr base_name 7 3))) ; Append characters 7, 8, and 9 from the base name

  (setq folder_r12  "D:\\R12\\") ; Set the R12 format destination folder path
  (setq folder_2000 "D:\\R2000\\") ; Set the 2000 format destination folder path
  (princ dxf_name)

  (setq selected_entities (ssget))
      )
      (if (or
      (not(findfile (strcat folder_r12 dxf_name ".dxf"))) ; no old file found
      (vl-file-delete (strcat folder_r12 dxf_name ".dxf")); old file successfully deleted
    )
    (progn
      (if (or
                    (vl-file-directory-p folder_r12) ; folder exist
                    (vl-mkdir folder_r12)            ; folder successfully created
                  )
          ; Save the DXF file with DXF R12 format
          (command "+SICHALS" "f" "r12" "" "o" selected_entities "" 16 (strcat folder_r12 dxf_name ".dxf"))
  (alert (strcat "Cancel, Problems with '" (getvar'DWGPREFIX) "R12") "' directory")
      )
    )
    (alert "Prg gestoppt, Datei kann nicht überschrieben werden")
)
  )
)

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

kadirozen
Mitglied
Technischer Zeichner


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

Beiträge: 19
Registriert: 13.07.2023

AutoCAD LT 2024

erstellt am: 28. Jul. 2023 16: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

I would like to express myself in English if that is ok, if not I can switch back to German. To be honest, German is not my mother tongue and I rely heavily on the translators.
Folder locations are placeholders, I do not want to mess with the original folders and data there, so I am doing all the testing with the code locally on my computer, before introducing this code to the people in our company and adapting it to use server locations, I will check it again.


I am able to combine both 'or' logical conditions into one if statement. It is not pretty, but it works for now.


I also need to have error handling and possible failure prevention measures. Because of the huge amount of data and the rewriting process, the program needs to be robust.


Changing layer states using AutoLISP looks really challenging to say the least. I would be glad if you could guide me in this direction.


Can I use another symbol to clean up the code? It makes it hard for me to read where the condition starts and where it ends. Just () is not enough I suppose. I tried adding {} but AutoCAD gives me a syntax error. Is there any other symbol to use it?

------------------
kadir

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2686
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2022
Plateia, Canalis
Visual Basic

erstellt am: 28. Jul. 2023 18:25    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 kadirozen 10 Unities + Antwort hilfreich

Hello kadir,
Zitat:
Original erstellt von kadirozen:
I would like to express myself in English if that is ok, if not I can switch back to German.


If you write here in English, others may have to use the translator. In my opinion, that limits the circle of readers a lot, after all it's a .de forum. An alternative would be to switch to an English-language Autocad forum.

Zitat:
Original erstellt von kadirozen:
Can I use another symbol to clean up the code? It makes it hard for me to read where the condition starts and where it ends. Just () is not enough I suppose. I tried adding {} but AutoCAD gives me a syntax error. Is there any other symbol to use it?

The parenthesis are Lisp defaults, you can't change them.
Maybe you should familiarize yourself with the Autocad Lisp basics. If you need additional markings, such as in .NET C {} for the program code, you would have to program there.

For me, it helps to work consistently with indentation and lots of comments to keep code readable.

Greetings
Klaus  

[Diese Nachricht wurde von KlaK am 28. Jul. 2023 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: 21740
Registriert: 03.06.2002

Alles

erstellt am: 28. Jul. 2023 18:38    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 kadirozen 10 Unities + Antwort hilfreich


codestyle1.JPG

 

1. I posted my answer without read your post from 4:12pm
  and also now, I will not answer to this post (you say it works, so there is no need for me to comment now).

2. "Changing layer states using AutoLISP looks really challenging to say the least. I would be glad if you could guide me in this direction."
  Layer and Layerstates: For both you can use command LAYER (-LAYER)
  While cmdecho is on, start with
Befehl: (command "LAYER" "STATUS")

3. "I also need to have error handling and possible failure prevention measures."
  Right, but this can be done later and MY code above incl. much more safety!
 

  "Because of the huge amount of data and the rewriting process, the program needs to be robust"
  I like your thoughts


4. "Can I use another symbol to clean up the code? It makes it hard for me to read where the condition starts and where it ends. Just () is not enough I suppose."
  No you can't, but you can use Texteditors with AutoLisp Syntax color highlighting.
  Give a better visual structure / more clean, easier to read.

image attached, just to show color highlighting, and if statements uses mor than one line,
the X-position of closing brackets are the same as the open brackets of this statement (or one space right, as you like)

Das wird schon und scheint nicht dein erster Ausflug in die Programmierung zu sein 

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

kadirozen
Mitglied
Technischer Zeichner


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

Beiträge: 19
Registriert: 13.07.2023

AutoCAD LT 2024

erstellt am: 02. Aug. 2023 12:26    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 danke Ihnen beiden für Ihre Antworten.

kurz erklärt, gibt es eine Möglichkeit, eine Liste abgesehen von diesem Code zu machen, so dass ich Layers aktualisieren/umbenennen kann. Momentan sind es fast 700 verschiedene Layers und jeder Name mit eindeutigem Namen. Ich habe versucht, unsere Dateien zu durchsuchen, aber es kommen immer wieder neue Layers hinzu.

Im Moment hat es 4 Dicken mit 6 verschiedenen Typen. Es sollte möglich sein, eine solche Benennung zu kodieren und sie automatisch zur Liste hinzuzufügen, anstatt was ich bereits getan habe (ich habe jeden einzelnen Layernamen einzeln zur Liste hinzugefügt).


Vor allem für den Tipp mit dem Syntacs-Highlighting. Ich habe online für den Notepad++ einige AutoLisp-Befehle xml gefunden und als Userdefined Language verwendet.

Mit Kommentaren und Hervorhebungen ist es jetzt 10 mal einfacher, den Code zu verstehen.

Ich konnte keine Möglichkeit finden, den Layerstatus zu verwenden, aber ich habe es geschafft, einen anderen Weg mit einem anderen Lisp-Befehl zu finden.

Ich habe auch Ihre " @cadffm " Methode zur Überprüfung von Dateien hinzugefügt. Ich finde sie sehr sicher und logisch. Vielen Dank für den Tipp.

Vor Jahren habe ich mal einen kurzen Blick auf C++ geworfen, aber ich hatte keine Gelegenheit, es weiter zu verfolgen. Ich fand das Programmieren schon immer magisch und hatte die Möglichkeit, es mit meiner Arbeit zu verbinden und hier und da ein paar Dinge zu verbessern.


Code:
(defun c:RZ ( / dwg_name dxf_name folder_r12 folder_2000 selected_entities layname mlist allelayers)

(setq dwg_name (getvar "dwgname")) ; Get the current DWG file name

(setq base_name (vl-filename-base dwg_name)) ; Extract the base name without the extension

(setq dxf_name (substr base_name 1 5)) ; Extract the first 5 characters from the base name
 
(setq dxf_name (strcat dxf_name (substr base_name 7 3))) ; Append characters 7, 8, and 9 from the base name
 
(setq folder_r12 "C:\\Users\\kadir.oezen\\Desktop\\AutoLISP\\R12\\") ; Set the R12 format destination folder path

(setq folder_2000 "C:\\Users\\kadir.oezen\\Desktop\\AutoLISP\\2001\\") ; Set the 2000 format destination folder path
(setq cmdecho 1)

(setq mlist
(list ;es gibt 700 element in dies List
"Ausschnitt"
"Bemassung Maschine"
"NO_SEQ_Ghost"
"Nachschneiden"
"CUT_46"
"CUT_44"
"Granit"
"INSIDE_CUT_46"
"INSIDE_CUT_44"
"CUT_45"
"NO_SEQ_Granit"
"NO_SEQ_Granit_Farb_G"
"NO_SEQ_Granit_Farb_P"
"CUT_70"
"CUT_60"
"DRILL_T1_U_D6_T13"
....
"POLISH_SURFACE_BACK_T1_800"
...
"CNC_SINK_T1_G_12_F2F1"
"CNC_SINK_T1_G_15_F2F1"
....
"CNC_SINK_T6_P_30_F2F1"
"WJ_HOLE_T1_12"
...
"WJ_HOLE_T6_30"
"CNC_HOLE_T1_12"
...
"CNC_HOLE_T6_30"
"CNC_DRILL_T1_D35"
..

"SEQ_T1_G_12_F2F2_GE_UD"
...
"SEQ_T6_P_30_F2F0_GE_UD"
)

)
(if (and (vl-file-directory-p folder_r12) (vl-file-directory-p folder_2000))
(progn
(if (and (or (not(findfile (strcat folder_r12 dxf_name ".dxf"))) ;;no oldfile found
(vl-file-delete (strcat folder_r12 dxf_name ".dxf"))) ;;old file found and deleted
(or (not(findfile (strcat folder_2000 dxf_name ".dxf")))  ;;no oldfile found
(vl-file-delete (strcat folder_2000 dxf_name ".dxf"))) ;;old file found and deleted

);Folders are present and they either have no DXF or DXF with the same name inside

(progn
(vlax-for allelayers (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
(vla-put-layeron allelayers :vlax-false)
);vlax command takes all layers and turns them off one by one

(vlax-for layname (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
(if (member (vla-get-name layname) mlist)
(vla-put-layeron layname :vlax-true)
(princ (vla-get-name LayName))
);;vlax command takes layers and compares it with the mlist, if there is a match it turns it on
)
(setq selected_entities (ssget)) ;ask user to make selections

; Save the DXF file with DXF R12 format
(command "SICHALS" "d" "v" "r12" "o" selected_entities "" "16" (strcat folder_r12 dxf_name ".dxf"))

; Save the DXF file with DXF 2000 format
(command "SICHALS" "d" "v" "2000" "o" selected_entities "" "16" (strcat folder_2000 dxf_name ".dxf"))
    );if command can not overwrite files it gives this error
(progn
(alert "Programm gestoppt, Datei kann nicht überschrieben werden. Schließen Sie die geöffneten Dateien und versuchen Sie es erneut")
(return)
)
)
);if command goes to the false state, if there are no folders with the right name present on the filepath
(progn
(alert "Sie haben keinen Zugriff auf den Server. Stellen Sie sicher, dass Sie die Dateien auf T: lesen können.")
(return)
)
)
(alert (strcat dxf_name ".dxf als R12 - 2000 ist erfolgreich gespeichert."))
(princ)
)



------------------
kadir

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: 21740
Registriert: 03.06.2002

Alles

erstellt am: 02. Aug. 2023 13:00    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 kadirozen 10 Unities + Antwort hilfreich

Hi,

>>" eine Möglichkeit, so dass ich Layers aktualisieren/umbenennen kann."
In den DWGs? In dem Code?
Sorry, mir ist es nicht ganz klar - aber die Antwort auf deine Frage ist mit Sicherheit: JA!

>>" Momentan sind es fast 700 verschiedene Layers und jeder Name mit eindeutigem Namen."
>>" Ich habe versucht, unsere Dateien zu durchsuchen, aber es kommen immer wieder neue Layers hinzu."
Also eine Liste mit ALLEN Layern macht ja keinen Sinn, also willst du nur Layer welche
durch das Programm eingeschaltet werden sollen. Frage: Woher soll man wissen welche Layer du möchtest udn welche nicht?


Zusätzlich helfe ich mal mit weiteren Hinweisen und Rückfragen nach:
Man kann Layer aus Dateien auslesen, auch aus mehreren Dateien, man kann auch eine Textdatei mit den Layernamen erstellen (lassen)
und somit bei Bedarf auch immer automatisch aktualisieren {da kommt es aber auf Dateianzahl und Inhalt an.. Thema Performance}
Aber woher soll so eine Funktion wissen welche Layer du gerne in die Liste aufnehmen möchtest und welche nicht?

>>"Im Moment hat es 4 Dicken mit 6 verschiedenen Typen."
Dicken = Layer-Linienstärke?
Typen? = Layer-Linientyp?

>>" Es sollte möglich sein, eine solche Benennung zu kodieren und sie automatisch zur Liste hinzuzufügen,"
?

Wenn du deine Wahl anhand eines ordentlichen Namensmuster festlegen kannst, dann wäre das perfekt,
auf den ersten Blick vermute ich aber das trifft auf eure Layernamen nicht zu.


BTW offtopic: Das Programm scheint sich nicht um gefroren/getaut zu kümmern? Oder ich habe es übersehen.
Je nach Zeichnungsaufbau wäre ja auch generell Frieren/Tauen zu bevorzugen, ein/aus ist ja selten sinnvoll&benötigt.

-

Lasse den Code mal gut sein und erkläre die Layergeschichte noch einmal in ein paar Sätzen. Hintergrund/Ziel/Problem

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

kadirozen
Mitglied
Technischer Zeichner


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

Beiträge: 19
Registriert: 13.07.2023

AutoCAD LT 2024

erstellt am: 02. Aug. 2023 13: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

Sie haben Recht mit den Freeze/Taut-Layern. Ich habe einfach befolgt, was wir manuell tun, und es wieder auf den Code angewendet. Es könnte logisch sein, dass man einfriert, anstatt abzuschalten.

Ich habe versucht, es so kurz wie möglich zu erklären, aber es ist immer noch lang. Entschuldigung dafür.

----
Wir haben ein 2-Layer-System, eine für die für Menschen lesbare Version und eine für die Maschine.

Die menschliche Version hat alle Messungen, Notizen, Markierungen, importierte PDF-Ebenen, Fotos, Layouts usw., die maschinelesbar Version hat nur CNC-lesbare Layers.

Wie zum Beispiel;

Layer Name "SEQ_T1_G_12_F2F2_GE_UD"

Diese Version stellt einige Dinge dar,

SEQ: Sequenzmethode, die den Roboter aktiviert, um die Arbeit an den Linien/Bögen/Kreisen, die in dieser Ebene gezeichnet werden, auszuführen. (sie ändert sich nicht)
T1: type 1 wir haben 6 verschiedene Typen
G: Geschliffen, wir haben auch einen Code für polierte Oberflächen, nämlich _P
12: Dicke des Materials in Millimetern, wir haben 12-15-20-30
F2F2: Kantenbearbeitung, d.h. Fase2 oben und unten, wir haben eine Menge Variationen wie R2R2 Radius 2 oben und unten, R3F2 und so weiter.
_GE und UD sind relevant für die Maschine, um sie zu lesen und sie ändern sich nicht.

Nächste variant wäre "SEQ_T1_G_12_F2F0_GE_UD" z.B. usw.

Diese hat viele Variationen, 6 Typen, 2 Oberflächenbehandlungen, 10 Kantendetails, 4 Materialstärken. Das macht 480 verschiedene Layernamen.

+ Außerdem haben wir mehr Variationen auf jeder Ebene wie Drill, Hole CNC Sink etc.


Meine Frage ist,

Kann ich diese Liste irgendwo separat auf dem Server speichern und über meinen AutoLISP-Code darauf zugreifen. Die Automatisierungsaufgabe ausführen. Wenn wir neue Ebenen haben, füge ich sie der ursprünglichen Listendatei hinzu, und ich muss den Code für die Automatisierung nicht ändern (stattdessen bleibt die Liste wie jetzt im Code.)


Kann ich einen Code in AutoLisp oder einer anderen Plattform schreiben, so dass in der Zukunft, wenn wir, sagen wir, eine neue Oberflächenbeschaffenheit und ein neues Kantendetail haben (zum Beispiel R10R8).

Es kann automatisch diese Liste der maschinenlesbaren Layerliste erweitern.

Vielen Dank

------------------
kadir

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: 21740
Registriert: 03.06.2002

Alles

erstellt am: 02. Aug. 2023 14:15    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 kadirozen 10 Unities + Antwort hilfreich

>>"Kann ich diese Liste irgendwo separat auf dem Server speichern und über meinen AutoLISP-Code darauf zugreifen"
Ja das geht
Google nach Code mit zB. den Lispfunktionen read-line und write-line
und schaue natürlich auch mal in die Hilfe[F1]

Ein Beispiel, Test.txt Datei sieht so aus:
test
cnc
cnc1
oderwasanderes

Einfache Beispielfunktion dafür {nachträglich editiert}
(defun testin (/ rf line)
(setq mylist nil)
(if (findfile (setq file "D:\\test.txt"))
        (if (setq rf (open file "r"))
            (while (setq line (read-line rf))
                (setq mylist (cons line mylist))
            )
            (alert "Oups")
        )
)
(close rf)
)


(testin) ; liefert die die Zeilen als einfache Liste
("test" "cnc" "cnc1" "oderwasanderes")

Und dann kannst du mit den Listverarbeitenden Funktion auf jedes Element zugreifen, zB. mit FOREACH
(foreach lay (testin)
   (command "_.LAYER" "_off" lay "" "")
)

-


Es wäre aber natürlich noch viel besser wenn man die Information "für Maschine AUS" oder halt andersherum "für Maschine EIN"
bereits anhand des Layernamens ermitteln könnte.. dann bräuchte man die Liste nicht.

Beispiel, alle Layer mit CNC oder TEST am Anfang, dazu noch der Layer "Immer"
und aller mit einer "46" im Namen. Jetzt kommen Platzhalter/Wildcards zum Einsatz:

-LAYER<enter>
_off<enter>
CNC*,TEST*,IMMER,*46*<enter>
<enter>


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

kadirozen
Mitglied
Technischer Zeichner


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

Beiträge: 19
Registriert: 13.07.2023

AutoCAD LT 2024

erstellt am: 02. Aug. 2023 14: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

Ihr letzter Vorschlag wäre großartig, wenn ich ihn umsetzen könnte.
Sie haben Recht mit der Catergorisierung. Anstatt +700 Elemente zu haben, könnten wir die Suche auf die Ebenen mit SEQ, NO_SEQ, CNC, CUT; usw. am Anfang beschränken. Das würde die Anzahl der Codezeilen erheblich reduzieren, und ich müsste in Zukunft keine einzige Codezeile mehr aktualisieren, weil unser Ebenennamensystem gleich bleibt (SEQ am Anfang zum Beispiel).

Wenn wir eine neue Methode haben, kann ich einfach die Präfix-Liste aktualisieren und weitermachen.

Dieser Gedankengang von Ihnen gefällt mir sehr gut, vielen Dank.

Die Frage ist nun, wie ich solche Änderungen effektiv umsetzen kann, anstatt sie in den Code zu schreiben.

PS:
Ich habe versucht, danach zu suchen, konnte ihn aber nicht finden.

Wofür stehen die @ * % Symbole in AutoLISP?

Ich habe sie im Code anderer Leute gesehen, konnte aber nicht herausfinden, warum.

Dank Ihnen betrachte ich den Code jetzt aus einer anderen Perspektive.

Ich werde den fertigen Code hochladen, wenn ich ihn bearbeitet habe.

------------------
kadir

[Diese Nachricht wurde von kadirozen am 02. Aug. 2023 editiert.]

[Diese Nachricht wurde von kadirozen am 02. Aug. 2023 editiert.]

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2686
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2022
Plateia, Canalis
Visual Basic

erstellt am: 02. Aug. 2023 19:46    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 kadirozen 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von kadirozen:
Wofür stehen die @ * % Symbole in AutoLISP?


schau in der Hilfe

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: 21740
Registriert: 03.06.2002

Alles

erstellt am: 02. Aug. 2023 21:40    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 kadirozen 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von kadirozen:
Wofür stehen die @ * % Symbole in AutoLISP?

Für eine gezielt richtige Antwort fehlt der Kontext!

@ Lisp oder nicht, es wird wohl als Wildcard Verwendung finden,
oder für eine Koordinatenangabe in einem AutoCAD-Befehl RELATIVE bedeuten.

* Wildcard

% Da fällt mir wieder, Lisp oder auch nicht, nur Text-Steuerzeichen und Schriftfeldcodes ein

! Oft werden Sonderzeichen als Stilmittel(?) verwendet, es ist also in dem Fall ein normales Zeichen,
aber der Programmierer verwendet diese bewußt um etwas (für ihn) leicht erkennbar zu machen.
Er könnte zb. @ am Anfang von Variablennamen nutzen damit und diese nur für globale Variablen einsetzen,
so erkennt er schnell global oder lokal.. genauso gut könnte er aber auch ein X oder O schreiben.

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

kadirozen
Mitglied
Technischer Zeichner


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

Beiträge: 19
Registriert: 13.07.2023

AutoCAD LT 2024

erstellt am: 08. Aug. 2023 16: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

Wie in meiner letzten Antwort versprochen, habe ich es geschafft, einen Code ein wenig zu bearbeiten und ihn für den Menschen lesbarer zu machen. Wenn jemand in der Zukunft diese Zeilen liest, schlage ich vor, Visual Studio Code mit AutoLISP Syntaxhervorhebung zu verwenden. es macht das Lesen und Schreiben viel einfacher.

Hier ist der Code, der Layer on off mit Schlüsselwortliste, Ordner- und Dateisteuerung, Auswahl, automatische Benennung und Speicherung mit grundlegender Fehlerbehandlung verwendet,

Code:
;;;;;This AutoLisp is written by Kadir Özen 08.08.2023
(defun c:R12 ( / *error* msg dwg_name dxf_name folder_r12 folder_2000 selected_entities mlist allelayers keyword layerName becken:ans ans selected_entitiesr12 selected_entities2000)
(vl-load-com)
 
  (defun *error* ( msg )
  (setvar "filedia" 1)
  (setvar "cmdecho" oldcmdecho)
  (vlax-for allelayers (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
(vla-put-layeron allelayers :vlax-true)
)
        (and msg (not (wcmatch (strcase msg) "*CANCEL*,*QUIT*,*BREAK*"))
        (princ (strcat "\nError: " msg))
        )
  (princ)
  )
  (setq oldcmdecho (getvar "cmdecho") )
(setq dwg_name (getvar "dwgname")) ; Get the current DWG file name

(setq base_name (vl-filename-base dwg_name)) ; Extract the base name without the extension

(setq dxf_name (substr base_name 1 5)) ; Extract the first 5 characters from the base name
 
(setq dxf_name (strcat dxf_name (substr base_name 7 3))) ; Append characters 7, 8, and 9 from the base name
 
(setq folder_r12 "C:\\Users\\kadir.oezen\\Desktop\\AutoLISP\\R12\\") ; Set the R12 format destination folder path

(setq folder_2000 "C:\\Users\\kadir.oezen\\Desktop\\AutoLISP\\2000\\") ; Set the 2000 format destination folder path
(setvar "cmdecho" 1)
  (if (null becken:ans)
    (setq becken:ans "Nein"))
(setq mlist '("CNC"
"SEQ"
"CUT"
"DRILL"
"POLISH"
"WJ"
"Ausschnitt"
"Bemassung Maschine"
"Nachschneiden"
"Granit"
)
); set CNC Maschine Readable Layer names and keywords,

(if (and (vl-file-directory-p folder_r12) (vl-file-directory-p folder_2000)) ;if both folders are present continue otherwise go below
(if (and (or (not(findfile (strcat folder_r12 dxf_name ".dxf"))) ;;no oldfile found
(vl-file-delete (strcat folder_r12 dxf_name ".dxf"))) ;;old file found and deleted
(or (not(findfile (strcat folder_2000 dxf_name ".dxf")))  ;;no oldfile found
(vl-file-delete (strcat folder_2000 dxf_name ".dxf"))) ;;old file found and deleted
);Folders are present and they either have no DXF or DXF with the same name inside

(progn
        (vlax-for allelayers (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
        (vla-put-layeron allelayers :vlax-false);vlax command takes all layers and turns them off one by one
        (setq layerName (vla-get-name allelayers));set layername to the all layers
          ; Check if any of the keywords are present in the layer name
          (foreach keyword mlist
            (if (vl-string-search keyword layerName)
            (vla-put-layeron allelayers :vlax-true) ; if the name is on the list Turn on the layer there is no else command.
            )
          )
        )
            (initget "Ja Nein")
            (if (setq ans (cond ((getkword (strcat "\nHaben Sie SteinBecken/Segmenten in die Zeichnung (SIE DÜRFEN NICHT IN 2000 GESPEICHERT WERDEN? [Ja/Nein] <" becken:ans ">"))) (becken:ans)));cond testes if first getkword has value, if not goes to second option which is global ans
                        (progn
                        (setq becken:ans ans)
                          (if (= ans "Ja")
                            (progn
                              (alert "Wählen Sie nur R12-Daten (alles)")
                              (setq selected_entitiesr12 (ssget)) ;ask user to make selections
                                  (if selected_entitiesr12
                                    (progn
                                      (setvar "filedia" 0)
                                          ; Save the DXF file with DXF R12 format
                                          (command "SICHALS" "d" "v" "r12" "o" selected_entitiesr12 "" "16" (strcat folder_r12 dxf_name ".dxf"))
                                          (princ (strcat dxf_name ".dxf als R12 ist erfolgreich gespeichert."))
                                    );if selr12 else
                                      (progn
                                        (alert "Programm gestoppt, Auswahl ist nicht gültig, versuchen Sie es erneut")
                                        (*error* " nicht gültig auswahl r12")
                                      )
                                  );--if selr12 ende
                                (alert "Wählen Sie nur 2000-Daten (OHNE SEGMENT BECKEN etc.)")
                                (setq selected_entities2000 (ssget)) ;ask user to make selections
                                  (if selected_entities2000
                                    (progn
                                          ; Save the DXF file with DXF 2000 format
                                          (command "SICHALS" "d" "v" "2000" "o" selected_entities2000 "" "16" (strcat folder_2000 dxf_name ".dxf"))
                                          (princ (strcat dxf_name ".dxf als 2000 ist erfolgreich gespeichert."))
                                    );if sel2000 else
                                    (progn
                                      (alert "Programm gestoppt, Auswahl ist nicht gültig, versuchen Sie es erneut")
                                      (*error* " nicht gültig auswahl 2000")
                                    )
                                  );--if sel2000 ende
                                (command "SICHALS" "2013" "" "j")
                                ;;(alert (strcat dxf_name ".dxf als R12 - 2000 ist erfolgreich gespeichert."))
                                (princ (strcat dxf_name ".dxf als R12 - 2000 ist erfolgreich gespeichert."))                         
                          );if becken ans nein go with the below code
                            (progn
                              (setq selected_entities (ssget)) ;ask user to make selections
                              (if selected_entities
                                (progn
                                  (setvar "filedia" 0)
                                  ; Save the DXF file with DXF R12 format
                                  (command "SICHALS" "d" "v" "r12" "o" selected_entities "" "16" (strcat folder_r12 dxf_name ".dxf"))
                                     
                                  ; Save the DXF file with DXF 2000 format
                                  (command "SICHALS" "d" "v" "2000" "o" selected_entities "" "16" (strcat folder_2000 dxf_name ".dxf"))
                                  (command "SICHALS" "2013" "" "j")
                                  ;;(alert (strcat dxf_name ".dxf als R12 - 2000 ist erfolgreich gespeichert."))
                                  (princ (strcat dxf_name ".dxf als R12 - 2000 ist erfolgreich gespeichert."))
                                ) ; if ss nicht gültig else
                                (progn
                                  (alert "Programm gestoppt, Auswahl ist nicht gültig, versuchen Sie es erneut")
                                  (*error* " nicht gültig auswahl r12-2000")
                                )
                              );--if ss nicht gültig ende
                            )
                          )           
                          )
                      );if beckebans ende
      );if else command can not overwrite files it gives this error
      (progn
        (alert "Programm gestoppt, Datei kann nicht überschrieben werden. Schließen Sie die geöffneten Dateien und versuchen Sie es erneut")
        (*error* " kann nicht überschreiben")
      )
);--second if else command goes to the false state, if there are no folders with the right name present on the filepath
(progn
      (alert "Sie haben keinen Zugriff auf den Server. Stellen Sie sicher, dass Sie die Dateien auf T: lesen können.")
      (*error* " kein zugriff")
)
)
;first if end
(progn
(*error* nil)
)
)


------------------
kadir

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: 21740
Registriert: 03.06.2002

Alles

erstellt am: 08. Aug. 2023 16:50    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 kadirozen 10 Unities + Antwort hilfreich

Hallo,

den Code schaue ich mir jetzt nicht mehr an, aber einen Kommentar dazu: EDITOR

Als AutoCAD-nicht-MAC-und-nicht-LT User verwendet man vorzugsweise die VLIDE, zumindest wenn man mit .net nichts am Hut hat
und keine speziellen Lisps schreiben will (da gibt es leider ein gräsliches Thema: Unicode Unterstützung)
http://lispexpert.blogspot.com/p/chapter-3-visual-lisp-ide.html

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