Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Copy Bodys im 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:  Copy Bodys im Produkt (1321 mal gelesen)
moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 06. Jan. 2022 10: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

Hallo Zusammen,

frohes Neues in die Runde.

Vieleicht hat jemand von euch ein paar Codezeilen (nehme auch gerne ganzen Code ) für mein Anliegen.

Ich möchte in einem Produkt mit beliebig vielen gleichen Parts "Quellparts" alle gepublishten Elemente (in diesem Fall Bodys) in ein "Zielpart" kopieren.
In dem Produkt befindet sich teilweise auch noch ein Unterprodukt, dies soll aber nicht angerührt werden werden.

Hier zu Verdeutlichung die Struktur

Produkt1
--Produkt2
--Zielpart
--Quellpart(mit Publish)
--Quellpart(mit Publish)
--Quellpart(mit Publish)
--Quellpart(mit Publish)
--Quellpart(mit Publish)
--usw.

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!    

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. 2022 10:26    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 moppesle 10 Unities + Antwort hilfreich

Servus Uwe

Kennst du diesen Code? (entspricht nicht ganz deiner Frage)
Du musst beim kopieren zum selektieren CreateReferenceFromName nutzen.

Gruß
Bernd

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

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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 06. Jan. 2022 10: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

Hi Bernd,

super danke... wer suchen kann ist klar im Vorteil.

Schaue mal was ich daraus machen kann.

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!    

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

imation1999
Mitglied
dipl.-ing. Maschinenbau


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

Beiträge: 276
Registriert: 02.08.2011

Dell Precision T3500
Intel® Xeon® Quad Core
NVIDIA Quadro® 5000
Win7 x64 Ultimate
CATIA V5 R20 SP2

erstellt am: 06. Jan. 2022 15: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 moppesle 10 Unities + Antwort hilfreich

Hallo Uwe,

anbei deiner gewünschte Code (VBA):

Code:

Dim SelectedBodies(100) As Variant
Dim AssyBodies(6) As Variant
Dim BodyCounter As Integer
Dim InctanceCounter As Integer
Dim LoopCounter As Integer
Dim instanceSuffix As String
Dim choice
Dim SelBackupBody()

Sub CATMain()
 
    Erase SelectedBodies
    Erase AssyBodies
   
   
    Set ProductDocument1 = CATIA.ActiveDocument
    Dim selectionPart 'As Selection
    Set selectionPart = CATIA.ActiveDocument.Selection
   
   
    'selection of part to be copied
    MsgBox "Select the StandardPart you want to copy"
    Dim InputObjectType(0)
    InputObjectType(0) = "Product"
    sSelect = selectionPart.SelectElement2(InputObjectType, "Select a Part", False)
    If sSelect = "Cancel" Then
        Exit Sub
    End If
    Set CopyFromPart = selectionPart.Item(1).Value
   
   
    'selection of Body to be copied
    MsgBox "Select the Bodys you want to copy"
    Dim InputObjectBody(0)
    Dim SelectionBody
    Set SelectionBody = CATIA.ActiveDocument.Selection
    InputObjectBody(0) = "Body"
    sSelect = SelectionBody.SelectElement3(InputObjectBody, "Select a Body(s)", True, CATMultiSelTriggWhenUserValidatesSelection, False)
   
    If sSelect = "Cancel" Then
        Exit Sub
    End If
   
    'Dim SelBackupBody() 'As Object
    ReDim SelBackupBody(SelectionBody.Count)

    For i = 1 To SelectionBody.Count
      Set SelBackupBody(i) = SelectionBody.Item(i).Value
    Next
   
   
    'selection of part to  paste into
    Dim castProd As Product
    MsgBox "Select The Part to Paste Into!"
    Dim PasteObjectType(0)
    PasteObjectType(0) = "Product"
    sSelect = selectionPart.SelectElement2(PasteObjectType, "Select a Part", False)
    If sSelect = "Cancel" Then
        Exit Sub
    End If
    Set PasteToPart = selectionPart.Item(1).Value
   
    'Check if CATPart or CATProduct
    If InStr(1, CopyFromPart.ReferenceProduct.Parent.Name, "CATPart") <> 0 Then
        SearchPartForBodies CopyFromPart, PasteToPart, InstanceNr(CopyFromPart)
        SearchForOtherInstancesPart CopyFromPart, PasteToPart
    Else 'Check if CATProduct
        If InStr(1, CopyFromPart.Products.Item(1).Name, "SK") = 0 Then 'if product not group
            SearchPartForBodies CopyFromPart.Products.Item(1), PasteToPart, InstanceNr(CopyFromPart)
            SearchForOtherInstancesProduct CopyFromPart, PasteToPart
        Else  'if group
            If InStr(1, CopyFromPart.Products.Item(2).ReferenceProduct.Parent.Name, "CATPart") <> 0 Then 'if part group
                SearchPartForBodies CopyFromPart.Products.Item(2), PasteToPart, InstanceNr(CopyFromPart)
                SearchForOtherInstancesPart CopyFromPart.Products.Item(2), PasteToPart
            Else 'if product group
                SearchPartForBodies CopyFromPart.Products.Item(2).Products.Item(1), PasteToPart, InstanceNr(CopyFromPart)
                SearchForOtherInstancesProduct CopyFromPart.Products.Item(2), PasteToPart
            End If
        End If
    End If
       
    Dim castPart As Part
    Set castPart = ProdToPart(PasteToPart)

       
    PasteToPart.Update
 
   
    '----cleaner----
    Erase SelectedBodies
    Erase AssyBodies
    BodyCounter = 0
    InctanceCounter = 0
    LoopCounter = 0
    '----
End Sub

Sub SearchPartForBodies(CopyFromPart, PasteToPart, instanceSuffix)
    'On Error GoTo ErrorHandler    ' Enable error-handling routine.
    'search for bodies in source part
    'Dim selectedpartRoot As Part
 
    Set selectedpartRoot = CopyFromPart.ReferenceProduct.Parent.Part
   
    Dim BodiesInPart As Bodies
    Set BodiesInPart = selectedpartRoot.Bodies
   
    Dim BodySelection 'As Selection
    Set BodySelection = CATIA.ActiveDocument.Selection
    BodySelection.Clear
   
    ' for loops through all the bodies in search for add,remove etc
    BodyCounter = 0
    Dim BodyInPart As Body
   
    For i = 1 To UBound(SelBackupBody)
       
        Set BodyInPart = SelBackupBody(i)
        BodySelection.Add BodyInPart
            On Error Resume Next
        BodySelection.Add CopyFromPart.Publications.Item(BodyInPart.Name).Valuation
            If Err.Number <> 0 Then
                MsgBox "Wrong Publication Name! Check Publication Name For: " & BodyInPart.Name
          End If
            BodyCounter = BodyCounter + 1
        'End If
    Next
   
    BodySelection.Copy
   
    'Pasteoperation in targetpart starts here
    Dim targetPartSel As Selection
    Set targetPartSel = CATIA.ActiveDocument.Selection
   
    targetPartSel.Add PasteToPart.ReferenceProduct.Parent.Part
    targetPartSel.PasteSpecial "CATPrtResult"
   
    For i = 1 To targetPartSel.Count
        'targetPartSel.Item(i).Value.Name = targetPartSel.Item(i).Value.Name + "." + instanceSuffix
        targetPartSel.Item(i).Value.Name = SelBackupBody(i).Name + "." + instanceSuffix
    Next
    targetPartSel.Clear
   
'ErrorHandler:            ' Error-handling routine.
'If Err.Number <> 0 Then
'    msg = "Please Publish!"
'    MsgBox msg
'    End
'End If
   
End Sub
'part instance searcher
Sub SearchForOtherInstancesPart(CopyFromPart, PasteToPart)
    Dim selectionPart 'As Selection
    Set selectionPart = CATIA.ActiveDocument.Selection
    Set InstancePart = CopyFromPart
    SelectedInstanceName = CopyFromPart.Name
    'InctanceCounter = InstancePart.Parent.Count
   
    For i = 1 To InstancePart.Parent.Count 'count in father prod
    If InstancePart.Name <> InstancePart.Parent.Item(i).Name Then 'skip the user selected prod
        Set MyInstance = InstancePart.Parent.Item(i)
        If InStr(1, MyInstance.Name, InstancePart.PartNumber) <> 0 Then
              selectionPart.Clear
              selectionPart.Add InstancePart.Parent.Item(i) 'select next instance
              SearchPartForBodies MyInstance, PasteToPart, InstanceNr(MyInstance) 'search in next instace
              InctanceCounter = InctanceCounter + 1
        End If
    End If
    Next
End Sub
'product instance searcher
Sub SearchForOtherInstancesProduct(CopyFromPart, PasteToPart)
    Dim selectionPart 'As Selection
    Set selectionPart = CATIA.ActiveDocument.Selection
    Set InstancePart = CopyFromPart
    SelectedInstanceName = CopyFromPart.Name
    'InctanceCounter = InstancePart.Parent.Count
   
   
    For i = 1 To InstancePart.Parent.Count 'count in father prod
    Set MyInstance = InstancePart.Parent.Item(i)
    If InstancePart.Name <> MyInstance.Name Then 'skip the user selected prod
        If InStr(1, MyInstance.Name, InstancePart.PartNumber) <> 0 Then
              selectionPart.Clear
              selectionPart.Add MyInstance 'select next instance
              SearchPartForBodies MyInstance.Products.Item(1), PasteToPart, InstanceNr(MyInstance) 'search in next instace
              InctanceCounter = InctanceCounter + 1
        End If
    End If
    Next
End Sub

'conversion of product to part
Function ProdToPart(oProduct) As Part
    Dim documents1 As Documents
    Set documents1 = CATIA.Documents

    Dim partDocument1 As Document
    Set partDocument1 = documents1.Item(oProduct.PartNumber + ".CATPart")

    Dim targetPart As Part
    Set targetPart = partDocument1.Part
    Set ProdToPart = targetPart
End Function

Sub AddToSelectedBodies(BodyInPart As Body)
    BodyCounter = BodyCounter + 1
    Set SelectedBodies(BodyCounter) = BodyInPart
End Sub

Function InstanceNr(oProd) As String
        pointPos = InStr(1, oProd.Name, ".")
        InstanceNr = Right(oProd.Name, Len(oProd.Name) - pointPos)
End Function
Function StrippInstanceNr(oStr As String) As String
        pointPos = InStr(1, oStr, ".")
        StrippInstanceNr = Left(oStr, pointPos - 1)
End Function



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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 06. Jan. 2022 19: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

Hallo imation1999,

perfekt.
Vielen Dank.

Ps. Mir ist aufgefallen, das die Positionsmatrix der Bodys nicht mitgeben wird.
Momentan werden die Bodys an der Stelle des Selektierten Quellparts eingfügt.
Auch aktualisieren sich die Bodys nicht wenn die Parts verschoben werden.

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!            

[Diese Nachricht wurde von moppesle am 06. Jan. 2022 editiert.]

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

imation1999
Mitglied
dipl.-ing. Maschinenbau


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

Beiträge: 276
Registriert: 02.08.2011

Dell Precision T3500
Intel® Xeon® Quad Core
NVIDIA Quadro® 5000
Win7 x64 Ultimate
CATIA V5 R20 SP2

erstellt am: 07. Jan. 2022 07: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 moppesle 10 Unities + Antwort hilfreich


CAD.jpg

 
Hallo Uwe,
bei mir läuft das Makro problemlos. Wenn ich die Quellparts verschiebe, gehen die Bodys im Zielpart auch mit. Kannst du mal bitte einen Screenshot von deinen CATIA-Baum posten?

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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 07. Jan. 2022 08: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

Hallo imation1999,

ich habe nun herausgefunden warum es nicht funktionierte.

Ich hatte die Zeilen auskommentiert weil bei mir die Bodynamen nicht mit den Publikationsnamen übereinstimmen.

Code:
If Err.Number <> 0 Then
                MsgBox "Wrong Publication Name! Check Publication Name For: " & BodyInPart.Name
          End If

Gibt es eine Möglichkeit trotz unterschiedlicher Namensgebung das Makro zum laufen zu bringen?

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!    

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: 07. Jan. 2022 08:33    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 moppesle 10 Unities + Antwort hilfreich

Servus Uwe

Bei einer Veröffentlichung kannst du über .Valuation.Displayname auf den "Pfad" zum veröffentlichten Element zugreifen.
Somit könntest die "richtige" Veröffentlichung ermitteln.

Gruß
Bernd

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

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

imation1999
Mitglied
dipl.-ing. Maschinenbau


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

Beiträge: 276
Registriert: 02.08.2011

Dell Precision T3500
Intel® Xeon® Quad Core
NVIDIA Quadro® 5000
Win7 x64 Ultimate
CATIA V5 R20 SP2

erstellt am: 07. Jan. 2022 11: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 Nur für moppesle 10 Unities + Antwort hilfreich

Hallo,
ja, genau, wie Bernd geschrieben hat...ändere mal so ab, dann wird zu dem Body die richtige Publication gesucht:
Code:

Dim SelectedBodies(100) As Variant
Dim AssyBodies(6) As Variant
Dim BodyCounter As Integer
Dim InctanceCounter As Integer
Dim LoopCounter As Integer
Dim instanceSuffix As String
Dim choice
Dim SelBackupBody()

Sub CATMain()
  
    Erase SelectedBodies
    Erase AssyBodies
   
   
    Set productDocument1 = CATIA.ActiveDocument
    Dim selectionPart 'As Selection
    Set selectionPart = CATIA.ActiveDocument.Selection
   
   
    'selection of part to be copied
    MsgBox "Select the StandardPart you want to copy"
    Dim InputObjectType(0)
    InputObjectType(0) = "Product"
    sSelect = selectionPart.SelectElement2(InputObjectType, "Select a Part", False)
    If sSelect = "Cancel" Then
        Exit Sub
    End If
    Set CopyFromPart = selectionPart.Item(1).Value
   
   
    'selection of Body to be copied
    MsgBox "Select the Bodys you want to copy"
    Dim InputObjectBody(0)
    Dim SelectionBody
    Set SelectionBody = CATIA.ActiveDocument.Selection
    InputObjectBody(0) = "Body"
    sSelect = SelectionBody.SelectElement3(InputObjectBody, "Select a Body(s)", True, CATMultiSelTriggWhenUserValidatesSelection, False)
   
    If sSelect = "Cancel" Then
        Exit Sub
    End If
   
    'Dim SelBackupBody() 'As Object
    ReDim SelBackupBody(SelectionBody.Count)

    For i = 1 To SelectionBody.Count
       Set SelBackupBody(i) = SelectionBody.Item(i).Value
    Next
   
   
    'selection of part to  paste into
    Dim castProd As Product
    MsgBox "Select The Part to Paste Into!"
    Dim PasteObjectType(0)
    PasteObjectType(0) = "Product"
    sSelect = selectionPart.SelectElement2(PasteObjectType, "Select a Part", False)
    If sSelect = "Cancel" Then
        Exit Sub
    End If
    Set PasteToPart = selectionPart.Item(1).Value
   
    'Check if CATPart or CATProduct
    If InStr(1, CopyFromPart.ReferenceProduct.Parent.Name, "CATPart") <> 0 Then
        SearchPartForBodies CopyFromPart, PasteToPart, InstanceNr(CopyFromPart)
        SearchForOtherInstancesPart CopyFromPart, PasteToPart
    Else 'Check if CATProduct
        If InStr(1, CopyFromPart.Products.Item(1).Name, "SK") = 0 Then 'if product not group
            SearchPartForBodies CopyFromPart.Products.Item(1), PasteToPart, InstanceNr(CopyFromPart)
            SearchForOtherInstancesProduct CopyFromPart, PasteToPart
        Else  'if group
            If InStr(1, CopyFromPart.Products.Item(2).ReferenceProduct.Parent.Name, "CATPart") <> 0 Then 'if part group
                SearchPartForBodies CopyFromPart.Products.Item(2), PasteToPart, InstanceNr(CopyFromPart)
                SearchForOtherInstancesPart CopyFromPart.Products.Item(2), PasteToPart
            Else 'if product group
                 SearchPartForBodies CopyFromPart.Products.Item(2).Products.Item(1), PasteToPart, InstanceNr(CopyFromPart)
                 SearchForOtherInstancesProduct CopyFromPart.Products.Item(2), PasteToPart
            End If
        End If
    End If
       
    Dim castPart As Part
    Set castPart = ProdToPart(PasteToPart)

       
    PasteToPart.Update
  
   
    '----cleaner----
    Erase SelectedBodies
    Erase AssyBodies
    BodyCounter = 0
    InctanceCounter = 0
    LoopCounter = 0
    '----
End Sub

Sub SearchPartForBodies(CopyFromPart, PasteToPart, instanceSuffix)
    'On Error GoTo ErrorHandler    ' Enable error-handling routine.
    'search for bodies in source part
    'Dim selectedpartRoot As Part
  
    Set selectedpartRoot = CopyFromPart.ReferenceProduct.Parent.Part
   
    Dim BodiesInPart As Bodies
    Set BodiesInPart = selectedpartRoot.Bodies
   
    Dim BodySelection As Selection
    Set BodySelection = CATIA.ActiveDocument.Selection
    BodySelection.Clear
   
    ' for loops through all the bodies in search for add,remove etc
    BodyCounter = 0
    Dim BodyInPart As Body
   
    For i = 1 To UBound(SelBackupBody)
       
        Set BodyInPart = SelBackupBody(i)
         BodySelection.Add BodyInPart
        
         For k = 1 To CopyFromPart.Publications.Count
           sPubName = Split(CopyFromPart.Publications.Item(k).Valuation.DisplayName, "/")(UBound(Split(CopyFromPart.Publications.Item(k).Valuation.DisplayName, "/")))
           
            If sPubName = BodyInPart.Name Then

                BodySelection.Add CopyFromPart.Publications.Item(k).Valuation
            Exit For
            End If

         Next
               
            BodyCounter = BodyCounter + 1
       
    Next
   
    BodySelection.Copy
   
    'Pasteoperation in targetpart starts here
    Dim targetPartSel As Selection
    Set targetPartSel = CATIA.ActiveDocument.Selection
   
    targetPartSel.Add PasteToPart.ReferenceProduct.Parent.Part
    targetPartSel.PasteSpecial "CATPrtResult"
   
    For i = 1 To targetPartSel.Count
        'targetPartSel.Item(i).Value.Name = targetPartSel.Item(i).Value.Name + "." + instanceSuffix
        targetPartSel.Item(i).Value.Name = SelBackupBody(i).Name + "." + instanceSuffix
    Next
    targetPartSel.Clear
   
'ErrorHandler:            ' Error-handling routine.
'If Err.Number <> 0 Then
'    msg = "Please Publish!"
'    MsgBox msg
'    End
'End If
   
End Sub
'part instance searcher
Sub SearchForOtherInstancesPart(CopyFromPart, PasteToPart)
    Dim selectionPart 'As Selection
    Set selectionPart = CATIA.ActiveDocument.Selection
    Set InstancePart = CopyFromPart
    SelectedInstanceName = CopyFromPart.Name
    'InctanceCounter = InstancePart.Parent.Count
   
    For i = 1 To InstancePart.Parent.Count 'count in father prod
    If InstancePart.Name <> InstancePart.Parent.Item(i).Name Then 'skip the user selected prod
        Set MyInstance = InstancePart.Parent.Item(i)
        If InStr(1, MyInstance.Name, InstancePart.PartNumber) <> 0 Then
              selectionPart.Clear
              selectionPart.Add InstancePart.Parent.Item(i) 'select next instance
              SearchPartForBodies MyInstance, PasteToPart, InstanceNr(MyInstance) 'search in next instace
              InctanceCounter = InctanceCounter + 1
        End If
    End If
    Next
End Sub
'product instance searcher
Sub SearchForOtherInstancesProduct(CopyFromPart, PasteToPart)
    Dim selectionPart 'As Selection
    Set selectionPart = CATIA.ActiveDocument.Selection
    Set InstancePart = CopyFromPart
    SelectedInstanceName = CopyFromPart.Name
    'InctanceCounter = InstancePart.Parent.Count
   
   
    For i = 1 To InstancePart.Parent.Count 'count in father prod
    Set MyInstance = InstancePart.Parent.Item(i)
    If InstancePart.Name <> MyInstance.Name Then 'skip the user selected prod
        If InStr(1, MyInstance.Name, InstancePart.PartNumber) <> 0 Then
              selectionPart.Clear
              selectionPart.Add MyInstance 'select next instance
              SearchPartForBodies MyInstance.Products.Item(1), PasteToPart, InstanceNr(MyInstance) 'search in next instace
              InctanceCounter = InctanceCounter + 1
        End If
    End If
    Next
End Sub

'conversion of product to part
Function ProdToPart(oProduct) As Part
    Dim documents1 As Documents
    Set documents1 = CATIA.Documents

    Dim partDocument1 As Document
    Set partDocument1 = documents1.Item(oProduct.PartNumber + ".CATPart")

    Dim targetPart As Part
    Set targetPart = partDocument1.Part
    Set ProdToPart = targetPart
End Function

Sub AddToSelectedBodies(BodyInPart As Body)
    BodyCounter = BodyCounter + 1
    Set SelectedBodies(BodyCounter) = BodyInPart
End Sub

Function InstanceNr(oProd) As String
        pointPos = InStr(1, oProd.Name, ".")
        InstanceNr = Right(oProd.Name, Len(oProd.Name) - pointPos)
End Function
Function StrippInstanceNr(oStr As String) As String
        pointPos = InStr(1, oStr, ".")
        StrippInstanceNr = Left(oStr, pointPos - 1)
End Function


[Diese Nachricht wurde von imation1999 am 07. Jan. 2022 editiert.]

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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 07. Jan. 2022 12:00    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


07-01-202211-59-54.jpg

 
Hallo,

besten Dank für deine Bemühungen.

Leider ist die Positionsmatrix der Bodys nicht mehr beinhaltet.

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!    

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

Servus Uwe

Bei mir läuft der Code wenn ich der Zeile mit sPubName = Split die "/" durch "!" ersetze.

Gruß
Bernd

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

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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 07. Jan. 2022 13: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

Hallo Bernd,

das war es. Super Danke euch beiden nochmal.

Schönes Wochenende

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!    

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

imation1999
Mitglied
dipl.-ing. Maschinenbau


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

Beiträge: 276
Registriert: 02.08.2011

Dell Precision T3500
Intel® Xeon® Quad Core
NVIDIA Quadro® 5000
Win7 x64 Ultimate
CATIA V5 R20 SP2

erstellt am: 09. Jan. 2022 11: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 moppesle 10 Unities + Antwort hilfreich


Watchfenster.jpg

 
Hallo,

schnön, dass das jetzt bei Euch funktioniert, ich verstehe trotzdem nicht, warum sollt Ihr  die "/" durch "!" ersetzen. Bei mir zeigt das Watchfenster folgendes...


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. 2022 11: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 moppesle 10 Unities + Antwort hilfreich

Servus

Bei mir steht das ! direkt vor dem Körpernamen.
Keine Ahnung warum sich das unterscheidet (Release, Einstellungen, ...)

Gruß
Bernd

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

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

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


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

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

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

Hi ihr zwei,

Zitat:
Bei mir steht das ! direkt vor dem Körpernamen.

Ditto

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!    

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

ptit.tom
Mitglied
CAD-Berater


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

Beiträge: 114
Registriert: 11.02.2005

win10, CATIA R19 bis R30

erstellt am: 17. Feb. 2022 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 Nur für moppesle 10 Unities + Antwort hilfreich

Der Pfad für den Behfehl .CreateReferenceFromName besteht aus 2 Teile:
* Pfad des Part im Produkt: Instanznamen mit / getrennt
* Pfad des Feature im Part: mit / getrennt
Beide Teile werden mit ! getrennt.

Empfehlenswert ist es die InternalName (.GetItem("ModelElement").InternalName ) für den Pfad im Part zu verwenden. Dann können auch Elemente mit gleichen Namen erkannt werden.


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