| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: Layer suchen, anlegen und verschieben (1546 / mal gelesen)
|
deadmau5er Mitglied CAD/PDM Admin, Technischer Zeichner, Bauzeichner
Beiträge: 142 Registriert: 18.05.2012 Software: AutoCAD Mechanical 2022 (+LT) Inventor 2022 CIM Database Windows 11<P>Hardware: Intel Core i7 12700K NVIDIA RTX A4000 64GB RAM Logitech G502 Razer Tartarus
|
erstellt am: 12. Mai. 2021 15:18 <-- editieren / zitieren --> Unities abgeben:
Hallo Liebe CAD Freunde. Ich stehe vor folgendem Problem. Hintergrund: wir haben alte CAD Daten, die von IDW in DWG umgewandelt wurden. Das geschieht automatisch über einen Jobserver. Das vorgehen haben wir schon seit Jahren und somit haben wir jetzt 2 verschiedene DWG Zeichnungsarten mit verschiedenen Layer innerhalb der Zeichnungen. Der Grund hierfür ist die Layer Zuordnung über Inventor/IDW gewesen. Das heißt, Zeichnungen bis 2008 haben folgende Layer: AM_0 AM_3 AM_5 … Und die Zeichnungen ab 2008 bis 2021 haben folgende Layer: Sichtbar (ISO) Verdeckt (ISO) Bemaßung (ISO) … Nun würde ich gerne über ein Script oder eine LISP im AutoCAD gehen, um folgendes erreichen zu können. Es sollen die Layer Zuordnungen an unsere neue Layer Struktur angepasst werden. Alter Layer --> Neuer Layer AM_0 --> 0 AM_3 --> HIDDEN AM_5 --> BEMASSUNG Sichtbar (ISO) --> 0 Verdeckt (ISO) --> HIDDEN Bemaßung (ISO) --> BEMASSUNG Es sind nicht immer alle Layer in jeder Zeichnung, weshalb mir ein Script dann wohl eher in die quere kommt, weil er z.B. einen Layer nicht finden kann. Über LISP habe ich angefangen, aber hier benötige ich Unterstützung. Wie kann ich am besten eine LISP aufbauen für die abfragen: 1. Wenn Layer 0 nicht vorhanden, dann erstelle Layer 0. 2. Wenn Layer 0 vorhanden, nächste Abfrage. 3. Wenn Layer AM_0 vorhanden, dann setze alles von Layer AM_0 auf Layer „0“. 4. Wenn Layer AM_ 0 nicht vorhanden, schau nach dem nächsten Layer.
Folgende LISP fängt bei Punkt 3 an (setvar "CMDECHO" 0) (prompt "\n") (setq strLayerName_01 "AM_0" strLayerName_02 "AM_3" strLayerName_03 "AM_5" strLayerName_04 "HIDDEN" strLayerName_05 "BEMASSUNG"))) (if (tblsearch "LAYER" strLayerName_01) (command "_.-laymrg" "_name" "strLayerName_01" "" "_name" "strLayerName_02" "_yes")) Hier bekomme ich aber eine Fehlermeldung, dass er den Layer Name nicht finden kann, also es funktioniert nicht über „strLayerName_01“. Aber ich glaube ich bringe hier gerade was durcheinander oder habe einfach einen falschen Ansatz. Wäre super, wenn mir geholfen werden kann
Liebe Grüße Marcel
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 12. Mai. 2021 15:27 <-- editieren / zitieren --> Unities abgeben: Nur für deadmau5er
Hi, zunächst mal zu AutoCAD-Befehlen und "Es sind nicht immer alle Layer in jeder Zeichnung, weshalb mir ein Script dann wohl eher in die quere kommt, weil er z.B. einen Layer nicht finden kann" Das Problem ist ja leicht zu klären, denn du kannst ja Layer erstellen. Befehl -LAYER Zu deinen Lispzeilen(nicht näher angesehen, nur ein Blick): Du möchtest einen Befehl füttern (_.laymrg) und gibst an "strLayerName_01 " dann nimmt das Programm auch ernst und sucht den Layer "strLayerName_01 " Du möchtest aber nicht den Namen "strLayerName_01" angeben, sondern der Wert auf den das Symbol strLayerName_01 verweist, dann mußt du die Anführungszeichen weglassen damit es als symbol erkannt und evaluiert wird. Teste es in den Befehlszeile: Befehl: (setq TEST "123") Befehl: !"TEST" -> "TEST" (strings und Zahlen evaluieren nicht bzw. zu sich selbst) Befehl: !TEST -> "123"
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
deadmau5er Mitglied CAD/PDM Admin, Technischer Zeichner, Bauzeichner
Beiträge: 142 Registriert: 18.05.2012 Software: AutoCAD Mechanical 2022 (+LT) Inventor 2022 CIM Database Windows 11<P>Hardware: Intel Core i7 12700K NVIDIA RTX A4000 64GB RAM Logitech G502 Razer Tartarus
|
erstellt am: 12. Mai. 2021 15:33 <-- editieren / zitieren --> Unities abgeben:
Hi cadffm, Vielen Dank! es liegt immer wieder an so Kleinigkeiten ohne die "" hat es funktioniert! Danke
Jetzt muss ich schauen, wie ich alles andere auch noch in die LISP rein bekomme. Viele Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 12. Mai. 2021 15:35 <-- editieren / zitieren --> Unities abgeben: Nur für deadmau5er
Noch mal zur Ergänzung: Ich wollte nicht die beste Lösung bieten, sondern dich bei den Dingen unterstützen welche du bereits selbst probierts. Eine Ordentliche Schnelle Lösung würde natürlich Tage an Zeit sparen[rauf an wieviele Dateien], aber deine Lösung wird ja auch funktionieren. (andernfalls: Programm suchen welche sowas für viele Dateien machen kann. Ich empfehle nichts, kann nur sagen: Gibt es.) Noch etwas für den Fall wenn deine Dateien so sauber sind und in ALTen Dateien nie die NEUen Layer enthalten sind: Dann benenne die Layer doch einfach um? Auch hier kannst du wieder dafür sorgen dass der ALT-Layer in jedem Fall vorhanden ist (-LAYER NEU) und dann muß man ACAD nicht mit so schweren Aufgaben wie laymrg stressen, sondern kann den Layer einfach umbenennen. Erstelle alten Layer und neuen Layer (ist ein Layer vorhanden, so macht das dem Befehl -LAYER neu nichts. und dann benenne den Layer einfach um -RENAME Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
deadmau5er Mitglied CAD/PDM Admin, Technischer Zeichner, Bauzeichner
Beiträge: 142 Registriert: 18.05.2012 Software: AutoCAD Mechanical 2022 (+LT) Inventor 2022 CIM Database Windows 11<P>Hardware: Intel Core i7 12700K NVIDIA RTX A4000 64GB RAM Logitech G502 Razer Tartarus
|
erstellt am: 17. Mai. 2021 15:32 <-- editieren / zitieren --> Unities abgeben:
Hallo Vielen Dank! Ich möchte hier nicht alles fertig hingelegt bekommen, Gedankenstöße, Hilfestellungen und Unterstützung reicht mir aus, da ich es dann auch besser nachvollziehen kann und somit auch was dabei lerne (hoff ich :P ) Ich versuche es dann erst mal über ein Skript. Nun stehe ich vor folgenden Problemen: 1.Wenn ich einen Layer umbenennen möchte, bsp. von AM_0 in 0, kommt die Meldung, dass der Layer 0 schon existiert. Oder gibt es hier noch einen anderen Weg? 2. ich lasse mehrere Layer auf einmal erstellen: -layer n AM_0,AM_3,Sichtbar (ISO), Verdeckt (ISO) hier bricht er mir dann bei "Sichtbar (ISO) dann ab, da er das leerzeichnen als ENTER erkennt. habe es auch in "" versucht, aber das hat auch nicht funktioniert. Stehe ich hier dann vor dem Problem, dass ich dann doch über LISP gehen muss? Ich hab überall nachgeschaut, aber nichts gefunden, außer "wenn Leerzeichen in einem Link, oder Name, dann "Pech"" Am Ende baue ich, je nachdem, was es wird, ein Button in die Werkzeugleiste, die dann das Skript/LISP auslöst und nur die eine Zeichnung dann bearbeitet und nicht automatisiert mehrere Dateien auf einmal. Es kommen später noch mehr Befehle hinzu, die die Zeichnung verändert, aber das habe ich schon alles hinbekommen. Wichtig ist mir erst mal das alles mit den Layern. Viele Grüße Marcel [Diese Nachricht wurde von deadmau5er am 17. Mai. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 17. Mai. 2021 16:06 <-- editieren / zitieren --> Unities abgeben: Nur für deadmau5er
1. Ich bin verblüfft, die Lösung zu diesem Problem hast du in deinem Eingangspost ja selbst verwendet!? 2. Sorry, aber "" ist die gültige Antwort und Lösung! In einem besonderen Fall ist es nicht die Lösung, aber dann würde dir das Programm auch sagen warum: "3 3" ist ein ungültiger Layername. Ich nehme aber an dein Problem ist wie selbst von dir angegeben: 3,444 Ungültiger Optionstitel. Also: Die Lösung lautet wirklich -layer n "AM_0,AM_3,Sichtbar (ISO), Verdeckt (ISO)" Wobei dir AutoCAD dieses völlig irrsinige führende Leerzeichen im Layernamen ' Verdeckt (ISO)' ignorieren wird und den Layer als 'Verdeckt (ISO)' anlegen wird. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
maratovich Mitglied
Beiträge: 26 Registriert: 08.08.2013
|
erstellt am: 17. Mai. 2021 17:02 <-- editieren / zitieren --> Unities abgeben: Nur für deadmau5er
Zitat: Original erstellt von deadmau5er:
Am Ende baue ich, je nachdem, was es wird, ein Button in die Werkzeugleiste, die dann das Skript/LISP auslöst und nur die eine Zeichnung dann bearbeitet und nicht automatisiert mehrere Dateien auf einmal.
Vielleicht hilft dir das - AutoRunLispEine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
deadmau5er Mitglied CAD/PDM Admin, Technischer Zeichner, Bauzeichner
Beiträge: 142 Registriert: 18.05.2012 Software: AutoCAD Mechanical 2022 (+LT) Inventor 2022 CIM Database Windows 11<P>Hardware: Intel Core i7 12700K NVIDIA RTX A4000 64GB RAM Logitech G502 Razer Tartarus
|
erstellt am: 18. Mai. 2021 10:45 <-- editieren / zitieren --> Unities abgeben:
Hi, zu 1., hier bin ich auf dein Befehl "RENAME" gegangen und hab meinen Befehl aus dem Eingangspost nicht mehr auf dem Schirm gehabt. Oh Mann . zu 2.: ok, ich habe die "" so gesetzt gehabt: -layer n AM_0,AM_3,"Sichtbar (ISO)","Verdeckt (ISO)" Danke für deine Lösung! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 18. Mai. 2021 10:50 <-- editieren / zitieren --> Unities abgeben: Nur für deadmau5er
|
deadmau5er Mitglied CAD/PDM Admin, Technischer Zeichner, Bauzeichner
Beiträge: 142 Registriert: 18.05.2012 Software: AutoCAD Mechanical 2022 (+LT) Inventor 2022 CIM Database Windows 11<P>Hardware: Intel Core i7 12700K NVIDIA RTX A4000 64GB RAM Logitech G502 Razer Tartarus
|
erstellt am: 18. Mai. 2021 13:36 <-- editieren / zitieren --> Unities abgeben:
Sooo und nun das nächste Problem Wie bekomme ich jetzt den Layer "Bemaßung (ISO)" ins AutoCAD bzw. wie bekomm ich alles vom Layer "Bemaßung (ISO) auf den Layer "DIMENSION". Befehl dafür ist mir bekannt, aber AutoCAD mag im Skript kein "ß" . _.-laymrg n Bemaßung (ISO) n DIMENSION ja Viele Grüße Marcel
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 18. Mai. 2021 14:26 <-- editieren / zitieren --> Unities abgeben: Nur für deadmau5er
Stelle doch mal dein Script dafür zur Verfügung, die Zeilen von eben können es ja nicht sein (oder das Forum hat Zeichen geschluckt) Als CODE einfügen oder direkt als Textdatei wäre perfekt. Und zeige dein Protokoll [F2] - zu 50% wird das nicht angesehen - dafür gibt es keine Entschuldigung und das Log/Protokoll liefert dann schon die Erklärung - in der Hälfte der Fälle. Mach es den Helfern nicht unnötig schwierig, es sind ja deine Probleme..
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadwomen Ehrenmitglied V.I.P. h.c. Mädchen für fast alles
Beiträge: 3067 Registriert: 26.08.2002 ACAD R11 - 2022 (Plant3D) AVIS ACAD LT 2013- 2021 ZWCAD 2015 Versuch "nun ja" [s]History P3D 2012/(13) SP und Hotfix([/s]<P> Windows 10 / 64 Bit Xeon CPU 3.5GHz 16GB Ram NVIDIA Quadro P2000 3x Dell TV100 88P Monitore
|
erstellt am: 18. Mai. 2021 14:33 <-- editieren / zitieren --> Unities abgeben: Nur für deadmau5er
Layer erst umbenennen ? mit Wildcards dann script ? wäre das ein Weg ? cw ------------------ Also ich finde Unities gut ... und andere sicher auch ------------------------------------------------ cadwomen™ Plant ist nur die Spitze des Berges der da treibt ? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
deadmau5er Mitglied CAD/PDM Admin, Technischer Zeichner, Bauzeichner
Beiträge: 142 Registriert: 18.05.2012 Software: AutoCAD Mechanical 2022 (+LT) Inventor 2022 CIM Database Windows 11<P>Hardware: Intel Core i7 12700K NVIDIA RTX A4000 64GB RAM Logitech G502 Razer Tartarus
|
erstellt am: 18. Mai. 2021 15:29 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich sende euch mal das Skript im Anhang mit. Auswertung aus dem Befehlsfenster sende ich als log mit. ich hoffe, es klappt auch mit den Anhängen Liebe Grüße [Diese Nachricht wurde von deadmau5er am 18. Mai. 2021 editiert.] [Diese Nachricht wurde von deadmau5er am 18. Mai. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 18. Mai. 2021 15:33 <-- editieren / zitieren --> Unities abgeben: Nur für deadmau5er
|
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 18. Mai. 2021 15:37 <-- editieren / zitieren --> Unities abgeben: Nur für deadmau5er
Das Script <geprüft> ist ok und auf meiner Seite kein Problem mit dem ß Bin auf dein LOG gespannt bei dem ß angemeckert wird. PS: Du solltest den Layer DIMENSION auf dem Layer-Neu hinzufügen, sicher ist sicher. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
deadmau5er Mitglied CAD/PDM Admin, Technischer Zeichner, Bauzeichner
Beiträge: 142 Registriert: 18.05.2012 Software: AutoCAD Mechanical 2022 (+LT) Inventor 2022 CIM Database Windows 11<P>Hardware: Intel Core i7 12700K NVIDIA RTX A4000 64GB RAM Logitech G502 Razer Tartarus
|
erstellt am: 18. Mai. 2021 15:38 <-- editieren / zitieren --> Unities abgeben:
|
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 18. Mai. 2021 15:40 <-- editieren / zitieren --> Unities abgeben: Nur für deadmau5er
Danke für das LOG, da ist (wie bei mir) kein Problem mit dem ß ersichtlich, Hire, keine Fehlermledung - der Befehl läuft weiter.. Ausgewählte Layer: Bemaßung (ISO). Objekt auf Layer zum Zusammenführen auswählen oder [Name/Rückgängig]: Aber offenbar hattest du keinen Layer DIMENSION in der Test-DWG, da wird dann logischerweise gemeckert:
Layernamen eingeben oder [?]: DIMENSION Ungültiger Layer-Name. _ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
deadmau5er Mitglied CAD/PDM Admin, Technischer Zeichner, Bauzeichner
Beiträge: 142 Registriert: 18.05.2012 Software: AutoCAD Mechanical 2022 (+LT) Inventor 2022 CIM Database Windows 11<P>Hardware: Intel Core i7 12700K NVIDIA RTX A4000 64GB RAM Logitech G502 Razer Tartarus
|
erstellt am: 18. Mai. 2021 15:40 <-- editieren / zitieren --> Unities abgeben:
|
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 18. Mai. 2021 15:45 <-- editieren / zitieren --> Unities abgeben: Nur für deadmau5er
Zitat: Original erstellt von deadmau5er: so, neue log datei hängt hinten dran. Es funktioniert bei mir soweit auch alles, bis auf das Thema des layers "Bemaßung (ISO)". Hier wird der Layer "Bemaßung (ISO)" angelegt.
Okay, ganz ein anderes Problem.. Da sind wir wohl bei dem Codex der Scriptdatei, Layereinstellung oder was weis ich. Speichere deine Scriptdatei mal als ASCII file ab, aktuell ist es UTF8 ohne BOM wennich das richtig sehe.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 18. Mai. 2021 15:48 <-- editieren / zitieren --> Unities abgeben: Nur für deadmau5er
Zitat: Original erstellt von deadmau5er: zum Layer DIMENSION auch neu anzulegen. Der wird neu angelegt, heißt intern bei uns anders, habe Firmenspezifische Layer aus dem Script genommen
Laut deinem LOG trifft das so nicht zu, deine eine Layer ist ok (auch wenn du den Namen eigentlich anders haben wolltest) und der DIMENSION wird angemeckert (also ist dieser nicht vorhanden)
-- Ich lege meine Glaskugel mal weg und bringe ein Paket zur Annahmestelle. Bewaffnet mit einem mobilen Endgerät lese ich weiter mit. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
deadmau5er Mitglied CAD/PDM Admin, Technischer Zeichner, Bauzeichner
Beiträge: 142 Registriert: 18.05.2012 Software: AutoCAD Mechanical 2022 (+LT) Inventor 2022 CIM Database Windows 11<P>Hardware: Intel Core i7 12700K NVIDIA RTX A4000 64GB RAM Logitech G502 Razer Tartarus
|
erstellt am: 18. Mai. 2021 16:10 <-- editieren / zitieren --> Unities abgeben:
Soo, dann versuche ich es erneut mit den Files Hoffe es klappt nun, wenn nicht, bitte ich um kurze Hilfestellung, wie ich es richtig exportieren soll. [Diese Nachricht wurde von deadmau5er am 18. Mai. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
deadmau5er Mitglied CAD/PDM Admin, Technischer Zeichner, Bauzeichner
Beiträge: 142 Registriert: 18.05.2012 Software: AutoCAD Mechanical 2022 (+LT) Inventor 2022 CIM Database Windows 11<P>Hardware: Intel Core i7 12700K NVIDIA RTX A4000 64GB RAM Logitech G502 Razer Tartarus
|
erstellt am: 18. Mai. 2021 16:14 <-- editieren / zitieren --> Unities abgeben:
Ok, Datei mit der Codierung "ANSI" gespeichert und schon kann es auch AutoCAD lesen und haut mir keine Hyroglyphen in die Befehlszeile Das heißt - es geht weiter in Runde 3 mit meinem Script. Hoffe, dass ich hier gut durch komme. Wenn nicht, werdet ihr von mir hören Vielen Lieben Dank nochmal bis hier hin! Viele Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Manuel486 Mitglied Technischer Zeichner Elektro
Beiträge: 212 Registriert: 31.01.2020
|
erstellt am: 20. Mai. 2021 09:34 <-- editieren / zitieren --> Unities abgeben: Nur für deadmau5er
Andere Schreibweise, wenn man es als Liste untereinander haben möchte. Hat für mich eine bessere Übersicht. Code: (command "_.-Layer" "_New" " AM_0, AM_3, AM_4 " "")
Ich nutze zum mehrfachen ausführen von Scripten: http://www.cadig.com/products/autocad-script-pro.php Auf "Try It" Klicken und auf der nächsten Seite bis nach unten zu AutoScript AutoScript for AutoCAD(Freeware) AutoScript for AutoCAD Scrollen. Ist auch bei Kommerzieller Nutzung Freeware. Habe es direkt beim Entwickler angefragt. Bei fragen zum Programm helfe ich gerne weiter, haben das bei uns ca. 1 Jahr im Einsatz. Ist aber im Prinzip selbsterklärend Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |