Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  VBA-Fehlermeldung Inventor 2018

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:  VBA-Fehlermeldung Inventor 2018 (1606 mal gelesen)
3D-User
Mitglied



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

Beiträge: 75
Registriert: 26.12.2012

HP Workstation Z440
Win10 64Bit
IV 2018

erstellt am: 17. Dez. 2017 10:25    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


Fehlermeldung.png

 
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



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

Beiträge: 164
Registriert: 16.01.2014

erstellt am: 18. Dez. 2017 12:18    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 3D-User 10 Unities + Antwort hilfreich

Hallo

Ich hab deinen Code ausprobiert INV2018, bei mir gibt es keine Fehlermeldung!

Entferne mal das Private
bei den Sub's

vielleicht hift das ?

Gruß
Berno

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

Ruzy5624
Mitglied
Konstruktionsleiter / staatl. gepr. Techniker


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

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 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 3D-User 10 Unities + Antwort hilfreich


ProjektBiliothek1712181837.JPG

 
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



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

Beiträge: 75
Registriert: 26.12.2012

HP Workstation Z440
Win10 64Bit
IV 2018

erstellt am: 18. Dez. 2017 20:41    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!
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


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

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 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 3D-User 10 Unities + Antwort hilfreich

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


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

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 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 3D-User 10 Unities + Antwort hilfreich

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



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

Beiträge: 75
Registriert: 26.12.2012

HP Workstation Z440
Win10 64Bit
IV 2018

erstellt am: 19. Dez. 2017 19:39    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 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

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