Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Teile aus Dateinamen in iproperties eintragen

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:  Teile aus Dateinamen in iproperties eintragen (4591 mal gelesen)
korrosiv
Mitglied
Konstrukteur


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

Beiträge: 260
Registriert: 28.04.2005

erstellt am: 27. Sep. 2011 12:50    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 WBFWelt bestes Forum !
ich bräuchte eure Hilfe !!!
gibt es die Möglichkeit bei einem Inventor-Dateinamen mit einem Makro die ersten 6 Zeichen auszulesen um diese dann in den I-Properties unter "Benuzerdefiniert" einzutragen.
Beispiel :
Dateiname = 543215_Grundplatte.ipt

ausgelesen werden soll = 543215
eingetragen werden sollen diese in den I-Properties unter "Benutzerdefiniert" als  Name= PDB_Ident und Wert:543215


es hat den Hintergrund , wir führen ein PDM System ein und haben tausende Bauleile/Baugruppen die diese Einträge benötigen und diese Eintragerei ist ein heftiges Vorhaben wenn´s händisch geschehen soll
ich hoffe ich hab meinen Hilferuf verständlich formuliert und hoffe
auf euere Hilfe
Danke im Vorraus
korrosiv

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

noctis79
Mitglied
Konstrukteur/ CAD-Administrator


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

Beiträge: 164
Registriert: 07.10.2009

Inventor Pro 2017
Cideon Workspace

erstellt am: 27. Sep. 2011 21: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 korrosiv 10 Unities + Antwort hilfreich

Gibt´s ^^

Eigentlich ganz einfach...
Willst Du dann die ganzen Dateien öffnen und von Hand das Makro ausführen? Erledigt das dann ein Jobserver bei euch? Soll das ganze mit Inventor passieren oder über den Apprentice- Server (ohne Inventor)???
Fragen über fragen...

Hier mal ein Lösungsansatz für Inventor:

Code:
Public Sub IdentProperties()
   
    Dim oapp As Inventor.Application
    Dim oDoc As Inventor.Document
    Set oapp = ThisApplication
   
    If oapp.ActiveDocument Is Nothing Then
        MsgBox "Kein Dokument geöffnet"
        Exit Sub
    End If
       
    Set oDoc = ThisApplication.ActiveDocument

    Dim cuPropSet As PropertySet
    Set cuPropSet = oDoc.PropertySets.item("Inventor User Defined Properties")
    Dim PropName As String
    Dim PropValue As String
    Dim NewProp As Property
      
    PropName = "PDB_Ident"
    PropValue = Left(oDoc.DisplayName, 6)
   
    Dim i As Property
   
    For Each i In cuPropSet
        If i.DisplayName = PropName Then
            MsgBox "Property existiert bereits!"
            Exit Sub
        End If
    Next
   
    Set NewProp = cuPropSet.Add(PropValue, PropName)

End Sub


Ich würde jetzt das ganze vom Jobserver ausführen lassen oder eine exe Datei erstellen.
Exe starten, Ordner auswählen, Kaffee holen und schauen was IV macht...

[Diese Nachricht wurde von noctis79 am 27. Sep. 2011 editiert.]

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




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

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 27. Sep. 2011 21: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 korrosiv 10 Unities + Antwort hilfreich

Hi

Nur das der Displayname nicht zwingend der Dateiname ist. 

------------------
MfG
RK

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

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



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

Beiträge: 9732
Registriert: 01.12.2003

AutoCAD 200x, Civil, LDD, MDT, ARD, ACA(ADT)
Inventor AIP 4-11,200x
WinXP, W2K

erstellt am: 27. Sep. 2011 22:04    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 korrosiv 10 Unities + Antwort hilfreich

Ab 2011 könnnte man das auch mit einem kleinen externen ILogic Makro durchführen lassen (z.B. beim Öffnen der Datei).

------------------
Mit freundlichem Gruß

Udo Hübner
www.CAD-Huebner.de

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

korrosiv
Mitglied
Konstrukteur


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

Beiträge: 260
Registriert: 28.04.2005

erstellt am: 27. Sep. 2011 22:51    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 noctis79
danke für den Code ! ich werde ihn gleich morgen früh in der Firma testen zu deinen Fragen
es wäre einfach genial wenn ich das Tool über ganze Verzeichnise laufen lassen könnte ohne "Einzelbehandlung" wenn es als *.exe gehen würde dann meine Frage zurück " wie gehe ich dabei vor??? und oder mit einem Jobserver ??
ich bin in dem Bereich eher ein Schwarzlicht !!
aber ich sehe und lese dass es für jeden Bereich Profis mit der top Hilfe gibt !!
"hilfeee"
und danke für die bisherige Unterstützung
mfG

korrosiv     

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

noctis79
Mitglied
Konstrukteur/ CAD-Administrator


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

Beiträge: 164
Registriert: 07.10.2009

Inventor Pro 2017
Cideon Workspace

erstellt am: 27. Sep. 2011 23: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 Nur für korrosiv 10 Unities + Antwort hilfreich

Schreib mir morgen mal bitte eine PN mit Deiner Email...
Ich schick Dir dann was zu...

@rkauskh Richtig, mein Fehler... Danke!

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




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

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 28. Sep. 2011 12:32    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 korrosiv 10 Unities + Antwort hilfreich

Hi

@noctis
Kein Fehler, nur eine kleine Unschärfe.     

------------------
MfG
RK

[Diese Nachricht wurde von rkauskh am 28. Sep. 2011 editiert.]

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

MWalter
Mitglied
Konstrukteur

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

Beiträge: 5
Registriert: 12.10.2011

erstellt am: 12. Okt. 2011 10:36    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 korrosiv 10 Unities + Antwort hilfreich

Hallo zusammen, auch ich bräuchte mal eure Hilfe.

Das hier sind meine ersten VBA Schritte ... also seid Nachsichtig

Für einen Kunden erstellen wir aus einem großen Datensatz immer wieder neue Projekte.
Hierzu wird der komplette Datensatz kopiert und das neue "Projektkürzel" in jeder iam, ipt und idw geändert.

"ABC" ist das Projekt (immer anders) ..... "123_456_789" ist das Objekt (bauteilcode, Plannummern....immer gleich).

Ich habe jetzt in jeder iam, ipt und idw die benutzerdefinierten IProperties "Auftrag" und "Objekt" eingebaut und lasse als Bauteilnummer beide zusammenfühen (=<Auftrag>_<Objekt> )...ABC_123_456_789

Im Moment muss ich wieder mal die idw's für ein neues Projekt erstellen ...
... Zeichnung öffnen, Iproprties öffnen, "Auftrag" ändern, als A0 pdf drucken, speichern und schließen.... Das Ganze passiert in etwa alle 6 Wochen... umfasst jedes mal in etwa 200 Zeichnungen ... und das nur, um aus "ABC_123_456_789" ein "XYZ_123_456_789" zu machen.

Lange Rede....Ich habe mir diesen Code mal als Basis für mein benötigtes Makro hergenommen und etwas abgeändert ( das mit dem in PDF-Drucken gibt's hier massenhaft im Forum.... das kommt dann später hinzu)

Code:
Public Sub IdentProperties()
 
    Dim oapp As Inventor.Application
    Dim oDoc As Inventor.Document
    Set oapp = ThisApplication
 
    If oapp.ActiveDocument Is Nothing Then
        MsgBox "Kein Dokument geöffnet"
        Exit Sub
    End If
     
    Set oDoc = ThisApplication.ActiveDocument

    Dim cuPropSet As PropertySet
    Set cuPropSet = oDoc.PropertySets.Item("Inventor User Defined Properties")
    Dim PropName As String
    Dim PropValue As String
    Dim NewProp As Property
     
    PropName = "Auftrag"
    PropValue = "XYZ"
 
    Dim i As Property
 
    For Each i In cuPropSet
        If i.DisplayName = PropName Then
            MsgBox "Auftrag bereits aktualisiert!"
            Exit Sub
        End If
    Next
 
    Set NewProp = cuPropSet.Add(PropValue, PropName)

End Sub


Ich kann hiermit Prima NICHT VORHANDENE Properties hinzufügen, aber ich kann nicht den Wert einer BESTEHENDEN IProperty abändern .....
Die Abfrage bei "DisplayName" müsste ja auch abfragen, ob der Wert bereits aktuell ist nicht, ob die Propwerty schon besteht, oder?

Hab jetzt so viel hier rum gespielt und komm leider überhaupt nicht weiter.

Ich hoffe ihr könnt mir da weiterhelfen.

Vielen Dank schon mal - Gruß Markus

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

noctis79
Mitglied
Konstrukteur/ CAD-Administrator


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

Beiträge: 164
Registriert: 07.10.2009

Inventor Pro 2017
Cideon Workspace

erstellt am: 12. Okt. 2011 11:24    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 korrosiv 10 Unities + Antwort hilfreich

Probier mal das anstelle Deiner For each Schleife:

Code:
For Each i In cuPropSet
        If i.DisplayName = PropName Then
            i.Value = PropValue
            Exit Sub
        End If
    Next

und mach das Ganze dann noch hübsch mit ner Eingabemaske für die Auftragsnummer!

[Diese Nachricht wurde von noctis79 am 12. Okt. 2011 editiert.]

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

MWalter
Mitglied
Konstrukteur

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

Beiträge: 5
Registriert: 12.10.2011

erstellt am: 12. Okt. 2011 12:15    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 korrosiv 10 Unities + Antwort hilfreich

Hallo noctis79,

vielen Dank für die schnelle Antwort.... Das funktioniert!

Damit ich das kapier: Anstatt eine Nachricht zu erzeugen, dass der Parameter mit Namen "Auftrag" schon vorhanden ist, nutzen wir diese Abfrage um direkt den Wert von "Auftrag" in den vorgegebenen Value zu ändern.

Die letzte Zeile ist somit überfüssig (Set NewProp = cuPropSet.Add(PropValue, PropName)) und kann gelöscht werden...... JA! (ERFOLGSERLEBNIS.....)

Ha...das ersetzen funktioniert nun.
Im Zeichnungskopf bleibt allerdings noch das alte Kürzel stehen, bis ich einmal die IPropertys öffne und wieder schließe, bzw. bis ich die Zeichnung einmal speichere.

Ein anschließendes Zwischenspeichern bekomm ich sicherlich hin, aber gibt es 'ne Lösung ohne Speichern dien Zeichnungskopf zu "aktualisieren"
Zur Erklärung: Das Projekt sind die gesamten Stahlbaupläne für Thermische Solarkraftwerke ... in den höheren Ebenen Lädt und Speichert eine Zeichnung gut und gerne mal 3-5 Minuten und das liegt nicht unbedingt an veralteter Hardware (Win7 64bit, Intel Core I7 880, 16 GB Ram)

Gut....speichern müsste ich ja ohnehin... ich könnte ja speichern, pdf drucken und automatisch die idw. schließen.... beim schließen würde dann nicht nochmal gespeichert werden, da seit dem letzten speichern nix verändert wurde, oder?

Es sei denn es gibt 'ne bessere Lösung um den Zeichnungskopf zu aktualisieren....

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

noctis79
Mitglied
Konstrukteur/ CAD-Administrator


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

Beiträge: 164
Registriert: 07.10.2009

Inventor Pro 2017
Cideon Workspace

erstellt am: 12. Okt. 2011 12:31    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 korrosiv 10 Unities + Antwort hilfreich

Schau Dir mal folgendes an.
Neu ist hier die Variable oExist, die Abfrage beim Set....
und das odoc.update...
odoc.update müsste Deine Zeichnung soweit aktualisieren, dass
der Richtige Wert in der Zeichnung steht...

Code:
Sub test()
   
    Dim oapp As Inventor.Application
    Dim oDoc As Inventor.Document
    Set oapp = ThisApplication
 
    If oapp.ActiveDocument Is Nothing Then
        MsgBox "Kein Dokument geöffnet"
        Exit Sub
    End If
     
    Set oDoc = ThisApplication.ActiveDocument
    Dim cuPropSet As PropertySet
    Set cuPropSet = oDoc.PropertySets.item("Inventor User Defined Properties")
    Dim PropName As String
    Dim PropValue As String
    Dim NewProp As Property
    Dim oExist As Boolean
    oExist = False
     
    PropName = "Auftrag"
    PropValue = "XYZ"
 
    Dim i As Property
 
    For Each i In cuPropSet
        If i.DisplayName = PropName Then
            i.Value = PropValue
            oExist = True
        End If
    Next
 
    If oExist = False Then
        Set NewProp = cuPropSet.Add(PropValue, PropName)
    End If
   
    oDoc.update

End Sub


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

MWalter
Mitglied
Konstrukteur

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

Beiträge: 5
Registriert: 12.10.2011

erstellt am: 12. Okt. 2011 12:42    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 korrosiv 10 Unities + Antwort hilfreich

PERFEKT! Das ist es!

Ich versuch dann mal weiter zu basteln ... hab wohl etwas Blut geleckt und muss mich dringenst tiefer in VBA einarbeiten!

Noctis79 .... ich dank Dir!

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