Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Körper von CATPart in neues CATPart kopieren (als Ergebnis)

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:  Körper von CATPart in neues CATPart kopieren (als Ergebnis) (891 / mal gelesen)
martin2
Mitglied
Konstrukteur


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

Beiträge: 941
Registriert: 05.2002.27

Windows 11 / 64bit
CATIA V5-6R2018 bis V5-6R2022

erstellt am: 19. Okt. 2019 12:02    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


Dateien_19102019.zip

 
Hallo,
folgendes Szenario:

- Ich habe ein CATPart geöffnet in welchem sich mehrere Körper befinden.
- Für jeden Körper des CATParts soll nun eine neue Datei (CATPart) erzeugt werden, und darin ein Körper hineinkopiert werden.
- Anschließend wird das neue CATPart unter dem Namen des Körpers abgespeichert.
- Und dann mit dem nächsten Körper des ursprünglichen CATParts weitergemacht.
- Solange bis alle Körper in Einzeldateien ungewandelt wurden.


Mein Makro hängt bislang beim Copy/Paste. Ich habe es mit angehängt; zusätzlich auch noch eine kleine Ursprungsdatei.


Der wichtigste Codeabschnitt auch hier nochmals:

Private Sub cmdUmwandeln_Click()
    'On Error GoTo Errorhandler
   
    If (CATIA.Documents.Count = 0) Then
        lblBeschreibung.Caption = "Bitte öffnen Sie ein CATPart!"
        Exit Sub
    End If
   
    If TypeName(CATIA.ActiveDocument) = "PartDocument" Then
   
        Dim Speicherpfad As String
        Dim Speicherpfad2 As String
       
        If CATIA.ActiveDocument.Path = "" Then
            MsgBox "Das PartDokument muss zuerst gespeichert werden!"
            Call cmdSchliessen_Click
        End If
        Speicherpfad = CATIA.ActiveDocument.Path & "\"
        'MsgBox Speicherpfad

        cmdUmwandeln.Enabled = False
        cmdSchliessen.Enabled = False
        chkUeberschreiben.Enabled = False
        lblBeschreibung.ForeColor = vbBlack
        lblBeschreibung.Caption = "Bitte warten..."
        frmHauptformular.Repaint
       
        Dim partDocument1 As PartDocument
        Set partDocument1 = CATIA.ActiveDocument

        Dim part1 As Part
        Set part1 = partDocument1.Part
       
        Dim selection1 As Selection    'Quelle
        Dim selection2 As Selection    'Ziel
       
        Dim partDocument2 As PartDocument
        Dim part2 As Part
        Dim Zaehler As Long
       
        If (chkUeberschreiben.Value = True) Then
            CATIA.DisplayFileAlerts = False
        End If

        For Zaehler = 1 To part1.Bodies.Count

            selection1.Add (part1.Bodies.Item(Zaehler))
            selection1.Copy
            selection1.Clear
           
            Set partDocument2 = CATIA.Documents.Add("Part")
           
            Set selection2 = partDocument2.Selection
            selection2.Clear
            selection2.Add partDocument2.Part
            selection2.PasteSpecial "CATPrtResultWithOutLink"
            selection2.Clear
           
            Speicherpfad2 = Speicherpfad & part1.Bodies.Item(Zaehler).Name
            partDocument2.SaveAs (Speicherpfad2)
           
            partDocument2.Close
        Next Zaehler

    Else
        MsgBox ("Das Makro funktioniert nur bei CATParts!")
        frmHauptformular.Repaint
        Exit Sub
    End If
   
    CATIA.DisplayFileAlerts = True
    lblBeschreibung.Caption = "Fertig!"
    lblBeschreibung.ForeColor = vbBlue
    lblDateiname.Caption = Zaehler & " Dateien wurden generiert."
   
    cmdUmwandeln.Enabled = True
    cmdSchliessen.Enabled = True
    chkUeberschreiben.Enabled = True
    frmHauptformular.Repaint
    Exit Sub
   
'Errorhandler:
    'MsgBox ("Es ist ein Fehler aufgetreten - Makroabbruch!")
    'End
   
End Sub

Die Frage ist: Wie genau muss ich den Code für's Copy/Paste schreiben?

Danke und Gruß
Martin

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. Okt. 2019 12:29    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 martin2 10 Unities + Antwort hilfreich

Servus Martin

Erhält du eine Fehlermeldung?
Fehlt da nicht die Zeile:

Code:
Set selection1 = partDocument1.Selection
ggf noch folgende Dinge beachten: ungültiger Dateiname wenn Sonderzeichen im Körpernamen vorkommen, bei SaveAs ggf noch die Dateiendung angeben.
(ansonsten läuft dein Code bei mir durch)

Gruß
Bernd

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

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

martin2
Mitglied
Konstrukteur


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

Beiträge: 941
Registriert: 05.2002.27

erstellt am: 20. Okt. 2019 00: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

Besten Dank - es funktioniert!

Zwei Punkte haben gefehlt:

a) Wie von Bernd erwähnt die Zeile:
Set selection1 = partDocument1.Selection

b) Bei selection1.add zwingend die Klammern weglassen.     

Danke und Gruß
Martin

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