Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Formeln und Parameter im Macro

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:  Formeln und Parameter im Macro (2628 mal gelesen)
dermatze
Mitglied
Tischlermeister

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

Beiträge: 6
Registriert: 30.07.2007

CATIA V5 R16 auf altem Rechner mit WIN 2K

erstellt am: 30. Jul. 2007 18: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

Hallo,
als erstes will ich sagen, dass ich noch ganz frisch unter den Macroschreibern bin und hoffe hier überhaupt richtig zu sein.

Bis jetzt lief alles was ich geschrieben habe sehr gut.
Jetzt möchte ich einige Parameter schreiben, um damit die Stückliste zu aktualisieren und nun komme ich an meine Grenzen.

Die Paras sollen in vorhandene Parts eingefügt werden.
Funktioniert alles Prima, aber leider schaffe ich es nicht die Verknüpfungen zum Part1 zu entfernen.

Hier mal mein Code:

Sub CATMain()

Dim partDocument1 As PartDocument
Set partDocument1 = CATIA.ActiveDocument


'-----------------------
'#Stuecklisteninfo    erstellen
'-----------------------


Dim part1 As Part
Set part1 = partDocument1.Part

Dim hybridBodies1 As HybridBodies
Set hybridBodies1 = part1.HybridBodies

Dim hybridBody1 As HybridBody
Set hybridBody1 = hybridBodies1.Add()

hybridBody1.Name = "#Stuecklisteninfo"

part1.Update


'----------------------------------------
'Parameter für #Stücklisteninfo erstellen
'----------------------------------------


Dim parameters1 As Parameters
Set parameters1 = part1.Parameters

Dim strParam1 As StrParam
Set strParam1 = parameters1.CreateString("Zeichenfolge.1", "")

strParam1.Rename "Material"

Set partDocument1 = CATIA.ActiveDocument

Dim selection1 As Selection
Set selection1 = partDocument1.Selection

selection1.Clear

selection1.Add strParam1

selection1.Cut

Set partDocument1 = CATIA.ActiveDocument

Dim selection2 As Selection
Set selection2 = partDocument1.Selection

selection2.Clear

selection2.Add hybridBody1

selection2.Paste

Dim product1 As Product
Set product1 = partDocument1.GetItem("Part1")  ' Hier mein Problem

Dim parameters2 As Parameters
Set parameters2 = product1.UserRefProperties

Dim strParam2 As StrParam
Set strParam2 = parameters2.CreateString("Material", "")

strParam2.ValuateFromString ""

'-------------------------------------------------------------
'Formel zwischen #Stuecklisteninfo und Eigenschaften erstellen
'-------------------------------------------------------------

Set product1 = product1.ReferenceProduct

Dim publications1 As Publications
Set publications1 = product1.Publications

Dim relations1 As relations
Set relations1 = product1.relations

Dim formula1 As Formula
Set formula1 = relations1.CreateFormula("Formel.1", "", strParam2, "`Part1\#Stuecklisteninfo\Material` ") 'Hier mein Problem

formula1.Rename "Formel.1"

Set product1 = product1.ReferenceProduct

End Sub

Wie gesagt, ich würde gerne das "Part1\" raus bekommen.
oder gibt vielleicht eine Möglichkeit das ganz anders zumachen?

Wäre schön,wenn mir jemand weiter helfen könnte.

Gruß

Matze

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

Thomas Harmening
Ehrenmitglied V.I.P. h.c.
Arbeiter ツ



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

Beiträge: 2897
Registriert: 06.07.2001

NX 10
Win 7

erstellt am: 30. Jul. 2007 20: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 dermatze 10 Unities + Antwort hilfreich

teste mal das hier,

ist zwar nicht schön, der code - im  Prinzip habe ich nebenbei auch nur aufgezeichnet, was Catia da macht und hier und da angepasst-
aber auf das Part bezogen sollte es funktioniert -

ich wurde auch nicht ganz so schlau, ob Verweise aus einem anderen Part herangezogen werden sollen.

Code:
Sub CATMain()
'Set CATIA = GetObject("", "CATIA.Application")'entfernen, da macro aus XL getestet
Dim partDocument1 'As PartDocument
Set partDocument1 = CATIA.ActiveDocument

'-----------------------
'#Stuecklisteninfo    erstellen
'-----------------------
Dim part1 'As Part
Set part1 = partDocument1.Part
Dim hybridBodies1 'As HybridBodies
Set hybridBodies1 = part1.HybridBodies
Dim hybridBody1 'As HybridBody
Set hybridBody1 = hybridBodies1.Add()

hybridBody1.Name = "#Stuecklisteninfo"

'----------------------------------------
'Parameter für #Stücklisteninfo erstellen
'----------------------------------------
Dim parameters1 'As Parameters
Set parameters1 = part1.Parameters
Dim strParam1 'As StrParam
Set strParam1 = parameters1.CreateString("W-Material.2", "") 'hier schon Namen vergeben
'wird nur benötigt wenn mehrfachauswahl
Dim arrayOfVariantOfBSTR1(1)
arrayOfVariantOfBSTR1(0) = "Marmor"
arrayOfVariantOfBSTR1(1) = "Stein"
arrayOfVariantOfBSTR1(2) = "Eisen"
strParam1.SetEnumerateValues arrayOfVariantOfBSTR1
strParam1.Value = arrayOfVariantOfBSTR1(0) 'wertübergabe array(0)

strParam1.Rename "W-Material" 'wenn es sein muss

'Set partDocument1 = CATIA.ActiveDocument

Dim selection1 'As Selection
Set selection1 = partDocument1.Selection
selection1.Clear
selection1.Add strParam1
selection1.Cut
selection1.Add hybridBody1
selection1.Paste

Dim product1 'As Product
Set product1 = partDocument1.GetItem("dummy") 'dummywert?' Hier mein Problem

'-------------------------------------------------------------
'Formel zwischen #Stuecklisteninfo und Eigenschaften erstellen
'-------------------------------------------------------------

Set product1 = product1.ReferenceProduct

Dim publications1 'As Publications
Set publications1 = product1.Publications

Dim relations1 'As Relations
Set relations1 = product1.Relations

Dim formula1 'As Formula

Set product1 = product1.ReferenceProduct
Set partDocument1 = CATIA.ActiveDocument
Set parameters1 = product1.UserRefProperties
Set strParam1 = parameters1.CreateString("Materialtest", "")
Set product1 = product1.ReferenceProduct
Set part1 = partDocument1.Part

aktuellerpartname = part1.Name 'Partnamen holen

Set relations1 = part1.Relations
Set formula1 = relations1.CreateFormula("Beschreibung-Materialzuweisung", "", strParam1, "`#Stuecklisteninfo\W-Material` ")
part1.Update
End Sub


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

dermatze
Mitglied
Tischlermeister

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

Beiträge: 6
Registriert: 30.07.2007

CATIA V5 R16 auf altem Rechner mit WIN 2K

erstellt am: 31. Jul. 2007 01:00    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 werde es gleich morgen ausprobieren und dann berichten

------------------
_______

Is doch immer wieder schön wie schnell die Zeit mit Problemen am PC vergeht

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

dermatze
Mitglied
Tischlermeister

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

Beiträge: 6
Registriert: 30.07.2007

CATIA V5 R16 auf altem Rechner mit WIN 2K

erstellt am: 31. Jul. 2007 14: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

Dankeschön, hat wunderbar funktioniert

Jetzt noch eine andere Frage, gibt es eine möglichkeit, das ganze gleich an einem Part durchzuführen, obwohl ich im Assembly arbeite, und nur das Part in Bearbeitung definiere??

Gruß

Matze

------------------
Is doch immer wieder schön wie schnell die Zeit mit Problemen am PC vergeht

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

Lusilnie
Mitglied



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

Beiträge: 1486
Registriert: 13.07.2005

erstellt am: 08. Aug. 2007 23:44    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 dermatze 10 Unities + Antwort hilfreich

Hallo dermatze,

wenn Du die Zeile

Code:
Set partDocument1 = CATIA.ActiveDocument
in
Code:
Set partDocument1 = CATIA.Document.Item("Dein_Part_Name")
änderst, dann sollte es funktionieren. ODER???


mfg,
Lusilnie


------------------

Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!!

frei nach größeren Geistern

[Diese Nachricht wurde von Lusilnie am 08. Aug. 2007 editiert.]

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

dermatze
Mitglied
Tischlermeister

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

Beiträge: 6
Registriert: 30.07.2007

CATIA V5 R16 auf altem Rechner mit WIN 2K

erstellt am: 09. Aug. 2007 18:35    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

Dann klappt es an dem einen Part, ja das stimmt.

Leider aber nicht an jedem Belibigen in einem Produkt.

Trotzdem danke

------------------
Is doch immer wieder schön wie schnell die Zeit mit Problemen am PC vergeht

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

Lusilnie
Mitglied



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

Beiträge: 1486
Registriert: 13.07.2005

erstellt am: 09. Aug. 2007 21:46    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 dermatze 10 Unities + Antwort hilfreich

Hallo dermatze,

wie meinst Du das: "Leider aber nicht an jedem Belibigen in einem Produkt."?
Was willst du eigentlich machen?

Für eine Ausführung des Macros an einem zu wählenden Part innerhalb eines Products muss man nur eine Selektion vorschalten, mit der man das entsprechende Part auswählt. Danach einfach das ReferenceProduct davon bestimmen und dieses als zu be-/verarbeitendes Part festlegen.


mfg,
Lusilnie

------------------

Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!!

frei nach größeren Geistern

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

dermatze
Mitglied
Tischlermeister

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

Beiträge: 6
Registriert: 30.07.2007

CATIA V5 R16 auf altem Rechner mit WIN 2K

erstellt am: 09. Aug. 2007 23: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

Ich möchte in ältere Konstruktionen Parameter einfügen, in die ich dann Stücklisteninformationen einfügen kann.

Somit sind das immer wieder Parts mit anderen Bezeichnungen.
und diese sind in Produkten mit anderer Bezeichnung. Somit ist "Item" schlecht.

Ich bekomme es einfach nicht hin. 

Gruß Matze

------------------
Is doch immer wieder schön wie schnell die Zeit mit Problemen am PC vergeht

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

Lusilnie
Mitglied



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

Beiträge: 1486
Registriert: 13.07.2005

erstellt am: 10. Aug. 2007 01: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 Nur für dermatze 10 Unities + Antwort hilfreich


insert_stk-parameter_new.CATScript.txt

 
Hallo dermatze,

ich habe die Idee mit der Selektion mal in das Script eingebaut und jenes auch etwas aufgeräumt:

Code:
Sub CATMain()

    Dim iFilter(0)
    iFilter(0) = "Part"
    Dim selection1 As Object 'As Selection
    Set selection1 = CATIA.ActiveDocument.Selection
   
    If CATIA.SystemConfiguration.Release > "14" Then
        selection1.SelectElement2 iFilter, "Bitte Part waehlen!", True
    Else
        selection1.SelectElement iFilter, "Bitte Part waehlen!", True
    End If
   
    Dim partDocument1 As PartDocument
    Set partDocument1 = selection1.Item(1).Value.Parent
   
    '-----------------------
    '#Stuecklisteninfo    erstellen
    '-----------------------
    Dim part1 As Part
    Set part1 = partDocument1.Part
    Dim hybridBodies1 As HybridBodies
    Set hybridBodies1 = part1.HybridBodies
    Dim hybridBody1 As HybridBody
    Set hybridBody1 = hybridBodies1.Add()
    hybridBody1.Name = "#Stuecklisteninfo"
   
    '----------------------------------------
    'Parameter fuer #Stuecklisteninfo erstellen
    '----------------------------------------
    Dim parameters1 As Parameters
    Set parameters1 = part1.Parameters
    Dim strParam1 As Object 'As StrParam
    Set strParam1 = parameters1.SubList(hybridBody1, False).CreateString("W-Material", "") 'hier schon Namen vergeben
    'wird nur benoetigt wenn mehrfachauswahl
    Dim arrayOfVariantOfBSTR1(2)
    arrayOfVariantOfBSTR1(0) = "Marmor"
    arrayOfVariantOfBSTR1(1) = "Stein"
    arrayOfVariantOfBSTR1(2) = "Eisen"
    strParam1.SetEnumerateValues arrayOfVariantOfBSTR1
    strParam1.Value = arrayOfVariantOfBSTR1(0) 'wertuebergabe array(0)
   
    '-------------------------------------------------------------
    'Formel zwischen #Stuecklisteninfo und Eigenschaften erstellen
    '-------------------------------------------------------------
    Dim product1 As Product
    Set product1 = partDocument1.Product
   
    Set parameters1 = product1.UserRefProperties
    Set strParam1 = parameters1.CreateString("Materialtest", "")
   
    Set part1 = partDocument1.Part
    Dim aktuellerpartname As String
    aktuellerpartname = part1.Name 'Partnamen holen
   
    Dim relations1 As Relations
    Set relations1 = part1.Relations
   
    Dim formula1 As Formula
    Set formula1 = relations1.CreateFormula("Beschreibung-Materialzuweisung", "", strParam1, "`#Stuecklisteninfo\W-Material` ")
   
    part1.Update
   

End Sub


Damit wird nun das erste vorselektierte oder ein zu selektierendes Part(!) irgendwo im Product oder Sub-Product abgearbeitet.


mfg,
Lusilnie

------------------

Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!!

frei nach größeren Geistern

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

dermatze
Mitglied
Tischlermeister

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

Beiträge: 6
Registriert: 30.07.2007

CATIA V5 R16 auf altem Rechner mit WIN 2K

erstellt am: 10. Aug. 2007 22:22    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 Lusilnie,

ich werde es versuchen, hab aber jetzt erst einmal Urlaub.

Danke schon einmal Vorab.

Werde in 2 Wochen berichten.

Gruß Matze

------------------
Is doch immer wieder schön wie schnell die Zeit mit Problemen am PC vergeht

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