Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Broserknoten mit Benutzerdefinieter Eigneschaft überschreiben

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:  Broserknoten mit Benutzerdefinieter Eigneschaft überschreiben (1116 / mal gelesen)
Goose
Mitglied
Maschinenbautechniker / geb. Zerspanungsmechaniker Fachrichtung Frästechnik


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

Beiträge: 202
Registriert: 29.03.2007

IV2021 R4
CATIA V6 R2013x

erstellt am: 18. Feb. 2016 14: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

Hallo zusammen,

wie müsste den ein Makro aussehen dass den Browserknoten in einer Baugruppe mit einer Benutzerdefinierten Eigenschaft die in den I-Properties hinterlegt ist füllt.

Danke und Gruß

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

Lothar Boekels
Ehrenmitglied V.I.P. h.c.
Dipl.-Ing. Maschinenbau und CAD-Trainer



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

Beiträge: 3794
Registriert: 15.02.2001

erstellt am: 22. Feb. 2016 20:43    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 Goose 10 Unities + Antwort hilfreich

z.B. so:

Code:

Dim sMsg As String


Public Sub DisplayNameAufbereiten()
    ' Display Name lesbarer machen
   
    If ThisApplication.ActiveDocumentType <> kAssemblyDocumentObject And _
        ThisApplication.ActiveDocumentType <> kPartDocumentObject And _
        ThisApplication.ActiveDocumentType <> kPresentationDocumentObject And _
        ThisApplication.ActiveDocumentType <> kDrawingDocumentObject Then
        'MsgBox "Only Part or Assymbly or Drawing document", vbCritical
        Exit Sub
    End If
   
  ' Declare the Application object
    Dim oApplication As Inventor.Application

    ' Obtain the Inventor Application object.
    ' This assumes Inventor is already running.
    Set oApplication = ThisApplication
   
    ' Set a reference to the active document.
    ' This assumes a document is open.
    Dim oDoc As Document
    Set oDoc = oApplication.ActiveDocument
   
    Dim sFileName As String
    Dim iStart As Integer

    If ThisApplication.ActiveDocumentType = kDrawingDocumentObject Then
   
        sFileName = StandardModule.FileName(oDoc.FullFileName)
       
        oDoc.DisplayName = sFileName
       
    Else
   
        Dim sPartNumber As String
        Dim sDespription As String
        Dim sSubject As String
        Dim sTrennzeichen As String
   
        sPartNumber = Property_lesen(oDoc, "Part Number")
        sDespription = Property_lesen(oDoc, "Description")
        sSubject = Property_lesen(oDoc, "Subject")
   
        If Len(sPartNumber) = 0 Or Len(sDespription) = 0 Then
            sTrennzeichen = ""
        Else
            sTrennzeichen = " - "
        End If
   
        oDoc.DisplayName = sPartNumber & sTrennzeichen & sDespription
   
        If Len(sSubject) = 0 Then
            sTrennzeichen = ""
        Else
            sTrennzeichen = " - "
        End If
   
        oDoc.DisplayName = oDoc.DisplayName & sTrennzeichen & sSubject
   
   
       
        ' Überprüfung, ob Displayname, Partnumber und Dateiname harmonieren
       
        Dim sDisplayName As String
       
        sPartNumber = CStr(IPropEintraege.Property_lesen(oDoc, "Part Number"))
        sDisplayName = CStr(oDoc.DisplayName)
        'MsgBox CStr(InStr(1, sDisplayName, sPartNumber, vbTextCompare))
   
        sFileName = StandardModule.FileName(oDoc.FullFileName)
           
        ' Überprüfung, ob die Teilenummer im Display-Namen vorkommt
        If Not (InStr(1, sDisplayName, sPartNumber, vbTextCompare) = 1 And _
                InStr(1, sFileName, sPartNumber, vbTextCompare) = 1) Then
               
            Debug.Print sDisplayName
            Debug.Print sPartNumber
            Debug.Print sFileName
           
            sMsg = "Teilenummer, Filename und Display-Namen sind nicht synchron!" & vbCrLf & vbCrLf & _
                    "Display-Name: " & vbTab & sDisplayName & vbCrLf & _
                    "Teilenummer : " & vbTab & sPartNumber & vbCrLf & _
                    "Filename    : " & vbTab & sFileName & vbCrLf & _
                    vbCrLf & _
                    "sollen die Teilenummer und der Display-Name aus dem Filename generiert werden?" & _
                    vbCrLf
                   
            If MsgBox(sMsg, vbYesNoCancel) = vbYes Then
           
                If oDoc.FileSaveCounter > 0 Then
               
                    iStart = InStrRev(sFileName, ".", -1, vbTextCompare)
                    sFileName = Left$(sFileName, iStart - 1)
               
                    If Len(sDespription) = 0 Then
                        sTrennzeichen = ""
                    Else
                        sTrennzeichen = " - "
                    End If
       
                    oDoc.DisplayName = sFileName & sTrennzeichen & sDespription
               
                    Call IPropEintraege.Property_setzen(oDoc, "Part Number", sFileName)
                End If
            Else
                    If Len(sDespription) = 0 Then
                        sTrennzeichen = ""
                    Else
                        sTrennzeichen = " - "
                    End If
       
                    oDoc.DisplayName = sPartNumber & sTrennzeichen & sDespription
               

            End If
         
        End If
           
   
    End If
   
    Set oApplication = Nothing
    Set oDoc = Nothing

End Sub



Lies das mal durch. Das Makro macht noch mehr.

------------------
mit freundlichem Gruß
aus der Burggemeinde Brüggen
Lothar Boekels

-----------------------------------------------------
Wir unterstützen die Arbeit der
Rettungshundestaffel des DRK in Viersen

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

Goose
Mitglied
Maschinenbautechniker / geb. Zerspanungsmechaniker Fachrichtung Frästechnik


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

Beiträge: 202
Registriert: 29.03.2007

IV2021 R4
CATIA V6 R2013x

erstellt am: 23. Feb. 2016 08:06    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

Danke erst ein mal,
werde ich gleich mal testen...

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

Goose
Mitglied
Maschinenbautechniker / geb. Zerspanungsmechaniker Fachrichtung Frästechnik


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

Beiträge: 202
Registriert: 29.03.2007

IV2021 R4
CATIA V6 R2013x

erstellt am: 29. Feb. 2016 09: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

Zitat:
Original erstellt von Lothar Boekels:
z.B. so:

[code]


   
        sPartNumber = Property_lesen(oDoc, "Part Number")
        sDespription = Property_lesen(oDoc, "Description")
        sSubject = Property_lesen(oDoc, "Subject")
   
       



Hallo,

Bekomme die Fehlermeldung:

Sub oder Function nicht definiert!

Was mach ich da Falsch?

Danke und Gruß

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

Chris 31
Mitglied
Konstrukteur und Mädchen für alles


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

Beiträge: 575
Registriert: 23.04.2013

Inventor 2013/2015
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 29. Feb. 2016 13: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 Goose 10 Unities + Antwort hilfreich

Da fehlt dir wohl die Nebenfunktion vom Lothar, in der er die iProps ausliest.
Wenn er dir die noch gibt, dann läuft es sicher durch.

------------------
MFG

Chris

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

Lothar Boekels
Ehrenmitglied V.I.P. h.c.
Dipl.-Ing. Maschinenbau und CAD-Trainer



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

Beiträge: 3794
Registriert: 15.02.2001

erstellt am: 01. Mrz. 2016 13:20    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 Goose 10 Unities + Antwort hilfreich

Code:

Public Function Property_lesen(oDoc As Document, sPropName As String) As Variant
' Liest eine Property.
' Ist die Property nicht vorhanden, so wird "" zurückgegeben.

    Property_lesen = ""

If oDoc Is Nothing Then Return


    ' Obtain the PropertySets collection object
    Dim oPropSets As PropertySets
    Set oPropSets = oDoc.PropertySets

    Dim oProp As Property
   
    ' Iterate through all the PropertySets one by one using for loop
    Dim oPropSet As PropertySet
    For Each oPropSet In oPropSets
   
        For Each oProp In oPropSet
            'Debug.Print oProp.Name
            If oProp.name = sPropName Then
                Property_lesen = oProp.Value
                Exit For
            End If
        Next
       
    Next

End Function


------------------
mit freundlichem Gruß
aus der Burggemeinde Brüggen
Lothar Boekels

-----------------------------------------------------
Wir unterstützen die Arbeit der
Rettungshundestaffel des DRK in Viersen

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

Goose
Mitglied
Maschinenbautechniker / geb. Zerspanungsmechaniker Fachrichtung Frästechnik


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

Beiträge: 202
Registriert: 29.03.2007

IV2021 R4
CATIA V6 R2013x

erstellt am: 01. Mrz. 2016 15: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

Hatte zwischenzeitlich die Zeilen schon in einem anderen Beitrag gefunden und festgestellt……
ich muß noch viel lesen und dabei lernen

Vielen Dank!

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

dirk1608
Mitglied
Dipl. Ing. Produktionstechnik


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

Beiträge: 144
Registriert: 06.09.2006

HP Z400
Intel Xeon CPU W3680 @ 3,33GHz
8 GB RAM
NVIDIA Quadro 4000
Win7 Professional x64
Inventor 2010/2011/2012/2013

erstellt am: 02. Mrz. 2016 11:16    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 Goose 10 Unities + Antwort hilfreich

Hallo,

vielen Dank erstmal für den Code!
Beim ausprobieren bekomme ich noch ein paar Fehler, ich denke es liegt daran, dass mir die folgeneden Funktionen noch fehlen:

Call IPropEintraege.Property_setzen(odoc, "Part Number", sFileName)
compile error: Method or data member not found

das habe ich dann erstmal auskommentiert und bekomme bei:

sFileName = StandardModule.FileName(odoc.FullFileName)

den nächsten Fehler: Object reqiered


Was fehlt mir da noch?

Funktioniert dieses Makro dann auch für Umbenennung der Browserknoten von Einzelteilen in der Baugruppe?


Viele Grüße
Dirk

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

Lothar Boekels
Ehrenmitglied V.I.P. h.c.
Dipl.-Ing. Maschinenbau und CAD-Trainer



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

Beiträge: 3794
Registriert: 15.02.2001

erstellt am: 02. Mrz. 2016 18:29    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 Goose 10 Unities + Antwort hilfreich

Code:

Public Sub Property_setzen(oDoc As Document, sPropName As String, vPropValue As Variant)
' Belegt eine Property mit einem Wert.
' Ist die Property nicht vorhanden, so wird sie angelegt.

    ' Obtain the PropertySets collection object
    Dim oPropSets As PropertySets
    Set oPropSets = oDoc.PropertySets

 
    Dim bPropertyDa As Boolean
    Dim oProp As Property
   
    bPropertyDa = False
   
    On Error Resume Next
   
    ' Iterate through all the PropertySets one by one using for loop
    ' and changing its value if found
    Dim oPropSet As PropertySet
    For Each oPropSet In oPropSets
   
        For Each oProp In oPropSet
            'Debug.Print oProp.Name
            If oProp.name = sPropName Then
                oProp.Value = vPropValue
                bPropertyDa = True
                Exit For
            End If
        Next
       
    Next
   
 
    'Property anlegen und Wert eintragen
   
    If Not bPropertyDa Then
        oDoc.PropertySets("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}").Add vPropValue, sPropName
        'oDoc.PropertySets.Item("User Defined Properties").Add vPropValue, sPropName
    End If
   
    On Error GoTo 0
 
End Sub


------------------
mit freundlichem Gruß
aus der Burggemeinde Brüggen
Lothar Boekels

-----------------------------------------------------
Wir unterstützen die Arbeit der
Rettungshundestaffel des DRK in Viersen

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

Lothar Boekels
Ehrenmitglied V.I.P. h.c.
Dipl.-Ing. Maschinenbau und CAD-Trainer



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

Beiträge: 3794
Registriert: 15.02.2001

DELL Precision 7520 Win10Pro-64
Inventor mit Vault Professional 2022
---------------------
Während man es aufschiebt,
verrinnt das Leben.
Lucius Annaeus Seneca
(ca. 4 v. Chr - 65 n. Chr.)

erstellt am: 02. Mrz. 2016 18:30    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 Goose 10 Unities + Antwort hilfreich

Code:

Public Function FileName(ByVal sFullFilename As String) As String
   
    Dim iStart As Long
   
    iStart = InStrRev(sFullFilename, "\", -1, vbTextCompare)
    FileName = Mid$(sFullFilename, iStart + 1)
   

End Function


------------------
mit freundlichem Gruß
aus der Burggemeinde Brüggen
Lothar Boekels

-----------------------------------------------------
Wir unterstützen die Arbeit der
Rettungshundestaffel des DRK in Viersen

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

Roland Schröder
Ehrenmitglied V.I.P. h.c.
Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen



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

Beiträge: 13115
Registriert: 02.04.2004

AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot
DellM4600 2,13GHz 2GB FxGo1400 1920x1200
am Dock Dell2711

erstellt am: 02. Mrz. 2016 20:55    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 Goose 10 Unities + Antwort hilfreich

Moin!

Ist Dir klar,  dass diese Umbenennung dann statisch ist? Wenn dieser Code nicht immer wieder neu angestoßen wird, z. B. auch weil er auf anderen Rechnern gar nicht vorhanden, bleiben diese Einträge später immer unverändert. Wenn man dann Komponenten in der Baugruppe tauscht, ist die Verwirrung u. U. groß.

------------------
Roland  
www.Das-Entwicklungsbuero.de

It's not the hammer - it's the way you hit!

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


Ex-Mitglied

erstellt am: 02. Mrz. 2016 22:09   

- Inhaltsloser Beitrag -

Lothar Boekels
Ehrenmitglied V.I.P. h.c.
Dipl.-Ing. Maschinenbau und CAD-Trainer



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

Beiträge: 3794
Registriert: 15.02.2001

DELL Precision 7520 Win10Pro-64
Inventor mit Vault Professional 2022
---------------------
Während man es aufschiebt,
verrinnt das Leben.
Lucius Annaeus Seneca
(ca. 4 v. Chr - 65 n. Chr.)

erstellt am: 03. Mrz. 2016 17: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 Nur für Goose 10 Unities + Antwort hilfreich

Deswegen greift das Makro ja auch nicht die Browserknoten an, sondern ändert den Displaynamen der betreffenden Dateien, damit sich diese in der Baugruppe brav damit melden können.

------------------
mit freundlichem Gruß
aus der Burggemeinde Brüggen
Lothar Boekels

-----------------------------------------------------
Wir unterstützen die Arbeit der
Rettungshundestaffel des DRK in Viersen

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