Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Parameter Count, nicht vorhanden dann Abbruch

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:  Parameter Count, nicht vorhanden dann Abbruch (1827 mal gelesen)
moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 09. Jan. 2012 22: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

Hallo zusammen,

habe mir ein Makro gescchrieben, daß mir einen bestimmten Parameter auf "True" oder "False" setzt in einer Produktstruktur.

Funktioniert soweit.

Code:
Set boolParam1 = parameters1.Item("BBOX_AN_AUS")
boolParam1.Value = bWertboolean

Ist aber in einem Part dieser Parameter nicht vorhanden, funktionirt es nicht mehr.

Wie kann ich nun nach dem Parameter suchen und abbrechen lassen wenn er nicht vorhanden ist.
Bitte um verständniss bin Anfänger.

Gruß Uwe

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

DanielFr.
Moderator
Manager


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

Beiträge: 2506
Registriert: 10.08.2005

HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3

erstellt am: 10. Jan. 2012 06:54    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 moppesle 10 Unities + Antwort hilfreich

Hallo Uwe,

am besten geht dies mit Hilfe einer Fehlerbehandlung. Anbei mal ein kurzes Beispiel:

Code:

On Error Goto ErrHandler 'ErrHandler ist hierbei die Sprungmarke auf die das Script spring falls er einen Fehler auslößt da er ja das .Item nicht finden kann

Set boolParam1 = parameters1.Item("BBOX_AN_AUS")
boolParam1.Value = bWertboolean

ErrHandler:
If Err.Number <> 0 then 'Hier kannst du jetzt den Fehler mittels seiner Fehlernummer exakt untersuchen. Fall zum Beispiel die Fehlernummer -2145789 zurückgegeben wird, kannst du dies explizit behandlen
MsgBox "Der Parameter wurde nicht gefunden", vbInformation," Abbruch"
Exit Sub
Else
Exit Sub
End If


------------------
MFG Daniel

Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...)

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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 10. Jan. 2012 07: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

Hallo Daniel,

danke für deine Mühe.
Leider ist das nicht ganz was ich gesucht habe. Hab mich vieleicht nicht richtig ausgedrückt.

Ich gehe Rekursiv durch meine Struktur, und möchte in jedem Part den Parameter verändern.
Wenn dieser Parameter im Part nicht enthalten ist (was auch sein kann) soll das Makro einfach ohne Fehlermeldung weiterlaufen und nichts an diesem Part ändern.
(The methode Item failed)ist dann die Meldung die ich bekomme.

Gruß Uwe

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

Beiträge: 1118
Registriert: 29.05.2008

DELL PRECISION T3500
Intel(R) Xeon(R) CPU W3540 @ 2.93GHz
12285 MB RAM
NVIDIA Quadro FX 1800
Microsoft Windows 7 Enterprise Service Pack 1
CATIA V5 R19 SP09 HF69
VB6.5
CAA RADE CDC

erstellt am: 10. Jan. 2012 08: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 moppesle 10 Unities + Antwort hilfreich

Ne Rekursion machste ja über eine Prozedur oder Funktion. Diese verlässt Du einfach im Fehlerfall.

also

Code:

Private Sub meineRekursion()
On Error Goto ErrHandler 'ErrHandler ist hierbei die Sprungmarke auf die das Script spring falls er einen Fehler auslößt da er ja das .Item nicht finden kann

Set boolParam1 = parameters1.Item("BBOX_AN_AUS")
boolParam1.Value = bWertboolean

Exit Sub
ErrHandler:
Err.clear
End Sub


Was mir jedoch besser gefallen würde wäre, wenn statt mit der Sprungmarke und einem geschmissenen Fehler zu arbeiten, Du lieber vorher schaust ob es den Parameter gibt und wenn nicht dann direkt ein Exit Sub machst. Das wäre duetlich stabiler und würde die Fehlerbehandlung nicht unterbinden. :-)

Also Daniels Vorschlag war schon der richtige, er musste nur auf Deine neue Aufgabe angepasst werden. :-)

------------------
Mit freundlichen Grüßen,
Henry Schneider
alias Lila

Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren:
Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen,
die Natur versucht, immer bessere Idioten zu bauen

Xing

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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 10. Jan. 2012 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 Henry

Zitat:
Was mir jedoch besser gefallen würde wäre, wenn statt mit der Sprungmarke und einem geschmissenen Fehler zu arbeiten, Du lieber vorher schaust ob es den Parameter gibt und wenn nicht dann direkt ein Exit Sub machst

Das ist das was ich mir vorgestellt habe. Habe das ganze schon in einer Funktion stehen, müßte diese nur noch anpassen.
Hier mal die Funktion:

Code:
Function ChangeParameter(RefDoc As Document, Prod as Product) As Integer
'MsgBox "test2"

'Dim iCount As Integer
'Dim sArr As String
Dim PartProd As Part
Dim parameters1 As Parameters
Dim boolParam1 As Parameter

If Typename(RefDoc) = "PartDocument" Then

set PartProd = RefDoc.Part
Set parameters1  = PartProd.Parameters

Else

Set parameters1  = Prod.Parameters

End if


Set boolParam1 = parameters1.Item("BBOX_AN_AUS")
boolParam1.Value = bWertboolean

end Function


Wie bekomme ich das hin.
Sorry bin Programmieranfänger

Gruß Uwe

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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 10. Jan. 2012 11:17    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 Daniel,

hab deinen Code mal eingebaut. Bekomme aber eine Fehlermeldung in der Zeile (On Error Goto ErrHandler). (kommpelierungsfehler in Microsoft VBScript.  (Syntaxfehler))

Was mache ich falsch?

Gruß Uwe

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

DanielFr.
Moderator
Manager


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

Beiträge: 2506
Registriert: 10.08.2005

HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3

erstellt am: 10. Jan. 2012 12:55    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 moppesle 10 Unities + Antwort hilfreich

Hallo Uwe,

du machst gar nichts falsch. Ein VBScript unterstützt keine Sprungmarken. DIese können nur in CatScripten und VBA-Makros verwendet werden.

Die Laufzeitfehlerbehandlung kann jedoch genau wie bei CATScript und VBA auch in einem VBScript abgeschaltet werden. Anbei nochmal ein anderer Beispielcode. Hier habe ich die Anmerkungen von Henry noch eingebaut. Zum Ablauf sieht das jetzt folgendermaßen aus:

1. Aus der CATMain Routine wird die Funktion zum Ändern des Wertes ausgerufen (bzw. aus deiner Rrkursiven Routine)
2. Die Laufzeitfehlerbehandlung wird abgeschaltet
3. Das Script prüft die Zugreifbarkeit des Parameters
4. Fall er verfügbar ist wird er geändert / falls nicht wird die Routine verlassen

Ich hoffe das hilft dir erst einmal weiter.

Code:

Dim bWertboolean 'As Boolean

Sub CATMain()

    '***DEKLARATIONEN
    Dim objDoc 'As Document
    Dim objRootProduct 'As Product
    Dim objProduct 'As Product
   
    '***WERTZUWEISUNG (NUR EXEMPLARISCH)
    bWertboolean = true
   
    '***DOKUMENT INSTANZIEREN
    Set objDoc = CATIA.ActiveDocument
   
    '***DOKUMENTENTYP ABFRAGEN
    If TypeName(objDoc) <> "ProductDocument" Then
        MsgBox "Ungültiger Dateityp!" + vbNewLine + "Das Makro kann nur in einem Product ausgeführt werden", vbExclamation, "Falscher Dateityp"
        Exit Sub
    End If
   
    '***PRODUKTE INSTANZIEREN (AUCH PARTS)
    Set objRootProduct = objDoc.Product
   
    '***SCHLEIFE DURCH PRODUKTE
    For Each objProduct In objRootProduct.Products
        FuncChangeParameter objProduct.ReferenceProduct.Parent
    Next

End Sub

'***FUNKTION ZUM AENDERN VON PARAMETERN
Function FuncChangeParameter(RefDoc)' As Integer

    '***DEKLRATIONEN
    Dim PartProd 'As Part
    Dim parameters1 'As Parameters
    Dim boolParam1 'As Parameter
   
    '***BESTIMMUNG DES DOKUMENTENTYPES
    If TypeName(RefDoc) = "PartDocument" Then
        Set PartProd = RefDoc.Part
        Set parameters1 = PartProd.Parameters
    ElseIf TypeName(RefDoc) = "ProductDocument" Then
        Set parameters1 = RefDoc.Product.Parameters
    Else
        MsgBox "Unerwarteter Dokumententyp!", vbExclamation, "DOKUMENT: FEHLER"
    End If

    '***PARAMTER ZUWEISEN (FEHLER WIRD GGF IRGONIERT)
    On Error Resume Next 'Laufzeitfehlerbehandlung ausschalten
    Set boolParam1 = parameters1.Item("BBOX_AN_AUS")
   
    If boolParam1 Is Nothing Then 'Der gewünschte Parameter NICHT
        ChangeParameter = -1 'Rueckgabewert bestimmen (Fall: Parameter wurde nicht gefunden)
    Else
        boolParam1.Value = bWertboolean 'Wertzuweisung an Parameter
        ChangeParameter = 1 'Ruckgabewerte bestimmen (Fall: Parameter wurde erfolgreich geändert)
    End If
   
    '***LAUFZEITFEHLERBEHANDLUNG EINSCHALTEN
    On Error GoTo 0

End Function




------------------
MFG Daniel

Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...)

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

Beiträge: 1118
Registriert: 29.05.2008

DELL PRECISION T3500
Intel(R) Xeon(R) CPU W3540 @ 2.93GHz
12285 MB RAM
NVIDIA Quadro FX 1800
Microsoft Windows 7 Enterprise Service Pack 1
CATIA V5 R19 SP09 HF69
VB6.5
CAA RADE CDC

erstellt am: 10. Jan. 2012 13: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 moppesle 10 Unities + Antwort hilfreich

CATSkript unterstützt, glaube ich, keine Sprungmarken.

Aber auch kein Problem.

Dann mach ein

Code:

On Error Resume Next

und mach nach der entsprechenden Stelle, wo der Fehler auftreten müsste:

Code:

If(Not Err.Number = 0) then
  ' hier Dein Code
end if
End Sub

------------------
Mit freundlichen Grüßen,
Henry Schneider
alias Lila

Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren:
Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen,
die Natur versucht, immer bessere Idioten zu bauen

Xing

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

DanielFr.
Moderator
Manager


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

Beiträge: 2506
Registriert: 10.08.2005

HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3

erstellt am: 10. Jan. 2012 18:16    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 moppesle 10 Unities + Antwort hilfreich

Hallo zusammen,

CATScript: Sprungmarken werden vollständig unterstützt
CATVBA: Sprungmarken werden vollständig unterstützt
VBScript: Sprungsmarken werden NICHT unterstützt

Das deaktivieren der Laufzeitfehlerbehandlung und die Abfrage mittel Err.Number (Err-Objekt) wird jedoch bei allen Scriptformen unterstützt

------------------
MFG Daniel

Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...)

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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 10. Jan. 2012 18:50    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 Daniel,

hab dein Script teilweise in meine Struktur eingearbeitet. Funktionier wunderbar.
Danke auch für die detaillierte Erklärung der Einzelnen Schritte. Hat mir sehr geholfen.

Danke auch dir Henry


Gruß Uwe

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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 27. Mai. 2014 09:45    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,

möchte dieses Thema wieder auffwärmen.

Habe mir das Makro von Daniel angepasste um einen Stringparameter (Stuecklistenrelevant)
in allen Produkten und Parts umzubenennen.
Leider werden nur die Parameter der Part aber nicht die der Produkte umbenannt.

Hat da jemand einen Tip.


Code:

Dim sWertString 'As String

Sub CATMain()

    '***DEKLARATIONEN
    Dim objDoc 'As Document
    Dim objRootProduct 'As Product
    Dim objProduct 'As Product
 
    '***WERTZUWEISUNG (NUR EXEMPLARISCH)
    sWertString = "das ist ein test 12315"
 
    '***DOKUMENT INSTANZIEREN
    Set objDoc = CATIA.ActiveDocument
 
    '***DOKUMENTENTYP ABFRAGEN
    If TypeName(objDoc) <> "ProductDocument" Then
        MsgBox "Ungültiger Dateityp!" + vbNewLine + "Das Makro kann nur in einem Product ausgeführt werden", vbExclamation, "Falscher Dateityp"
        Exit Sub
    End If
 
    '***PRODUKTE INSTANZIEREN (AUCH PARTS)
    Set objRootProduct = objDoc.Product
 
    '***SCHLEIFE DURCH PRODUKTE
    For Each objProduct In objRootProduct.Products
        FuncChangeParameter objProduct.ReferenceProduct.Parent
    Next

End Sub

'***FUNKTION ZUM AENDERN VON PARAMETERN
Function FuncChangeParameter(RefDoc)' As Integer

    '***DEKLRATIONEN
    Dim PartProd 'As Part
    Dim parameters1 'As Parameters
    Dim boolParam1 'As Parameter
 
    '***BESTIMMUNG DES DOKUMENTENTYPES
    If TypeName(RefDoc) = "PartDocument" Then
        Set PartProd = RefDoc.Part
        Set parameters1 = PartProd.Parameters
    ElseIf TypeName(RefDoc) = "ProductDocument" Then
        Set parameters1 = RefDoc.Product.Parameters
    Else
        MsgBox "Unerwarteter Dokumententyp!", vbExclamation, "DOKUMENT: FEHLER"
    End If

    '***PARAMTER ZUWEISEN (FEHLER WIRD GGF IRGONIERT)
    On Error Resume Next 'Laufzeitfehlerbehandlung ausschalten
    Set boolParam1 = parameters1.Item("Stuecklistenrelevant")
 
    If boolParam1 Is Nothing Then 'Der gewünschte Parameter NICHT
        ChangeParameter = -1 'Rueckgabewert bestimmen (Fall: Parameter wurde nicht gefunden)
    Else
        boolParam1.Value = sWertString 'Wertzuweisung an Parameter
        ChangeParameter = 1 'Ruckgabewerte bestimmen (Fall: Parameter wurde erfolgreich geändert)
    End If
 
    '***LAUFZEITFEHLERBEHANDLUNG EINSCHALTEN
    On Error GoTo 0
End Function


------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!    

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: 27. Mai. 2014 12:37    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 moppesle 10 Unities + Antwort hilfreich

Servus Uwe
Vermutlich scheitert das Makro daran, dass in einem Product die Parameter immer den Namen mit dem Muster "Name_des_Products\Parametername" vorliegt. Deshalb liefert dir das Makro keinen Parameter zurück. (siehe ähnliche Lösung siehe hier)
Zusätzlich werden in der Parameter-Collection des Rootproducts auch alle Parameter von SubProducts und Einzelteilen erfasst. Deshalb solltest du auf die Parameter-Collection des Products mit "oDoc.Product.Parameters.RootparameterSet.DirectParameteres" zugreifen.

Gruß
Bernd

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

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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 27. Mai. 2014 14:21    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


27-05-201414-20-36.jpg

 
Hallo Bernd,
hab mal den Code angepasst.Fett gedruckt.
Leider werden jetzt nur noch ein Part und ein Produkt geändert. 

Code:
Dim sWertString 'As String

Sub CATMain()

    '***DEKLARATIONEN
    Dim objDoc 'As Document
    Dim objRootProduct 'As Product
    Dim objProduct 'As Product

    '***WERTZUWEISUNG (NUR EXEMPLARISCH)
    sWertString = "test nein"

    '***DOKUMENT INSTANZIEREN
    Set objDoc = CATIA.ActiveDocument

    '***DOKUMENTENTYP ABFRAGEN
    If TypeName(objDoc) <> "ProductDocument" Then
        MsgBox "Ungültiger Dateityp!" + vbNewLine + "Das Makro kann nur in einem Product ausgeführt werden", vbExclamation, "Falscher Dateityp"
        Exit Sub
    End If

    '***PRODUKTE INSTANZIEREN (AUCH PARTS)
    Set objRootProduct = objDoc.Product

    '***SCHLEIFE DURCH PRODUKTE
    For Each objProduct In objRootProduct.Products
        FuncChangeParameter objProduct.ReferenceProduct.Parent
    Next

End Sub

'***FUNKTION ZUM AENDERN VON PARAMETERN
Function FuncChangeParameter(RefDoc) ' As Integer

    '***DEKLRATIONEN
    Dim PartProd 'As Part
    Dim parameters1 'As Parameters
    Dim boolParam1 'As Parameter

    '***BESTIMMUNG DES DOKUMENTENTYPES
    If TypeName(RefDoc) = "PartDocument" Then
        Set PartProd = RefDoc.Part
        Set parameters1 = PartProd.Parameters
    ElseIf TypeName(RefDoc) = "ProductDocument" Then
        'Set parameters1 = RefDoc.Product.Parameters
        Set parameters1 = RefDoc.Product.Parameters.RootParameterSet.DirectParameters
    Else
        MsgBox "Unerwarteter Dokumententyp!", vbExclamation, "DOKUMENT: FEHLER"
    End If

    '***PARAMTER ZUWEISEN (FEHLER WIRD GGF IRGONIERT)
    On Error Resume Next 'Laufzeitfehlerbehandlung ausschalten
    Set boolParam1 = parameters1.Item("Stuecklistenrelevant")

    If boolParam1 Is Nothing Then 'Der gewünschte Parameter NICHT
        ChangeParameter = -1 'Rueckgabewert bestimmen (Fall: Parameter wurde nicht gefunden)
    Else
        boolParam1.Value = sWertString 'Wertzuweisung an Parameter
        ChangeParameter = 1 'Ruckgabewerte bestimmen (Fall: Parameter wurde erfolgreich geändert)
    End If

    '***LAUFZEITFEHLERBEHANDLUNG EINSCHALTEN
    On Error GoTo 0
End Function


------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!    

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: 27. Mai. 2014 14: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 Nur für moppesle 10 Unities + Antwort hilfreich

Servus
Ist ja klar. Dein Makro arbeitet nur die erste Ebene ab.
Damit alles abgearbeitet wird musst du das Makro rekursiv aufbauen.

Gruß
Bernd

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

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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 27. Mai. 2014 15: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


Ja macht denn
Code:
For Each objProduct In objRootProduct.Products

nicht alle Produkte durch?

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!    

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: 27. Mai. 2014 15: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 moppesle 10 Unities + Antwort hilfreich

Servus
Nur die Products der ersten Ebene, also Einzelteile und direkte Unterprodukte.

Gruß
Bernd

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

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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 27. Mai. 2014 16:04    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

OK, habs jetzt umbebaut und läuft.

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!    

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