Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Makro für Achsensystem einfügen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Makro für Achsensystem einfügen (3990 mal gelesen)
DocMurphy
Mitglied
Konstrukteur


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

Beiträge: 37
Registriert: 22.07.2009

erstellt am: 30. Jul. 2009 07: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

Guten Morgen!

Ich hoffe hier kann mir jemand helfen.
Da ich leider mit Makroprogrammierung etwas auf dem Kriegsfuß stehe wende ich mich an euch.

Folgende Aufgabe:

Für eine im CATIA V5 R16 SP5 geladene Baugruppe soll für jedes Teil folgendes ausgeführt werden:

1. In Part schauen ob es mindestens ein Achsensystem gibt
2. Wenn es kein Achsensystem gibt eins an den PartUrsprung einfügen
3. Alle vorhandenen Achsensystem ausblenden

Ist dies mit einem Makro möglich?

Gruss Doc

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

BettinaRauch
Mitglied
BA-Studentin, Fahrzeug-System-Engineering


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

Beiträge: 65
Registriert: 06.07.2009

Catia V5 R19

erstellt am: 30. Jul. 2009 08:12    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 DocMurphy 10 Unities + Antwort hilfreich

Ja, das müsste schon gehen.

1. Würde ich über eine Suchfunktion machen. Am Besten mal mit dem Makro-Rekorder aufzeichnen, dann hast du auch den richtigen Code (kann bei jedem Release anscheinend ein bißchen anders aussehen).
2. Über eine If-Abfrage
3. Das geht dann mit der Funktion VisProperties: Ref.VisProperties.SetShow catVisPropertyNoShowAttr (Das ist der Befehl fürs Ausblenden. 'Ref' ist die Refernez  von deinen Achsensystemen, die du gesucht/erstellt hast)

Gruß Betty

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

DocMurphy
Mitglied
Konstrukteur


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

Beiträge: 37
Registriert: 22.07.2009

erstellt am: 30. Jul. 2009 09:39    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

Das mit dem Makrorecorder habe ich probiert.
Aber wie ich das jetzt auf eine Schleife umstelle die alle Parts im Baum abklappert, das weis ich nicht!

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

V5Playaz
Mitglied
Dipl.-Ing (BA)


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

Beiträge: 447
Registriert: 12.07.2005

DELL PRECISION 390
3,25 GB RAM
WIN XP PRO SP2
CATIA V5 R16-19
Delmia V5 R19
VB6, VB2008
Adobe Acrobat 9 Pro Extended

erstellt am: 30. Jul. 2009 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 DocMurphy 10 Unities + Antwort hilfreich

1. Stell mal deinen bisherigen Code hier rein.
2. Setze dich mit den Grundlagen der Programmierung auseinander (Visual Basic)
3. Arbeite dich in die CATIA-Makroprogrammierung ein.
4. Wenn dann noch bestimmte Fragen auftauchen, kann man dir gezielt helfen.

Grüße Dominik

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

DocMurphy
Mitglied
Konstrukteur


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

Beiträge: 37
Registriert: 22.07.2009

erstellt am: 30. Jul. 2009 13: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

Das ist bis jetzt mein Code: (zusammengebastelt aus verschiedenen Codeschnipseln des Forums)


__________________________________________________________________________________________

Language="VBSCRIPT"

Sub CATMain()
  Set oRoot = Catia.ActiveDocument
  Set oProd = oRoot.Product
  Set oProducts = oRoot.Product.Products
  SUB_CHECKAXIS oProducts
End Sub


Sub SUB_CHECKAXIS(oProducts)
  For i = 1 To oProducts.Count
    If TypeName(oProducts.Item(n).ReferenceProduct.Parent) = "PartDocument" Then
      If oProducts.Item(n).GetAxisSystem.Item > 0 then 

    End If
      ElseIf TypeName(oProducts.Item(n).ReferenceProduct.Parent) = "ProductDocument" Then
        If oProducts.Item(n).Products.Count > 0 Then
        SUB_CHECKAXIS oProducts.Item(n).Products
        End If
  End If
  Next
End Sub

__________________________________________________________________________________________

in der Zeile "If TypeName(oProducts.Item(n).ReferenceProduct.Parent) = "PartDocument" Then"
bekomme ich immer folgenden Fehler:

Source: CATIAProducts
Description: The method Item failed
Line: 13
Column: 4

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: 30. Jul. 2009 16: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 DocMurphy 10 Unities + Antwort hilfreich

Hallo Doc  ,

man sieht das du das Script zusammenkopierst hast. Du musst in einer Schleife für ein Item schon den selben Zähler hernhemen wie in der Schleifeninitialisierung. n ist in deinem Fall Nothing weil der Zähler i ist 

Hier mal eine funktionierende "ein wenig erweiterte" Version deines Scriptes:

Code:

Private Counter As Integer

Sub CATMain()

    '**********************************Deklarationen**********************************

        Dim oRoot As Document
        Dim oProd As Product
        Dim oProducts As Products
        Dim myPart As Part
   
        Counter = 0
    '**********************************Abfrage Dokumente**********************************
        Dim oFenster As Windows
        Dim ObjType As String
        Set oFenster = CATIA.Windows
        If oFenster.Count = 0 Then
            Box = MsgBox("Es ist kein Dokument geladen!" + Chr(10) + "Das Makro kann nicht ausgeführt werden und wird beendet!", vbCritical, "Keine Dokument geladen")
            Exit Sub
        End If
        Set oRoot = CATIA.ActiveDocument
        ObjType = TypeName(oRoot)
        If ObjType <> "ProductDocument" Then
            Box = MsgBox("Das aktive Dokument ist kein Produkt!" + Chr(10) + "Das Makro kann nicht ausgeführt werden!", _
                    vbCritical + vbOKOnly, "Falscher Dateityp")
            Exit Sub
        End If
        ObjType = ""
       
    '**********************************Producte instanzieren**********************************
        Set oProd = oRoot.Product
        Set oProducts = oRoot.Product.Products
        SUB_CHECKAXIS oProducts

    '**********************************Ausgabe**********************************
        Box = MsgBox("Es wurden " & Counter & " Achsensystem erzeugt", vbInformation + vbOKOnly, "Makro erfolgreich beendet")
End Sub


Sub SUB_CHECKAXIS(oProducts)
  For i = 1 To oProducts.Count
    If TypeName(oProducts.Item(i).ReferenceProduct.Parent) = "PartDocument" Then
        If oProducts.Item(i).ReferenceProduct.Parent.Part.AxisSystems.Count = 0 Then
            Set myPart = oProducts.Item(i).ReferenceProduct.Parent.Part
            Set NewAxisSystem = myPart.AxisSystems.Add()
            NewAxisSystem.Name = "Neues Achsensystem"
            myPart.Update
            Counter = Counter + 1
        End If
      ElseIf TypeName(oProducts.Item(i).ReferenceProduct.Parent) = "ProductDocument" Then
        If oProducts.Item(i).Products.Count > 0 Then
        SUB_CHECKAXIS oProducts.Item(i).Products
        End If
  End If
  Next
End Sub


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

Die KATJA ist halt doch nur ne zickige Französin

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

DocMurphy
Mitglied
Konstrukteur


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

Beiträge: 37
Registriert: 22.07.2009

erstellt am: 31. Jul. 2009 07:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke, hab es mal gerade eben ausprobiert!

Leider erhalte ich folgende Fehlermeldung:

Source: Komilierungsfehler in Microsoft VBScript
Description: Anweisungsende erwartet
Statement: Private Counter As Integer
Line: 1
Column: 16

Wie kann ich die Anweisung beenden?
Habe hier leider keinen Zugriff auf die V5Automation.chm

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: 31. Jul. 2009 07: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 Nur für DocMurphy 10 Unities + Antwort hilfreich

Servus
Hast du das Makro als .CATScript oder .catvbs abgespeichert?
Versuch mal das andere Format (ich vermute .catvbs sollte passen).

Gruß
Bernd

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

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

DocMurphy
Mitglied
Konstrukteur


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

Beiträge: 37
Registriert: 22.07.2009

erstellt am: 31. Jul. 2009 07: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

Ich hatte als .catvbs gespeichert!

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: 31. Jul. 2009 10: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 DocMurphy 10 Unities + Antwort hilfreich


CreateAxisSystems_v1.0.zip

 
Hallo Doc,

das liegt an der als "Private" deklarierten Variable. Übergebe sie einfach mit in die Sub dann musst du sie nicht zusätzlich als "Private" deklarieren und das Script sollte in allen Sprachen (also auch als *.CATScript) laufen.

Ich hab´s hier mal als Anhang (*.CATScript) drangehängt. Ich habe es gerade auf einer R18 SP6 getestet und es läuft ohne Probleme durch.

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

Die KATJA ist halt doch nur ne zickige Französin

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

DocMurphy
Mitglied
Konstrukteur


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

Beiträge: 37
Registriert: 22.07.2009

erstellt am: 31. Jul. 2009 11: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

Danke, läuft super!

10 Unities für dich!
Auch mein dank an alle anderen.

Jetzt muss ich nur noch die sichtbarkeit der Achsensystem ausschalten.
Mal schauen ob ich das hinkriege.

Werde mich wohl doch mal intensiver mit Makros beschäftigen!
Welches Buch könnt ihr da empfehlen?
Ich habe schon einige mit Programmiererfahrung (Delphi)!

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

danielsc
Mitglied



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

Beiträge: 45
Registriert: 18.06.2009

erstellt am: 31. Jul. 2009 12:03    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 DocMurphy 10 Unities + Antwort hilfreich

Also ich hab zwei Bücher und die haben mir echt schon oft geholfen.

1. Kochbuch - CATIA V5 automatisieren von Jens Hansen (welcher auch öfters hier im Forum ist) 
2. CATIA V5 - Makroprogrammierung mit Visual Basic Script von Dieter R. Ziethen

MfG Danny

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: 31. Jul. 2009 12:19    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 DocMurphy 10 Unities + Antwort hilfreich


CreateAxisSystems_v1.1.zip

 
Hallo Doc,

oh das war mein Fehler hatte ich wieder ganz vergessen das du sie auch noch unsichtbar machen wolltest.

Im Anhang ist die aktualisierte Version des Scriptes 

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

Die KATJA ist halt doch nur ne zickige Französin

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

DocMurphy
Mitglied
Konstrukteur


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

Beiträge: 37
Registriert: 22.07.2009

erstellt am: 04. Aug. 2009 10: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 danke für deine Hilfe!

Ich habe mich am Wochenende mal hingesetzt und etwas in die Materie eingearbeitet.
(Buch ist auch schon bestellt)
Ich habe die ganze Sache noch etwas erweitert.

Hänge hier mal mein Ergebniss an:
__________________________________________________________________________________
Sub CATMain()

'*** CHANGELOG ***
    '0: DocMurphy      => Achsensysteme werden erzeugt und ausgeblendet
    '1: DocMurphy      => OriginalPlanes werden ausgeblendet 
    '2: DocMurphy      => Bedingungen werden ausgeblendet
    '3: DocMurphy      => Fehlerhafte Bedingungen werden deaktiviert
    '4: DocMurphy      => Geometrische Sets werden ausgeblendet   
 
    '*** Deklarationen ***

        Dim oRoot As Document
        Dim oProd As Product
        Dim oProducts As Products
        Dim myPart As Part
        Dim Counter As Integer
        Dim oSel As Selection
        Counter = 0

    '*** Abfrage Dokumente ***

        Dim oFenster As Windows
        Dim ObjType As String
        Set oFenster = CATIA.Windows
        If oFenster.Count = 0 Then
            Box = MsgBox("Es ist kein Dokument geladen!" + Chr(10) + "Das Makro kann nicht ausgeführt werden und wird beendet!", vbCritical, "Kein Dokument geladen")
            Exit Sub
        End If
        Set oRoot = CATIA.ActiveDocument
        ObjType = TypeName(oRoot)
        If ObjType <> "ProductDocument" Then
            Box = MsgBox("Das aktive Dokument ist kein Produkt!" + Chr(10) + "Das Makro kann nicht ausgeführt werden!", _
                                      vbCritical + vbOKOnly, "Falscher Dateityp")
            Exit Sub
        End If
        ObjType = ""
       
    '*** Producte instanzieren ***
        Set oSel = oRoot.Selection
        oSel.Clear
        Set oProd = oRoot.Product
        Set oProducts = oRoot.Product.Products
  '*** Abarbeitung startet hier *** 
        SUB_CHECKAXIS oProducts, Counter, oSel
    '*** Ausgabe ***
        Box = MsgBox("Fertig! Es wurden " & Counter & " Achsensysteme erzeugt", vbInformation + vbOKOnly, "Makro erfolgreich beendet")
End Sub


Sub SUB_CHECKAXIS(oProducts,Counter,oSel)
  For i = 1 To oProducts.Count
    If TypeName(oProducts.Item(i).ReferenceProduct.Parent) = "PartDocument" Then
        If oProducts.Item(i).ReferenceProduct.Parent.Part.AxisSystems.Count = 0 Then
            Set myPart = oProducts.Item(i).ReferenceProduct.Parent.Part
            Set NewAxisSystem = myPart.AxisSystems.Add()
            NewAxisSystem.Name = "AXS_SYSTEM "
            myPart.Update
            Counter = Counter + 1
            '*** Neu erzeugtes Achsensystem ausblenden ***
            oSel.Add NewAxisSystem
            oSel.VisProperties.SetShow 1
            oSel.Clear
            '*** Ende: Neu erzeugtes Achsensystem ausblenden ***
        Else If oProducts.Item(i).ReferenceProduct.Parent.Part.AxisSystems.Count > 0 Then
            '*** Wenn schon Achsensysteme im Teil vorhanden sind so blende diese aus ***
            Set myPart = oProducts.Item(i).ReferenceProduct.Parent.Part
            Set myAxisSystems = myPart.AxisSystems
            For j = 1 to myPart.AxisSystems.Count
            Set actAxisSystem = myPart.AxisSystems.Item(j)
            oSel.Clear
            oSel. Add actAxisSystem
            oSel.VisProperties.SetShow 1
            oSel.Clear           
            Next
            '*** Ende: Vorhandene Achsensysteme ausblenden ***
       
            '*** Blende Original-Planes aus ***
            Set plnXY = myPart.originElements.PlaneXY
            Set plnYZ = myPart.originElements.PlaneYZ
            Set plnZX = myPart.originElements.PlaneZX
            oSel.Clear
            oSel. Add plnXY
            oSel. Add plnYZ
            oSel. Add plnZX
            oSel.VisProperties.SetShow 1
            oSel.Clear           
            '*** Ende: Blende Original-Planes aus ***
            '*** Blende Geometrische Sets aus ***
            Set hybBodies1 = myPart.HybridBodies
            For l = 1 to myPart.HybridBodies.Count
            Set my_hyb = myPart.Hybridbodies.Item(l)
              oSel.Clear
              oSel.Add my_hyb
              oSel.VisProperties.SetShow 1
              oSel.Clear         
            Next
            '*** Ende: Blende Geometrische Sets aus ***
        End If
      End If
      ElseIf TypeName(oProducts.Item(i).ReferenceProduct.Parent) = "ProductDocument" Then
        '*** Du befindest dich im Product -> führe Arbeiten fürs Product durch ***
        '*** Blende Constraints aus ***
        Set myProduct = CATIA.ActiveDocument.Product 
        Set my_Constraints = myProduct.Connections("CATIAConstraints")
        For k = 1 to my_Constraints.Count 
          oSel.Clear
          Dim MyConstrain As Constraint
          Set MyConstrain =my_Constraints.Item(k)
          oSel.Add MyConstrain
          oSel.VisProperties.SetShow 1
          oSel.Clear
        Next             
        '*** Ende: Blende Constraints aus ***
        '*** Deaktiviere fehlerhafte Constraints ***
        Set myProduct = CATIA.ActiveDocument.Product 
        Set my_Constraints = myProduct.Connections("CATIAConstraints")
        For k = 1 to my_Constraints.Count 
          Set MyConstrain =my_Constraints.Item(k)
          If MyConstrain.Status = catCstStatusKOBroken Then
          MyConstrain.Deactivate
          End If     
        Next             
        '*** Ende: Deaktiviere fehlerhafte Constraints ***
        If oProducts.Item(i).Products.Count > 0 Then
          SUB_CHECKAXIS oProducts.Item(i).Products, Counter, oSel
        End If
  End If
  Next
End Sub
__________________________________________________________________________________

Jetzt meine Fragen:

1. In grossen Baugruppen werden nicht alle Äste korrekt abgearbeitet, was kann das sein?
2. Ich würde gern für die einzelnen Funktionalitäten Unterprozeduren schreiben
  Das habe ich aber nicht hinbekommen, es hapert immer irgendwie an der Parameterübergabe

Habt ihr hier Tipps die mir weiterhelfen würden?

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: 04. Aug. 2009 10: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 DocMurphy 10 Unities + Antwort hilfreich

Hallo Doc,

Ich würde das mit dem Ausblenden generell anders lösen. Versuch es über eine Selection.Search. Hier kannst du auf einmal alle Hauptebenen, Geosets und Constaints in eine Selektion packen und diese ausblenden. Dazu brauchst du keine rekursive Funktion (die macht das Makro nur unnötig langsamer). Auch die gebrochenen Constaints kannst du damit abarbeiten.

Wie du schon sagst würde ich das ganze dann aber auf Unteroutinen aufteilen (Übersicht). Eine Parameterübergabe ist keien CATIA Feature sondern ein Basic von VB. Von dem her würde ich einfach mal bei Google suchen da findest du soviel Anleitungen, Toturials, etc. zu diesem Thema.

Es gibt zwei Möglichkeiten das ganze in deinem Projket zu realisieren.

1. Du definierst du Variablen die du in allen Sub´s brauchst als Private (bzw. Public) dann sind sie in allen Sub´s verfügbar
2. Du übergibst beim Prozzeduraufruf die entsprechenden Variablen an die Sub (siehe Codebeispiel)

Codebeispiel (Parameterübergabe)

Code:

Sub CATMain()

Dim myString as String
MyString = InputBox("Bitte geben Sie einen Text ein")

ShowMsgBox(myString)

End Sub

Sub ShowMsgBox(StringZumAnzeigen)

Box = MsgBox (StringZumAnzeigen, vbInformation,"Übergabestring")

End Sub


Hierbei wird in der CATMain einer Variablen ein String (Userinput) zugeweisen. Beim Prozzeduraufruf (ShowMsgBox) wird dieser String übergeben und in eine andere variable (StringZumAnzeigen) in der aufgerufenen Sub verfügbar.

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

Die KATJA ist halt doch nur ne zickige Französin

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

DocMurphy
Mitglied
Konstrukteur


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

Beiträge: 37
Registriert: 22.07.2009

erstellt am: 05. Aug. 2009 09: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

Danke für deine Tipps!

Werde am Wochenende mal versuchen sie umzusetzen.

Gruss

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