| |
| 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, eine Pressemitteilung
|
Autor
|
Thema: iproperties (3832 / mal gelesen)
|
oklaf75 Mitglied
Beiträge: 11 Registriert: 01.08.2013
|
erstellt am: 19. Jul. 2017 12:23 <-- editieren / zitieren --> Unities abgeben:
Hallo. Ich möchte in einem Blechteil ein Feld in den iproperties ausfüllen lassen. Die Bauteilnummer soll zusätzlich noch in Zulieferer mit der Möglichkeit dies noch zu erweitern. Wie kann ich das mit einem macro machen? Bin für jeden Tipp dankbar. oklaf75 [Diese Nachricht wurde von oklaf75 am 19. Jul. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KraBBy Mitglied Maschinenbau-Ingenieur
Beiträge: 720 Registriert: 19.09.2007 Inventor Professional 2020 WinX
|
erstellt am: 20. Jul. 2017 12:58 <-- editieren / zitieren --> Unities abgeben: Nur für oklaf75
hier mal als Einstieg, der Zugriff auf die iProperties Code: Dim oDoc As Document Set oDoc = ThisApplication.ActiveDocumentDim oTitel As Property Set oTitel = oDoc.PropertySets.Item(1).Item(1) If Not ("TITLE" = UCase(oTitel.Name)) Then MsgBox "Name der Eigenschaft passt nicht! VBA-Code überprüfen!", vbCritical, "Fehler TITLE" Exit Sub End If MsgBox oTitel.Value
Ich habe jetzt nicht gesucht, welches Item das von Dir gesuchte ist. Einfach mal im Überwachungsfenster selbst durchsuchen. Es gibt auch mehrere PropertySets. Z.B. die Benutzerdefinierten iProp. sind im PropertySets.Item(3) zu finden. ------------------ Gruß KraBBy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
oklaf75 Mitglied
Beiträge: 11 Registriert: 01.08.2013
|
erstellt am: 21. Jul. 2017 10:14 <-- editieren / zitieren --> Unities abgeben:
Hallo. Habe es damit versucht: Code: Sub Zulieferer()Dim odoc As Document Set odoc = ThisApplication.ActiveDocument Dim oTitel As Property Set oTitel = odoc.PropertySets.Item("{32853F0F-3444-11D1-9E93-0060B03C1CA6}").Item("Vendor") If Not ("TITLE" = UCase(oTitel.Name)) Then MsgBox "Name der Eigenschaft passt nicht! VBA-Code überprüfen!", vbCritical, "Fehler TITLE" Exit Sub End If MsgBox oTitel.Value End Sub
Leider ohne Erfolg (Name der Eigenschaft passt nicht...).
Ich habe mit: Code: Private Sub ListProps() Dim odoc As Document Set odoc = ThisApplication.ActiveDocumentDim oPropSet As PropertySet Dim oProp As Property For Each oPropSet In odoc.PropertySets Debug.Print oPropSet.DisplayName & " --- " & oPropSet.Name & " --- " & oPropSet.InternalName For Each oProp In oPropSet Debug.Print " " & oProp.DisplayName & " --- " & oProp.Name Next Next End Sub
die iproperties ausgelesen: Zitat: Inventor - Zusammenfassungsinformationen --- Inventor Summary Information --- {F29F85E0-4FF9-1068-AB91-08002B27B3D9} Titel --- Title Thema --- Subject Autor --- Author Schlüsselwörter --- Keywords Kommentare --- Comments Zuletzt gespeichert von --- Last Saved By Revisionsnummer --- Revision Number Miniaturansicht --- Thumbnail Inventor - Zus.-fassungsinfo f. Dokument --- Inventor Document Summary Information --- {D5CDD502-2E9C-101B-9397-08002B2CF9AE} Kategorie --- Category Manager --- Manager Firma --- Company Design Tracking - Eigenschaften --- Design Tracking Properties --- {32853F0F-3444-11D1-9E93-0060B03C1CA6} Erstellungsdatum --- Creation Time Bauteilnummer --- Part Number Projekt --- Project Kostenstelle --- Cost Center Kontrolliert von --- Checked By Datum Überprüfung --- Date Checked Konstruktion genehmigt von --- Engr Approved By Datum Konstruktionsgenehmigung --- Engr Date Approved Benutzerstatus --- User Status Material --- Material Bauteilrevision --- Part Property Revision Id Web-Verknüpfung für Katalog --- Catalog Web Link Bauteilsymbol --- Part Icon Bezeichnung --- Description Zulieferer --- Vendor
Wo ist mein Fehler?
Danke! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bkrüger Mitglied Konstrukteur
Beiträge: 51 Registriert: 14.09.2014 Win10 IV2018 Vault2018-WG
|
erstellt am: 21. Jul. 2017 14:07 <-- editieren / zitieren --> Unities abgeben: Nur für oklaf75
Hallo, ich bin mir zwar nicht sicher, was du willst, aber auf den Inhalt (nicht den Namen!) eines Iprops greift man mit .value zu Also bspw. für Bauteilnummer Code: ThisApplication.ActiveDocument.PropertySets("Design Tracking Properties").Item("Part Number").Value
oder dem Zulieferer Code:
ThisApplication.ActiveDocument.PropertySets("Design Tracking Properties").Item("Vendor").Value
Die IProps sind im allgemeinen schreib/und lesbar Also wenn du bspw. den Inhalt der BTNr ins Zuliefererfeld schreiben willst, einfach Code:
Dim o1 As PropertySet Set o1 = ThisApplication.ActiveDocument.PropertySets("Design Tracking Properties") o1.Item("Vendor").Value = o1.Item("Part Number").Value
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KraBBy Mitglied Maschinenbau-Ingenieur
Beiträge: 720 Registriert: 19.09.2007 Inventor Professional 2020 WinX
|
erstellt am: 21. Jul. 2017 14:18 <-- editieren / zitieren --> Unities abgeben: Nur für oklaf75
der Teil if ... end if mit der Prüfung, ob der Name der Eigenschaft passt, kann entfallen. Der sollte bei meinem Bsp nur sicherstellen, dass ich das richtige Prop. erwischt habe (da ich sie über item(1) angesprochen habe. Es könnte sich ja mal was verschieben. ------------------ Gruß KraBBy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
oklaf75 Mitglied
Beiträge: 11 Registriert: 01.08.2013
|
erstellt am: 21. Jul. 2017 14:27 <-- editieren / zitieren --> Unities abgeben:
Super! Code: Dim o1 As PropertySet Set o1 = ThisApplication.ActiveDocument.PropertySets("Design Tracking Properties") o1.Item("Vendor").Value = o1.Item("Part Number").Value
Das ist ok. Nun fehlt nur noch die Abfrage ob zu dem Inhalt aus der BTNr noch was dazu kommt oder der Inhalt so bleibt. Danke! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bkrüger Mitglied Konstrukteur
Beiträge: 51 Registriert: 14.09.2014 Win10 IV2018 Vault2018-WG
|
erstellt am: 21. Jul. 2017 14:53 <-- editieren / zitieren --> Unities abgeben: Nur für oklaf75
Najaaa, IMHO eleganter als über den Index greift man direkt über den Namen auf das IProp zu. Code:
If ThisApplication.ActiveDocument.PropertySets("Design Tracking Properties").Item("Part Number") Is Nothing Then MsgBox "IProp Bauteilnummer existiert nicht" Exit Sub Else End If
Aus leidvoller, ärgerlicher Debugging-Praxis: Ist IMHO generell sicherer, wenn man sich vor dem Zugriff auf eine Objektvariable von deren Existenz überzeugt hat... Unter bestimmten Umständen (evtl. bei iam, wenn andere Detailgenauigkeitsdarstellung in einer gleichzeitig geöffneten idw aktiv) wirft der Schreibzugriff auf ein IProp einen Fehler - dem kommt man - befürchte ich - nur mit 'on error resume next' bei. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bkrüger Mitglied Konstrukteur
Beiträge: 51 Registriert: 14.09.2014 Win10 IV2018 Vault2018-WG
|
erstellt am: 21. Jul. 2017 15:11 <-- editieren / zitieren --> Unities abgeben: Nur für oklaf75
Liest Iprop Bauteilnummer - wenn Iprop Zulieferer leer, ist es dem User möglich eine Eingabe (mit Vorgabe Inhalt der Bauteinummer) zu machen, die dann (nach nochmaliger Abfrage) in den Zulieferer reingeschrieben wird. Steht im Iprop Zulieferer schon etwas, wird ohne Änderungsmöglichkeit mit einer Meldung beendet. Code:
Dim o1 As PropertySet Dim sbtnr As String Dim stemp1 '---- Set o1 = ThisApplication.ActiveDocument.PropertySets("Design Tracking Properties") sbtnr = o1.Item("Part Number").Value If o1.Item("Vendor").Value = "" Then stemp1 = InputBox("Eingabe", "Bauteilnummer", sbtnr) if stemp1="" then exit sub ' war Cancel If MsgBox("Jetzt " & vbCrLf & stemp1 & vbCrLf & "in Zulieferer schreiben?", vbYesNo, "Frage") = vbYes Then o1.Item("Vendor").Value = stemp1 Else MsgBox "Iprop Zulieferer nicht leer", vbInformation End If
[Diese Nachricht wurde von bkrüger am 21. Jul. 2017 editiert.] [Diese Nachricht wurde von bkrüger am 21. Jul. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
oklaf75 Mitglied
Beiträge: 11 Registriert: 01.08.2013
|
erstellt am: 24. Jul. 2017 14:37 <-- editieren / zitieren --> Unities abgeben:
|