Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor .NET
  Browsersteuerung über API

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:  Browsersteuerung über API (1025 mal gelesen)
A13
Mitglied



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

Beiträge: 12
Registriert: 30.06.2015

erstellt am: 02. Jul. 2015 09: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,
jetzt habe ich im dritten Anlauf das richtige Forum für diese Frage gefnuden, glaube ich:

ich habe mit MS Visual Studio ein Programm geschrieben, das mir ein Modell im Inventor 2014 erzeugt und dieses dann mit der Belastungsanalyse durchrechnet. Soweit so gut. Das einzige was noch fehlt ist folgendes: Der Anwender kann zwischen 3 Belastungsfällen wählen. Im Modell/Part werden dann bestimmte Features unterdrückt (klappt soweit). Nun sollen sich aber die "Festgelegten Abhängigkeiten" in der Belastungsanalyse auch unterdrücken.
Als Beispiel: in Inventor gibt es die Abhängigkeiten A, B und C. Klicke ich nun in meinem Programm auf den button A, soll Abhängigkeit A unterdrückt (also nicht mitsimuliert) werden. Das kriege ich absolut nicht hin. Des befehl dafür habe ich in den CommandDefinitions schon gefunden, aber die Features bekomme ich nicht angesprochen.
Hat das schonmal jemand gemacht und kann mir helfen?
Gruß Andreas

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

A13
Mitglied



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

Beiträge: 12
Registriert: 30.06.2015

erstellt am: 02. Jul. 2015 09: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

Jetzt ist der Titel falsch 
Könnte ein Moderator den bitte in "Belastungsanalyse über API steuern" ändern? Sorry :/

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

Chris 31
Mitglied
Konstrukteur und Mädchen für alles


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

Beiträge: 575
Registriert: 23.04.2013

Inventor 2015 Professional
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 02. Jul. 2015 10: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 Nur für A13 10 Unities + Antwort hilfreich

Dann zeig uns doch mal den relevanten Teil deines Codes und sage uns, was genau du denn nicht hinbekommst, bzw. wo es hakt.

------------------
MFG

Chris

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

A13
Mitglied



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

Beiträge: 12
Registriert: 30.06.2015

erstellt am: 02. Jul. 2015 10:33    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

Also:
(Abfangroutinen usw erstmal außen vor gelassen)

Code:

'hier wird das Part bearbeitet, wie es für die Simulation aussehen muss
'die Inventor.application heißt "app"

' Update des Parts
        app.ActiveDocument.Update()

'Dokument als Part definieren:
        Dim partdoc As PartDocument
        partdoc = app.ActiveDocument

'FEM- Umgebung aktivieren
        Try
            Dim UIManager As UserInterfaceManager
            UIManager = app.UserInterfaceManager
            If UIManager.ActiveEnvironment.InternalName <> "FEA Environment Internal Name" Then '=Belastungsanalyse

                Dim environmentMgr As EnvironmentManager  ' Umgebungsmanager
                environmentMgr = partdoc.EnvironmentManager

                Dim dsEnv As Inventor.Environment
                dsEnv = UIManager.Environments.Item("FEA Environment Internal Name")'=Belastungsanalyse
                Call environmentMgr.SetCurrentEnvironment(dsEnv)
            End If

'Belastungsanalyse an sich:
            Dim femManager As AnalysisManager
            Dim oControlDef As ControlDefinition
            Dim oCommandMgr As CommandManager

            femManager = partdoc.ComponentDefinition.AnalysisManager

' Simulation starten
            oCommandMgr = app.CommandManager

'KNACKPUNNKT: Abhängigkeiten unterdrücken:       

'Befehl aus der Controldefinition: (zum Unterdrücken in der FEA-Umgebung)
            oControlDef = oCommandMgr.ControlDefinitions.Item("FeaSupressCmd")
            Call oControlDef.Execute()

'er weiß aber nicht was er hier unterdrücken soll...wie sag ich ihm das???     

'Befehl aus der Controldefinition: (zum Starten der Simulation:)

            oControlDef = oCommandMgr.ControlDefinitions.Item("FeaSimulateCmd")
            Call oControlDef.Execute()
        Catch ex As Exception
            MsgBox("Fehler beim Laden der Belastungsanalyse. Bitte bei 'Umgebungen - Zusatzmodule' manuell laden.")
        End Try

'Enter drücken (bisschen FUSCH ;) ), weil der Befehl "ausführen" irgendwie nicht angenommen wird, Laut transcript ist der befehl "FeaSimulateStartCmd"

        System.Windows.Forms.SendKeys.Send("~")
       
' Form schließen, Inventor in den Vordergrund...usw


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

Chris 31
Mitglied
Konstrukteur und Mädchen für alles


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

Beiträge: 575
Registriert: 23.04.2013

Inventor 2015 Professional
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 02. Jul. 2015 10: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 Nur für A13 10 Unities + Antwort hilfreich

OK, du versuchst den Befehl an Inventor zu senden und dann wartet Inventor sozusagen auf die Nutzereingabe, welches Feature er unterdrücken soll.
Versuch doch mal anders an die Sache ran zu gehen:
Erst das Feature definieren, welches unterdrückt werden soll und dann dieses direkt ansprechen:

Code:
ofeature1.suppress=true

Normalerweise sollte dieser Weg etwas einfacher sein, da du auf einen spezifischen Namen des Features zugreifen kannst.

------------------
MFG

Chris

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

A13
Mitglied



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

Beiträge: 12
Registriert: 30.06.2015

erstellt am: 02. Jul. 2015 11:26    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:
Original erstellt von Chris 31:
OK, du versuchst den Befehl an Inventor zu senden und dann wartet Inventor sozusagen auf die Nutzereingabe, welches Feature er unterdrücken soll.
Versuch doch mal anders an die Sache ran zu gehen:
Erst das Feature definieren, welches unterdrückt werden soll und dann dieses direkt ansprechen:

Code:
ofeature1.suppress=true

Normalerweise sollte dieser Weg etwas einfacher sein, da du auf einen spezifischen Namen des Features zugreifen kannst.



Dachte ich mir auch so, aber ich komme irgendwie nicht an dieses Feature dran, da es nicht Teil des Parts sondern Teil der Simulation ist. Deshalb mein Gedanke, das auch irgendiwe über den browser und die Knoten zu steuern. Vielleicht bin ich auch schon etwas betriebsblind hier. Auf jeden Fall stehe ich mega auf dem Schlauch. :/
Bin mir auch nicht mal sicher, ob die Features der Simulation überhaupt die Eigenschaft "suppressed" haben.
Kann man irgendwie alle Features aus dem Browser absuhen, welches von ihnen einen spezifischen Namen hat?

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

Chris 31
Mitglied
Konstrukteur und Mädchen für alles


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

Beiträge: 575
Registriert: 23.04.2013

Inventor 2015 Professional
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 02. Jul. 2015 13:23    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 A13 10 Unities + Antwort hilfreich

Was du versuchst zu unterdrücken ist kein Feature sondern die DegreesofFreedom.
Ich versuche mal den Weg zu finden, um an die ran zu kommen.
Vielleicht meldet sich zwischendurch schon jemand, der dazu was hat

------------------
MFG

Chris

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

A13
Mitglied



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

Beiträge: 12
Registriert: 30.06.2015

erstellt am: 02. Jul. 2015 13:57    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

OK. Dankeschön   Ich hätte jetzt noch anzubieten:

Code:

Dim ofeat as object
ofeat=app.commandmanager.pick(SelectionFilterEnum.kCustomBrowserNodeFilter, "Pick a Feature")


Dann kann ich das auch auswählen und mit ofeat.delete() z.B. löschen oder mit MsgBox(oFeat.tostring()) kommt raus: System._ComObject. aber was sollte ich dort eingeben um z.B. Typ oder InstantNamen oder irgendwas anderes herauszubekommen?

[Diese Nachricht wurde von A13 am 02. Jul. 2015 editiert.]

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

Chris 31
Mitglied
Konstrukteur und Mädchen für alles


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

Beiträge: 575
Registriert: 23.04.2013

Inventor 2015 Professional
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 03. Jul. 2015 07: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 Nur für A13 10 Unities + Antwort hilfreich

Versuch doch mal MsgBox(oFeat.name).
Ich hab leider auch keine Möglichkeit gefunden, auf die Abhängigkeit zu zu greifen.
Auch in der Hilfe konnte ich dazu leider gar nichts finden

------------------
MFG

Chris

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

A13
Mitglied



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

Beiträge: 12
Registriert: 30.06.2015

erstellt am: 03. Jul. 2015 08:47    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:
Original erstellt von Chris 31:
Versuch doch mal MsgBox(oFeat.name).
Ich hab leider auch keine Möglichkeit gefunden, auf die Abhängigkeit zu zu greifen.
Auch in der Hilfe konnte ich dazu leider gar nichts finden


Geht nicht...internalname auch nicht, fullname nicht, nicht mal DisplayName...
Wie wäre denn der Befehl für das einfache Selektieren eines angewählten Objekts?

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

Chris 31
Mitglied
Konstrukteur und Mädchen für alles


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

Beiträge: 575
Registriert: 23.04.2013

Inventor 2015 Professional
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 03. Jul. 2015 08:59    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 A13 10 Unities + Antwort hilfreich

Dazu der Beispielcode aus der Hilfe:

Code:
Sub DataModelToBrowser()
    ' Create a new part document, using the default part template.
    Dim oPartDoc As PartDocument
    Set oPartDoc = ThisApplication.Documents.Add(kPartDocumentObject)

    ' Set a reference to the component definition.
    Dim oCompDef As PartComponentDefinition
    Set oCompDef = oPartDoc.ComponentDefinition
   
    ' Create a new workplane parallel to the XY plane.
    Dim oWorkPlane As WorkPlane
    Set oWorkPlane = oCompDef.WorkPlanes.AddByPlaneAndOffset(oCompDef.WorkPlanes.Item(3), 1)
   
    ' Get the browser node definition associated with the work plane.
    Dim oNativeBrowserNodeDef As NativeBrowserNodeDefinition
    Set oNativeBrowserNodeDef = oPartDoc.BrowserPanes.GetNativeBrowserNodeDefinition(oWorkPlane)
   
    ' Get the top browser node of the model pane.
    Dim oTopBrowserNode As BrowserNode
    Set oTopBrowserNode = oPartDoc.BrowserPanes.ActivePane.TopNode
   
    ' Get the work plane browser node.
    ' This assumes that only one node references the browser node definition.
    ' An example of multiple nodes referencing a single definition is a shared
    ' sketch. The browser may have multiple nodes that represent the same shared
    ' sketch, but all of them reference the same definition.
    Dim oWorkPlaneNode As BrowserNode
    Set oWorkPlaneNode = oTopBrowserNode.AllReferencedNodes(oNativeBrowserNodeDef).Item(1)
   
    ' Get the browser node definition from the browser node.
    Set oNativeBrowserNodeDef = Nothing
    Set oNativeBrowserNodeDef = oWorkPlaneNode.BrowserNodeDefinition
   
    ' Get the work plane from the browser node definition.
    Set oWorkPlane = Nothing
    Set oWorkPlane = oNativeBrowserNodeDef.NativeObject
   
    ' Select the work plane to make sure we have the right object.
    oPartDoc.SelectSet.Select oWorkPlane
End Sub


Musst nur die Workplane ersetzen durch die ActiveSelection.

------------------
MFG

Chris

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

A13
Mitglied



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

Beiträge: 12
Registriert: 30.06.2015

erstellt am: 06. Jul. 2015 09:22    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

Also nach etwas hin- und Herprobieren bin ich jetzt soweit, dass mein Programm den Anwender auffordert eine der Lagerungen auszuwählen, die dann unterdrückt (also von der Simulation ausgeschlossen) wird. Wenn das jetzt noch automatisch gehen würde, wäre ich sogar zufrieden (also ohne manuelle Auswahl). Mit den Anweisungen aus der Programmierhilfe komme ich (jemand anders bestimmt) aber nicht zu irgendwelchen Objekten, die ich nicht gerade erstellt habe. Der baum sieht so aus:

(-)Simulation:1
  (+)Bauteil1.ipt
  ( )Mateial
  (-)Abhängigkeiten
      ( )Lagerung1
      ( )Lagerung2
      ( )Lagerung3
  (+)Lasten

Könnte mir nochmal jemand bitte auf die Sprünge helfen wie der Code für die drei Lagerungen ist. 

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