Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  UserRefProperties value ändern

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:  UserRefProperties value ändern (1836 mal gelesen)
Suchtiii94
Mitglied
Konstrukteur


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

Beiträge: 44
Registriert: 23.10.2017

Catia V5 R28 SP3

erstellt am: 01. Feb. 2019 07: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

Servus,

ich würde gerne die UserRefProperties für alle offenen Dokumente ändern.
Die PartNumber beschreibe ich so:

Code:
CurrentProduct.Item(i).PartNumber = CurrentProduct.Item(i).ReferenceProduct.Nomenclature

Jetzt habe ich folgendes versucht:

Code:
CurrentProduct.Item(i).UserRefProperties.Item("Properties\Test").Value = "1234"

Leider bekomme ich den Fehler "The method Item failed". Wie kann ich das beheben?

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: 01. Feb. 2019 09: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 Suchtiii94 10 Unities + Antwort hilfreich

Servus

Funktioniert es wenn du noch das ReferenceProduct einfügst.
Um eventuelle Probleme durch Spracheinstellungen zu verhindern könntest du wie hier gezeigt auf eine UserRefProperty zugreifen.

Gruß
Bernd

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

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

Suchtiii94
Mitglied
Konstrukteur


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

Beiträge: 44
Registriert: 23.10.2017

Catia V5 R28 SP3

erstellt am: 01. Feb. 2019 10:34    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

Servus,

das mit dem ReferenceProduct funktioniert leider nicht.

Bei deinem verlinktem Beitrag kann ich auch nur auf das ActiveDocument zugreifen.
Ich bekommen es nicht hin mit einer Schleife über alle geöffneten Dokumente zu gehen.

Die Schleife funktioniert nur für Umbennnungen der Nomenclature und PartNumber 

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: 01. Feb. 2019 10:49    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 Suchtiii94 10 Unities + Antwort hilfreich

Servus

AFAIR hat der Namen einer Userproperty den Aufbau: PartNumber\Properties (bzw Eigenschaften)\Parametername
In dem verlinkten Beitrag ist die Funktion getUserProperty das interessante. Damit muss du nur den Parameternmen angeben (also kein PartNumber und Properties). Die CATMain zeigt nur wie die Funktion aufgerufen wird.

Gruß
Bernd

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

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

Suchtiii94
Mitglied
Konstrukteur


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

Beiträge: 44
Registriert: 23.10.2017

Catia V5 R28 SP3

erstellt am: 01. Feb. 2019 11:09    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

Alles klar, ich hab die Funktion jetzt mal eingebunden.
Wenn ich das acDoc verwende klappt auch alles.
Allerdings mit Schleife mag er das nicht:

Code:
Sub CATMAIN()


Dim acDoc
Dim acProd
Set acDoc = CATIA.ActiveDocument
Set acProd = acDoc.Product
acProd.Update
acProd.ApplyWorkMode DESIGN_MODE
   
Set documents = CATIA.documents

For Each Item In documents

If Right(Item.Name, 10) = "CATProduct" Then

Set CurrentProduct = Item.Product.Products

For I = 1 To CurrentProduct.Count


Dim ParamWorks As Parameters
Set ParamWorks = acProd.UserRefProperties
'Set ParamWorks = CurrentProduct.Item(I).UserRefProperties

Dim sMaterial As Parameter
Set sMaterial = getUserProperty(ParamWorks, "Test")


sMaterial.Value = "123456"


acProd.Revision = "Test"
'CurrentProduct.Item(I).Revision = "Test"


Next

End If

Next

End Sub


Function getUserProperty(UserProperties As Parameters, ParameterName As String) As Parameter

Dim F As Integer

For F = 1 To UserProperties.Count
If Right(UserProperties.Item(F).Name, Len(ParameterName)) = ParameterName Then
Set getUserProperty = UserProperties.Item(F)
Exit Function
End If
Next

Set getUserProperty = Nothing

End Function


Hast du noch eine idee?

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: 01. Feb. 2019 11: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 Suchtiii94 10 Unities + Antwort hilfreich

Servus

Schon mal:

Code:
Set ParamWorks = CurrentProduct.Item(I).ReferenceProduct.UserRefProperties
probiert?

Gruß
Bernd

PS: Warum hast du den Zähler in der Funktion umbenannt? Dir scheint die Gültigkeit/Sichtbarkeit von Variablen nicht klar zu sein.

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

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

Suchtiii94
Mitglied
Konstrukteur


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

Beiträge: 44
Registriert: 23.10.2017

Catia V5 R28 SP3

erstellt am: 01. Feb. 2019 11: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

Servus,

das mit den Variablen ist tatsächlich Neuland für mich, genauso wie das Arbeiten mit Funktionen. Habe ich bisher noch nie verwendet.

Wenn ich deine Zeile einfüge, bekomme ich die Meldung Object variable or With block variable not set in der Zeile:

Code:
sMaterial.Value = "123456"


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: 01. Feb. 2019 11: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 Suchtiii94 10 Unities + Antwort hilfreich

Servus

Was für einen Typ hat der Parameter? Ein String?
Je nach Typ die Anführungszeichen weg lassen (falls es zB eine Länge ist) oder ValuateFromString nutzen.
Ist sMaterial gefüllt bzw wurde der Parameter gefunden? Deshalb nach Nothing prüfen (siehe das Beispiel)
Du weist das ein Teil der Dokumente mehrfach abgearbeitet wird? In der Document-Collection sind alle geöffneten Dokumente einthalten (in eigenem Fenster geöffnet, in Baugruppen verbaut, aus denen Zeichnungsansichten ableitet wurden, ...)

Gruß
Bernd

PS: Arbeitest du in VBA? Dann bitte auch Haltepunkte, Watch- und Localfenster nutzen.

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

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

Suchtiii94
Mitglied
Konstrukteur


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

Beiträge: 44
Registriert: 23.10.2017

Catia V5 R28 SP3

erstellt am: 01. Feb. 2019 11: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

Servus,

ich habe den Fehler gefunden. Es liegt daran, dass bei manchen Teilen der Parameter gelockt war.
Wenn ich On Error resume next einbaue überspringt er diese Teile.

Das mit den geöffneten Dokumenten ist mir bewusst.

Danke für die Unterstützung. 

PS: Danke, vor allem für den Tipp mit dem Localfenster 

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

Suchtiii94
Mitglied
Konstrukteur


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

Beiträge: 44
Registriert: 23.10.2017

Catia V5 R28 SP3

erstellt am: 06. Feb. 2019 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

Servus,

mit folgendem Makro möchte ich für das AktiveFenster in der kompletten Struktur eine neue Positionsnummer vergeben.
Wie kann ich eine Abfrage einbauen, ob der Parameter überhaupt exisitert? Wenn er nicht existiert soll nämlich kein Fenster aufgehen und der Parameter nicht beschrieben werden.
Aktuell hab ich einfach einen Beschreibversuch für jedes Teil eingebaut, welchen ich mit On Error Resume Next durchlaufen lasse.

Code:
Sub CATMain()
Set oRoot = CATIA.ActiveDocument
Set oProducts = oRoot.Product.Products
Set RootBaugruppe = oRoot.Product
SUB_ProdScan oProducts
End Sub

Sub SUB_ProdScan(oProducts)
For I = 1 To oProducts.Count
Set oParentDoc = oProducts.Item(I).ReferenceProduct.Parent
If oProducts.Item(I).Products.Count > 0 Then
SUB_ProdScan oProducts.Item(I).Products
End If

For Each Item In oProducts
oProducts.Item(I).Revision = "Test"
Next

Dim ParamWorks As Parameters
Set ParamWorks = oProducts.Item(I).ReferenceProduct.UserRefProperties
Dim Positionsnummer As Parameter
Set Positionsnummer = getUserProperty(ParamWorks, "Positionsnummer")
On Error Resume Next
Positionsnummer.Value = InputBox(oProducts.Item(I).Name, "Positionsnummer eingeben!")
On Error GoTo 0
Next

End Sub

Function getUserProperty(UserProperties As Parameters, ParameterName As String) As Parameter

Dim I As Integer
For I = 1 To UserProperties.Count
If Right(UserProperties.Item(I).Name, Len(ParameterName)) = ParameterName Then
Set getUserProperty = UserProperties.Item(I)
Exit Function
End If
Next
Set getUserProperty = Nothing
End Function


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: 06. Feb. 2019 15:47    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 Suchtiii94 10 Unities + Antwort hilfreich

Servus

Du kannst doch einfach prüfen ob getUserProperty Nothing zurück liefert.
Du könntest natürlich auch die Funktion erweitern, dass der Parameter erzeugt wird und gleich ein Wert zugewiesen wird.

Gruß
Bernd

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

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

Suchtiii94
Mitglied
Konstrukteur


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

Beiträge: 44
Registriert: 23.10.2017

Catia V5 R28 SP3

erstellt am: 06. Feb. 2019 16: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

Servus,

wie mache ich diese Überprüfung?
Das mit dem erweitern ist eine gute Idee für andere Parameter

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: 06. Feb. 2019 16: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 Suchtiii94 10 Unities + Antwort hilfreich

Servus

Schau dir nochmal diesen Code an.
Hinweis: Verwende On Error Resume next nur wenn du genau weißt was du tust.

Gruß
Bernd

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

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

Suchtiii94
Mitglied
Konstrukteur


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

Beiträge: 44
Registriert: 23.10.2017

Catia V5 R28 SP3

erstellt am: 06. Feb. 2019 17:08    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, ich hab es geschafft.

Diese Zeile war der Übeltäter:

Code:
If sMaterial Is Nothing Then

ich hatte gschrieben:

Code:
If sMaterial = Nothing Then

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