Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Bei selection ersetzen

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:  Bei selection ersetzen (1784 mal gelesen)
IIYTII
Mitglied



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

Beiträge: 85
Registriert: 30.05.2007

Catia V5 R19
Programmierung unter CATvba

erstellt am: 19. Nov. 2009 15: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

Hallo,

ich möchte gerne, nachdem man ein Part im PRODUCT ausgewählt hat, es durch ein fest vorgegebenes Teil ersetzen lassen, nachdem draufgeklickt wurde.

Dazu benutze ich derzeit den source:

Set PAlt = PListe.Item(2)
Set PNeu = Pliste.ReplaceComponent (PAlt, "C:\...CATPart", True)

natürlich ist der Source so statisch und noch nicht mit der Selektion verbunden.
Mein Problem ist, dass ich Pliste.Item(2) nicht variabel beschreiben kann, es kommt immer ein Fehler zurück für Pliste.Item(variable)

hinzu kommt der andere thread mit dem Problem des auslesens der Item nummer, was mir auch nicht so recht gelingen will.

Gibt es dazu schon Codes oder ist jemand bereit dafür mal ein Anschauungsbeispiel zu posten?

Wäre super 

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

pittyplatsh
Mitglied



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

Beiträge: 62
Registriert: 27.12.2008

CATIA V5 R16 SP3

erstellt am: 19. Nov. 2009 18:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für IIYTII 10 Unities + Antwort hilfreich

" [...] Mein Problem ist, dass ich Pliste.Item(2) nicht variabel beschreiben kann, es kommt immer ein Fehler zurück für Pliste.Item(variable) [...] "

Ich weis was du vor hast, aber ohne zu wissen wie du an die Sache herangehst weis keiner wo es bei dir klemmt.

So wie du das Problem geschildert hast willst du alle selektieren Part's ersetzen lassen.

PListe ist vermutlich deine Selection:

Code:
Dim i As Integer
For i = 1 To (PListe.Count) Step 1
Set PAlt = PListe.Item(i).Value
Set PNeu = Pliste.ReplaceComponent (PAlt, "C:\...CATPart", True)
[weitere Anweisungen]
Next

Ich würde vermuten dass du auf ein Item zugreifen wolltest, dass in der Selection nicht existiert. Kann man aber ohne Quelltext nicht sagen.

Liebe Grüße,
pitty

Edit: Glatt das Value vergessen. Sonst zeigst du nur auf das "SelectedObject" welches die Referenz zum eigentlichen Objekt hält 

[Diese Nachricht wurde von pittyplatsh am 19. Nov. 2009 editiert.]

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

IIYTII
Mitglied



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

Beiträge: 85
Registriert: 30.05.2007

Catia V5 R19
Programmierung unter CATvba

erstellt am: 19. Nov. 2009 19: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

Sub main()

   
    Dim oDoc As Document
    Dim oProd As Product
    Dim oSel As Object
    Dim myType(0)
    Dim myStatus As String
    Dim Itemname As String
   
   
    Set oDoc = CATIA.ActiveDocument
    Set oProd = oDoc.Product
   
   
    Set oSel = oDoc.Selection
    oSel.Clear
    myType(0) = "Part"
   
    myStatus = oSel.SelectElement2(myType, "Bitte Part auswählen", True)
    If myStatus = "Normal" Then
        Itemname = oSel.Item(1).Value.Name 'hier müsste Item(X) ausgelsen werden, command fehlt
        MsgBox (Itemname)
    End If
   
    Dim Pliste As Products
    Set Pliste = CATIA.ActiveDocument.Product.Products
    Dim Pneu As Product
    Dim Palt As Product
   
    Set Palt = Pliste.Itemname.Value ' hier müsste Item(X) wieder eingefügt werden, command fehlt
    Set Pneu = Pliste.ReplaceComponent(Palt, "C:\...CATPart", True)
   

End Sub

Zitat:
So wie du das Problem geschildert hast willst du alle selektieren Part's ersetzen lassen.

Mir würde ein spezielles, selektiertes Part erstmal reichen

Zitat:
Ich würde vermuten dass du auf ein Item zugreifen wolltest, dass in der Selection nicht existiert

Nein, ich will auf genau DAS Item zugreifen, das vorher auch selektiert wurde

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: 19. Nov. 2009 19:35    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 IIYTII 10 Unities + Antwort hilfreich

Servus
Über den Index des "Item" ist IMHOIn my humble oppinion (Meiner Meinung nach) ein Umweg.
Versuch es mal so ungetestet:
Code:
Sub CATmain()
  
    Dim oDoc As Document
    Dim oProd As Product
    Dim oSel As Object
    Dim myType(0)
    Dim myStatus As String
    Dim Itemname As String
  
  
    Set oDoc = CATIA.ActiveDocument
    Set oProd = oDoc.Product
    Set oSel = oDoc.Selection
    oSel.Clear
    myType(0) = "Product"
  
    myStatus = oSel.SelectElement2(myType, "Bitte Part auswählen", True)
    If myStatus = "Normal" Then
        Part = oSel.Item(1).Value
        Set Palt = oProduct.Products.Item(Part.Name)
        Set Pneu = oProduct.Products.ReplaceComponent(Palt, "C:\...CATPart", True)
    End If
End Sub

Gruß
Bernd

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

[Diese Nachricht wurde von bgrittmann am 19. Nov. 2009 editiert.]

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

pittyplatsh
Mitglied



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

Beiträge: 62
Registriert: 27.12.2008

CATIA V5 R16 SP3

erstellt am: 19. Nov. 2009 19:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für IIYTII 10 Unities + Antwort hilfreich

Naja nen paar grobe Schnitzer sind noch drin^^

Code:
Sub main()
  
    Dim oDoc As Document
    Dim oProd As Product
    Dim oSel As Selection 'Formsache^^
    Dim myType(0)
    Dim myStatus As String
    Dim Itemname As String

    Dim Pneu As Part
    Dim Palt As Part
  
    Set oDoc = CATIA.ActiveDocument
    Set oProd = oDoc.Product
    Set oSel = oDoc.Selection
        oSel.Clear

    myType(0) = "Part"
  
    myStatus = oSel.SelectElement2(myType, "Bitte Part auswählen", True)
    If myStatus = "Normal" Then
        Dim i As Integer
        For i = 1 To (oSel.Count) Step 1
            Itemname = oSel.Item(i).Value.Name
            MsgBox (Itemname) 'Jetzt hast du den Namen... du willst aber sicher das Objekt selbst:
            Set Palt = oSel.Item(i).Value 'das ist das Objekt (meinst du damit Item(X) ??? )
            Set Pneu = oProd.ReplaceComponent(Palt, "C:\...CATPart", True) 'Wenn du mit Pneu nichts weiter vor
                                                                            hast reicht es auch nur alles nach
                                                                            dem Gleichheitszeichnen
                                                                            zu schreiben
        Next
    End If

End Sub


Hoffe ich hab nichts vergessen^^ Nicht getestet

Liebe Grüße,
pitty

[Diese Nachricht wurde von pittyplatsh am 19. Nov. 2009 editiert.]

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

IIYTII
Mitglied



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

Beiträge: 85
Registriert: 30.05.2007

Catia V5 R19
Programmierung unter CATvba

erstellt am: 20. Nov. 2009 08: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

Zitat:
Dim oSel as selection

geht leider nicht, weil ich mit catvba programmiere und "as selection" ist dort nicht gültig

Zitat:
Set Pneu = oProd.ReplaceComponent(Palt, "C:\test.CATPart", True)

natürlich gibt es das test.catpart unter c:\ gibt aber den Fehler zurück:

Object doesn't support this property or method

Genau das Gleiche, aber bei einer anderen Stelle bei bgrittmann

Zitat:
part = oSel.Item(1).Value


Trotzdem danke für die bisherigen Antworten, kann aber leider die Fehler nicht finden.

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: 20. Nov. 2009 08:32    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 IIYTII 10 Unities + Antwort hilfreich

Servus
Da war wohl das "oProduct" falsch und ein "Set" hat gefehlt:
Code:
Sub CATmain()
 
    Dim oDoc As Document
    Dim oProd As Product
    Dim oSel As Object
    Dim myType(0)
    Dim myStatus As String
 
    Set oDoc = CATIA.ActiveDocument
    Set oProd = oDoc.Product
    Set oSel = oDoc.Selection
    oSel.Clear
    myType(0) = "Product"
 
    myStatus = oSel.SelectElement2(myType, "Bitte Part auswählen", True)
    If myStatus = "Normal" Then
        Set Part = oSel.Item(1).Value 
        'MsgBox Part.Name    'der Exemplarname
        Set Palt = oProd.Products.Item(Part.Name) 
        Set Pneu = oProd.Products.ReplaceComponent(Palt, "c:\.....CATPart", True)
    End If

End Sub


Gruß
Bernd

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

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

IIYTII
Mitglied



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

Beiträge: 85
Registriert: 30.05.2007

Catia V5 R19
Programmierung unter CATvba

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

super, es funktioniert jetzt.

Danke nochmal!

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

Lionel Hutz
Mitglied



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

Beiträge: 363
Registriert: 26.03.2014

CATIA V5 R20

erstellt am: 27. Aug. 2020 12:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für IIYTII 10 Unities + Antwort hilfreich

Hallo,
wie geht es denn, dass ich auch Bauteile in Unterprodukten austauschen kann, insbesondere auch in Components, falls dort eine Fallunterscheidung nötig ist.

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 27. Aug. 2020 13:05    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 IIYTII 10 Unities + Antwort hilfreich

Servus Lionel

Dann musst du ReplaceComponent von der Products-Collection ausführen im dem sich das auszutauschende Teil befindet.
Beispiel:

Code:
Sub CATMain()

    Dim oDoc As Document
    Dim oProducts As Products
    Dim oSel As Object
    Dim myType(0)
    Dim myStatus As String
    Dim oProductOld as Product
    Dim oProductNew as Product

    Set oDoc = CATIA.ActiveDocument
   
    Set oSel = oDoc.Selection
    oSel.Clear
    myType(0) = "Product"
    myStatus = oSel.SelectElement2(myType, "Bitte Part auswählen", True)

    If myStatus = "Normal" Then
        Set oProductOld = oSel.Item(1).Value
        Set oProducts = oSel.Item(1).LeafProduct.Parent
        Set oProductNew = oProducts.ReplaceComponent(oProductOld, "C:\.....CATPart", False)
    End If

End Sub


Was meinst du mit Fallunterscheidung? Komponente und CATProduct sollten sich gleich verhalten.

Gruß
Bernd

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

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

Lionel Hutz
Mitglied



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

Beiträge: 363
Registriert: 26.03.2014

CATIA V5 R20

erstellt am: 27. Aug. 2020 13:11    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 IIYTII 10 Unities + Antwort hilfreich

Ich hatte Set oProducts = oSel.Item(1).Parent.Parent.Product versucht...natürlich erfolglos.
Danke.

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