Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  iproperties

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:  iproperties (3678 mal gelesen)
oklaf75
Mitglied



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

Beiträge: 11
Registriert: 01.08.2013

erstellt am: 19. Jul. 2017 12:23    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.
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


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

Beiträge: 601
Registriert: 19.09.2007

Inventor Professional 2020
WinX

erstellt am: 20. Jul. 2017 12: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 Nur für oklaf75 10 Unities + Antwort hilfreich

hier mal als Einstieg, der Zugriff auf die iProperties
Code:
Dim oDoc As Document
Set oDoc = ThisApplication.ActiveDocument

Dim 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



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

Beiträge: 11
Registriert: 01.08.2013

erstellt am: 21. Jul. 2017 10:14    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.

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.ActiveDocument

Dim 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


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

Beiträge: 51
Registriert: 14.09.2014

Win10 IV2018 Vault2018-WG

erstellt am: 21. Jul. 2017 14:07    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 oklaf75 10 Unities + Antwort hilfreich

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


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

Beiträge: 601
Registriert: 19.09.2007

Inventor Professional 2020
WinX

erstellt am: 21. Jul. 2017 14: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 oklaf75 10 Unities + Antwort hilfreich

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



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

Beiträge: 11
Registriert: 01.08.2013

erstellt am: 21. Jul. 2017 14:27    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

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


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

Beiträge: 51
Registriert: 14.09.2014

Win10 IV2018 Vault2018-WG

erstellt am: 21. Jul. 2017 14:53    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 oklaf75 10 Unities + Antwort hilfreich

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


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

Beiträge: 51
Registriert: 14.09.2014

Win10 IV2018 Vault2018-WG

erstellt am: 21. Jul. 2017 15:11    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 oklaf75 10 Unities + Antwort hilfreich

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



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

Beiträge: 11
Registriert: 01.08.2013

erstellt am: 24. Jul. 2017 14:37    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.

Funktioniert wunderbar.

Vielen Dank für die Hilfe.

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