Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  in Produkt externes Part durch select 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:  in Produkt externes Part durch select ersetzen (1363 mal gelesen)
cmb
Mitglied
Systembetreuer


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

Beiträge: 500
Registriert: 12.07.2002

CATIA V5-6R2016 64bit
Smarteam R22.6
Moldflow Adviser 2014
Lenovo Think Pad P90

erstellt am: 30. Sep. 2011 13: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 Forum,

ich habe in meiner Catia Sitzung ein CATProduct (active Document) und ein Part geöffnet.
Nun möchte ich durch eine selektion einen Replace machen.
Das zu ersetzende Part kann ich auswählen das funktioniert.
Aber die zweite selektion bringe ich nicht zum laufen.
Muss ich die selektion in ein Array übergeben?

Gruß

Norbert


Code:
Sub CATMain()
    Dim oDocs As Documents
    Dim oDoc As Document
    Dim oProd As Product
    Dim oSel As Object
    Dim aAuswahlFilter(0)
    Dim Status As String
    Dim oPartNeu As Document
 
    Set oDoc = CATIA.ActiveDocument
    Set oDocs = CATIA.Documents
    Set oProd = oDoc.Product
    Set oSel = oDoc.Selection
    oSel.Clear
    aAuswahlFilter(0) = "Product"
 
    Status = oSel.SelectElement2(aAuswahlFilter, "Bitte zu ersetzendes Part auswählen", False)
    If Status = "Normal" Then
        Set Part = oSel.Item(1).Value
        Set Ptemplate = oProd.Products.Item(Part.Name)
'        oSel.Clear
       
'Geöffnetes Part (nicht active Document) auswählen
    Status = oSel.SelectElement2(aAuswahlFilter, "Bitte neues Part auswählen", False)
    'If Status = "Normal" Then '' bei externen Parts immer Status Cancel
        Set Part02 = oSel.Item(1).Value
        'MsgBox Part.Name    'der Exemplarname
        Set oPartNeu = oProd.Products.Item(Part02.Name)
'        Set Pneu = oProd.Products.ReplaceComponent(Ptemplate, oPartNeu, True)
    End If
End Sub


------------------
V5R20
Catia + Smarteam

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: 30. Sep. 2011 17: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 Nur für cmb 10 Unities + Antwort hilfreich

Servus
Zum ein Objekt in einem anderen Dokument wählen zu können, muss du die Methode SelectElement4 verwenden.
Dann wird eine Document und ein Selection zurückgeliefert.
Anbei ein Beispiel:
Code:

Sub CATMain()
    Dim oDocs As Documents
    Dim oDoc As Document
    Dim PartDocument As Document
    Dim oProd As Product
    Dim oSel As Selection
    Dim oSelB As Object
    Dim aAuswahlFilter(0)
    Dim Status As String
    Dim oPartAlt As Product
    Dim oPartNeu As Product
    Dim path As String

    Set oDoc = CATIA.ActiveDocument
    Set oDocs = CATIA.Documents
    Set oProd = oDoc.Product
    Set oSel = oDoc.Selection
    Set oSelB = oSel
    oSel.Clear
    aAuswahlFilter(0) = "Product"
   
    'Exemplar wählen, dass ersetz werden soll
    Status = oSelB.SelectElement2(aAuswahlFilter, "Bitte zu ersetzendes Part auswählen", False)
    If Status <> "Normal" Then
        MsgBox "Es wurde kein zu ersetzendes Exemplar gewählt. Das Makro wir beendet"
        Exit Sub
    End If
    Set oPartAlt = oSel.Item(1).Value
    oSel.Clear
     
    'Filter neu setzen, um nur Parts selektieren zu können
    aAuswahlFilter(0) = "Part"

    Status = oSelB.SelectElement4(aAuswahlFilter, "Bitte neues Part auswählen", "Bitte neues Part auswählen", False, PartDocument)
    If Status <> "Normal" Then
        MsgBox "Es wurde kein Part selektiert. Das Makro wir beendet"
        Exit Sub
    End If
       
    'Pfad des externen Dokuments ermitteln
    path = PartDocument.fullname
       
    'oPartAlt ersetzen
    Set oPartNeu = oProd.Products.ReplaceComponent(oPartAlt, path, False)

End Sub


In diesem Beispiel wird nur das zurückgelieferte Document weiter verwendet.

Gruß
Bernd

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

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

cmb
Mitglied
Systembetreuer


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

Beiträge: 500
Registriert: 12.07.2002

CATIA V5-6R2016 64bit
Smarteam R22.6
Moldflow Adviser 2014
Lenovo Think Pad P90

erstellt am: 04. Okt. 2011 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

Hallo Bernd,

vielen Dank für die Lösung, funktioniert Super.
Wenn ich die Frage früher gepostet hätte, hätte ich mir 2 Tage ausprobieren erspart ,-(.

Gruß

Norbert

------------------
V5R20
Catia + Smarteam

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