Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Makro Hilfe UserRefProperties

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:  Makro Hilfe UserRefProperties (6964 mal gelesen)
chs990
Mitglied



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

Beiträge: 10
Registriert: 22.02.2009

erstellt am: 26. Feb. 2009 18: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


Pic_1.jpg

 
Hallo zusammen,

ich habe ein kleines Problem mit einem Makro, mit dem ich mich schon seit letzter Woche quäle.
Diese Makro habe ich vor längerer Zeit aus dem Internet und für mich so umgesattelt das es meine benötigten Einträge ohne Fehlermeldung erstellt. Weil ich von der Makro Programmierung null Ahnung habe, steht mit Sicherheit auch viel unnützes drin.
Mit dem Makro lege ich in der Produktebene bei allen selektierten Parts die UserRefProperties (wie Hersteller, Bemerkung, usw..) an.

Problem 1: 
Unterhalb dem Parameter Bemerkung würde ich solch ein Auswahlfenster benötigen, wie es Standardmäßig  „Source“  vorhanden ist.        Name = Bauteilart                  Auswahl = Type1 ; Type2 ; Type3

Problem 2:
Zusätzlich soll das Makro vom angelegten Parameter „Bestelln. / Fertigmass“ ein Link zu dem als Standart vorhanden Parameter „Definition“ erstellen.
Sprich: Wenn ich bei „Bestelln. / Fertigmass“ einen Eintrag vornehme, soll dieser automatisch bei „Definition“ auch erscheinen.

Bin mit meinem Latein am Ende.
Währe für jede Hilfe herzlich dankbar.

Gruß
Ch.

Hier das Makro:

'// COPYRIGHT DASSAULT SYSTEMES  1999
'//============================================================================
'//
'// Language="VBSCRIPT"
'// Sample of macro to add and valuate attribute for data extraction
'// Author: Jean-Luc MINIER
'// Date  : September 7th, 2002
'// Rev.  : 01
'//
'//============================================================================
'// It is advised that the user understand the VBScript and VBA concepts before
'// attempting to modify the code to suit their needs. Microsoft Excel 97
'// provides excellent documentation on the use of VBScript and VBA.
'//
'//
'//============================================================================

dim workbooks as AnyObject
dim workbook as AnyObject
dim strWB as Workbench
dim strServ as AnyObject

'//---------------------------------------------------------------------------
'// User customization of the attributes which will be added or valuated
'// tabAttribute is an array which defines the name of the attributes
'// typAttribute is an array which defines the type of the attributes
'// In this sample we provide 4 types but many others are available
'// cf Knowledgeware automation guide
'//---------------------------------------------------------------------------
dim nbAttributes as integer
nbAttributes = 6
dim tabAttributes(6)
dim typAttributes(1)

tabAttributes(1) = "Menge"
tabAttributes(2) = "Bl."
tabAttributes(3) = "DIN / Werkstoff"
tabAttributes(4) = "Bestelln. / Fertigmass"
tabAttributes(5) = "Hersteller"
tabAttributes(6) = "Bemerkung"

typAttributes(1) = "String"
typAttributes(2) = "String"
typAttributes(3) = "String"
typAttributes(4) = "String"
typAttributes(5) = "String"
typAttributes(6) = "String"


'//---------------------------------------------------------------------------
'// Create parameters value
'//---------------------------------------------------------------------------
Sub CreateParameters(iProduct)
 
  On Error Resume Next

  dim parameters as Parameters
  dim userParameters as Parameters
  dim param as Parameter
  dim paramName as string

  dim RefProduct as Product
  set RefProduct = iProduct.ReferenceProduct

  set parameters = iProduct.ReferenceProduct.Parameters
  set userParameters = iProduct.ReferenceProduct.UserRefProperties

  dim nbParameters As Integer
  nbParameters = RefParameters.Count

  dim sInstanceName As String
  dim sPartNumber As String
  sInstanceName = iProduct.Name
  sPartNumber = iProduct.ReferenceProduct.Name

  Err.Clear

  dim lfound as Boolean
  dim i As Integer
  if (nbAttributes > 0) then
  for i = 1 to nbAttributes

Err.Clear

paramName = sPartNumber & "\Properties\" & tabAttributes(i)

'// We find if the attribute already exist
lfound = false
        for j = 1 To userParameters.Count
if (userParameters.Item(j).Name = paramName) then
set param = userParameters.Item(j)
  lfound = true
            end if
        next

  if (lfound = true) then
'// Update of the attribute value if needed
'// In this sample we modify the value using param.Value
if (typAttributes(i) = "String") then
Elseif (typAttributes(i) = "Length") then
Elseif (typAttributes(i) = "Real") then
Elseif (typAttributes(i) = "Integer") then
end if
  else
'// Creation of the attributes according to its type
'// If you need to create other type of attribute
'// you can use the mode Record to record a macro interactively and edit it to see the
'// synthax to be used.
if (typAttributes(i) = "String") then
set param = userParameters.CreateString(tabAttributes(i), ".")
          end if
end if
  Next
  end if
End Sub

'//---------------------------------------------------------------------------
'// Main
'//---------------------------------------------------------------------------
Sub CATMain()
    On Error Resume Next

    dim ActiveDoc As Document
    Set ActiveDoc = CATIA.ActiveDocument

    '// Check that the active document is a CATProduct
    If (InStr(ActiveDoc.Name,".CATProduct")) <> 0 Then

        dim product As Product
        dim selectedElts As Selection

        '// Read the selection defined for instance using the Edit/Search/General with the following options
'// Workbench = Assembly Design & Type = Part
'// ==> All the Products will be selected

        set selectedElts = ActiveDoc.Selection
        selectedElts.Search("Product,all")

        dim number, i, ind As Integer

'// Number of selected Products
        number = SelectedElts.Count

        msgbox "Nb selected elements: " & Cstr(number)

'// Initialize the first line of data
        For i=1 To number
   
            set product = SelectedElts.FindObject("CATIAProduct")

            CreateParameters product

        Next
    End If

    msgbox "The End"

End Sub


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: 27. Feb. 2009 00: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 Nur für chs990 10 Unities + Antwort hilfreich

Hallo chs990,

für beide Probleme kannst Du die Lösung "aufzeichnen", d.h. per Marko-Rekorder von CATIA die interaktiven Schritte dokumentieren und anschließend in Deinen Code einbauen.

Vielleicht ist die Lösung von "Problem 1" etwas tricky: Du musst erst den Parameter (UserProperty) anlegen (Panel mit OK verlassen!) und dann per "Add Multiple Values..." die Auswahl-Werte eingeben.


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

chs990
Mitglied



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

Beiträge: 10
Registriert: 22.02.2009

erstellt am: 27. Feb. 2009 17:38    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


Macro1.zip


PartEigenschaftenParameter_anlegen__.zip

 
Hallo Lusilnie,

das mit dem Marko-Rekorder hat bis auf den Link funktioniert, aber ich bekomme es nicht in mein vorh. Makro eingebaut.
Ich weis auch irgendwie nicht, an welcher Stelle ich es einfügen muß.
Kenne mich mit Makros leider NULL aus.
Könntest du mir bitte bei meinem Problem weiterhelfen.
In dem als Anhang enthalten Makro1 lege ich den neuen Parameter "Bauteilart" mit den drei Auswahltypen an und erzeuge den Link von „Bestelln. / Fertigmass“ zu dem vorhanden Parameter „Definition“.
Wenn ich das Makro1 an einem Part mit dem gleichen Namen (Part6) nochmals ablaufen lasse, geht alles bis auf die Verlinkung.

Bitte um Hilfe

Gruß
Ch.

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: 03. Mrz. 2009 00:14    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 chs990 10 Unities + Antwort hilfreich

Hallo chs990,

die Korrektur des aufgezeichneten Macros sollte mit:

Code:

...

Set parameters8 = part1.Parameters

Set parameter8 = parameters8.Item("Part6\Properties\Definition")

Set relations1 = product2.Relations

Set formula1 = relations1.CreateFormula("Formula.1", "", parameter8, "`Part6\Properties\Bestelln. / Fertigmass` ")

...


getan sein. Wie Du das in Dein Script einbaust, bekomme ich heute leider nicht mehr auf die Reihe! Vielleicht hilft Dir ja obige Korrektur ...


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

chs990
Mitglied



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

Beiträge: 10
Registriert: 22.02.2009

erstellt am: 24. Apr. 2009 10: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

Hallo Lusilnie,

DANKE für deine Hilfe und Sorry für die so späte Antwort, war in letzter Zeit mit meiner Arbeit sehr eingespannt.
Habe seit dieser Woche Urlaub und probiere wieder einmal an dem Makro herum.
Ich bekomme auch mit deiner Hilfe meine zwei zusätzlichen Sachen ( Verlinkung der Parameter Fertigmass zu Definition mit einer Formel und die drei Auswahlmöglichkeiten bei dem Parameter „ Bauteilart „ ) nicht gebacken.
Des weiteren ist mir auch bei dem Skript Ausschnitt von dir nicht klar, wie die Verlinkung bei  jedem Part erstellt wird?  (wegen der Part6 Bezeichnung)
Bei diesem Makro kann man in einem Produkt die gewünschten Parts (mehrere Parts) bei denen die Parameter gewünscht werden, selektieren und durch den Makro Ablauf anlegen lassen.

Vielleicht könntest du mir nochmals weiterhelfen.

Herzlichen Dank.

Gruß
Christian.

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