Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Bauteil Paramerter erzeugen und Veröffentlichen

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:  Bauteil Paramerter erzeugen und Veröffentlichen (708 mal gelesen)
-che-
Mitglied
CATIA V5 Ausbilder


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

Beiträge: 69
Registriert: 20.10.2003

Commodore Amiga 500
incl. 512kByte Speichererweiterung
Kickstart/Workbench 1.3

erstellt am: 07. Sep. 2022 15:41    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,

kann mir hierbei evlt. jemand behilflich sein ... Ich habe ein Macro angefangen um in einem Part bei bedarf einen Parameter zu erzeugen und anschliessend zu Veröffentlichen.

Das erzeugen der sachen klappt hier wohl schon .. nur das verbinden des Parameter mit der Veröffentlichnung irgendwie nicht.


Language="VBSCRIPT"

Sub CATMain()

Set partDocument1 = CATIA.ActiveDocument
Set product1 = partDocument1.GetItem("part1.name")


On Error Resume Next
Err.Clear

Set strParam1 = product1.UserRefProperties.Item("DB_Number")


if Err.Number = 0 then

'----------Nothing TODO if Parameter Exists

else
Set parameters1 = product1.UserRefProperties
Set strParam1 = parameters1.CreateString("DB_Number", "")
strParam1.ValuateFromString ""

Set reference1 = product1.CreateReferenceFromName("DB_Number")
Set publications1 = product1.Publications
Set publication1 = publications1.Add("DB_Number")
publications1.SetDirect "DB_Number", reference1

Set settingControllers1 = CATIA.SettingControllers
Set visualizationSettingAtt1 = settingControllers1.Item("CATVizVisualizationSettingCtrl")

visualizationSettingAtt1.SaveRepository

end if

End Sub

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

Randle
Mitglied
CAD/PLM Consultant


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

Beiträge: 695
Registriert: 12.04.2003

Win10 x64
CATIA V5 R18, R19, R21, R27-29

erstellt am: 07. Sep. 2022 16: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 -che- 10 Unities + Antwort hilfreich

Hallo,

also du kannst von einem UserProperty keine direkte Veröffentlichung erstellen. Aber du kannst stattdessen einen Parameter anlegen und diesen mit einem UserProperty verknüpfen (Formel).

Ich habe deinen Code mal (schnell und schmutzig) umgeschrieben/angepassen.

Code:
Sub CATMain()

Set Partdocument1 = CATIA.ActiveDocument
Set product1 = Partdocument1.Product


On Error Resume Next
Err.Clear

Set strParam1 = Partdocument1.Part.Parameters.GetItem("DB_Number")


If Err.Number = 0 Then

'----------Nothing TODO if Parameter Exists

Else
Set parameters1 = Partdocument1.Part.Parameters
Set strParam1 = parameters1.CreateString("DB_Number", "")
strParam1.ValuateFromString ""

Set reference1 = product1.CreateReferenceFromName(product1.PartNumber & "/!" & "DB_Number")
Set publications1 = product1.Publications
Set publication1 = publications1.Add("DB_Number")
publications1.SetDirect "DB_Number", reference1
Set settingControllers1 = CATIA.SettingControllers
Set visualizationSettingAtt1 = settingControllers1.Item("CATVizVisualizationSettingCtrl")

visualizationSettingAtt1.SaveRepository

End If

End Sub


Hoffe das hilft weiter.
Gruß Randle

Nachtrag:
Manuell geht es doch eine direkt UserProperty zu veröffentlichen (hatte ich ganz vergessen), aber das funktioniert bei mir gerade auch (noch) nicht.
------------------
Wer für nichts steht, fällt für alles!

[Diese Nachricht wurde von Randle am 07. Sep. 2022 editiert.]

[Diese Nachricht wurde von Randle am 07. Sep. 2022 editiert.]

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

Randle
Mitglied
CAD/PLM Consultant


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

Beiträge: 695
Registriert: 12.04.2003

Win10 x64
CATIA V5 R18, R19, R21, R27-29

erstellt am: 07. Sep. 2022 18: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 Nur für -che- 10 Unities + Antwort hilfreich

Hallo,

also ich habe jetzt noch mal einiges versucht und es scheint nicht möglich zu sein, eine benutzerdefinierte Eigenschaft per Makro zu veröffentlichen (manuell geht es ja).

Im Internet habe ich dann noch eine "Bestätigung" hierzu gefunden:
https://stackoverflow.com/questions/61802957/vba-publication-in-catia

Das Problem ist das die Funktion CreateReferenceFromName (vom Product) fehlschlägt. Ich habe den manuellen Vorgang mal mit dem Makrorekorder aufgenommen und mein Code entsprach genau dem aufgenommenen Code. Bei beiden schlägt bei der Ausführung die Funktion CreateReferenceFromName fehl.

Es bleibt dann wohl nur der Umweg über einen Parameter und diesen dann mit einer Formel mit der benutzerdefinierten Eigenschaft zu verknüpfen. Schade!

Vielleicht fällt ja jemand anders hier noch was ein.

------------------
Wer für nichts steht, fällt für alles!

[Diese Nachricht wurde von Randle am 07. Sep. 2022 editiert.]

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

-che-
Mitglied
CATIA V5 Ausbilder


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

Beiträge: 69
Registriert: 20.10.2003

Commodore Amiga 500
incl. 512kByte Speichererweiterung
Kickstart/Workbench 1.3

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

Hallo Randle,

ich habe, genauso wie Du, zunächst über eine Makroaufzeichnung versucht den Code zu erhalten … das Reproduzieren schlägt fehl.

Deine Methode, mit dem zusätzlich erzeugten Parameter zur Übergabe funktioniert einwandfrei!! … vielen Dank dafür.

Gruß, -che-

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

-che-
Mitglied
CATIA V5 Ausbilder


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

Beiträge: 69
Registriert: 20.10.2003

Commodore Amiga 500
incl. 512kByte Speichererweiterung
Kickstart/Workbench 1.3

erstellt am: 08. Sep. 2022 13:41    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 den Code etwas verändert ... Ich benötige den Parameter auf Bauteil Eigenschaften Ebene, und dort soll der auch veränderlich sein.
Der Code funktioniert soweit auch gut ... nur habe ich eine Frage bezüglich deutsch / englisch.

Gibt es für den Code, wo engl-> Properties  und im deutsch-> Eigenschaften  stehen muss, einen sinnvollen allgemeinen Parameter, der an dessen Stelle stehen kann? ... im Code die fett markierten Anteile.


Language="VBSCRIPT"

Sub CATMain()

Set partDocument1 = CATIA.ActiveDocument
Set product1 = partDocument1.GetItem("part1.name")
Set product1 = product1.ReferenceProduct


Set parameters1 = product1.UserRefProperties
Set strParam1 = parameters1.CreateString("DB_Number", "")
strParam1.ValuateFromString ""

Set product1 = product1.ReferenceProduct
Set part1 = partDocument1.Part
Set parameters2 = part1.Parameters

Set strParam2 = parameters2.Item("Properties\DB_Number")

Dim arrayOfVariantOfBSTR1(1)
arrayOfVariantOfBSTR1(0) = "xxxx"
arrayOfVariantOfBSTR1(1) = "----"
strParam2.SetEnumerateValues arrayOfVariantOfBSTR1

strParam2.Value = "xxxx"

Set product1 = product1.ReferenceProduct
Set parameters3 = part1.Parameters
Set strParam3 = parameters3.CreateString("", "")

strParam3.Rename "DB_Number"
Set relations1 = part1.Relations

Set parameters1 = part1.Parameters
Set strParam1 = parameters1.Item("DB_Number")

Set formula1 = relations1.CreateFormula("Formel.11", "", strParam1, "`" & part1.name & "\Properties\DB_Number` ")
formula1.Rename "Formel.11"
strParam1.Hidden = True
formula1.Hidden = True
Set reference1 = product1.CreateReferenceFromName("DB_Number")
Set publications1 = product1.Publications
Set publication1 = publications1.Add("DB_Number")

publications1.SetDirect "DB_Number", reference1

Set settingControllers1 = CATIA.SettingControllers
Set visualizationSettingAtt1 = settingControllers1.Item("CATVizVisualizationSettingCtrl")

visualizationSettingAtt1.SaveRepository


End Sub

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: 08. Sep. 2022 15:02    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 -che- 10 Unities + Antwort hilfreich

Servus

Da du den Parameter gerade erzeugt hast, kannst du diesen wirkt weiterverwenden und brauchst nicht neu darauf zugreifen.
Per GetNameToUseInRelation kannst du dir direkt den "Pfad" für die Formel ausgeben lassen.

Code:
Set strParam1 = parameters1.CreateString("DB_Number", "")
MsgBox partDocument1.Part.Parameters.GetNameToUseInRelation(strParam1)

Gruß
Bernd

PS: Ich empfehle dir sprechende Variablennamen zu verwenden (was ist strParam1 dass du mindestens 2mal verwendest?)

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

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

-che-
Mitglied
CATIA V5 Ausbilder


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

Beiträge: 69
Registriert: 20.10.2003

Commodore Amiga 500
incl. 512kByte Speichererweiterung
Kickstart/Workbench 1.3

erstellt am: 08. Sep. 2022 15: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

Hallo Bernd,

danke für die Info ..

Der Parameter ist nicht doppelt .. heisst nur zufällig gleich

einer ist auf Datei- Eigenschaften Ebene

Set parameters1 = part1.Parameters
Set strParam1 = parameters1.Item("DB_Number")

und der andere ist auf User- Eigenschaften Ebene

Set parameters1 = product1.UserRefProperties
Set strParam1 = parameters1.CreateString("DB_Number", "")


... oder so verstehe ich das zumindest

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: 08. Sep. 2022 16:01    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 -che- 10 Unities + Antwort hilfreich

Servus

Dass der Parameter doppelt ist hab ich nicht behauptet.
Durch den Variablennamen verlierst du aber sehr schnell den Überblick.

Gruß
Bernd

Edit: zB strParam1 entspricht strParam2, strParam3 entspricht strParam1 (den du ein paar Zeilen später zuweist)

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

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