Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Properties hinzufügen für bestimmte Parts in einem Produkt

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:  Properties hinzufügen für bestimmte Parts in einem Produkt (2479 mal gelesen)
Dennis030186
Mitglied
Design Engineer


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

Beiträge: 121
Registriert: 19.01.2007

NX 5,6,7 ; CATIA V5 R-21

erstellt am: 06. Jan. 2014 12: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

Hallo liebe CADler,

ich habe ein Problem bezüglich der Programmierung in CATIA. Ich habe ziemlich große Produkte und dort sind in den Parts teilweise Publications vorhanden, deren Benennung EHISUPPORT-RefPoint... lautet. Für jedes Part was solch eine Publication besitzt möchte ich dem Part einmal eine userdefined property real und einmal string hinzufügen. Das Hinzufügen klappt zwar, aber ich weiß nicht, wie der Quelltext dann lautet um zu suchen ob in einem Part EHISUPPORT auftaucht und wenn ja in diesem Part die Property hinzugefügt werden soll, falls diese noch nicht dort vorhanden ist. Ich hoffe die Problematik ist verständlich. Für eure Hilfe wäre ich sehr dankbar.

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. Jan. 2014 12: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 Nur für Dennis030186 10 Unities + Antwort hilfreich

Servus
Zur Suche der entsprechenden Parts gibt es folgende Möglichkeiten:
- Schleife über alle geöffneten Dokumente und dort die entsprechende Veröffentlichung suchen (Unterbaugruppen und parallel geöffnete Baugruppen/Parts sind auch betroffen)
- Suche in der Baugruppe nach der Veröffentlichung und sich zum entsprechenden Part hoch-hangeln (auch Unterbaugruppen betroffen)
- Schleife über alle Products der Baugruppe und dort die entsprechende Veröffentlichung suchen (Unterbaugruppen nur betroffen wenn das AMkro rekursiv aufgebaut ist)
Um den Parameter anzusprechen könntest du diese Funktion verwenden. Diese könntest du noch entsprechend ausbauen, dass falls der Parameter nicht vorhanden ist dieser erstellt wird.

Gruß
Bernd

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

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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 06. Jan. 2014 12: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 Dennis030186 10 Unities + Antwort hilfreich

Hallo Dennis,

hier mal ein Beispiel zum finden der Publication...

Code:

Sub Example_FindPublication()

    Dim MainPRD         As Product
    Dim tmpnode         As Product
    Dim TmpPubs         As Publications
    Dim TmpPub          As Publication
    Dim i               As Integer
       
    Set MainPRD = CATIA.ActiveDocument.Product
   
    For Each tmpnode In MainPRD.Products
   
        Set TmpPubs = Nothing
        Set TmpPubs = tmpnode.Publications
       
        If TmpPubs.Count > 0 Then
           For i = 1 To TmpPubs.Count
              Set TmpPub = TmpPubs.Item(i)
              If TmpPub.Name = "EHISUPPORT-RefPoint" Then
                 MsgBox tmpnode.Name
              End If
           Next
        End If
       
    Next
   
End Sub


------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

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

Dennis030186
Mitglied
Design Engineer


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

Beiträge: 121
Registriert: 19.01.2007

NX 5,6,7 ; CATIA V5 R-21

erstellt am: 06. Jan. 2014 12: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,

danke erstmal für die schnellen Antworten. Ich muss dazu sagen ich bin nicht sehr versiert was Programmierung angeht. Ich habe den Quelltext jetzt eingebunden und mal laufen lassen. Man kann da jetzt so natürlich noch nichts sehen. Wie ist das denn weil nach Refplane kommen ja immer unterschiedliche Endungen wie 1 oder 1.1 etc. Mit dem Durchlaufen wie die Suche laufen sollte ist mir vom Prinzip her klar, bei mir harperts am Ende einfach an der Umsetzung. Vielleicht habt Ihr ja eine einfache recht schnelle Lösung wie der Quelltext dazu aussehen könnte? Danke in jedem Fall für eure Hilfe.

[Diese Nachricht wurde von Dennis030186 am 06. Jan. 2014 editiert.]

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. Jan. 2014 12: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 Dennis030186 10 Unities + Antwort hilfreich

Servus
Dann musst du beim Vergleich der Stings noch angeben, dass nur die ersten X Zeichen verglichen werden sollen. zB (ungetestet):
Code:
If left(TmpPub.Name, Len("EHISUPPORT-RefPoint"))= "EHISUPPORT-RefPoint" Then
Gruß
Bernd

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

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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 06. Jan. 2014 12:52    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 Dennis030186 10 Unities + Antwort hilfreich


Zitat:
Original erstellt von Dennis030186:
Wie is das denn weil nach Refplane kommen ja immer unterschiedliche Endungen wie 1 oder 1.1 etc.

Code:

Sub Example_FindPublication()
    Dim MainPRD        As Product
    Dim tmpnode        As Product
    Dim TmpPubs        As Publications
    Dim TmpPub          As Publication
    Dim i              As Integer
       
    Set MainPRD = CATIA.ActiveDocument.Product
   
    For Each tmpnode In MainPRD.Products
   
        Set TmpPubs = Nothing
        Set TmpPubs = tmpnode.Publications
       
        If TmpPubs.Count > 0 Then
          For i = 1 To TmpPubs.Count
              Set TmpPub = TmpPubs.Item(i)
              If instr(TmpPub.Name, "EHISUPPORT-RefPoint") > 0 Then
                MsgBox tmpnode.Name
              End If
          Next
        End If
       
    Next
   
End Sub

Also ganz im Ernst ein fertiges Script wird dir niemand liefern können, da musst du schon selbst hand anlegen oder einen Dienstleister beauftrage. Bei den Beispielen oder der Hilfe wäre natürlich eine klare Anforderung nicht schlecht, denn ein "..." definiert für mich nicht automatisch eine Nummerierung. Wie auch immer, wird dir kein Beispiel ausreichen, wenn du nicht zumindest etwas programmieren kannst.

------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

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

Dennis030186
Mitglied
Design Engineer


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

Beiträge: 121
Registriert: 19.01.2007

NX 5,6,7 ; CATIA V5 R-21

erstellt am: 06. Jan. 2014 15:24    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 RSchulz,

dass keiner ein angepasstes Skript mir geben kann ist mir bewusst. Deswegen meinte ich ja ob vielleicht jemand eine Lösung zufällig schon parat hat, für einn anderen Fall, jedoch ungefähr anwendbar auf meine Problematik. Ich werde mich weiter an der Einbindung eurer Vorschläge versuchen. Für weiteren Input bin ich euch sehr dankbar.

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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 06. Jan. 2014 15: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 Nur für Dennis030186 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Dennis030186:
Hallo RSchulz,

dass keiner ein angepasstes Skript mir geben kann ist mir bewusst. Deswegen meinte ich ja ob vielleicht jemand eine Lösung zufällig schon parat hat, für einn anderen Fall, jedoch ungefähr anwendbar auf meine Problematik. Ich werde mich weiter an der Einbindung eurer Vorschläge versuchen. Für weiteren Input bin ich euch sehr dankbar.


Ja sry hat sich aber so angehört und dargestellt. Minimaler Aufwand maximales Ergebnis und am Besten arbeiten die anderen für einen  nichts für ungut, aber im Moment häuft sich dieses Verhalten leider etwas. Wir helfen gerne weiter, aber wenigstens die Anforderung oder das Problem sollten deutlich benannt werden.

Wenn du Fragen hast oder konkrete Anliegen, meld dich ruhig ein bisschen Beispielcode kann ich dir sicherlich zusammenbasteln.

------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

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

Dennis030186
Mitglied
Design Engineer


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

Beiträge: 121
Registriert: 19.01.2007

NX 5,6,7 ; CATIA V5 R-21

erstellt am: 07. Jan. 2014 09:31    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 RSchulz,

ja das stimmt, das ist oft so mit dem minimalen Aufwand maximaler Ertrag. Das war jedenfalls nicht so beabsichtigt  Also mein Code den ich erstellt habe, kann properties zwar hinzufügen in einem Produkt, aber ich gehe in diesem Fall über die normale Suche. Das ist zu aufwändig und erschwert das ganze Problem eigentlich nur zusätzlich. Der zuvor gepostete Code ist finde ich ein super Ansatz. Dort habe ich das Ganze jedoch so umgestellt, dass mir nicht der Name ausgegeben wird, sondern jetzt die Partnummer, da darauf referenziert wird. Jetzt versuche ich den Code einzubinden, jedoch funktioniert es nicht so wie ich erhofft hatte. Mit dem Code, wenn ich explizit die PN angebe klappt es, jedoch weiß ich nun nicht wie ich allgemein auf die Partnummern referenziere, dass dort eine Verallgemeinerung stattfindet. Ich poste hier mal den derzeitigen Code:

Sub Example_FindPublication()
    Dim MainPRD        As Product
    Dim tmpnode        As Product
    Dim TmpPubs        As Publications
    Dim TmpPub          As Publication
    Dim i              As Integer
       
    Set MainPRD = CATIA.ActiveDocument.Product
   
    For Each tmpnode In MainPRD.Products
   
        Set TmpPubs = Nothing
        Set TmpPubs = tmpnode.Publications
       
        If TmpPubs.Count > 0 Then
          For i = 1 To TmpPubs.Count
              Set TmpPub = TmpPubs.Item(i)
            'If TmpPub.Name = "EHISUPPORT-RefPoint" Then
           
            'nur die ersten X Zeichen verglichen werden sollen. zB (ungetestet):
              If Left(TmpPub.Name, Len("EHISUPPORT-RefPoint")) = "EHISUPPORT-RefPoint" Then
               
                MsgBox tmpnode.PartNumber
                'MsgBox tmpnode.Name
               
               
'HIER MÜSSTE NUN EINPROGRAMMIERT WERDEN, DASS SICH HOCHGEARBEITET WERDEN SOLLZU DEM JEWEILIGEN PART UND DORT DIE PROPERTY VERÄNDERT WERDEN SOLL, FAAALLLS DIE PROPERTY NOCH NICHT EXISTIERT!!!
                Dim productDocument1 As Selection
'Set productDocument1 = CATIA.ActiveDocument.Selection
'productDocument1.Search "Name=*EHISUPPORT'-'RefPlane*,all"

Dim documents1 As Documents
Set documents1 = CATIA.Documents

Dim partDocument1 As PartDocument
Set partDocument1 = documents1.Item("1928560-83 2.CATPart")

Dim product1 As Product
Set product1 = partDocument1.GetItem("1928560-83")
Set product1 = product1.ReferenceProduct

Dim parameters1 As Parameters
Set parameters1 = product1.UserRefProperties

Dim realParam1 As RealParam
Set realParam1 = parameters1.CreateReal("MEINE_PROPERTY", 0#)

realParam1.ValuateFromString "0"
              End If
          Next
        End If
       
    Next
   
End Sub

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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 07. Jan. 2014 13:31    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 Dennis030186 10 Unities + Antwort hilfreich

Hallo Dennis,

du darfst mich ruhig Rick nennen...

Wenn ich dich richtig verstanden habe, müsste es so ungefähr passen.

Code:

Sub Example_CreateReal()

    Dim oMainPRD As Product
    Dim oNode As Product
    Dim oPubs As Publications
    Dim oPub As Publication
    Dim oParams As Parameters
    Dim oParam As Parameter
    Dim oParamReal As RealParam
    Dim bFoundP As Boolean
    Dim strParamName As String
    Dim i As Integer
       
    Set oMainPRD = CATIA.ActiveDocument.Product
    strParamName = "MEINE_PROPERTY"
   
    'Schleife läuft über jeden Produktknoten im geöffneten Produkt
    For Each oNode In oMainPRD.Products
   
        bFoundP = False
        Set oPubs = Nothing
        Set oPubs = oNode.Publications
       
        'Wenn Veröffentlichungen vorhanden sind prüfen
        If oPubs.Count > 0 Then
         
            'Schleife läuft über jede gefundene Veröffentlichung
            For i = 1 To oPubs.Count
             
                Set oPub = oPubs.Item(i)
               
                'Wenn die benannte Veröffentlichung gefunden wurde
                If InStr(oPub.Name, "EHISUPPORT-RefPoint") > 0 Then
                   
                    Set oParams = oNode.ReferenceProduct.UserRefProperties
                   
                    'Prüfe jeden Parameter in den vorhanden Parametern des Teils
                    For Each oParam In oParams
                       
                        'Wenn der definierte Paramerter gefunden wird, keine weitere Verarbeitung
                        If Right(oParam.Name, Len(strParamName)) = strParamName Then
                            bFoundP = True
                            Exit For
                        End If
                       
                    Next
                   
                    'Wenn kein entsprechender Parameter gefunden wurde, soll dieser erzeugt werden
                    If bFoundP = False Then
                        Set oParamReal = oParams.CreateReal(strParamName, 0#)
                        oParamReal.ValuateFromString "0"
                    End If
                   
                End If
            Next
        End If
    Next
   
End Sub


------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

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

Dennis030186
Mitglied
Design Engineer


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

Beiträge: 121
Registriert: 19.01.2007

NX 5,6,7 ; CATIA V5 R-21

erstellt am: 08. Jan. 2014 09: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 Rick  

also ich habe Deinen Code gerade nur mal kurz getestet und es schien super zu funktionieren. Werde mich jetzt damit weiter befassen. Was aber heute plötzlich auftrat, bei dem Code den ich gestern gepostet hatte, kam bei
Set product1 = documents1.GetItem("813936")
die Fehlermeldung Object doesn´t support this action. Das war gestern seltsamerweise nicht und lief einwandfrei?!

Edit: Mein Fehler... ich hatte den Kommentar
'Set productDocument1 = CATIA.ActiveDocument.Selection
wieder aktiv geschaltet, daher das Problem.

[Diese Nachricht wurde von Dennis030186 am 08. Jan. 2014 editiert.]

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. Jan. 2014 09: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 Dennis030186 10 Unities + Antwort hilfreich

Servus
Ist "documents1" deklariert und zugewiesen? Gibt es das Dokument "813936".
IMHO ist das GetItem umständlich. Rick hat einen einfach Weg gezeigt vom Product auf das Dokument bzw Part zu kommen.

Gruß
Bernd

PS: Ich benutze fast nie GetItem, da ich nie genau weiß was zurückgeliefert wird.

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

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

Dennis030186
Mitglied
Design Engineer


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

Beiträge: 121
Registriert: 19.01.2007

NX 5,6,7 ; CATIA V5 R-21

erstellt am: 08. Jan. 2014 11: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

Hallöchen,

wozu dient denn getitem genau? Habe leider die Catia Hilfe noch nicht installiert. In der Tat ist der Weg von Rick einfacher. Hier folgt der aktuell angepasste Code. Jetzt habe ich aber das Problem, dass es bei einem produkt mit enthaltenen Teilen ohne Probleme funktioniert
>Produkt
|-Part
|-Part

Aber bei solchen Strukturen tut sich nichts:
>Produkt
  |-Produkt
  |  |-Part
  |-Produkt
      |-Produkt
          |-Part
          |-Part
.
.
.

Ich kenne den Weg hierzu nicht wie ich nun sagen kann, suche nicht nur in den Knoten des einen Produktes sondern gehe durch alle Knoten die es gibt?!

Sub Example_CreateReal()
    Dim oMainPRD As Product
    Dim oNode As Product
    Dim oPubs As Publications
    Dim oPub As Publication
    Dim oParams As Parameters
    Dim oParam As Parameter
    Dim oParamString As StrParam
    Dim bFoundP As Boolean
    Dim strParamName As String
    Dim lenParamName As String
    Dim i As Integer
       
'-----------------------------------------------------------------------------------------------
'Ausgabe der PNs, welche EHISUPPORT enthalten
       
       
    Dim MainPRD        As Product
    Dim tmpnode        As Product
    Dim TmpPubs        As Publications
    Dim TmpPub          As Publication
    Dim z              As Integer
       
    Set MainPRD = CATIA.ActiveDocument.Product
   
    For Each tmpnode In MainPRD.Products
   
        Set TmpPubs = Nothing
        Set TmpPubs = tmpnode.Publications
       
        If TmpPubs.Count > 0 Then
          For z = 1 To TmpPubs.Count
              Set TmpPub = TmpPubs.Item(z)
            'If TmpPub.Name = "EHISUPPORT-RefPoint" Then
           
            'nur die ersten X Zeichen verglichen werden sollen. zB (ungetestet):
              If Left(TmpPub.Name, Len("EHISUPPORT-RefPlane")) = "EHISUPPORT-RefPlane" Then
               
                MsgBox tmpnode.PartNumber
              End If
            Next
        End If
    Next
   
       
'-------------------------------------------------------------------------------------------------
       
    Set oMainPRD = CATIA.ActiveDocument.Product
    strParamName = "CHSFixingType"
    lenParamName = "CHSFixingLength"
   
    'Schleife läuft über jeden Produktknoten im geöffneten Produkt
    For Each oNode In oMainPRD.Products
   
        bFoundP = False
        Set oPubs = Nothing
        Set oPubs = oNode.Publications
       
        'Wenn Veröffentlichungen vorhanden sind prüfen
        If oPubs.Count > 0 Then
         
            'Schleife läuft über jede gefundene Veröffentlichung
            For i = 1 To oPubs.Count
             
                Set oPub = oPubs.Item(i)
               
                'Wenn die benannte Veröffentlichung gefunden wurde
                If InStr(oPub.Name, "EHISUPPORT-RefPoint") > 0 Then
                   
                    Set oParams = oNode.ReferenceProduct.UserRefProperties
                   
                    'Prüfe jeden Parameter in den vorhanden Parametern des Teils
                  For Each oParam In oParams
                 
                      'Wenn der definierte Paramerter (CHSFixingType) gefunden wird, keine weitere Verarbeitung
                      If Right(oParam.Name, Len(strParamName)) = strParamName Then
                            bFoundP = True
                          Exit For
                      End If
                       
                    Next
                                       
                    'Wenn kein entsprechender Parameter (CHSFixingType) gefunden wurde, soll dieser erzeugt werden
                  If bFoundP = False Then
                        Set oParamString = oParams.CreateString(strParamName, 0#)
                        oParamString.ValuateFromString "TEILBEZEICHNUNG"
                    End If
                   
                      'Prüfe jeden Parameter in den vorhanden Parametern des Teils
                      For Each oParam In oParams
                       
                        'Wenn der definierte Paramerter (CHSFixingLength) gefunden wird, keine weitere Verarbeitung
                            If Right(oParam.Name, Len(lenParamName)) = lenParamName Then
                                bFoundP = True
                                Exit For
                            End If
                       
                      Next
                   
                        'Wenn kein entsprechender Parameter (CHSFixingLength) gefunden wurde, soll dieser erzeugt werden
                        If bFoundP = False Then
                            Set oParamString = oParams.CreateString(lenParamName, 0#)
                            oParamString.ValuateFromString "0mm"
                        End If
                   
                End If
            Next
        End If
    Next
   
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. Jan. 2014 11:57    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 Dennis030186 10 Unities + Antwort hilfreich

Servus
Dazu musst du das Makro rekursiv aufbauen (das Makro ruft sich selbst wieder für die Unterbaugruppe auf). Bitte im Forum mal danach suchen.

Gruß
Bernd

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

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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 08. Jan. 2014 12:28    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 Dennis030186 10 Unities + Antwort hilfreich

Hallo zusammen,

ich habe diese Woche bzw. Heute und Morgen leider garkeine Zeit helfen zu können. Also am besten wirklich mal selbst ranarbeiten.

------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

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

Dennis030186
Mitglied
Design Engineer


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

Beiträge: 121
Registriert: 19.01.2007

NX 5,6,7 ; CATIA V5 R-21

erstellt am: 08. Jan. 2014 13: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

Werde es weiter versuchen. Danke erstmal für eure super Hilfe.

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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 08. Jan. 2014 18: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 Nur für Dennis030186 10 Unities + Antwort hilfreich

Dafür habe ich einen gut...  

Code:

Sub CATMain()

    Dim oMainPRD As Product
    Dim strParamName As String
   
    Set oMainPRD = CATIA.ActiveDocument.Product
    strParamName = "MEINE_PROPERTY"
   
    Call CreateReal(oMainPRD, strParamName)
   
End Sub

Sub CreateReal(ByVal oMainPRD As Product, ByVal strParamName As String)

    Dim oNode As Product
    Dim oPubs As Publications
    Dim oPub As Publication
    Dim oParams As Parameters
    Dim oParam As Parameter
    Dim oParamReal As RealParam
    Dim bFoundP As Boolean
    Dim i As Integer
    Dim j As Integer
       
   
    'Schleife läuft über jeden Produktknoten im geöffneten Produkt
    For Each oNode In oMainPRD.Products
   
        'Wenn der Produktknoten keine Kinder enthält
        If oNode.Products.Count = 0 Then
            bFoundP = False
            Set oPubs = Nothing
            Set oPubs = oNode.Publications
          
            'Wenn Veröffentlichungen vorhanden sind prüfen
            If oPubs.Count > 0 Then
         
                'Schleife läuft über jede gefundene Veröffentlichung
                For i = 1 To oPubs.Count
             
                    Set oPub = oPubs.Item(i)
               
                    'Wenn die benannte Veröffentlichung gefunden wurde
                    If InStr(oPub.Name, "EHISUPPORT-RefPoint") > 0 Then
                   
                        Set oParams = oNode.ReferenceProduct.UserRefProperties
                   
                        'Prüfe jeden Parameter in den vorhanden Parametern des Teils
                        For Each oParam In oParams
                       
                            'Wenn der definierte Paramerter gefunden wird, keine weitere Verarbeitung
                            If Right(oParam.Name, Len(strParamName)) = strParamName Then
                                bFoundP = True
                                Exit For
                            End If
                       
                        Next
                   
                        'Wenn kein entsprechender Parameter gefunden wird, soll dieser erzeugt werden
                        If bFoundP = False Then
                            Set oParamReal = oParams.CreateReal(strParamName, 0#)
                            oParamReal.ValuateFromString "0"
                        End If
                   
                    End If
                Next
            End If
           
        'Wenn der Produktknoten Kinder enthält
        Else
           
            'Rufe die Prozedur neu auf mit dem Unterprodukt
            Call CreateReal(oNode, strParamName)
           
        End If
           
    Next
   
End Sub


------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

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

Dennis030186
Mitglied
Design Engineer


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

Beiträge: 121
Registriert: 19.01.2007

NX 5,6,7 ; CATIA V5 R-21

erstellt am: 09. Jan. 2014 08:43    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

Guten Morgen Rick,

vielen herzlcihen Dank für Deine Hilfe. Ich habe den Code nun angepasst. Was mir aber noch bei mir jetzt aufgefallen ist, ist dass Fixingtype keine richtige Länge ist sondern ein String obwohl ich ganz oben gesagt habe oParam Length as length, jedoch im folgenden Abschnitt gesagt wird Create String?! CreateDimension oder Integer bringt mich auch nicht ans Ziel. Wenn ich einen Längenparameter manuell erzeuge steht immer mm im Feld, auch wenn alles herausgelöscht wird aus der Zelle. Erstelle ich Ihn per Makro, steht genau dort dann nichts mehr drinnen sobald ich die Zelle leere. Wo liegt hier der Fehler?

'Wenn kein entsprechender Parameter (CHSFixingLength) gefunden wurde, soll dieser erzeugt werden
                        If bFoundP = False Then
                            Set oParamLength = oParams.CreateString(lenParamName, 0#)
                            oParamString.ValuateFromString "0"
                        End If


Noch ein paar allgemeinere Dinge...
Wozu dient das Nothing?
Set oPubs = Nothing
Set oPubs = oNode.Publications
und was wird dort genau gemacht? Die Anzahl der OPublikationen wird ja erst später per Count gezählt.

Gibt es eine Literatur mit der man an die Befehle und den grundsätzlichen Aufbau von Catia Makros gut herangeführt wird? Ich kenne den Ziethen und das Kochbuch, aber so wirklich herangeführt wird man in beiden Literaturen nicht, finde ich.


Sub CATMain()
    Dim oMainPRD As Product
    Dim strParamName As String
    Dim lenParamName As String
           
    Set oMainPRD = CATIA.ActiveDocument.Product
    strParamName = "CHSFixingType"
    lenParamName = "CHSFixingLength"
   
    Call CreateString(oMainPRD, strParamName, lenParamName)
   
End Sub

Sub CreateString(ByVal oMainPRD As Product, ByVal strParamName As String, ByVal lenParamName As String)

    Dim oNode As Product
    Dim oPubs As Publications
    Dim oPub As Publication
    Dim oParams As Parameters
    Dim oParam As Parameter
    Dim oParamString As StrParam
    Dim oParamLength As Length
    Dim bFoundP As Boolean
    Dim i As Integer
    Dim j As Integer
       
   
    'Schleife läuft über jeden Produktknoten im geöffneten Produkt
    For Each oNode In oMainPRD.Products
   
        'Wenn der Produktknoten keine Kinder enthält
        If oNode.Products.Count = 0 Then
            bFoundP = False
            Set oPubs = Nothing
            Set oPubs = oNode.Publications
         
            'Wenn Veröffentlichungen vorhanden sind prüfen
            If oPubs.Count > 0 Then
         
                'Schleife läuft über jede gefundene Veröffentlichung
                For i = 1 To oPubs.Count
             
                    Set oPub = oPubs.Item(i)
               
                    'Wenn die benannte Veröffentlichung gefunden wurde
                    If InStr(oPub.Name, "EHISUPPORT-RefPlane") > 0 Then
                   
                        Set oParams = oNode.ReferenceProduct.UserRefProperties
                   
                        'Prüfe jeden Parameter in den vorhanden Parametern des Teils
                        For Each oParam In oParams
                       
                            'Wenn der definierte Parameter gefunden wird, keine weitere Verarbeitung
                            If Right(oParam.Name, Len(strParamName)) = strParamName Then
                                bFoundP = True
                                Exit For
                            End If
                       
                        Next
                   
                        'Wenn kein entsprechender Parameter gefunden wird, soll dieser erzeugt werden
                        If bFoundP = False Then
                            Set oParamString = oParams.CreateString(strParamName, 0#)
                            oParamString.ValuateFromString "TEILBEZEICHNUNG"
                        End If
                       
                       
                   
                    '--------------------------
                       
                       
                      'Prüfe jeden Parameter in den vorhanden Parametern des Teils
                      For Each oParam In oParams
                       
                        'Wenn der definierte Paramerter (CHSFixingLength) gefunden wird, keine weitere Verarbeitung
                            If Right(oParam.Name, Len(lenParamName)) = lenParamName Then
                                bFoundP = True
                                Exit For
                            End If
                       
                      Next
                   
                        'Wenn kein entsprechender Parameter (CHSFixingLength) gefunden wurde, soll dieser erzeugt werden
                        If bFoundP = False Then
                            Set oParamLength = oParams.CreateString(lenParamName, 0#)
                            oParamString.ValuateFromString "0"
                        End If
                   
                    End If
                Next
            End If
           
        'Wenn der Produktknoten Kinder enthält
        Else
           
            'Rufe die Prozedur neu auf mit dem Unterprodukt
            Call CreateString(oNode, strParamName, lenParamName)
           
        End If
           
    Next
   
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: 09. Jan. 2014 08:59    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 Dennis030186 10 Unities + Antwort hilfreich

Servus
Versuch mal folgendes:
- "Dim oParamLength As Dimension" deklarieren
- Parameter mit "Set oParamLength = oParams.CreateDimension(lenParamName, "LENGTH", 0)" anlegen.

Gruß
Bernd

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

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

Dennis030186
Mitglied
Design Engineer


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

Beiträge: 121
Registriert: 19.01.2007

NX 5,6,7 ; CATIA V5 R-21

erstellt am: 10. Jan. 2014 09: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

Guten Morgen,
den Ansatz hatte ich schon getestet, ich werde es nochmal versuchen, vielleicht hatte sich ein Fehler eingeschlichen?!
Ich habe jetzt ein viel größeres Problem. Das Makro läuft zwar ohne Probleme, aber jetzt habe ich eine Baugruppe geöffnet zum testen, bei der das makro plötzlich rausfliegt und zwar an folgender Stelle in der letzten Zeile. Halte ich den Cursor darauf, zeigt er mir für Item (i) 7 an. hat jemend spontan eine Idee oder wie finde ich nun heraus wo sich das Programm aufhängt?

'Wenn der Produktknoten keine Kinder enthält
        If oNode.Products.Count = 0 Then
            bFoundP = False
            Set oPubs = Nothing
            Set oPubs = oNode.Publications
         
            'Wenn Veröffentlichungen vorhanden sind prüfen
            If oPubs.Count > 0 Then
         
         
         
                'Schleife läuft über jede gefundene Veröffentlichung
                For i = 1 To oPubs.Count
             
                    Set oPub = oPubs.Item(i)

Die Fehlermeldung besagt:
Run-time-eroor '-2147467259 (80004005)':
Automation error
Unspecified error

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: 10. Jan. 2014 09: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 Dennis030186 10 Unities + Antwort hilfreich

Servus
Nur so eine Idee:
Schau dir mal die entsprechende Datei (Part) an. Gibt es dort sieben Publictations? Sind alle Publication aktuell?

Gruß
Bernd

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

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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 10. Jan. 2014 09: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 Dennis030186 10 Unities + Antwort hilfreich

Das könnte eine Veröffentlichung sein, die auf ein fehlendes Element zeigt. Sprich eine fehlerhafte Veröffentlichung.

Es ist schwer zu sagen, wenn nichtmal klar ist, welche Veröffentlichung das ist. Versuch doch erstmal heraus zu finden, welche Veröffentlichung von welchem Objekt das verursacht.

------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

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

Dennis030186
Mitglied
Design Engineer


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

Beiträge: 121
Registriert: 19.01.2007

NX 5,6,7 ; CATIA V5 R-21

erstellt am: 10. Jan. 2014 09: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

Zitat:
Original erstellt von bgrittmann:
Servus
Versuch mal folgendes:
- "Dim oParamLength As [b]Dimension
" deklarieren
- Parameter mit "Set oParamLength = oParams.CreateDimension(lenParamName, "LENGTH", 0)" anlegen.

Gruß
Bernd

[/B]


Es funktioniert. Ich hatte Dimension nicht deklariert, sondern length und unten dann dimension genutzt. Das war mir nicht bewusst. Super, vielen Dank. Eine allgemeine Frage nochmal, in der Zeile
Set oParamLength = oParams.CreateDimension(lenParamName, "LENGTH", 0)
für den Befehl CreateDimension wird dann angegeben (iName As String, iMagnitude As String, iValue As Double).
Der 1. und 3. punkt sind mir bewusst was es bedeutet, aber was besagt das iMagnitude? Habe es schon sehr oft gesehen, aber ich kann damit nicht wirklich was anfangen?!

Das vorige Problem besteht leider immernoch.

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: 10. Jan. 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 Nur für Dennis030186 10 Unities + Antwort hilfreich

Servus
Schau mal in der Doku:
The dimension magnitude. Units are those of the IS system. Valid magnitudes are:
"LENGTH": the unit is the meter.
"ANGLE": the unit is the radian.

Gruß
Bernd

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

[Diese Nachricht wurde von bgrittmann am 10. Jan. 2014 editiert.]

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

Dennis030186
Mitglied
Design Engineer


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

Beiträge: 121
Registriert: 19.01.2007

NX 5,6,7 ; CATIA V5 R-21

erstellt am: 13. Jan. 2014 08: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


Korrekt.JPG


Fehler.JPG


Code.JPG

 
Guten Morgen und vielen Dank. Die DOku habe ich momentan noch nicht, soltle ich bald jedoch bekommen.

Zu dem Problem. Habe es nun lokalisiert, an welchen Teilen es hakt, aber ich sehe beim besten WIllen nicht wo da die Fehlerquelle sein sollte?! Es schaut so aus wie andere Parts auch, worüber das Makro aber ohne Probleme läuft.

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: 13. Jan. 2014 08:51    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 Dennis030186 10 Unities + Antwort hilfreich

Servus
Die Doku (zur Makroprogrammierung) liegt im CATIA-Installationsverzeichnis (such mal nach "V5Automation.chm")
Bei welchem Zähler steigt das Makro aus? Hilft ein bereinigen der Dateien (CATDUA)?

Gruß
Bernd

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

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

Dennis030186
Mitglied
Design Engineer


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

Beiträge: 121
Registriert: 19.01.2007

NX 5,6,7 ; CATIA V5 R-21

erstellt am: 13. Jan. 2014 09: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


Item7.JPG

 
Guten Morgen,

mit der Doku stimmt. Dachte es würde erst auftauchen, wenn die Extrahilfe in Catia installiert würde. Vielen Dank.

Das Problem taucht bei Item 7 auf, wobei aber auch vorher schon Elektrifizierungen auftauchen und dies kein Problem darstellt. Abgesehen davon, dürfen diese Elektrifizierungen nicht raus und können momentan auch gar nicht gelöscht werden.

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: 13. Jan. 2014 09: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 Dennis030186 10 Unities + Antwort hilfreich

Servus
Also ich sehe nur 6 Veröffentlichungen. Was sind, bzw mit was wurden die "Elektrifizierungen" erstellt (spezielle Workbench)? Wenn du die "Elektrifizierungen" bearbeitest erscheinen dann zerschossene Elemente?
ggf musst du die Fehlerbehandlung kurz ausschalten um Fehler durch diese speziellen Elemente abzufangen.

Gruß
Bernd

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

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

Dennis030186
Mitglied
Design Engineer


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

Beiträge: 121
Registriert: 19.01.2007

NX 5,6,7 ; CATIA V5 R-21

erstellt am: 13. Jan. 2014 15: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


Backshells.JPG

 
Hallo Bernd,

also ich habe den Fehler nun abgefangen per Errorhandler, was aber so finde ich eigentlich nicht gerade schön ist. In die Elektrifizierung sollte das Makro am besten gar nicht erst hineinschauen. Es scheint tatsächlich daran zu liegen, dass dort nur ein BackshellCnct vorhanden ist. In dem Part was weiter oben zu sehen ist, taucht dieses Element ebenfalls auf, hat jedoch keinen negative Einfluss auf das Makro. Wenn ich es bspw. mit MD2 öffne wird nur Elektrification (restricted) angezeigt. Öffne ich mein Product mit der EHI Lizenz dann taucht natürlich die Elektrifizierung auf. Hier der Quelltext bisher:

Sub CATMain()
    Dim oMainPRD As Product
    Dim strParamName As String
    Dim lenParamName As String
           
    Set oMainPRD = CATIA.ActiveDocument.Product
    strParamName = "CHSFixingType"
    lenParamName = "CHSFixingLength"
   
    Call CreateString(oMainPRD, strParamName, lenParamName)
   
End Sub

Sub CreateString(ByVal oMainPRD As Product, ByVal strParamName As String, ByVal lenParamName As String)

    Dim oNode As Product
    Dim oPubs As Publications
    Dim oPub As Publication
    Dim oParams As Parameters
    Dim oParam As Parameter
    Dim oParamString As StrParam
    Dim oParamLength As Dimension
    Dim bFoundP As Boolean
    Dim i As Integer
    Dim j As Integer
       
       
       

               
   
    'Schleife läuft über jeden Produktknoten im geöffneten Produkt
    For Each oNode In oMainPRD.Products
   
   
    'Wenn der Produktknoten keine Kinder enthält
        If oNode.Products.Count = 0 Then
            bFoundP = False
            Set oPubs = Nothing
            Set oPubs = oNode.Publications
         
            'Wenn Veröffentlichungen vorhanden sind prüfen
            If oPubs.Count > 0 Then
                'Zur Überprüfung falls Fehler auftauchen
                MsgBox oNode.PartNumber
          'MsgBox oPubs.Count
            For i = 1 To oPubs.Count
           
           
            Set oPub = oPubs.Item(i)
           
            On Error GoTo Fehler
           
           
           
           
            'On Error Resume Next
            'If Err = 0 Then
            'MsgBox "i.O."

            'ElseIf Err = 1 Then

            'MsgBox "Bitte notieren Sie sich die nun folgende Nummer"
            'MsgBox oNode.PartNumber


                'MsgBox oPub.Name
               
          Next
                'Schleife läuft über jede gefundene Veröffentlichung
                For i = 1 To oPubs.Count
       
       
             
                    Set oPub = oPubs.Item(i)
             
                    'Wenn die benannte Veröffentlichung gefunden wurde
                    If InStr(oPub.Name, "EHISUPPORT-RefPlane") > 0 Then
                   
                    '  MsgBox oNode.PartNumber 'Ausgabe der Partnummer in welcher sich ein EHISUPPORT-RefPlane befindet
                        Set oParams = oNode.ReferenceProduct.UserRefProperties
                   
                        'Prüfe jeden Parameter in den vorhanden Parametern des Teils
                        For Each oParam In oParams
                       
                            'Wenn der definierte Parameter gefunden wird, keine weitere Verarbeitung
                            If Right(oParam.Name, Len(strParamName)) = strParamName Then
                                bFoundP = True
                                Exit For
                            End If
                       
                        Next
                   
                        'Wenn kein entsprechender Parameter gefunden wird, soll dieser erzeugt werden
                        If bFoundP = False Then
                            Set oParamString = oParams.CreateString(strParamName, 0#)
                            oParamString.ValuateFromString "TEILBEZEICHNUNG"
                        End If
                       
                       
                   
                    '--------------------------
                       
                       
                      'Prüfe jeden Parameter in den vorhanden Parametern des Teils
                      For Each oParam In oParams
                       
                        'Wenn der definierte Paramerter (CHSFixingLength) gefunden wird, keine weitere Verarbeitung
                            If Right(oParam.Name, Len(lenParamName)) = lenParamName Then
                                bFoundP = True
                                Exit For
                            End If
                       
                      Next
                   
                        'Wenn kein entsprechender Parameter (CHSFixingLength) gefunden wurde, soll dieser erzeugt werden
                        If bFoundP = False Then
                            Set oParamLength = oParams.CreateDimension(lenParamName, "LENGTH", 0)
                            oParamString.ValuateFromString "0"
                        End If
                   
                    End If
                Next
            End If
           
        'Wenn der Produktknoten Kinder enthält
        Else
           
            'Rufe die Prozedur neu auf mit dem Unterprodukt
            Call CreateString(oNode, strParamName, lenParamName)
           
        End If
           
    Next
   
   
Exit Sub
Fehler:
MsgBox "Es liegt ein Problematik vor (wahrscheinlich in der Elektrifizierung, evtl. BackShellCnct). Bitte notieren Sie sich die nun folgende Nummer zur manuellen Kontrolle:"
MsgBox oNode.PartNumber

End Sub

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

Dennis030186
Mitglied
Design Engineer


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

Beiträge: 121
Registriert: 19.01.2007

NX 5,6,7 ; CATIA V5 R-21

erstellt am: 14. Jan. 2014 09:13    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


tree.JPG

 
Mir ist da noch etwas weiteres aufgefallen. Irgendwie scheint das Makro nun nicht mehr in den Teil hineinzugehen, wo Fixing length und Type erstellt werden überhaupt. Ich habe das nun versucht per errorhandler zu umgehen, wenn die Problematik auftaucht und auf die Electrification oder irgendein andere Problem gestossen wird. Jetzt bin ich mir nicht sicher, ist dieser an der richtigen Stelle oder muss er woanders hin und auf welche Art und Weise.Ich poste mal unten den gesamten Quellltext nochmals und zusätzlich meine zweite Überlegung des Errorhandlers, wo ich jedoch so eigentlich keinen Unterschied sehe, aber bei der zweiten Variante wieder meiN Problem mit Item 7 auftritt?! Auch wundert es mich, dass nicht alle Knotenpunkte vom Namen her ausgegeben werden nacheinander sondern mein erster ausgegebener Knotenpunkt der 2. ist? Hier der Ablauf wie mir die Node Pns ausgegeben werden
Node Pn
1926635
Node Pn
1926638
Node Pn
50210870
Node Pn
50284514
Node Pn
1837383
Node Pn
1926641
Node Pn
1926640
Node Pn
815361-106
Node PN mit EHI Support
815361-106
Node PN mit EHI Support
815361-106
Node PN
815361-107
Node PN mit EHI Support
815361-107
Node PN mit EHI Support
815361-107
Node PN
50211073
Node PN
1926638
Node PN
1926635
Node PN
50284536
Node PN
1837387
Node PN
1926640
Node PN
1926641
Node PN
815361-102
NodePN mit EHI Support
815361-102
NodePN mit EHI Support
815361-102
Node PN
815361-103
NodePN mit EHI Support
815361-103
NodePN mit EHI Support
815361-103


Hier der Quelltext nun:

Sub CATMain()
    Dim oMainPRD As Product
    Dim strParamName As String
    Dim lenParamName As String
           
    Set oMainPRD = CATIA.ActiveDocument.Product
    strParamName = "CHSFixingType"
    lenParamName = "CHSFixingLength"
   
    Call CreateString(oMainPRD, strParamName, lenParamName)
   
End Sub

Sub CreateString(ByVal oMainPRD As Product, ByVal strParamName As String, ByVal lenParamName As String)

    Dim oNode As Product
    Dim oPubs As Publications
    Dim oPub As Publication
    Dim oParams As Parameters
    Dim oParam As Parameter
    Dim oParamString As StrParam
    Dim oParamLength As Dimension
    Dim bFoundP As Boolean
    Dim i As Integer
    Dim j As Integer
       
       
       

               
   
    'Schleife läuft über jeden Produktknoten im geöffneten Produkt
    For Each oNode In oMainPRD.Products
   
   
    'Wenn der Produktknoten keine Kinder enthält
        If oNode.Products.Count = 0 Then
            bFoundP = False
            Set oPubs = Nothing
            Set oPubs = oNode.Publications
         
            'Wenn Veröffentlichungen vorhanden sind prüfen
            If oPubs.Count > 0 Then
               
                'Zur Überprüfung falls Fehler auftauchen
                MsgBox "Node PN"
                MsgBox oNode.PartNumber
               
                'MsgBox oPubs.Count
        '-------------------------------EVTL RAUSNEHMEN???
          'Schleife läuft über jede gefundene Veröffentlichung
      'For i = 1 To oPubs.Count
           
      ' Set oPub = oPubs.Item(i)
           
            'ERRORHANDLER
      ' On Error GoTo Fehler
    'If Err = 1 Then
           
      On Error Resume Next
    'MsgBox "Problem"
    'Resume Next
    'End If
           
            'If Err = 0 Then
            'MsgBox "i.O."

            'ElseIf Err = 1 Then

            'MsgBox "Bitte notieren Sie sich die nun folgende Nummer"
            'MsgBox oNode.PartNumber


                'MsgBox oPub.Name
             
               
      '  Next
          '-----------------------------------------
         
          'Schleife läuft über jede gefundene Veröffentlichung
                For i = 1 To oPubs.Count
                 
                    Set oPub = oPubs.Item(i)

                    'Wenn die benannte Veröffentlichung gefunden wurde
                    If InStr(oPub.Name, "EHISUPPORT-RefPlane") > 0 Then
                   
                    MsgBox "Node PN mit EHI SUPPORT"
                    MsgBox oNode.PartNumber 'Ausgabe der Partnummer in welcher sich ein EHISUPPORT-RefPlane befindet
                       
                        Set oParams = oNode.ReferenceProduct.UserRefProperties
                   
                   
                   
                    '-----------------------------------------------------------------------------------------------------
                        'Prüfe jeden Parameter in den vorhanden Parametern des Teils
                        For Each oParam In oParams
                       
                            'Wenn der definierte Parameter (CHSFixingType) gefunden wird, keine weitere Verarbeitung
                            If Right(oParam.Name, Len(strParamName)) = strParamName Then
                                bFoundP = True
                                Exit For
                            End If
                       
                        Next
                   
                        'Wenn kein entsprechender Parameter (CHSFixingType) gefunden wird, soll dieser erzeugt werden
                        If bFoundP = False Then
                            Set oParamString = oParams.CreateString(strParamName, 0#)
                            oParamString.ValuateFromString "TEILBEZEICHNUNG"
                        End If
                                                                   
                    '--------------------------
                                               
                      'Prüfe jeden Parameter in den vorhanden Parametern des Teils
                      For Each oParam In oParams
                       
                        'Wenn der definierte Paramerter (CHSFixingLength) gefunden wird, keine weitere Verarbeitung
                            If Right(oParam.Name, Len(lenParamName)) = lenParamName Then
                                bFoundP = True
                                Exit For
                            End If
                       
                      Next
                   
                        'Wenn kein entsprechender Parameter (CHSFixingLength) gefunden wurde, soll dieser erzeugt werden
                        If bFoundP = False Then
                            Set oParamLength = oParams.CreateDimension(lenParamName, "LENGTH", 0)
                            oParamString.ValuateFromString "0"
                        End If
                    '-----------------------------------------------------------------------------------------------------
                                       
                       
                    End If
                Next
            End If
           
        'Wenn der Produktknoten Kinder enthält
        Else
           
            'Rufe die Prozedur neu auf mit dem Unterprodukt
            Call CreateString(oNode, strParamName, lenParamName)
           
        End If
           
    Next
   
   
Exit Sub
Fehler:
MsgBox "Es liegt eine Problematik vor (wahrscheinlich in der Elektrifizierung, evtl. BackShellCnct). Bitte notieren Sie sich die nun folgende Nummer zur manuellen Kontrolle:"
MsgBox oNode.PartNumber

End Sub

Und hier die andere Überlegung bezüglich des Errorhandlers an der selben Stelle wo ich momentan On Error Resume Next stehen habe was aber zur Item 7 Problematik und somit zum Absturz führt:

If Err = 1 Then
  MsgBox "Problem"
  Resume Next
End If

Ich hoffe man kann das so nachvollziehen?!

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: 14. Jan. 2014 10:52    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 Dennis030186 10 Unities + Antwort hilfreich

Servus
Anbei ein kleines Beispiel wie du Abfangen kannst wenn eine Publication nicht vorhanden/ansprechbar ist:
Code:
On Error Resume Next 'Fehlerbehandlung ausschalten
Set oPub = oPubs.Item(i)
On Error GoTo 0 'Fehlerbehandlung einschalten

If Not oPub Is Nothing Then
    'machwas
    MsgBox "Publication vorhanden"
End If


Gruß
Bernd

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

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

Dennis030186
Mitglied
Design Engineer


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

Beiträge: 121
Registriert: 19.01.2007

NX 5,6,7 ; CATIA V5 R-21

erstellt am: 14. Jan. 2014 11:57    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,

bei Deinem beispiel sehe ich den Zusammenhang nicht so ganz.
Das hatte ich soweit ausgetestet schon:
On Error Resume Next 'Fehlerbehandlung ausschalten
Set oPub = oPubs.Item(i)
On Error GoTo 0 'Fehlerbehandlung einschalten

Hier läuft das Makro dann auch durch, was mir halt dort dann einfach noch fehlt, ist eine Messagebox die mir ausgibt, dass sich ein Fehler bei der jeweiligen Teilenummer verbirgt (zur manuellen Kontrolle).

Der Teil danach den Du geschrieben hast, dieser gibt mir doch nur die Information jedes Mal wieder, dass eine Publication vorhanden ist. In einem Teil sind 59 pubs vorhanden, somit poppt nur für diesen Durchlauf 59 Mal das Fenster mit "Publication vorhanden" auf.

Sinngemäß möchte ich gerne soetwas:

On Error Resume Next 'Fehlerbehandlung ausschalten
MsgBox " FEHLER BEI PARTNUMMER XYZ" 'XYZ Soll nun die PN aus onode.PartNumber sein
Set oPub = oPubs.Item(i)
On Error GoTo 0 'Fehlerbehandlung einschalten

Das Problem ist aber, dass das so nicht funktioniert, da er mir jetzt die MsgBox immer ausgeibt unabhängig von Fehlern 

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: 14. Jan. 2014 12: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 Dennis030186 10 Unities + Antwort hilfreich

Servus
Mein Code war nur ein Beispiel wie du mir einem Fehler umgehen kannst ohne einen Fehler auszugeben und zu einer Fehlerbehandlung zu springen.
Das du den Code noch deinen Bedürfnissen anpassen musst ist klar.

Gruß
Bernd

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

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

Dennis030186
Mitglied
Design Engineer


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

Beiträge: 121
Registriert: 19.01.2007

NX 5,6,7 ; CATIA V5 R-21

erstellt am: 14. Jan. 2014 13:43    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,

das ist klar, dass es nur ein Beispiel ist, wie gesagt genau das hatte ich ja schon vor Deinem Post auch schon ausgetestet, aber wie oben erwähnt möchte ich solch ein Verhalten, wozu ich jedoch kein Beispiel bisher finden konnte bzw. auch sämtliches Austesten bringt mich dort nicht weiter bisher.

Edit: Ich habe es jetzt so gelöst:

Exit Sub
Errhandler:
ErrMsg = "Es liegt ein Fehler bei folgender Partnummer vor: " & oNode.PartNumber & Chr(13) & "Bitte notieren Sie sich diese Nummer und nehmen Sie eine manuelle Kontrolle dieses Teils vor." & Chr(13) & Chr(13) & "OK=Bearbeitung fortsetzen" & Chr(13) & "Cancel=Makro abbrechen"
result = MsgBox(ErrMsg, vbOKCancel)

' Resume at the line where the error occurred if the user
' clicks OK; otherwise end the macro.
If result = vbOK Then Resume Next
If result = vbCancel Then ????


Was kommt als letztes dort hin? Bei Then Exit sub macht das Makro wie gehabt weiter und mit End sub bekomme ich einen Syntax error...

Edit: Then End
[Diese Nachricht wurde von Dennis030186 am 14. Jan. 2014 editiert.]

[Diese Nachricht wurde von Dennis030186 am 15. Jan. 2014 editiert.]

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

Dennis030186
Mitglied
Design Engineer


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

Beiträge: 121
Registriert: 19.01.2007

NX 5,6,7 ; CATIA V5 R-21

erstellt am: 15. Jan. 2014 15:36    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 nochmals,

so ich komme Schritt für Schritt immer besser mit Makros zurecht, zwar noch schleppend, aber ich bemühe mich :-)

Ich versuche nun quasi das gleiche wie zuvor, jedoch abgewandelt.
Ich möchte nundort wo das EHISUPPORT auftaucht die Distanz dieser beiden Planes messen. Ich finde absolut nichts brauchbares hierzu, wie ich die 2 Planes wähle und die Distanz hier ausgebe. Bitte euch nochmal um eure Hilfe.

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: 15. Jan. 2014 17:36    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 Dennis030186 10 Unities + Antwort hilfreich

Servus
Dann such mal in der Doku und hier im Forum nach "SPAWorkbench" und "Measureable".
Messen in einer Baugruppe kann recht interessant werden *grins*

Gruß
Bernd

------------------
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