Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  iProperty über Baugruppenstruktur hinweg setzen

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:  iProperty über Baugruppenstruktur hinweg setzen (761 / mal gelesen)
Patrice Herold
Mitglied
Ingenieur


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

Beiträge: 14
Registriert: 10.06.2004

erstellt am: 06. Jul. 2016 07:58    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 zusammen,

ich habe ein kleines Makro, welches aus einem Formular Werter zusammensetzt und dann in die iProperty "Kd.Zeich.Nr" eintragen soll. Das Makro soll ausgehend von einer Baugruppe alle Teile und Unterbaugruppen durchgehen und diesen Wert schreiben. Das Durchlaufen sowie das erstellen des Wertes funktioniert einwandfrei. Allerdings will Inventor einfach den Wert nicht in die iProperty schreiben 

Hier der Code

Code:

Sub Zeichnungsnummer_setzen()
    Dim oDocument As Document
    Dim Hersteller As String
    Dim PropSet As PropertySet
    Dim Counter As String
    Dim NewValue As String
    Dim ItemDoc As Object
   
   
Set oDocument = ThisApplication.ActiveDocument
 
    For Each ItemDoc In oDocument.AllReferencedDocuments
      With ItemDoc
        Set PropSet = .PropertySets.Item("Inventor User Defined Properties")
        Counter = CStr(StartSetDrwNr.TB_StartValue)
        Counter = Format(Counter, "000")
        'Schauen ob Hersteller hinterlegt ist, wenn nein dann soll Nummer vergeben werden
       
        If PropSet.Item("Hersteller").Value = "" Then
        Select Case .DocumentType 'entscheiden ob Baugruppe oder ET
            Case Is = kPartDocumentObject 'Einzelteil -> DET
                NewValue = StartSetDrwNr.TB_DrwNo & "-DET-" & Counter & "-" & StartSetDrwNr.TB_Ver
                Call UpdateCustomiProperty(ItemDoc, "Kd.Zeichn.Nr.", NewValue)
               
            Case Is = kAssemblyDocumentObject 'Baugruppe -> SUB
                NewValue = StartSetDrwNr.TB_DrwNo & "-SUB-" & Counter & "-" & StartSetDrwNr.TB_Ver
                Call UpdateCustomiProperty(ItemDoc, "Kd.Zeichn.Nr.", NewValue)
               
        End Select
        StartSetDrwNr.TB_StartValue = StartSetDrwNr.TB_StartValue + 1
        Else
        End If
    End With
    Next
End Sub


Public Sub UpdateCustomiProperty(ByRef Doc As Document, ByRef PropertyName As String, ByRef PropertyValue As Variant)
    ' Get the custom property set.
    Dim customPropSet As PropertySet
    Set customPropSet = Doc.PropertySets.Item("Inventor User Defined Properties")
       
    ' Get the existing property, if it exists.
    Dim prop As Property
    On Error Resume Next
    Set prop = customPropSet.Item(PropertyName)

    ' Check to see if the above call failed.  If it failed
    ' then the property doesn't exist.
    If Err.Number <> 0 Then
    ' Failed to get the existing property so create a new one.
    Set prop = customPropSet.Add(PropertyValue, PropertyName)
    Else
    ' Change the value of the existing property.
   
    prop.Value = PropertyValue 'Hier wird der Wert NICHT übertragen
    End If
End Sub


Das Formular hat 3 Felder: tb_startvalue, tb_drwno, tb_ver

Danke für eure Hilfe 

Patrice

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

metalgod
Mitglied
Technischer Zeichner, Mädchen für alles


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

Beiträge: 32
Registriert: 23.09.2015

Win10x64 Prof.
Intel Core i7-8700K
3,70GHz, 16GB Ram
Inventor Prof. 2018 64-Bit
Visual Studio 2015 Express

erstellt am: 06. Jul. 2016 08:40    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 Patrice Herold 10 Unities + Antwort hilfreich

Hallo Patrice,

Property.Value erwartet String. NewValue ist als String deklariert, wird aber später (PropertyValue) in Variant umgewandelt. So sollte es funktionieren:

Code:
Public Sub UpdateCustomiProperty(ByRef Doc As Document, ByRef PropertyName As String, ByRef PropertyValue As String)

------------------
alex

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