|  |  | 
|  | 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 - zum dritten Mal in Folge, eine Pressemitteilung 
 | 
| Autor | Thema:  VBA-Fehlermeldung Inventor 2018 (1915 /  mal gelesen) | 
 | 3D-User Mitglied
 
 
  
 
      Beiträge: 75Registriert: 26.12.2012
 HP Workstation Z440Win10 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 ExplicitDim 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: 173Registriert: 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: 280Registriert: 01.07.2015
 Product Design Suite 2018 UltimateVisual 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: 75Registriert: 26.12.2012
 HP Workstation Z440Win10 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: 175Registriert: 23.09.2010
 IV 2017 Proi7-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) ThenBauteil 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: 280Registriert: 01.07.2015
 Product Design Suite 2018 UltimateVisual 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 Explicit
 Private 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: 75Registriert: 26.12.2012
 HP Workstation Z440Win10 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 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
 
 3D-User
 
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |