Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Catia Visual Basic Left

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:  Catia Visual Basic Left (2205 mal gelesen)
Azazel1
Mitglied



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

Beiträge: 32
Registriert: 08.09.2014

X5450; 16GB
Win 7 SP1
CATIA V5R19 SP9

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

Hallo zusammen,

ich greife mit Visual Basic 2010 auf Catia zu.
Dort sollen alle bei allen Parts die Properties überprüft und gegebenfalls ergänzt werden.

Hier ist bis jetzt meine Code:
        Dim i As Integer
        Dim test As String
        CATIA = GetObject(, "CATIA.Application")

        test = InputBox("Trage hier etwas ein")
        For i = 1 To CATIA.ActiveDocument.Product.Products.Count
                CATIA.ActiveDocument.Product.Products.item(i).DescriptionRef = test
        Next
        documents1 = CATIA.Documents
        productDocument1 = CATIA.ActiveDocument.product
        productDocument1.DescriptionRef = test


Das Funkioniert auch soweit ganz gut. Jetzt möchte ich nach der schleife eine überprüfungen ansetzen, ob der Partname mit "1111" beginnt.
Nur leider funkioniert das nicht so ganz wie ich möchte """Left(CATIA.ActiveDocument.product.name, 4)""""

Meine zweite frage wäre. Meine Schleife durchläuft alle Parts in einer Baugruppe. Beim Öffnen einer Vorrichtung durchläuft die Schleife nur die Baugruppen.
Ich müsste dementsprechend noch eine Ebene tiefer gelangen. Wie wäre das umzusetzen?

Vielen Dank

Gruß

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

Azazel1
Mitglied



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

Beiträge: 32
Registriert: 08.09.2014

X5450; 16GB
Win 7 SP1
CATIA V5R19 SP9

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

Das Problem mit Left habe ich nun doch geschafft zu lösen.

        Dim i As Integer
        Dim test As String
        CATIA = GetObject(, "CATIA.Application")

        test = InputBox("Trage hier was ein")
        CATIA.ActiveDocument.product.applyworkmode(DESIGN_MODE)
        For i = 1 To CATIA.ActiveDocument.Product.Products.Count
            If Strings.Left(CATIA.ActiveDocument.Product.Products.item(i).name, 6) = "111111" Then
                CATIA.ActiveDocument.Product.Products.item(i).DescriptionRef = test
            End if     
        Next
        documents1 = CATIA.Documents
        productDocument1 = CATIA.ActiveDocument.product
        productDocument1.DescriptionRef = test

Jetzt besteht nur noch die Frage wie ich diese eine Ebene tiefer gelange.

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

Azazel1
Mitglied



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

Beiträge: 32
Registriert: 08.09.2014

X5450; 16GB
Win 7 SP1
CATIA V5R19 SP9

erstellt am: 09. Sep. 2014 12: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

Hallo zusammen,

ich habe einen hier in dem Forum einen Code gefunden der anscheinend meinen Wünschen entspricht. Leider müsste ich diesen etwas an Visual Basic anpassen

Code:
 
sub ProAuslesen()
  Dim ProduktDoc As ProductDocument
  Dim Produkt As Product

  Set ProduktDoc = CATIA.ActiveDocument
  Set Produkt = ProduktDoc.Product
  CATAusProdukt Produkt
end sub

Function CATAusProdukt(ByVal Produkt As Product)
  Dim produkte As Object
  Set produkte = Produkt.Products
    For i = 1 To produkte.count
      CATAusProdukt (produkte.Item(i))    'rekursive Aufruf
      'hiermit hat man die jeweilige Produktname
        msgbox produkte.Item(i).name  
    Next i
End Function


In catvba funkioniert er einwandfrei, jedoch bekomme ich ihn in Visual Basic nicht zum Laufen. Ich wäre dankbar für eure Hilfe.

[Diese Nachricht wurde von Azazel1 am 09. Sep. 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: 09. Sep. 2014 13: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 Nur für Azazel1 10 Unities + Antwort hilfreich

Servus
Welche Fehlermeldung kommt den in Visual Studio?
IMHO musst du noch CATIA ansprechen. Schau dir mal diesen Code an.

Gruß
Bernd

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

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

Azazel1
Mitglied



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

Beiträge: 32
Registriert: 08.09.2014

X5450; 16GB
Win 7 SP1
CATIA V5R19 SP9

erstellt am: 09. Sep. 2014 13:10    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,

mein code sieht wie folgt aus

Code:
   Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        CATIA = GetObject(, "CATIA.Application")
        Dim ProduktDoc As ProductDocument
        Dim Produkt As Product

        ProduktDoc = CATIA.ActiveDocument
        Produkt = ProduktDoc.Product <------ an dieser Stelle erscheint die Fehlermeldung "InvalidCastException" wurde nicht behandelt.
        CATAusProdukt(Produkt)
    End Sub
    Private Sub CATAusProdukt(ByVal Produkt As Product)
        CATIA = GetObject(, "CATIA.Application")
        Dim produkte As Object
        produkte = Produkt.Products
        For i = 1 To produkte.count
            CATAusProdukt(produkte.Item(i))    'rekursive Aufruf
            'hiermit hat man die jeweilige Produktname
            MsgBox(produkte.Item(i).name)
        Next i
    End Sub


[Diese Nachricht wurde von Azazel1 am 09. Sep. 2014 editiert.]

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

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


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

Beiträge: 1118
Registriert: 29.05.2008

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

erstellt am: 09. Sep. 2014 16: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 Nur für Azazel1 10 Unities + Antwort hilfreich

Ist denn ein Produkt offen oder nur ein Part?

Versuch mal Produkt als Variant oder mit LateBinding zu initialisieren.

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

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

Xing

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

Azazel1
Mitglied



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

Beiträge: 32
Registriert: 08.09.2014

X5450; 16GB
Win 7 SP1
CATIA V5R19 SP9

erstellt am: 10. Sep. 2014 07:18    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

  Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        CATIA = GetObject(, "CATIA.Application")
        Dim ProduktDoc As Object
        Dim Produkt As Object

        ProduktDoc = CATIA.ActiveDocument
        Produkt = ProduktDoc.Product
        CATAusProdukt(Produkt)
    End Sub

    Private Sub CATAusProdukt(ByVal Produkt As Object)
        CATIA = GetObject(, "CATIA.Application")
        Dim produkte As Object
        produkte = Produkt.Products
        For i = 1 To produkte.count
            CATAusProdukt(produkte.Item(i))    'rekursive Aufruf
            'hiermit hat man die jeweilige Produktname
            MsgBox(produkte.Item(i).name)
        Next i
    End Sub

Damit habe ich mein Problem gelöst. Ich habe alle variablen die als product definiert sind durch object ersetzt und siehe das es funktioniert. 

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