| | | 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: iProperty über Baugruppenstruktur hinweg setzen (780 / mal gelesen)
|
Patrice Herold Mitglied Ingenieur
Beiträge: 14 Registriert: 10.06.2004
|
erstellt am: 06. Jul. 2016 07:58 <-- editieren / zitieren --> Unities abgeben:
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
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 / zitieren --> Unities abgeben: Nur für Patrice Herold
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 >>)
|