| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: VBA-Fehlermeldung Inventor 2018 (1682 / mal gelesen)
|
3D-User Mitglied
Beiträge: 75 Registriert: 26.12.2012 HP Workstation Z440 Win10 64Bit IV 2018
|
erstellt am: 17. Dez. 2017 10:25 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum Seit der Umstellung auf Inventor 2018 tritt bei mir ein Problem mit meiner VBA-Programmierung zum Editieren der iProperties auf. Wenn ich versuche die iProperties eines Teils zu bearbeiten das in einer Bibliothek liegt bekomme ich eine Fehlermeldung. Bisher im Inventor 2016 hat das immer ohne Probleme Funktioniert. Wie kann ich diese Fehlermeldung abfangen oder verhindern? 3D-User Option Explicit Dim RangeBox_X As Double Dim RangeBox_Y As Double Dim RangeBox_Z As Double Dim RevNrChange As Boolean Dim MatArt As String Dim oPart As PartDocument Dim oDoc As Document Private Sub UserForm_Initialize() Set oDoc = ThisApplication.ActiveDocument 'Prüfen ob ein Bauteil geöffnet ist If oDoc.DocumentType <> kPartDocumentObject Then MsgBox " Kein Bauteil (.ipt) geöffnet!" End End If 'RevÄnderung wird zurückgesetzt RevNrChange = False 'Materialliste wird gefüllt InitMaterials 'Bauteilgewicht wird eingelesen InitGewicht 'Das Formular wird aufgebaut InitFormular End Sub ..... Private Sub TextBox1_Change() 'Bauteilnummer Set oDoc = ThisApplication.ActiveDocument oDoc.PropertySets(3).Item("Part Number").Value = TextBox1.Value <<<< Das verursacht den Fehler (erst ab Inventor 2018!) End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BernoAn Mitglied
Beiträge: 172 Registriert: 16.01.2014
|
erstellt am: 18. Dez. 2017 12:18 <-- editieren / zitieren --> Unities abgeben: Nur für 3D-User
|
Ruzy5624 Mitglied Konstruktionsleiter / staatl. gepr. Techniker
Beiträge: 280 Registriert: 01.07.2015 Product Design Suite 2018 Ultimate Visual Studio 2017 Windows 10 Pro Intel Xeon E3-1245 v5 @ 3,5GHz Nvidia Quadro M4000 8GB RAM 32GB 2x 24" Monitore FullHD SpaceMouse Pro
|
erstellt am: 18. Dez. 2017 18:41 <-- editieren / zitieren --> Unities abgeben: Nur für 3D-User
Moin, das "Private" zum definieren des "Sub" ist in Ordnung... Das Problem liegt daran, wie du die Bibliothek in deinem Inventor Projekt definierst. (siehe Bild) Fügst du im Projektmanager dem aktuellen Projekt den Ordner, in welchem sich deine Bibliothek befindet, auch als Bibliothek hinzu, dann ist diese und deren Inhalt durch Inventor Schreibgeschützt. Daher kommt die Fehlermeldung. Also muss die Bibliothek im Inventor 2016 anders in das Projekt eingebunden gewesen sein.
------------------ Mit Besten Grüßen Marcel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
3D-User Mitglied
Beiträge: 75 Registriert: 26.12.2012 HP Workstation Z440 Win10 64Bit IV 2018
|
erstellt am: 18. Dez. 2017 20:41 <-- editieren / zitieren --> Unities abgeben:
Hallo! Danke für eure Vorschläge zur Lösung des Problems Mit oder ohne „Privat“ macht leider keinen Unterschied. Die Einbindung bestimmter Verzeichnisse als „Bibliothek“ ist eigentlich schon so beabsichtigt. Es dient als Schutz vor unbeabsichtigter Änderung bestimmter Teile (vor allem der Normteile). (Für das Ändern und hinzufügen solcher Normteile gibt es ein eigenes Projekt.) Die Art und Weise der Anbindung als „Bibliothek“ ist ident mit der im Inventor 2016 (definiert in der Projektdatei). Dort war es allerdings Möglich die iProperties auch in solchen „geschützten“ Teilen zu ändern. Inventor 2018 ist da anders, vielleicht auch „Richtiger“ als die 2016er Version. Mir geht es jetzt darum die Fehlermeldung zu vermeiden. Mit „On Error GoTo Fehler“ geht’s nicht, weil damit komme ich überhaupt nicht mehr weiter. Ich bräuchte einen Ausdruck wie ich erkennen kann ob eine Datei in einer Bibliothek liegt, ohne die Bibliotheken aufzählen zu müssen. Vielleicht hat da jemand eine Idee! 3D-User
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tacker Mitglied TZ, Tech. MB, Softwareentwickler
Beiträge: 175 Registriert: 23.09.2010 IV 2017 Pro i7-7700K 4x4.2GHz 32GB DDR4-2400 GTX 1060 6GB DDR5
|
erstellt am: 19. Dez. 2017 10:19 <-- editieren / zitieren --> Unities abgeben: Nur für 3D-User
Moin, Ich weis aus dem Stegreif nicht ob es einen Wert gibt der indiziert ob ein Bauteil sich in einer Bibliothek befindet, daher kann ich nur folgendes anbieten: Denke die Bibliotheken sind bekannt oder können ausgelesen werden. Dann kann recht einfach der Bauteilpfad mit den Bibliothekenpfaden abgeglichen werden. Das ganze in eine Function packen mit Return Value Boolean und dann fragst das ab: If Function_Library(Bauteil) Then Bauteil ist in der Bibliothek Else Bauteil ist nicht in der Bibliothek End if Kann man jetzt als "dirty solution" bezeichnen, aber denke das sollte funktionieren. MFG Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ruzy5624 Mitglied Konstruktionsleiter / staatl. gepr. Techniker
Beiträge: 280 Registriert: 01.07.2015 Product Design Suite 2018 Ultimate Visual Studio 2017 Windows 10 Pro Intel Xeon E3-1245 v5 @ 3,5GHz Nvidia Quadro M4000 8GB RAM 32GB 2x 24" Monitore FullHD SpaceMouse Pro
|
erstellt am: 19. Dez. 2017 12:39 <-- editieren / zitieren --> Unities abgeben: Nur für 3D-User
Ich würde mal so etwas hier versuchen: Code: Option ExplicitPrivate Sub ChangeProperty() 'Change Property of Document Dim oDoc As Document Set oDoc = ThisApplication.ActiveEditDocument Dim oPropSet As PropertySet Set oPropSet = oDoc.PropertySets(3) If Writeable(oDoc) Then oPropSet("Part Number").Value = "test" Else MsgBox "Bauteil ist Schreibgeschützt!", vbOKOnly, "Fehler" End If End Sub Private Function Writeable(ByVal oDoc As Document) As Boolean 'Returns False if Document is ReadOnly If oDoc.IsModifiable Then Writeable = True Else Writeable = False End If End Function
EDIT: sry, mein Code war nicht ganz VBA-konform... Habe Ihn nochmal angepasst und getestet... funktioniert ------------------ Mit Besten Grüßen Marcel [Diese Nachricht wurde von Ruzy5624 am 19. Dez. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
3D-User Mitglied
Beiträge: 75 Registriert: 26.12.2012 HP Workstation Z440 Win10 64Bit IV 2018
|
erstellt am: 19. Dez. 2017 19:39 <-- editieren / zitieren --> Unities abgeben:
Hallo Ruzy5624 Dein Vorschlag hat super geklappt! (Dein Edit kam leider zu spät, ich hab’s auch so geschafft.) Vielen Dank für deine Hilfe! Ich hab‘ so geschrieben:
Code: Sub TextBox1_Change() 'Bauteilnummer Dim oDoc As Document Set oDoc = ThisApplication.ActiveDocument If Writeable(oDoc) Then oDoc.PropertySets(3).Item("Part Number").Value = TextBox1.Value Else MsgBox "Bauteil ist Schreibgeschützt!", vbOKOnly, "Fehler" End End If End SubPrivate Function Writeable(ByVal oDoc As Document) As Boolean 'Returns False if Document is ReadOnly If oDoc.IsModifiable Then Writeable = True Else Writeable = False End If End Function
3D-User
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |