Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  Autocad AdWindows Ribbons

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:  Autocad AdWindows Ribbons (2658 mal gelesen)
veydan
Mitglied



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

Beiträge: 252
Registriert: 29.05.2008

AutoCAD/Mechanical 2009, Inventor 2009

erstellt am: 17. Jun. 2010 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

Hallo!
Ich habe mir einen Beispielcode für die Ribbons angesehen und probiert.
Funktioniert alles super bis auf 2 Dinge.
Wenn man auf den Klassischen Modus umschaltet, und dann wieder in den anderen (Ribbon-style), ist das neu dazugeladene Ribbonmenü nicht mehr da.
Die Definition ist beim Initialize der .dll.
Gibt es da ein Event in die Richtung, GUI_Changed von Autocad oder so?
Damit mein Ribbon wieder geladen wird.
Das 2 ist, dass ich die Bildgröße des Befehls im Ribbontab nicht ändern kann. es wird mir immer abgeschnitten und wenn ich es dementsprechend verkleinere komme ich nie an die Qualität der "Originalen".

mfg

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


Ex-Mitglied

erstellt am: 17. Jun. 2010 14:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Gibt es da ein Event in die Richtung, GUI_Changed von Autocad oder so?

Auswendig wüsste ich nichts, nachsehen würde ich bei EDITOR-Events, oder bei SysvarChanged-Event oder zuletzt bei CommandEnded-Event.

Der restliche Teil der Frage ist ohne Beispiel imho nicht zu beantworten, leider. 

- alfred -

------------------
www.hollaus.at

veydan
Mitglied



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

Beiträge: 252
Registriert: 29.05.2008

AutoCAD/Mechanical 2009, Inventor 2009

erstellt am: 18. Jun. 2010 09:08    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

Hallo,

edit:
Menü erstellen funktioniert teilweise.
Auf der Oberfläche ist es noch nicht zu sehen, aber wenn ich unter "cui" nachschaue ist es bei allen workspaces drinnen.
Erst wenn ich die Position verändere und auf Anwenden gehe ist es auch auf der Oberfläche.
Kann man das auch per Code auslösen?

mfg

[Diese Nachricht wurde von veydan am 18. Jun. 2010 editiert.]

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

veydan
Mitglied



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

Beiträge: 252
Registriert: 29.05.2008

AutoCAD/Mechanical 2009, Inventor 2009

erstellt am: 18. Jun. 2010 18: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

Hallo!
wenn FILEDIA auf 0 ist, dann sind doch Leerzeichen in Pfaden erlaubt oder?
Wenn ich jetzt über das Com AcadDocument Object ein SendCommand mache und einen Pfad mit leerzeichen angebe, akzeptiert er dass aber nicht...

Code:

Dim acadapp As AcadApplication = CType(ApplicationServices.Application.AcadApplication, AcadApplication)
acadapp.ActiveDocument.SendCommand("FILEDIA 0 " & vbCr)
'acadapp.ActiveDocument.SendCommand("0" & vbCr)
acadapp.ActiveDocument.SendCommand("_CUIUNLOAD " & vbCr)
acadapp.ActiveDocument.SendCommand(mainCuiFile & vbCr)
acadapp.ActiveDocument.SendCommand("_CUILOAD " & vbCr)
acadapp.ActiveDocument.SendCommand(mainCuiFile & vbCr)
acadapp.ActiveDocument.SendCommand("FILEDIA 1 " & vbCr)

Danach kommen dann die Fehlermeldungen dass die Anpassungsdatei nicht gefunden werden kann mit den einzelnen Pfadschritten jeweils nach einem Leerzeichen...

mfg

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


Ex-Mitglied

erstellt am: 18. Jun. 2010 20:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

nur kurz zwischendurch:

Bei diesem Statement  "FILEDIA 0 " & vbCr  ist doch entweder ein Leerschritt oder einmal vbCr zu viel, kommt der Fehler nicht daher?

- alfred -

------------------
www.hollaus.at

veydan
Mitglied



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

Beiträge: 252
Registriert: 29.05.2008

AutoCAD/Mechanical 2009, Inventor 2009

erstellt am: 18. Jun. 2010 21: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

nein, die Leerschritte müssten ihm ja auch egal sein, da er die ja nicht akzeptiert (habe es aber anders auch schon probiert).
In einem anderen Post hast du mir den Tipp gegeben, dass wenn Filedia auf 0 ist, Leerzeichen dann keine Eingabe sind, sondern vbcr zum "Enter" des Befehls führt.

Er schneidet mir einfach den Pfad des Menüfiles ab. Ich kann Hochkommas Vorne und Hinten anstellen was ich will.

Pfad:
C:\Users\Username\AppData\Roaming\Autodesk\AutoCAD Mechanical 2011\R18.1\deu\acadm.cuix
Folgende Meldungen bekomme ich:
1.
Fehler beim Laden der Anpassungsdatei. Datei wurde nicht gefunden:
C:\Users\Username\AppData\Roaming\Autodesk\AutoCAD

2.
Fehler beim Laden der Anpassungsdatei. Datei wurde nicht gefunden:
Mechanical

3.
Fehler beim Laden der Anpassungsdatei. Datei wurde nicht gefunden:
2011\R18.1\deu\acadm.cuix

mfg

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


Ex-Mitglied

erstellt am: 18. Jun. 2010 21:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

zu obigem mit dem Leerschritt: da meine ich, dass in der Befehlszeile durch das letzte vbCr der Befehl FILEDIA nochmals gestartet wird und dann auf 0 oder 1 wartet.

Egal, wenn Leerschritte beim Menüladen nicht funken, dann hätte ich das als Alternative anzubieten:
AcadApp.MenuGroups.Load(MenuFullFileName)

Wobei ich gerade in 3 SLN's gleichzeitig in Bearbeitung habe und daher auch Deine Situation jetzt nicht nachstellen bzw. probieren kann. Wird wohl erst des späteren werden, oder es hilft Dir oberes Statement schon (dann lass es mich bitte wissen).

Normalerweise sollten die Leerschritte zulässig sein, ich hab's bei mir in einem Code drin, nur mit dem kleinen Unterschied, dass ich mit Befehl _MENULOAD/_MENUUNLOAD und nicht _CUI... arbeite (sollte aber gleiches sein). Und sollte meines auch nicht funken, dann würden alle unsere Anwender mit englischem Betriebssystem aufschreien.

HTH, - alfred -

------------------
www.hollaus.at

veydan
Mitglied



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

Beiträge: 252
Registriert: 29.05.2008

AutoCAD/Mechanical 2009, Inventor 2009

erstellt am: 18. Jun. 2010 21: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

geht da auch analog: AcadApp.MenuGroups.UnLoad(MenuFullFileName) ?

Ist es überhaupt möglich die Hauptanpassungsdatei zu entladen und wieder zu laden, oder sollte man solche Custom Menüs in einer eigenen CUIX Datei erstellen?

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


Ex-Mitglied

erstellt am: 18. Jun. 2010 21:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Ist es überhaupt möglich die Hauptanpassungsdatei zu entladen

probiers bitte, ich weiss es nicht. 

Nur beim Entladen erinnere ich mich dunkel an einen Thread hier, dass diese Form von Unload dann nicht in dem Profil gespeichert blieb und beim nächsten Start von AutoCAD das Menü dann doch wieder geladen wurde. Lässt sich aber mittels Suche sicher schnell finden.


>> oder sollte man solche Custom Menüs in einer eigenen CUIX Datei erstellen?

JA, UNBEDINGT!!! Eigene CUI und als partielle CUI laden. 
Du willst ja nicht bei jedem Update von AutoCAD Dein Menü wieder nachbauen, Du willst sicher auch nicht die schon vorhandenen User-Einstellungen vernichten, indem Du einfach Deine HauptCUI drüberknallst, oder?

- alfred -

------------------
www.hollaus.at


Ex-Mitglied

erstellt am: 19. Jun. 2010 14:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

dieses funkt bei mir, Umweg über LISP, dann klappts auch mit den Leerschritten.

Code:

Dim acadapp As AcadApplication = CType(ApplicationServices.Application.AcadApplication, AcadApplication)
Dim tCuiFileName As String = "C:\TEMP\Test Dir Mit Leerschritten\ISHTrim_18_00.cuix"
Dim tLispStr As String = "(COMMAND ""_MENULOAD"" """ & tCuiFileName.Replace("\", "/") & """)"

acadapp.ActiveDocument.SendCommand("FILEDIA 0" & vbCr)
acadapp.ActiveDocument.SendCommand(tLispStr & vbCr)
acadapp.ActiveDocument.SendCommand("FILEDIA 1" & vbCr)


In Deinen SendCommands solltest Du trotzdem mit den Leerschritten aufpassen, ENTWEDER Leerschritt ODER vbCr, Du hast am Ende Deiner Zeilen immer beides gemacht, das führt dann zwangsläufig (in diesen Fällen) zur Befehlswiederholung.

- alfred -

------------------
www.hollaus.at

veydan
Mitglied



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

Beiträge: 252
Registriert: 29.05.2008

AutoCAD/Mechanical 2009, Inventor 2009

erstellt am: 21. Jun. 2010 12: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

Hallo!
Ich habe deinen Code mal in eine eigene Funktion gepackt, die ich in Autocad aufrufe über LoadMenu
Das FILEDIA 1 Command habe ich mal weggelassen
Er fragt nach dem ausführen der Funktion noch nach der Anpassungsdatei
Hier der Log der Befehlszeile:
Code:

Befehl: LOADMENU
Befehl: FILEDIA
Neuen Wert für FILEDIA eingeben <0>: 0
Befehl: (COMMAND "_MENULOAD" "CUIFILE")
_MENULOAD
Geben Sie den Namen der zu ladenden Anpassungsdatei an:
CUIFILE
CUIFILE
Geben Sie den Namen der zu ladenden Anpassungsdatei an: nil

CUIFILE = Der Pfad zu meiner Datei

edit:
Wenn ich die Menüdatei manuell laden will, bekomme ich die Meldung, dass eine Menüdatei "Fullpath der Datei" schon vorhanden sei?
Im CUI Dialog ist aber nichts zu finden.

Auf was wird da geprüft?

[Diese Nachricht wurde von veydan am 21. Jun. 2010 editiert.]

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


Ex-Mitglied

erstellt am: 21. Jun. 2010 13:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> CUIFILE = Der Pfad zu meiner Datei

Das steht aber nicht im Auszug Deiner Befehlszeile, zumindest sehe ich den Pfad nicht, da müsste etwas ähnliches stehen wie:

Code:
(COMMAND "_MENULOAD" "C:/TEMP/XXX.CUIX")


>> Wenn ich die Menüdatei manuell laden will, bekomme ich die Meldung,
>> dass eine Menüdatei "Fullpath der Datei" schon vorhanden sei?

Er prüft einerseits den Pfad (ob die Datei schon geladen ist) und andererseits die in der CUIX-Datei geladenen Gruppen. Als solches wird vermieden, dass Du z.B. 2 Gruppen mit dem Namen 'ACAD' hast.

- alfred -

------------------
www.hollaus.at

veydan
Mitglied



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

Beiträge: 252
Registriert: 29.05.2008

AutoCAD/Mechanical 2009, Inventor 2009

erstellt am: 21. Jun. 2010 13:55    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

Zitat:

>> CUIFILE = Der Pfad zu meiner Datei

Das steht aber nicht im Auszug Deiner Befehlszeile, zumindest sehe ich den Pfad nicht, da müsste etwas ähnliches stehen wie:

    Code:(COMMAND "_MENULOAD" "C:/TEMP/XXX.CUIX")




ersetzt du CUIFILE mit "C:/..../my.cuix" dann hast du meine Ausgabe, ich wollte das nur abkürzen, da der Pfad ja egal sein sollte wo die Datei liegt.

Ich habe aber schon herausgefunden, was nicht passt, ich wollte eine Menüdatei, wo nur mein Menü enthalten ist.So wie ich es aber jetzt gemacht habe ist es das Standard Autocad Menü incl meinem neuen.

Probiere noch, dass ich eine neue partielle Menüdatei automatisch erzeuge, dann dürfte das laden klappen.

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

veydan
Mitglied



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

Beiträge: 252
Registriert: 29.05.2008

AutoCAD/Mechanical 2009, Inventor 2009

erstellt am: 22. Jun. 2010 08: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

So, dass laden der CUI Datei funktioniert. Danke!

Ich habe jetzt nur noch Probleme, beim erstellen der Ribbons, ist nämlich der Workspace Autocad Klassisch aktiv, bekomme ich eine Fehlermeldung bei

Code:

Dim ribCntrl As Autodesk.Windows.RibbonControl = ComponentManager.Ribbon
'create a ribbontab
Dim ribTab As New RibbonTab()
'set a few properties
ribTab.Title = "MYTitle"
ribTab.Id = "MYID"
'add the tab to the ribbon
addContent(ribTab)
Dim ribTabColl As RibbonTabCollection
ribTabColl = ribCntrl.Tabs // FEHLER //
ribTabColl.Add(ribTab)
'set as active tab
ribTab.IsActive = True
SaveCurrentMainCUI()

Fehlermeldung ist, Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
Das Tabs Property hat aber Elemente wenn ich debugge...
Es funktioniert auch wenn der Workspace mit den Ribbons aktiv ist.
Ich möchte aber mein Menü gerne in beide Varianten einbauen, falls jemand umschaltet.

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


Ex-Mitglied

erstellt am: 22. Jun. 2010 08:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

Du kannst mit Variable RIBBONSTATE checken, ob Ribbons aktiviert sind oder nicht.

Nur eine Grundsatzfrage: wieso baust Du nicht normal ein Menü mit dem CUI-Befehl, das dann schon fertig ist, wenn Du Deine App startest? Das Erstellen der CUI über Programm ist in meinen Augen sehr aufwendig und ich sehe die Situation nicht, wozu ein Programm schreiben, wenn ich es mit CUI bereits fertig machen kann und das fertige lade.

- alfred -

------------------
www.hollaus.at

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