| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | |  | Von Digital Twins bis Hochleistungs-Computing: PNY präsentiert seine Zukunftstechnologien für die Industrie von morgen, eine Pressemitteilung
|
Autor
|
Thema: Voreinstellung für Dialog-Fenster durch den CommandManager mittels PostPrivateEvent (1242 / mal gelesen)
|
Ticky72 Mitglied

 Beiträge: 35 Registriert: 17.02.2016 Inventor 2019 Win7 64Bit
|
erstellt am: 11. Mrz. 2019 17:13 <-- editieren / zitieren --> Unities abgeben:         
Hallo, bevor ich zu meinen Fragen komme hier vorab der Code:
Code:
Sub Einsatz_einfuegen() Dim cm As CommandManager Set cm = ThisApplication.CommandManager Call cm.PostPrivateEvent(kFileNameEvent, "e:\Arbeitsverzeichnis\Bauteil Einsatz.ipt") Dim cd As ControlDefinition Set cd = cm.ControlDefinitions("AssemblyPlaceComponentCmd") Call cd.Execute2(True) End Sub
Ich rufe also den Befehl '(Komponente) Platzieren' auf. Nun ist es leider so, dass das Fenster mit den Einstellungen 'Wie zuletzt geöffnet' geöffnet wird. Dadurch passiert es, dass es für das Platzieren der Komponente drei verschiedene Möglichkeiten gibt: 1. ohne iMates 2. Interaktiv mit iMates 3. iMates automatisch an Position erstellen Kann man im PostPrivateEvent hier eine Voreinstellungen vornehmen? Ich konnte leider zum Thema PrivateEventTypeEnum nur etwas über das kFileNameEvent finden. Kennt vielleicht jemand eine Quelle (Internet, API-Hilfe, usw.) zu Informationen wie man die kCommandNameEvent, kDimensionEvent, kNameEvent und kStringEvent anwendet? Schönen Grüße Helmut Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KraBBy Mitglied Maschinenbau-Ingenieur
  
 Beiträge: 736 Registriert: 19.09.2007 Inventor Professional 2020 WinX
|
erstellt am: 14. Mrz. 2019 12:09 <-- editieren / zitieren --> Unities abgeben:          Nur für Ticky72
vermutlich ist das PostPrivateEvent nicht dafür gemacht (nicht dass ich dafür Experte wäre...). In der Hilfe dazu steht sinngemäß, dass ein Dialogfeld gar nicht erst hochkommt, wenn vorher "passende" Inhalte im PostPrivateEvent abgelegt werden. Mein Gedanke wäre, die Stelle zu finden, in der die "wie zuletzt-Einstellung" abgelegt ist und diese zu manipulieren. Evtl. ist die Registry unter HKEY_CURRENT_USER\Software\Autodesk\Inventor\RegistryVersion20.0\System\Preferences\Assembly schon richtig. Da gibt es zumidest einen Schlüssel der "UseiMate" heißt... ------------------ Gruß KraBBy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
Ticky72 Mitglied

 Beiträge: 35 Registriert: 17.02.2016 Inventor 2019 Win7 64Bit
|
erstellt am: 14. Mrz. 2019 17:29 <-- editieren / zitieren --> Unities abgeben:         
Hallo KraBBy, danke für deine Antwort. Da ich die VBA-Makros für eine andere Abteilung bei mir in der Firma schreibe, werde ich lieber die Finger von der Registry lassen. Einfach um des Frieden willen, sollte dort einmal der ein oder andere Rechner Probleme machen. Meine Kollegen haben die Vorstellung, eine VBA-Makro soll möglichst viel automatisieren und gleichzeitig flexibel bleiben. Meiner Ansicht nach nicht leicht zu kombinieren. So nutze ich hin und wieder das im ersten Beitrag geschriebene Codegerüst um eine Art Halbautomation zustande zu bringen. Hier mal ein Beispiel: Ein bestimmtes iFeature muss immer auf einen Skizzenpunkt einer bestimmten Skizze eingefügt werden. Das Makro sucht die Skizze, wenn sie nicht gefunden wird kann der Anwender eine vorhandene Skizze umbenennen. Danach bekommt er genau sein benötigtes iFeature, in dem Fall ein tabellengesteuertes iFeature, und kann nun selbst entscheiden, wie er es verbaut. Zum Schluss benennt das Makro bzw. der Call anhand der iFeature-Tabelle das iFeature um. Code:
Sub Versteifung_einfuegen() Dim oApp As Application Set oApp = ThisApplication If oApp.Documents.Count = 0 Then Exit Sub If Not oApp.ActiveDocument.DocumentType = kPartDocumentObject Then Exit Sub Dim oPartDoc As PartDocument Set oPartDoc = oApp.ActiveDocument Dim oPartDef As PartComponentDefinition Set oPartDef = oPartDoc.ComponentDefinition 'Skizze suchen Dim oSketch As PlanarSketch Dim sSketchname As String sSketchname = "SK_Versteifung" Set oSketch = GetSketchByNameNEW(sSketchname) If oSketch Is Nothing Then Dim sAntwort As String sAntwort = MsgBox("Skizze 'SK_Versteifung' nicht gefunden! Vorhandene Skizze umbenennen?", vbYesNo, "Skizze 'SK_Versteifung'") If sAntwort = vbNo Then MsgBox "Es wird kein iFeature eingefügt!" Exit Sub End If 'MsgBox "Bitte Skizze zum umbenennen auswählen!" Dim oCmdMgr As CommandManager Set oCmdMgr = ThisApplication.CommandManager Set oSketch = oCmdMgr.Pick(kSketchObjectFilter, "Bitte Skizze auswählen") If oSketch Is Nothing Then Exit Sub End If oSketch.Name = "SK_Versteifung" End If oSketch.Visible = True Dim cm As CommandManager Set cm = ThisApplication.CommandManager Call cm.PostPrivateEvent(kFileNameEvent, "x:\IFeature\Versteifung.ide") Dim cd As ControlDefinition Set cd = cm.ControlDefinitions("PartiFeatureInsertCmd") Call cd.Execute2(True) Call Versteifungen_identifizieren End Sub
Darum auch meine Interesse an den Möglichkeiten des PostPrivateEvent. Bei meinem Anfangs beschriebenen Problem werde ich nun versuchen, mittels VBA iMates in den gewünschten Bauteilen zu setzen und den Code durch einen simplen Einzeiler ersetzen.
Code:
Call ThisApplication.ActiveDocument.ComponentDefinition.Occurrences.AddUsingiMates("e:\Arbeitsverzeichnis\Bauteil Einsatz.ipt", False)
Schöne Grüße Helmut Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |