| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: Befehl layer erweitern (2502 mal gelesen)
|
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 09. Nov. 2012 13:18 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe ein Problem mit der Erweiterung des Befehls layer. In AutoCAD (Mechanical) 2009 konnte ich diesen Befehl verwenden, wie er in der Anlage vorhanden ist. In AutoCAD (Mechanical) 2012 startet die Funktion layer_alle_kontrollieren bevor der Layereigenschaften-Manager beendet ist. Das darf so nicht sein. Deshalb kam mir die Idee, vor der Funktion layer_alle_kontrollieren zu kontrollieren, ob der Layereigenschaften-Manager noch offen (bzw. bereits geschlossen) ist. Ist das der richtige Weg? Wie kann ich den Status (gestartet / beendet) des Layereigenschaften-Managers kontrollieren? Danke im Voraus und viele Grüße Bernd
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 09. Nov. 2012 13:32 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd10
|
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 09. Nov. 2012 13:58 <-- editieren / zitieren --> Unities abgeben:
Hallo Udo, danke für Deine Antwort. Zitat: Original erstellt von CAD-Huebner: Verwende nicht (command "_.layer") sondern (command "_.classiclayer") oder setze LAYERDLGMODE auf 0, um der Layerdialog (der beendet werden muss) aufzurufen, anstatt die Layer-Palette aufzurufen.
Es funktioniert beides. Ich würde aber gerne die Layer-Palette beibehalten. Es gibt die Systenvariable cmdactive, mit der ich kontrollieren kann, ob in der Befehlszeile noch etwas steht (bzw. ein Befehl gestartet ist). Gibt es eine vergleichbare Variable (oder Möglichkeit), mit der ich kontrollieren kann, ob eine (bestimmte) Palette gestartet ist? Viele Grüße Bernd
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 09. Nov. 2012 14:39 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd10
Zitat: Original erstellt von Bernd10:mit der ich kontrollieren kann, ob eine (bestimmte) Palette gestartet ist?
Neckisch würde ich jetzt korrekt antworten mit: JA ! Aber ich befürchte das du deine Frage nicht so ganz korrekt gestellt hast (alert (if (zerop(getvar"LAYERMANAGERSTATE")) "Palette geschlossen" "Palette gestartet"))
------------------ CAD.de System-Angaben - CAD on demand - User:FAQ(Acad) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 09. Nov. 2012 15:36 <-- editieren / zitieren --> Unities abgeben:
Hallo cadffm, danke für Deine Antwort. Zitat: Original erstellt von cadffm:
(alert (if (zerop(getvar"LAYERMANAGERSTATE")) "Palette geschlossen" "Palette gestartet"))
So eine Kontrolle habe ich gesucht. Ich muss jetzt noch testen, wie ich es in meiner Funktion verwenden kann. Bei Fragen dazu melde ich mich wieder. Viele Grüße Bernd
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 12. Nov. 2012 12:08 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd10
Die Layerpalette ist ein Nichtmodaler Dialog, d.h. nach dem Start dieses Dialoges kann man diesen aber auch das Hauptfenseterr (in dem Fall Acad bzw. das laufende Lispprogramm) ansprechen. Dadurch läuft das Lispprogramm sofort nach STart der Layerpalette weiter. Ich denke, dass sich deswegen die Layerpalette GENRELL NICHT für Lispprogramme eigenen, sollte sie nicht nur final (alkso am Schluss des Programmablaufes) gestartet werden. Irgendwelche Hilfkonstrukte , um auf das Beenden der layerpalette zu warten, gehen meist nur unnötigerweise ungünstig auf das generelle Laufzeitverhalten von acad. PS: da die Layerpalette ihren Layerstatus immmer aktuell halten muss (das tut sie auch im nichtgeöffneten Zustand - wenn sie einmal offen war), ist sie ein ziemlich resourcenfressendes Monster. Ich schalte deswegen immer auf den klassischen Layerdialog zurück.
[Diese Nachricht wurde von fuchsi am 12. Nov. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 12. Nov. 2012 12:15 <-- editieren / zitieren --> Unities abgeben:
Hallo fuchsi, danke für Deine Antwort. Zitat: Original erstellt von fuchsi:
Ich denke, dass sich deswegen die Layerpalette GENRELL NICHT für Lispprogramme eigenen, sollte sie nicht nur final (alkso am Schluss des Programmablaufes) gestartet werden.
Durch meine bisherigen Tets geht die Tendenz bei mir auch zum Klassiklayer. Da ich im Moment aber ein anders Thema vorziehen muss, dauert es noch etwas bis zu meiner Entscheidung. Ich melde mich dann aber wieder. Viele Grüße Bernd
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 12. Nov. 2012 12:30 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd10
Ich als Anweder würde es nicht verstehen denn ich habe den Dialog immer gestartet (aber automatisch ausgeblendet), dein Programm würde mich nötigen die Palette zu schließen, womit ich 1. nicht rechne und 2. ich es nicht möchte. (deswegen war ich auch der Meinung das dich diese Sysvar nicht weiterbringt und es über Lisp keine Möglichkeit gibt die Palette sinnvoll zu verwenden) ------------------ CAD.de System-Angaben - CAD on demand - User:FAQ(Acad) [Diese Nachricht wurde von cadffm am 12. Nov. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 12. Nov. 2012 16:20 <-- editieren / zitieren --> Unities abgeben:
Hallo cadffm, Zitat: Original erstellt von cadffm:
Ich als Anweder würde es nicht verstehen denn ich habe den Dialog immer gestartet (aber automatisch ausgeblendet), dein Programm würde mich nötigen die Palette zu schließen, womit ich 1. nicht rechne und 2. ich es nicht möchte.
eigentlich stimme ich Dir zu, weshalb ich eigentlich wie oben geschrieben die Palette verwenden wollte. Da ich aber entsprechend unserer internen Vorgabe die Namen der (neuen und geänderten) Layer kontrollieren (und gegebenenfalls ändern) muss, habe ich keine Möglichkeit dafür in Verbindung mit der Palette gefunden. Deshalb bleibt mir nach meinem jetztigen Kenntnisstand nur die Alternative mit dem Klassiklayer, da hiermit die Kontrolle möglich ist. Viele Grüße Bernd
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 12. Nov. 2012 16:25 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd10
Ich denke cadffm meint eher, dass er nicht akzeptieren würde, wenn irgendein (Lisp) Programm seinen gewohnten Autocad-Desktop verändern würde. Die Layer Palette kann man z.B.: ja auch fix angedockt haben, wenn nun ein Lispprogramm auf die Beendigung der Palette wartet, ist das eben störend, da damit die gewohnte Palttenanordnung flöten geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 12. Nov. 2012 18:21 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd10
Genau so ! Wenn ein Lispprogramm darauf wartet das ich die Layereigenschaften-Palette schließe, da kann es lange warten, ich käme nicht mal auf die Idee das es so sein könnte. Und Wenn mich jemand dazu zwingen würde, nach dem ich es weiß, da würde ich dann wohl fragen "ob es noch geht" Wenn mir aber der KLASSLAYER kurz vor die Nase gesetzt wird, den MUSS ich ja (logischerweise) wegklicken, dann ist es was anderes. Da merkt man ja dann auch das es mit dem offenen Dialog nicht weitergeht. ------------------ CAD.de System-Angaben - CAD on demand - User:FAQ(Acad) [Diese Nachricht wurde von cadffm am 12. Nov. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 13. Nov. 2012 06:28 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd10
Hallo CADffm, na ich glaube, dann würdest Du mich hassen Für manche Programmabläufe, die Performance-Mäßig durch den ganzen, ich nenne es mal SchnickSchnack, ausgbebremst werden hatte ich mir mal eine gesonderte Ini- und ReIni-Funktion geschrieben, die zu Beginn alles schließt was offen ist und nach dem Programm natürlich wieder öffnet (wobei die Positionen usw. natürlich erhalten bleiben). Bis jetzt gab es keine Beschwerden. Code:
;;;In globale Variable die Einstellungen typischer ACAD-Fenster schreiben ;;;und diese dann schliessen, wenn geöffnet (defun JB_SchnickSchnack:Init ( / ) (setq JB_SchnickSchnack$$glob (list (cons "OPMSTATE" (getvar "OPMSTATE")) (cons "LAYERMANAGERSTATE" (getvar "LAYERMANAGERSTATE")) (cons "DBCSTATE" (getvar "DBCSTATE")) (cons "ERSTATE" (getvar "ERSTATE")) (cons "ADCSTATE" (getvar "ADCSTATE")) (cons "NAVVCUBEDISPLAY" (getvar "NAVVCUBEDISPLAY")) (cons "NAVBARDISPLAY" (getvar "NAVBARDISPLAY")) (cons "UCSICON" (getvar "UCSICON")) (cons "DYNMODE" (getvar "DYNMODE")) )) (mapcar '(lambda(A) (if (cdr A) (cond ((=(car A) "OPMSTATE");;;Eigeschaften (if (=(cdr A)1) (command "_.propertiesclose"))) ((=(car A) "LAYERMANAGERSTATE");;;Layer (if (=(cdr A)1) (command "_.layerclose"))) ((=(car A) "DBCSTATE");;;Datenbankmanager (if (=(cdr A)1) (command "_.dbcclose"))) ((=(car A) "ERSTATE");;;XREF-Manager (if (=(cdr A)1) (command "_.EXTERNALREFERENCESCLOSE"))) ((=(car A) "ADCSTATE");;;DesignCenter (if (=(cdr A)1) (command "_.adcclose"))) ((=(car A) "NAVVCUBEDISPLAY");;;ViewCube (if (cdr A)(setvar "NAVVCUBEDISPLAY" 0))) ((=(car A) "NAVBARDISPLAY");;;Navigations-Bar (if (cdr A)(setvar "NAVBARDISPLAY" 0))) ((=(car A) "UCSICON");;;UCS-SYMBOL (setvar "UCSICON" 0)) ((=(car A) "DYNMODE");;;dynamische Eingabe (if (cdr A)(setvar "DYNMODE" 0))) )))JB_SchnickSchnack$$glob) ) ;;;typische AutoCAD-Fenster wieder öffnen, wenn Informationen ;;;dazu in der globalen Variablen hinterlegt sind (defun JB_SchnickSchnack:ReInit ( / ) (mapcar '(lambda(A) (if (cdr A) (cond ((=(car A) "OPMSTATE");;;Eigeschaften (if (=(cdr A)1) (command "_.properties"))) ((=(car A) "LAYERMANAGERSTATE");;;Layer (if (=(cdr A)1) (progn (initdia) (command "_.layer") ))) ((=(car A) "DBCSTATE");;;Datenbankmanager (if (=(cdr A)1) (command "_.dbconnect"))) ((=(car A) "ERSTATE");;;XREF-Manager (if (=(cdr A)1) (command "_.externalreferences"))) ((=(car A) "ADCSTATE");;;DesignCenter (if (=(cdr A)1) (command "_.adcenter"))) ((=(car A) "NAVVCUBEDISPLAY");;;ViewCube (setvar "NAVVCUBEDISPLAY" (cdr A))) ((=(car A) "NAVBARDISPLAY");;;Navigations-Bar (if (cdr A)(setvar "NAVBARDISPLAY" (cdr A)))) ((=(car A) "UCSICON");;;UCS-SYMBOL (setvar "UCSICON" (cdr A))) ((=(car A) "DYNMODE");;;dynamische Eingabe (setvar "DYNMODE" (cdr A))) )))JB_SchnickSchnack$$glob) )
------------------ viele Grüße Jörn http://www.bosse-engineering.com VektorAdd-HD-Youtube Stammtisch in Wolfsburg am 03.12. oder 10.12.2012 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 13. Nov. 2012 08:00 <-- editieren / zitieren --> Unities abgeben:
Hallo, mir ist noch die Idee mit einem Reaktor eingefallen. Kann ich mit einem Rekator "überwachen", ob etwas in der Palette geändert wird/wurde? Und mit welchem Reaktor wäre das dann? Danke im Voraus und viele Grüße Bernd
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 13. Nov. 2012 08:15 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd10
|
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 13. Nov. 2012 09:45 <-- editieren / zitieren --> Unities abgeben:
Hallo CADmium, danke für Deine Antwort. Zitat: Original erstellt von CADmium:
vielleicht kommste mit dem acdb-reactor weiter, je nachdem , was mit der Palette geändert wurde ...
Ich werde mich darüber näher informieren. Es dauert bis dahin aber etwas, da ich andere Themen vorziehen muss. Viele Grüße Bernd
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 13. Nov. 2012 22:08 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd10
|
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 15. Nov. 2012 12:03 <-- editieren / zitieren --> Unities abgeben:
Hallo, leider kann ich den Reaktor acdb-reactor nicht verwenden, da in der Unterfunktion der Reaktor-Funktion diese Aufrufe beinhaltet sind - (vla-put-stylesheet (vla-get-activelayout (vla-get-activedocument (vlax-get-acad-object))) "xyz.stb") - (command "_.rename" "_la" clayerist clayersoll) - (vla-put-plotstylename (vla-item (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))) clayerist) cplotstilname) und zu einem Abbruch führen. Ich versuche als Nächstens die Palette mit Hilfe eines Skrips zu starten. Viele Grüße Bernd
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 15. Nov. 2012 12:53 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd10
|
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 15. Nov. 2012 13:59 <-- editieren / zitieren --> Unities abgeben:
Hallo, Zitat: Original erstellt von Bernd10:
Ich versuche als Nächstens die Palette mit Hilfe eines Skrips zu starten.
mit einem Script kann ich leider die Layer-Palette auch nicht verwenden, da ich damit unsere internen Vorgaben nicht zuverlässig einhalten kann. Ich habe dabei das gleiche Problem wie bei meiner bisherigen Version, bei der die Layer an der falschne Stelle kontrolliert werden. Deshalb habe ich mit den Anwendern abgesprochen, dass wir den Klassiklayer verwenden (siehe Anlage). Danke nochmals an alle und viele Grüße Bernd
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |