| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: iLogic Konstruktionskopie (2567 mal gelesen)
|
Dagget1981 Mitglied Produktdesigner
Beiträge: 18 Registriert: 13.09.2015 Autodesk Inventor 2016
|
erstellt am: 13. Sep. 2015 15:29 <-- editieren / zitieren --> Unities abgeben:
Hallo liebe CAD-Gemeinde, ich bin Dagget, bin Produktdesigner und komme aus dem Norden. Ich würde hier gern etwas posten und natürlich dabei etwas lernen. Ich beschäftige mich zur Zeit etwas mit der iLogic im Inventor. Ich möchte eine Variante einer Baugruppe mit der iLogic erstellen (das habe ich auch schon soweit). Nachdem ich alle wichtigen Parameter eigegeben habe möchte ich das eine MessageBox auftaucht und fragt ob ich die Baugruppe nun schließen und kopieren möchte. (das habe ich auch alles) Nun das Problem: Wenn ich die Baugruppe kopiert habe taucht ein schwerwiegender Fehler auf. Der Prozess wird dadurch nicht gestoppt oder verhindert. Trotzdem wäre es mir lieber wenn sowas nicht passieren würde. Hat Jemand eine Idee warum die Fehlermeldung auftaucht? Hier der Code: Com = MessageBox.Show("Möchten Sie den neuen Datensatzes jetzt in das aktuelle Projekt kopieren? Dadurch werden alle offenen Dokumente geschlossen und der iLogic-Konstruktions-Kopie-Assistent gestartet. Wenn Sie jetzt nicht starten wollen, können Sie den Prozess auch manuell starten.", "Editor", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1)
If Com = vbYes Then Dim oCommand As CommandManager oCommand = ThisApplication.CommandManager Dim oControl As ControlDefinition oControl = oCommand.ControlDefinitions.Item( _ "AppCloseAllCmd") Call oControl.Execute Dim oCommandMgr As CommandManager oCommandMgr = ThisApplication.CommandManager
Dim oControlDef As ControlDefinition oControlDef = oCommandMgr.ControlDefinitions.Item( _ "iLogic.iCopy") Call oControlDef.Execute End If Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Charly Setter Ehrenmitglied V.I.P. h.c.
Beiträge: 11980 Registriert: 28.05.2002 Trau keiner Diva unter SP2....
|
erstellt am: 13. Sep. 2015 19:08 <-- editieren / zitieren --> Unities abgeben: Nur für Dagget1981
Moin Dagget, herzlich willkommen in unserem Forum. Allerdings gibt es für diese "Programmierprobleme" ein extra Forum (Inventor VBA), in das ich deine Frage verschieben werde. Dort sitzen die "Eggsberden"... Ansonsten hier noch 2 Hinweise: 1. Der Test der Fehlermeldung wäre hilfreich (Screenshot) 2. Hast Du mal versucht mit dem debugger das Problem einzukreisen ? 3. Dein Code sieht mir zienlich nach VBA aus. Du schreibst aber von iLogic.... Ich bin mir nicht sicher, ob das zusammenpassed. ------------------ Der vernünftige Mensch paßt sich der Welt an; der unvernünftige besteht auf dem Versuch, die Welt sich anzupassen. Deshalb hängt aller Fortschritt vom unvernünftigen Menschen ab. (George Bernard Shaw) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2013/2015 Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 14. Sep. 2015 07:25 <-- editieren / zitieren --> Unities abgeben: Nur für Dagget1981
|
Dagget1981 Mitglied Produktdesigner
Beiträge: 18 Registriert: 13.09.2015 Autodesk Inventor 2016
|
erstellt am: 14. Sep. 2015 16:28 <-- editieren / zitieren --> Unities abgeben:
|
Dagget1981 Mitglied Produktdesigner
Beiträge: 18 Registriert: 13.09.2015 Autodesk Inventor 2016
|
erstellt am: 14. Sep. 2015 16:32 <-- editieren / zitieren --> Unities abgeben:
|
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2580 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 14. Sep. 2015 19:40 <-- editieren / zitieren --> Unities abgeben: Nur für Dagget1981
|
Dagget1981 Mitglied Produktdesigner
Beiträge: 18 Registriert: 13.09.2015 Autodesk Inventor 2016
|
erstellt am: 15. Sep. 2015 08:06 <-- editieren / zitieren --> Unities abgeben:
|
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2013/2015 Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 15. Sep. 2015 09:09 <-- editieren / zitieren --> Unities abgeben: Nur für Dagget1981
|
Dagget1981 Mitglied Produktdesigner
Beiträge: 18 Registriert: 13.09.2015 Autodesk Inventor 2016
|
erstellt am: 15. Sep. 2015 09:46 <-- editieren / zitieren --> Unities abgeben:
Eine interne Regel in meiner Baugruppe soll das Ganze steuern. Möchte drauf hinweisen: Wenn ich den Code durch ein Makro starte funktioniert alles gut. Sobald ich aber diesen Code in Verbindung mit der Ilogic starte bekomme ich die Fehlermeldung. Es muss aber doch eine Möglichkeit geben diesen Code mit der Ilogic zum laufen zu bringen oder? Vieleicht mit dem "Import Inventor" Syntax??? [Diese Nachricht wurde von Dagget1981 am 15. Sep. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2013/2015 Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 15. Sep. 2015 10:19 <-- editieren / zitieren --> Unities abgeben: Nur für Dagget1981
Dann wirst du wohl immer eine Fehlermeldung behalten, weil du aus einem Dokument heraus eine Regel ausführst, das geschlossen wird. Somit kann der Befehl nur bis zum Schließen abgearbeitet werden und dann bricht er mit der Fehlermeldung ab. ------------------ MFG Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dagget1981 Mitglied Produktdesigner
Beiträge: 18 Registriert: 13.09.2015 Autodesk Inventor 2016
|
erstellt am: 15. Sep. 2015 10:42 <-- editieren / zitieren --> Unities abgeben:
|
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2013/2015 Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 15. Sep. 2015 10:50 <-- editieren / zitieren --> Unities abgeben: Nur für Dagget1981
Wenn ich dich richtig verstanden habe, dann hast du auch schon ein Macro geschrieben, das die Aktion durchführt? Dann würde ich es auch dort belassen. Ich persönlich habe mit den externen iLogic-Regeln keine guten Erfahrungen gemacht. ------------------ MFG Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dagget1981 Mitglied Produktdesigner
Beiträge: 18 Registriert: 13.09.2015 Autodesk Inventor 2016
|
erstellt am: 15. Sep. 2015 11:47 <-- editieren / zitieren --> Unities abgeben:
|
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2013/2015 Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 15. Sep. 2015 12:05 <-- editieren / zitieren --> Unities abgeben: Nur für Dagget1981
|
Dagget1981 Mitglied Produktdesigner
Beiträge: 18 Registriert: 13.09.2015 Autodesk Inventor 2016
|
erstellt am: 15. Sep. 2015 12:14 <-- editieren / zitieren --> Unities abgeben:
Ja das wollte ich auch. Ich bekomme es aber nicht hin, den Code, den ich in der iLogic zum steuern der Parameter geschrieben habe, in ein makro zu verwandeln : ) Muss ja wahrscheinlich die Parameter im Modell extra ansteuern oder? Habe gerade versucht alles über eine externe Regel laufen zu lassen und es funktioniert jetzt.
Dein Tip war schon genau richtig. Besten dank dafür Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2013/2015 Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 15. Sep. 2015 15:57 <-- editieren / zitieren --> Unities abgeben: Nur für Dagget1981
|
Dagget1981 Mitglied Produktdesigner
Beiträge: 18 Registriert: 13.09.2015 Autodesk Inventor 2016
|
erstellt am: 15. Sep. 2015 18:37 <-- editieren / zitieren --> Unities abgeben:
Sub Main Process Commando End Sub Public Sub Process()
i = MessageBox.Show("Möchten Sie jetzt mit der Konfiguration eines neuen Datensatzes beginnen?" & vbLf & vbLf & "Sie haben auch jederzeit die Möglichkeit die Konfiguration über den ILogic-Browser aufzurufen." & vbLf & vbLf & "Sie finden den Konfigurationsassistenten unter: Formulare" , "Editor", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1)
If i = vbYes Then oBauhöhe = InputBox("Geben Sie die Bauhöhe der Tunnelrutsche ein:", "Bauhöhe", Parameter("Masterskizze Tunnelrutsche-01:1", "Bauhöhe_Tunnelrutsche")) Parameter("Masterskizze Tunnelrutsche-01:1", "Bauhöhe_Tunnelrutsche") = oBauhöhe oNeigung = InputBox("Geben Sie die Neigung der Tunnelrutsche ein:", "Neigung", Parameter("Masterskizze Tunnelrutsche-01:1", "Neigungswinkel_Rutsche"))
Parameter("Masterskizze Tunnelrutsche-01:1", "Neigungswinkel_Rutsche") = oNeigung oVariante = InputBox("Geben Sie die Variante der Tunnelrutschenkurve ein: .........Beispiel: 90 für 90°Kurve", "Variante", Parameter("Masterskizze Tunnelrutsche-01:1", "Kennzahl_Kurvenvariante"))
Parameter("Masterskizze Tunnelrutsche-01:1", "Kennzahl_Kurvenvariante") = oVariante oRadius = InputBox("Geben Sie den Kurvendurchmesser der Tunnelrutschenkurve ein:", "Radius", Parameter("Masterskizze Tunnelrutsche-01:1", "Th_Dm"))
Parameter("Masterskizze Tunnelrutsche-01:1", "Th_Dm") = oRadius End If InventorVb.DocumentUpdate() ThisDoc.Save End Sub Private Sub Commando()
i = MessageBox.Show("Wollen Sie jetzt den Datensatz in das neue Projekt kopieren?" & vbLf & vbLf & "Dadurch werden alle offenen Dokumente geschlossen und die iLogic-Konstruktionskopie aufgerufen." & vbLf & vbLf & "Sie können den Prozess natürlich auch manuell ausführen." & vbLf & vbLf & "Registerkarte - Extras" & vbLf & vbLf & "Gruppe - iLogic" , "Editor", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) If i = vbYes Then Dim oCommand As CommandManager oCommand = ThisApplication.CommandManager Dim oControl As ControlDefinition oControl = oCommand.ControlDefinitions.Item( _ "AppCloseAllCmd") Call oControl.Execute Dim oCommand2 As CommandManager oCommand2 = ThisApplication.CommandManager
Dim oControl2 As ControlDefinition oControl2 = oCommand2.ControlDefinitions.Item( _ "iLogic.iCopy") Call oControl2.Execute End If End Sub Diesen Code habe ich jetzt in meiner externen Regel. Wenn ich den in den VBA-Editor kopiere geht garnichts. Leider weiss ich nicht wie das funzt : ) Wäre cool wenn du mir zeigst wie das funktioniert. [Diese Nachricht wurde von Dagget1981 am 15. Sep. 2015 editiert.] [Diese Nachricht wurde von Dagget1981 am 15. Sep. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2013/2015 Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 16. Sep. 2015 12:21 <-- editieren / zitieren --> Unities abgeben: Nur für Dagget1981
Also, grundsätzlich erstmal brauchst du in VBA eine bestimmende Zuweisung und eine inhaltliche Zuweisung. Die bestimmende Zuweisung beginnt mit Dim. Beispiel: Dim Param as Parameter. Die inhaltliche Zuweisung beginnt mit Set. Beispiel: Set Param=... Bei der inhaltlichen Zuweisung gibt es Ausnahmen. Bei Strings(Zeichenfolgen), Integer(ganze Zahlen), Double(Zahlen mit Kommastellen) und einige andere erfordern kein Set. Auszuführende Kommandos erfolgen durch ein Call. Beispiel: Call Commando Grundsätzlich gehst du also vor wie folgt: Code: Public SubDim oDoc as AssemblyDocument Set oDoc=ThisApplication.ActiveDocument Dim oBauhöhe as Integer oBauhöhe = InputBox("Geben Sie die Bauhöhe der Tunnelrutsche ein:", "Bauhöhe", Parameter("Masterskizze Tunnelrutsche-01:1", "Bauhöhe_Tunnelrutsche")) Dim oParameter1 as Parameter Set oParameter1=oDoc.ComponentDefinition.Parameters.Item("Bauhöhe_Tunnelrutsche") oParameter1.Value=oBauhöhe
Dim oNeigung as Integer oNeigung = InputBox("Geben Sie die Neigung der Tunnelrutsche ein:", "Neigung", Parameter("Masterskizze Tunnelrutsche-01:1", "Neigungswinkel_Rutsche")) Dim oParameter2 as Parameter Set oParameter2=oDoc.ComponentDefinition.Parameters.Item("Neigungswinkel_Rutsche") oParameter2.Value=oNeigung und so weiter und so weiter.... oDoc.Update oDoc.Save End Sub
Zum besseren Verständnis der Struktur solltest du dir das Inventor API Modell anschauen. Dort kannst du sehen, auf welchem Weg die an welche Componenten herankommst. API-Modell Das war jetzt mal der kurze Crashkurs, damit du schnell einsteigen und loslegen kannst. Wenn du Fragen hast, dann immer raus damit.
------------------ MFG Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dagget1981 Mitglied Produktdesigner
Beiträge: 18 Registriert: 13.09.2015 Autodesk Inventor 2016
|
erstellt am: 16. Sep. 2015 16:05 <-- editieren / zitieren --> Unities abgeben:
Super erklärt . Vielen Dank. Jetzt weiss ich auch nun endlich was "Integer" und "Double" bedeutet. Da war ich mir nie ganz sicher. Daumen hoch!!! [Diese Nachricht wurde von Dagget1981 am 16. Sep. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2013/2015 Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 16. Sep. 2015 16:11 <-- editieren / zitieren --> Unities abgeben: Nur für Dagget1981
|