Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Voreinstellung für Dialog-Fenster durch den CommandManager mittels PostPrivateEvent

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:  Voreinstellung für Dialog-Fenster durch den CommandManager mittels PostPrivateEvent (1089 mal gelesen)
Ticky72
Mitglied



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

Beiträge: 35
Registriert: 17.02.2016

Inventor 2019
Win7 64Bit

erstellt am: 11. Mrz. 2019 17:13    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,

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


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

Beiträge: 601
Registriert: 19.09.2007

Inventor Professional 2020
WinX

erstellt am: 14. Mrz. 2019 12:09    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 Nur für Ticky72 10 Unities + Antwort hilfreich

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



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

Beiträge: 35
Registriert: 17.02.2016

Inventor 2019
Win7 64Bit

erstellt am: 14. Mrz. 2019 17:29    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 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 >>)

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