Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Properties auslesen

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
Autor Thema:  Properties auslesen (5424 mal gelesen)
linuxer
Mitglied
PDM Project Manager


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

Beiträge: 22
Registriert: 14.04.2006

Hp z400 Xeon 2,6GHz; WinXP32; Catia in den OEM-Versionen; PDM = OpenEDM

erstellt am: 31. Aug. 2010 12:48    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 Leute, unser PDM-System bügelt die CATIA - Properties über (Part Number, Revision, etc.). Jetzt dachte ich man könnte ein Makro schreiben um die Properties auszulesen und als UserDefProperties reinschreiben (diese werden nicht überschrieben). Aber wie? Habe momentan keinen Ansatz.

Gruß
Linuxer

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 31. Aug. 2010 12:56    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 linuxer 10 Unities + Antwort hilfreich

Servus
Hier (und in der Doku) findest du wie UserDefinedproperties erstellt werden. Und mit:
Code:
set oProduct = CATIA.activedocument.product
msgBox oProduct.PartNumber
msgBox oProduct.Revision
msgBox oProduct.Nomenclature
...

Kommst du an die "alten" (noch nicht überschriebenen) Wert ran.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

linuxer
Mitglied
PDM Project Manager


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

Beiträge: 22
Registriert: 14.04.2006

Hp z400 Xeon 2,6GHz; WinXP32; Catia in den OEM-Versionen; PDM = OpenEDM

erstellt am: 31. Aug. 2010 13: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 Bernd,

so lange die Daten nicht im PDM gespeichert komme ich an die Porperties ran. Ich dachte das ich nach eine neuen PDM - Property frage und wenn die nicht vorhanden ist, die Properties auslesen und als UserDefine Properties reinschreibe.
Gruß
Linuxer

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

linuxer
Mitglied
PDM Project Manager


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

Beiträge: 22
Registriert: 14.04.2006

Hp z400 Xeon 2,6GHz; WinXP32; Catia in den OEM-Versionen; PDM = OpenEDM

erstellt am: 02. Sep. 2010 08: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

Hallo Leute,
ich habe jetzt zwei Scripte (eins für die Products und eins für die Part) um die Properties auszulesen und als UserRefProperties reinzuschreiben. Leider fehlt mir immer noch die Property "Description", an die komme ich einfach nicht ran!
Bis jetzt laufen die beiden Scripte als Standalone, d.h. ich muss jedes einzelne Product oder Part einzeln machen. Wie verbinde ich jetzt die Scripte zu das ich es beim RootProduct starte und es alle Products und Parts innerhalb des Rootproducts bearbeitet.
Gruß linuxer

[Diese Nachricht wurde von linuxer am 02. Sep. 2010 editiert.]

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 02. Sep. 2010 08:33    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 linuxer 10 Unities + Antwort hilfreich

Servus
Um eine komplette Baugruppe zu bearbeiten, musst du diese rekursiv abarbeiten (siehe hier).
gemäß Doku solltest du an die Description mit:
  oProduct.DescriptionRef
kommen.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

linuxer
Mitglied
PDM Project Manager


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

Beiträge: 22
Registriert: 14.04.2006

Hp z400 Xeon 2,6GHz; WinXP32; Catia in den OEM-Versionen; PDM = OpenEDM

erstellt am: 06. Sep. 2010 09: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

peinlich, peinlich
Ich bekomme es einfach nicht hin diese beiden Scripte zu verbinden, so das die aus dem Root-Produkt laufen.
Properties für CATPart
gruß
linuxer
ich habe hier die einzelnen Scripte angehängt.

[Diese Nachricht wurde von linuxer am 06. Sep. 2010 editiert.]

[Diese Nachricht wurde von linuxer am 27. Nov. 2010 editiert.]

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

zoltan.bekesi
Mitglied



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

Beiträge: 321
Registriert: 22.10.2006

Job:
CATIA V5R19 / XP 32bit
MS Office 2003
Microstation V8 2004 Edition
DELL Precision M6300

erstellt am: 06. Sep. 2010 19: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 Nur für linuxer 10 Unities + Antwort hilfreich

Hallo linuxer,

ich würde dich auf folgende Beiträge hinweisen:
Rekursiv durch das Baum
Parameter im Parameterset (inkl. weiteres über rekursive Sachen)
In letzteres habe ich auch versucht zu erklären, wie die ganze Objektstruktur von CATIA Products aufgebaut ist.

Von den beiden Scripts sind die Zeilen ab 12 bis 41 redundant. Die kannst du mit einer klugen Funktion ersetzen, wenn du die Sachen aus den zweiten Beitrag begriffen hast.

Dein Skript würde etwa folgender Struktur haben:
-Hauptroutine
*ActiveDocument prüfen und greifen
*Objekt Product und Collection UserRefProperties an eine Funktion übergeben, der die Daten füllt
*Rekursiv durch den Products laufen, Objekt und Collection an die Funktion übergeben
-Funktion
*Bekommt Objekt Product (hier stammen ja die Daten, die du übertragen willst
*und Collecion UserProperties (hier werden ja die Parameter erzeugt, es ist x-mal in dein er Code drin).

In etwa so (nicht getestet):

Code:

Sub CATMain()
  dim oRoot as Document
  Set oRoot = Catia.ActiveDocument
  dim oProduct as Product
  Set oProduct = oRoot.Product
  dim oProducts as Products
  Set oProducts = oProduct.Products
  dim oRefProduct as product
  set oRefProduct = oProduct.ReferenceProduct
  Dim oUserRefProps As Parameters
  Set oUserRefProps = oRefProduct.UserRefProperties

  ChangeParameters oRefProduct, oUserRefProps

  SUB_ProdScan oProducts
End Sub

Sub ChangeParameters(oRefProduct as Product, oUserRefProps As Parameters)

  Dim strParam2 As StrParam
  Set strParam2 = oUserRefProps.CreateString("Cust PartNumber", "")
  strParam2.ValuateFromString oRefProduct.PartNumber

  'usw.
end Sub

Sub SUB_ProdScan(oProducts as Products)
  For i = 1 to oProducts.Count

    dim oProduct as Product
    Set oProduct = oProducts.Item(i)
    dim oRefProduct as product
    set oRefProduct = oProduct.ReferenceProduct
    Dim oUserRefProps As Parameters
    Set oUserRefProps = oRefProduct.UserRefProperties

    ChangeParameters oRefProduct, oUserRefProps

      If oProduct.Products.Count > 0 Then
        Set oProductsUebergabe = oProduct.Products
        SUB_ProdScan oProductsUebergabe
      End If
  Next
End Sub


Gruß,
Zoltan

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

linuxer
Mitglied
PDM Project Manager


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

Beiträge: 22
Registriert: 14.04.2006

Hp z400 Xeon 2,6GHz; WinXP32; Catia in den OEM-Versionen; PDM = OpenEDM

erstellt am: 07. Sep. 2010 07: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 Zoltan,

danke für deine Hilfe. Ich habe das Script ausprobiert und es stoppt bei

SUB_ProdScan oProductsUebergabe mit der Meldung
Fehler beim Kompilieren - Argumenttyp ByRef unverträglich

Jetzt werde ich mich an die von dir aufgegebenen "Hausaufgaben" machen.
gruß
Linuxer

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

linuxer
Mitglied
PDM Project Manager


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

Beiträge: 22
Registriert: 14.04.2006

Hp z400 Xeon 2,6GHz; WinXP32; Catia in den OEM-Versionen; PDM = OpenEDM

erstellt am: 07. Sep. 2010 09: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

Hallo,

ich habe jetzt den Code im Sub SUB_ProdScan(oProducts As Products)
mit DIM oProductsUebergabe As Product erweitert und es funzt.
Jetzt muss ich nur noch die InstanceName rüber bekommen.

Gruß
Linuxer

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

linuxer
Mitglied
PDM Project Manager


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

Beiträge: 22
Registriert: 14.04.2006

Hp z400 Xeon 2,6GHz; WinXP32; Catia in den OEM-Versionen; PDM = OpenEDM

erstellt am: 07. Sep. 2010 11: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

Hallo Leute,

hier der fertige Code (vielen danke an Zoltan).

Code     
-----------------------------------------------
Dim version, makroname
Sub CATMain()
  version = "1.0"
  makroname = "Properties kopieren"
  Dim oRoot As Document
  Set oRoot = CATIA.ActiveDocument
  Dim oProduct As Product
  Set oProduct = oRoot.Product
  Dim oProducts As Products
  Set oProducts = oProduct.Products
  Dim oRefProduct As Product
  Set oRefProduct = oProduct.ReferenceProduct
  Dim oUserRefProps As Parameters
  Set oUserRefProps = oRefProduct.UserRefProperties
  ChangeParameters oRefProduct, oUserRefProps
 
  SUB_ProdScan oProducts
  MsgBox "Makro ist beendet", vbInformation, makroname + " " + version
End Sub

Sub ChangeParameters(oRefProduct As Product, oUserRefProps As Parameters)
       
        Set oInstance = CATIA.ActiveDocument.Product.Products
        Dim strParam1 As StrParam
        Set strParam1 = oUserRefProps.CreateString("Cust Instance Name", "")
        strParam1.ValuateFromString oInstance.Item(1).Name
       
        Dim strParam2 As StrParam
        Set strParam2 = oUserRefProps.CreateString("Cust PartNumber", "")
        strParam2.ValuateFromString oRefProduct.PartNumber

        Dim strParam3 As StrParam
        Set strParam3 = oUserRefProps.CreateString("Cust Revision", "")
        strParam3.ValuateFromString oRefProduct.Revision
       
        Dim strParam4 As StrParam
        Set strParam4 = oUserRefProps.CreateString("Cust Definition", "")
        strParam4.ValuateFromString oRefProduct.Definition
       
        Dim strParam5 As StrParam
        Set strParam5 = oUserRefProps.CreateString("Cust Nomenclature", "")
        strParam5.ValuateFromString oRefProduct.Nomenclature
       
        Dim strParam6 As StrParam
        Set strParam6 = oUserRefProps.CreateString("Cust Description", "")
        strParam6.ValuateFromString oRefProduct.DescriptionRef
 
End Sub

Sub SUB_ProdScan(oProducts As Products)
  For i = 1 To oProducts.Count

    Dim oProduct As Product
    Set oProduct = oProducts.Item(i)
    Dim oRefProduct As Product
    Set oRefProduct = oProduct.ReferenceProduct
    Dim oUserRefProps As Parameters
    Set oUserRefProps = oRefProduct.UserRefProperties
    Dim oProductsUebergabe As Product
   
    ChangeParameters oRefProduct, oUserRefProps

      If oProduct.Products.Count > 0 Then
        Set oProductsUebergabe = oProduct.Products
        SUB_ProdScan oProductsUebergabe
      End If
  Next
End Sub
----------------------------------------------------
Gruß
Linuxer

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

zoltan.bekesi
Mitglied



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

Beiträge: 321
Registriert: 22.10.2006

Job:
CATIA V5R19 / XP 32bit
MS Office 2003
Microstation V8 2004 Edition
DELL Precision M6300

erstellt am: 07. Sep. 2010 19: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 linuxer 10 Unities + Antwort hilfreich

Hallo Linuxer,

freut mich.
So ungefähr sollte es mit den Beiträgen funktionieren.
(Vielleicht wäre es ja auch ohne mein Code gegangen.)

Gruß,
Zoltan

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