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) (883 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