| |
 | 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 PRO Elite™ High Endurance microSD-Flash-Speicherkarten für Videoüberwachung und kontinuierliche Aufzeichnung, eine Pressemitteilung
|
Autor
|
Thema: Werkzeugkästen listen (1717 mal gelesen)
|
mkl-cad Mitglied Technischer Zeichner
 
 Beiträge: 378 Registriert: 23.07.2003 ACAD 2002 Express Tools 1-9 Architektural Desktop Windows XP Server Windows 2003 3 GHz Rechner 1 GB RAM 80 GB Festplatte ATI FireGL V3100 2 17" Flachbildschirme
|
erstellt am: 02. Feb. 2004 15:42 <-- editieren / zitieren --> Unities abgeben:         
Hallo an alle. Unter Werkzeugkästen anpassen werden ja alle geladenen Werkzeugkästen aus den jweiligen Menüs angezeigt. Wie kann ich die Listen der Werkzeugkästen und der geladenen Menüs mit Lisp abfragen. Danke schon mal Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
       

 Beiträge: 13530 Registriert: 30.11.2003 .
|
erstellt am: 02. Feb. 2004 16:19 <-- editieren / zitieren --> Unities abgeben:          Nur für mkl-cad
Eine Möglichkeit ( wenn auch eine sehr aufwendige ) ist über die Registry : mit (vl-registry-read "HKEY_LOCAL_MACHINE\\SOFTWARE\\ usw. läßt sich alles auslesen. Unter Autodesk\\Autocad\\...\\Toolbars sind die Variablen, weiterhin ob angezeigt, und Position der Werkzeugkästen. Vielleicht gibts ja noch was mit ActivX??? Gruß und viel Spaß erstmal Thomas ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mkl-cad Mitglied Technischer Zeichner
 
 Beiträge: 378 Registriert: 23.07.2003 ACAD 2002 Express Tools 1-9 Architektural Desktop Windows XP Server Windows 2003 3 GHz Rechner 1 GB RAM 80 GB Festplatte ATI FireGL V3100 2 17" Flachbildschirme
|
erstellt am: 02. Feb. 2004 16:39 <-- editieren / zitieren --> Unities abgeben:         
Danke, sowas in der Richtung hab ich mir schon gedacht. In der Richtung mit ActiveX-Funktionen habe ich mich leider noch nicht beschäftigt. Das hab ich bislang immer noch umgehen können. Leider fehlt mir, wie warscheinlich vielen Hobbyprogrammieren, die Zeit sich was neues beizubringen. Hat vielleich schon einer solch eine Liste gebastelt? Ob angezeigt währe natürlich auch prima. Position brauch ich nicht unbedingt. Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mkl-cad Mitglied Technischer Zeichner
 
 Beiträge: 378 Registriert: 23.07.2003 ACAD 2002 Express Tools 1-9 Architektural Desktop Windows XP Server Windows 2003 3 GHz Rechner 1 GB RAM 80 GB Festplatte ATI FireGL V3100 2 17" Flachbildschirme
|
erstellt am: 02. Feb. 2004 16:52 <-- editieren / zitieren --> Unities abgeben:         
|
Claudio Mitglied Architekt
 
 Beiträge: 334 Registriert: 13.04.2002
|
erstellt am: 02. Feb. 2004 19:52 <-- editieren / zitieren --> Unities abgeben:          Nur für mkl-cad
|
mkl-cad Mitglied Technischer Zeichner
 
 Beiträge: 378 Registriert: 23.07.2003 ACAD 2002 Express Tools 1-9 Architektural Desktop Windows XP Server Windows 2003 3 GHz Rechner 1 GB RAM 80 GB Festplatte ATI FireGL V3100 2 17" Flachbildschirme
|
erstellt am: 03. Feb. 2004 09:52 <-- editieren / zitieren --> Unities abgeben:         
Hallo Claudio Das ist schon sehr gut. Hab dazu hab ich aber noch Fragen: (setq menus (vla-get-menuGroups acadobj)) Mit dieser Zeile bekomme ich die den Namen der letzte Menüdatei. Wie bekomme ich die anderen? (vlax-for for-item menus (Setq IT (vlax-dump-object for-item) )) Hiermit bekomme ich alle Informationen. Wie gekomme ich alle Namen davon in eine Liste. bzw wie kann ich Inforamtionen daraus extrahieren. (Setq currMenuGroup (vla-item menus "AECARCHX")) (setq TBGruppe (vla-get-toolbars currMenuGroup)) (setq TBgesucht (vla-item TBGruppe "ADT2004")) Hier gibst Du die Namen für die Menügruppe und den Toolbars an. Deren Namen weis ich nicht immer und müßte daher auch eine Liste mit den Toolbars haben. Der User kann ja Toolbars umbenennen. Die Anregungen waren schon sehr gut und bringen mich ein gutes Sück voran. Aber wie gesagt, in diesem Bereich der Lisp-Programierung bin ich dumm. Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator

 Beiträge: 2494 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 03. Feb. 2004 11:37 <-- editieren / zitieren --> Unities abgeben:          Nur für mkl-cad
Hi mkl-cad, ich habe mal 'n paar Sub-Functions zu dem Thema aus claudios Code entwickelt: Code:
(vl-load-com) ;;; erzeugt 'ne Liste mit den Menünamen ;;; z.B.: ("EXPRESS" "Kabel" "Auskunft" "ACAD" "Tools" "ACMAP") (defun ONLY-MENU-NAMES () (mapcar (function (lambda (X) (car X))) (MENU-LIST)) ) ;_ end of defun ;;; erzeugt 'ne Liste mit den Menü-vla-Objekten ;;; z.B.: (#<VLA-OBJECT IAcadMenuGroup 010db3cc> #<VLA-OBJECT IAcadMenuGroup 010e85bc> ) (defun ONLY-MENU-OBJECTS () (mapcar (function (lambda (X) (cdr X))) (MENU-LIST)) )
;;; erzeugt 'ne Liste mit allen Toolbar-NAMEN für ein als Argument zu übergebenden Menü-Namen ;;; z.B.: ("ZOOM" "WEB" ...) ;;; InVisible? steuert, ob nur die sichtbaren zurückgegeben werden oder alle ;;; Argumente: ;;; MENUNAME = Name des Menüs ;;; InVisible? = Flag, T oder nil. Wenn T dann werden auch die unsichtbaren zurückgegeben (defun ONLY-TB-NAMES-FOR (MENUNAME INVISIBLE? /) (mapcar (function (lambda (X) (car X))) (ONLY-TB-FOR MENUNAME INVISIBLE?) ) ;_ end of mapcar ) ;_ end of defun ;;; erzeugt 'ne Liste mit allen Toolbar-VLA-OBJEKTEN für ein als Argument zu übergebenden Menü-Namen ;;; z.B.: (#<VLA-OBJECT IAcadToolbar 010a89bc> #<VLA-OBJECT IAcadToolbar 010a8fdc> ) ;;; InVisible? steuert, ob nur die sichtbaren zurückgegeben werden oder alle ;;; Argumente: ;;; MENUNAME = Name des Menüs ;;; InVisible? = Flag, T oder nil. Wenn T dann werden auch die unsichtbaren zurückgegeben (defun ONLY-TB-OBJECTS-FOR (MENUNAME INVISIBLE? /) (mapcar (function (lambda (X) (car X))) (ONLY-TB-FOR MENUNAME INVISIBLE?) ) ;_ end of mapcar ) ;_ end of defun ;;; erzeugt 'ne Liste mit allen Toolbars für ein als Argument zu übergebenden Menü-Namen ;;; z.B.: (("ZOOM" . #<VLA-OBJECT IAcadToolbar 010a89bc> ) ("WEB" . #<VLA-OBJECT IAcadToolbar 010a8fdc> )) ;;; InVisible? steuert, ob nur die sichtbaren zurückgegeben werden oder alle ;;; Argumente: ;;; MENUNAME = Name des Menüs ;;; InVisible? = Flag, T oder nil. Wenn T dann werden auch die unsichtbaren zurückgegeben (defun ONLY-TB-FOR (MENUNAME INVISIBLE? / RETVAL TBFOR) (setq TBFOR (if INVISIBLE? (TB-LIST) (TB-LIST-VISIBLE) ) ;_ end of if ) ;_ end of setq (if (setq RETVAL (assoc (strcase MENUNAME) TBFOR)) (cdr RETVAL) ) ;_ end of if ) ;_ end of defun ;;; Gibt 'ne assocable List like: ;;; ((("EXPRESS" . #<VLA-OBJECT IAcadMenuGroup 010db3cc> ))(("ACAD" . #<VLA-OBJECT IAcadMenuGroup 01089a8c> ))) ;;; Das erste Element ist immer der Name, das zweite das vla-Objekt für den Namen (defun MENU-LIST (/ RETVAL) (vlax-for FOR-ITEM (vla-get-menugroups (vlax-get-acad-object)) (setq RETVAL (cons (cons (strcase (vla-get-name FOR-ITEM)) FOR-ITEM) RETVAL ) ;_ end of cons ) ;_ end of setq ) ;_ end of vlax-for ) ;_ end of defun
;;; Gibt 'ne assocable List like: ;;; (("ACMAP" ("Klassifizierung" . #<VLA-OBJECT IAcadToolbar 0111fb4c> )...)("ACAD" ("Zoom" . #<VLA-OBJECT IAcadToolbar 010a89bc> )...)) ;;; Das erste Element ist der Menü-Name ;;; Das zweite eine Liste bei dem wiederum das erste Element Der Toolbar-Name ist und das zweite das vla-object zum Namen (defun TB-LIST (/ RETVAL TEMPVAL) (foreach ELEM (ONLY-MENU-OBJECTS) (vlax-for FOR-ITEM (vla-get-toolbars ELEM) (setq TEMPVAL (cons (cons (strcase (vla-get-name FOR-ITEM)) FOR-ITEM) TEMPVAL ) ;_ end of cons ) ;_ end of setq ) ;_ end of vlax-for (setq RETVAL (cons (cons (strcase (vla-get-name ELEM)) TEMPVAL) RETVAL) TEMPVAL NIL ) ;_ end of setq ) ;_ end of foreach retval ) ;_ end of defun ;;; Wie TB-List, jedoch werden nur sichtbare Toolbars gelistet (defun TB-LIST-VISIBLE (/ RETVAL TEMPVAL) (foreach ELEM (TB-LIST) (setq TEMPVAL (vl-remove-if (function (lambda (X) (= (vla-get-visible (cdr X)) ':vlax-false) ) ;_ end of lambda ) ;_ end of function (cdr ELEM) ) ;_ end of vl-remove-if RETVAL (cons (cons (car ELEM) TEMPVAL) RETVAL) TEMPVAL NIL ) ;_ end of setq
) ;_ end of foreach RETVAL ) ;_ end of defun
Zur Verwendung der Sub's lies bitte die Kommentare. Beispiele: ->(ONLY-TB-NAMES-FOR "Acad" T) erzeugt 'ne Liste aller im Menü "Acad" definierter Toolbars ->(ONLY-TB-NAMES-FOR "Acad" nil) erzeugt 'ne Liste aller sichtbaren Toolbars des Menüs "Acad" ->(ONLY-MENU-NAMES) erzeugt 'ne Liste der Namen aller geladenen Menüs ------------------ Ciao, Marc
[Diese Nachricht wurde von marc.scherer am 03. Feb. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mkl-cad Mitglied Technischer Zeichner
 
 Beiträge: 378 Registriert: 23.07.2003 ACAD 2002 Express Tools 1-9 Architektural Desktop Windows XP Server Windows 2003 3 GHz Rechner 1 GB RAM 80 GB Festplatte ATI FireGL V3100 2 17" Flachbildschirme
|
erstellt am: 03. Feb. 2004 11:51 <-- editieren / zitieren --> Unities abgeben:         
|
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator

 Beiträge: 2494 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 03. Feb. 2004 12:10 <-- editieren / zitieren --> Unities abgeben:          Nur für mkl-cad
|
mkl-cad Mitglied Technischer Zeichner
 
 Beiträge: 378 Registriert: 23.07.2003 ACAD 2002 Express Tools 1-9 Architektural Desktop Windows XP Server Windows 2003 3 GHz Rechner 1 GB RAM 80 GB Festplatte ATI FireGL V3100 2 17" Flachbildschirme
|
erstellt am: 09. Feb. 2004 09:40 <-- editieren / zitieren --> Unities abgeben:         
Hallo Marc Vielleicht haste dafür auch ne Lösung Hab es nun soweit das gewünschte Werkzeugkästen eingeschaltet werden. Wenn das dazugehörige Menü nicht geladen ist und ich es mit (command "menülad" (strcat menu ".MNS")) laden möchte bekomme ich Probleme: ; Fehler: Ausnahmebedingung aufgetreten: 0xC0000005 (Zugriffsverletzung) ; Fehler: Ausnahmebedingung aufgetreten: 0xC0000005 (Zugriffsverletzung) ; Fehler: Ausnahmebedingung aufgetreten: 0xC0000005 (Zugriffsverletzung)
ACAD wartet anscheinend nicht darauf bis die Menüs geladen sind und dann die dazugehörigen Werkzeugkästen anzuzeigen. Hab auch schon eine Schleife gebaut die alle geladenen Menüs ständig abfragt und dann das Programm weiterlaufen läßt. Tuts aber nicht. Getrennt (Menüs laden/Werkzeugkästen einschalten) funktioniert es.
Martin [Diese Nachricht wurde von mkl-cad am 09. Feb. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator

 Beiträge: 2494 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 09. Feb. 2004 10:05 <-- editieren / zitieren --> Unities abgeben:          Nur für mkl-cad
|
mkl-cad Mitglied Technischer Zeichner
 
 Beiträge: 378 Registriert: 23.07.2003 ACAD 2002 Express Tools 1-9 Architektural Desktop Windows XP Server Windows 2003 3 GHz Rechner 1 GB RAM 80 GB Festplatte ATI FireGL V3100 2 17" Flachbildschirme
|
erstellt am: 03. Mrz. 2004 11:42 <-- editieren / zitieren --> Unities abgeben:         
Hallo Kann mir jetzt noch jemand sagen wie ich die Position der angezeigten Werkzeugkästen abfragen kann bzw. einem Werkzeugkasten sagen soll das er genau dort wieder erscheinen soll? Danke Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
       

 Beiträge: 13530 Registriert: 30.11.2003 .
|
erstellt am: 03. Mrz. 2004 11:50 <-- editieren / zitieren --> Unities abgeben:          Nur für mkl-cad
gib mal (vlax-for FOR-ITEM (vla-get-menugroups (vlax-get-acad-object)) (vlax-for FOR-TOOLBAR (vla-get-toolbars FOR-ITEM) (vlax-dump-object FOR-TOOLBAR) ) ) in der Befehlszeile ein! .. da gibts die Eigenschaften LEFT / TOP / und Visible die du mit (vlax-put-property TOOLBAR-VLA-OBJECT 'Eigenschaft Wert) setzen kannst.
------------------ - Thomas - Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mkl-cad Mitglied Technischer Zeichner
 
 Beiträge: 378 Registriert: 23.07.2003 ACAD 2002 Express Tools 1-9 Architektural Desktop Windows XP Server Windows 2003 3 GHz Rechner 1 GB RAM 80 GB Festplatte ATI FireGL V3100 2 17" Flachbildschirme
|
erstellt am: 03. Mrz. 2004 15:04 <-- editieren / zitieren --> Unities abgeben:         
Hallo Ich muß immer wieder feststellen das ich zu dumm bin. Doof wollte ich nicht schreiben. Dachte mit den oben aufgeführten Funktionen käme ich weiter und könnte anstatt vla-get-name vla-get-left oder vla-get-top einsetzen. Aber das funktioniert nicht. Da ich mit disen vla-dingsdabums Befehlen keine Spur einer Ahnung habe bräuchte ich nochmal Hilfe. Eine Liste der Menüs habe ich ! Eine Liste der Werkzeugleisten habe ich! Nun bräuchte ich noch eine Liste der Werkzeugleisten mit den dazugehörigen LEFT und TOP Danke
Ich glaube das ganze wird mir zu umfangreich. Das Setzten von Left und Top funktioniert bei den Werkzeugleisten auch nur wenn die nicht oben in den Leisten festhängen. Also frei auf dem Bildschirm sind. Mir gings quasi darum das wenn ACAD gestartet wird und ein Menü geladen wird das irgendein Trottel entfernt hat, die Werkzeugleisten nicht ganz genau dort sind wo sie vorher waren. Das Verschwinden von Menüs passiert bei uns ab und zu wenn ein Rechner keine vernünftige Netzwerkverbindung hat. bzw. ab und zu fehlt der Zugriff auf das richtige Laufwerk. Wenn man dann ACAD beendet und den Rechner neu startet läd mein Startprogramm die Menüs neu (ACAD behält ja die letzte Einstellung und so fehlen Menüs)und sortiert die Pull-Down Menüs. Nur das Sortieren der Werkzeugleisten in den alten Zustand muß man mit Hand machen. Sind allerdings auch nur 5 Leisten die verschoben werden müssen. [Diese Nachricht wurde von mkl-cad am 03. Mrz. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Geos Mitglied Vermessungstechniker i.R.
   
 Beiträge: 1017 Registriert: 21.09.2001 ACAD Map 2010, Win 7 Pro eigene Lisp's<P>HW: Core i7 860, 2.8 GHz 3.3 GB, NVIDIA GeForce GTS 250
|
erstellt am: 04. Mrz. 2004 08:17 <-- editieren / zitieren --> Unities abgeben:          Nur für mkl-cad
Hi Du könntest Deine Einstellungen (als Profil) speichern und dieses Profil beim Start mitgeben (..../acad.exe /P profilname) Hab hier kein ACAD - hoffe die Syntax stimmt. Vielleicht hilfts. ------------------ Gruß, Ernst Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |