| |
 | CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min 48 |
| |
 | Schnell, effizient und günstig: Mit der Kisters 3DViewStation 3D Arbeits- und Reparaturanleitungen einfach erstellen und pflegen, eine Pressemitteilung
|
Autor
|
Thema: Material Copy/ Paste (1059 / mal gelesen)
|
FRZ Mitglied Maschinenbauer

 Beiträge: 13 Registriert: 04.06.2020 Windows 10, CATIA V5R19
|
erstellt am: 15. Jul. 2020 10:58 <-- editieren / zitieren --> Unities abgeben:         
Hallo Zusammen, Ich möchte die Materialeigenschaften eines Körpers kopieren und in einem anderen Körper den Material einfügen. Könnt Ihr mir dabei helfen? Ich bedanke mich im Voraus Beste Grüße Fariz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12054 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 15. Jul. 2020 11:05 <-- editieren / zitieren --> Unities abgeben:          Nur für FRZ
Servus Probier mal mit GetMaterialOnBody das Material auslesen und per ApplyMaterialOnBody dem andern Körper zuzuweisen. (siehe auch Applying or Retrieving a Material on a Product, a Part, or a Body in der Doku) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
FRZ Mitglied Maschinenbauer

 Beiträge: 13 Registriert: 04.06.2020 Windows 10, CATIA V5R19
|
erstellt am: 23. Jul. 2020 13:34 <-- editieren / zitieren --> Unities abgeben:         
Vielen vielen Dank Bernd, dass du immer hilfsbereit bist,und entschuldige mich bitte für die späte Antwort! Ich sende mal den Code, den ich geschrieben hab. Die Körper sollen zuerst as Result kopiert und danach gelöscht werden. Aber Ich möchte die Materialwerte erhalten. Der Code funktioniert aber iwie nicht, kannst du mir bitte helfen, wo ich den Fehler mache? Beste Grüße Fariz Sub CATMain() Dim arrlocMaterial(1 To 100) As Material Dim locMatManager As MaterialManager Set oDoc = CATIA.ActiveDocument Set oPart = oDoc.Part For X = oPart.Bodies.Count To 1 Step -1 Set oBody = oPart.Bodies.Item(X) locMatManager.GetMaterialOnBody(oBody, arrlocMaterial(X)) Next ... ''' hier findet copy and paste special statt For X = oPart.Bodies.Count To 1 Step -1 Set oBody = oPart.Bodies.Item(X) locMatManager.ApplyMaterialOnBody(oBody, arrlocMaterial(X)) Next End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12054 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 23. Jul. 2020 13:42 <-- editieren / zitieren --> Unities abgeben:          Nur für FRZ
Servus Kommt eine Fehlermeldung? Wird der Array mit den Materialien gefüllt? Wo ist dein Zugriff auf den Material-Manager? (zB oPart.GetItem("CATMatManagerVBExt")) ApplyMaterialOnBody erwartet noch einen dritten Parameter für den Linkmode (bei dir vermutlich 0) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
FRZ Mitglied Maschinenbauer

 Beiträge: 13 Registriert: 04.06.2020 Windows 10, CATIA V5R19
|
erstellt am: 23. Jul. 2020 13:52 <-- editieren / zitieren --> Unities abgeben:         
in den Zeilen locMatManager.GetMaterialOnBody oBody, arrlocMaterial(X) locMatManager.ApplyMaterialOnBody oBody, arrlocMaterial(X) bekomme ich den Fehler "Argument not optional ". Der Array ist komplett leer. Ich entschuldige mich aber ich weiß eigentlich gar nicht wieso ich " (zB oPart.GetItem("CATMatManagerVBExt"))" und den dritten Parameter für den Linkmode brauche oder was die machen... (mein erster Monat mit VBA) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12054 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 23. Jul. 2020 13:57 <-- editieren / zitieren --> Unities abgeben:          Nur für FRZ
Servus Die Doku (V5Automation.chm) ist dein Freund  Kurzes Beispiel: Code: Sub CATMain() Dim oPartDocument As Document Dim oRootPart As Part Dim oManager Dim sLinkMode as Short Dim oSecondBody As Body Dim oFirstBody As Body Dim oAppliedMaterial as Material Set oPartDocument = CATIA.ActiveDocument Set oRootPart = oPartDocument.Part Set oManager = oRootPart.GetItem("CATMatManagerVBExt") Set oFirstBody = oRootPart.Bodies.Item(1) Set oSecondBody = oRootPart.Bodies.Item(2) oManager.GetMaterialOnBody oFirstBody, oAppliedMaterial sLinkMode = 0 '0 = ohne Link oManager.ApplyMaterialOnBody oSecondBody, oAppliedMaterial, sLinkMode End Sub
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
FRZ Mitglied Maschinenbauer

 Beiträge: 13 Registriert: 04.06.2020 Windows 10, CATIA V5R19
|
erstellt am: 23. Jul. 2020 14:08 <-- editieren / zitieren --> Unities abgeben:         
Vielen Vielen Dank Bernd  Hervorragend!!! es Funktioniert einwandfrei ich werde es nur meinem Code anpassen, dann ist es fertig... Und die Doku werde ich mir auf jeden Fall anschauen, Vielen Dank für die Empfehlung  Beste Grüße Fariz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |