Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Copy Paste Makro

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 Paste Makro (13864 mal gelesen)
sefonse
Mitglied
Student


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

Beiträge: 18
Registriert: 24.02.2009

erstellt am: 17. Mrz. 2009 13: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

Hallo Leudz und CATIA Specialistz,

ich habe in einem Produkt mit zwei Parts, die jeweils GeoSet's beitzen. Aus einem GeoSet, möchte ich was kopieren (Translate) und ins andere GeoSet einfügen (AsResult). Ich habe bereits ein Makro aufgezeichnet und wollte es mal durchlaufen lassen. Eine Fehlermeldung war das Resultat.
Cool wenn einer mir mit dem Problem helfen kann.

peace'n greetz
    sefonse

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

sefonse
Mitglied
Student


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

Beiträge: 18
Registriert: 24.02.2009

erstellt am: 17. Mrz. 2009 14:45    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

Language="VBSCRIPT"

Sub CATMain()

Set productDocument1 = CATIA.ActiveDocument

Set selection1 = productDocument1.Selection

selection1.Clear

Set documents1 = CATIA.Documents

Set partDocument1 = documents1.Item("TEST-Teil-1.CATPart")

Set part1 = partDocument1.Part

Set hybridBodies1 = part1.HybridBodies

Set hybridBody1 = hybridBodies1.Item("Einfaerbeflaechen")

Set hybridShapes1 = hybridBody1.HybridShapes

Set hybridShapeTranslate1 = hybridShapes1.Item("Translate-1")

selection1.Add hybridShapeTranslate1

selection1.Copy


Set documents1 = CATIA.Documents

Set partDocument1 = documents1.Item("ET-TEST-Teil.CATPart")

Set part1 = partDocument1.Part

Set parameters1 = part1.Parameters

Set hybridShapeSurfaceExplicit1 = parameters1.Item("Translate-1")   

part1.UpdateObject hybridShapeSurfaceExplicit1

End Sub

Das ist das Makro welches ich aufgezeichnet habe.
hier Fehlermeldung:  Set hybridShapeSurfaceExplicit1 = parameters1.Item("Translate-1")   
"The method item failed" ist die Fehlermeldung

peace

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

sefonse
Mitglied
Student


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

Beiträge: 18
Registriert: 24.02.2009

erstellt am: 17. Mrz. 2009 15: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

Language="VBSCRIPT"
Sub CATMain()

Set productDocument1 = CATIA.ActiveDocument

Set selection1 = productDocument1.Selection
selection1.Clear

Set documents1 = CATIA.Documents

Set partDocument1 = documents1.Item("TEST-Teil-1.CATPart")

Set part1 = partDocument1.Part

Set bodies1 = part1.Bodies

Set body1 = bodies1.Item("Translate-1")     
selection1.Add body1
selection1.Copy

Set partDocument2 = documents1.Item("ET-TEST-Teil.CATPart")

Set part2 = productDocument1.Part
Set selection2 = partdocument2.selection
selection2.Add part2
selection2.PasteSpecial "CATPrtAsResult"
part2.Update
End Sub


Mein zweites Makro gibt genau die gleiche Fehlermeldung an der angedeuteten Zeile.
Katja iz ne blöde Zicke, aber trotzdem nimmt sie jeder durch 

peace

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

Lusilnie
Mitglied



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

Beiträge: 1486
Registriert: 13.07.2005

erstellt am: 17. Mrz. 2009 23: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 sefonse 10 Unities + Antwort hilfreich

Hallo sefonse,

darf ich mal fragen, warum Du den funktionieren Teil aus dem ersten Makro nicht 1:1 übernimmst, sondern änderst und Dich dann auch noch wunderst, warum er nicht mehr funktioniert?
Wenn Du Dein Teil "TEST-Teil-1.CATPart" nicht geändert hast, kann es gar nicht funktionieren, denn beim ersten Mal war Dein "Translate-1" ein "HybridShape" und nun soll es ein "Body" sein!

Als logische Konsequenz Deiner Beiträge sollte das zweite Script so lauten:

Code:
Language="VBSCRIPT"
Sub CATMain()

Set productDocument1 = CATIA.ActiveDocument

Set selection1 = productDocument1.Selection
selection1.Clear

Set documents1 = CATIA.Documents

Set partDocument1 = documents1.Item("TEST-Teil-1.CATPart")
Set part1 = partDocument1.Part

Set hybridBodies1 = part1.HybridBodies
Set hybridBody1 = hybridBodies1.Item("Einfaerbeflaechen")
Set hybridShapes1 = hybridBody1.HybridShapes
Set hybridShapeTranslate1 = hybridShapes1.Item("Translate-1")
selection1.Add hybridShapeTranslate1
selection1.Copy

Set partDocument2 = documents1.Item("ET-TEST-Teil.CATPart")

Set part2 = productDocument1.Part
Set selection2 = partdocument2.selection
selection2.Add part2
selection2.PasteSpecial "CATPrtAsResult"
part2.Update
End Sub




mfg,
Lusilnie

------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!!

frei nach größeren Geistern

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

sefonse
Mitglied
Student


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

Beiträge: 18
Registriert: 24.02.2009

erstellt am: 18. Mrz. 2009 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

Hallo Lusilnie,
danke für deine Antwort.

Set part2 = productDocument1.Part
6.Zeile von unten, Fehlermeldung:
description: das objekt ünterstützt die eigenschaft der methode nicht --> 'productdocument1.part
HILFE!!!
peace

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

sefonse
Mitglied
Student


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

Beiträge: 18
Registriert: 24.02.2009

erstellt am: 18. Mrz. 2009 11:23    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

Set part2 = productDocument1.Part

habe ich geändert:

Set part2 = partDocument1.Part

da passiert aber irgendwie garnix...

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

sefonse
Mitglied
Student


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

Beiträge: 18
Registriert: 24.02.2009

erstellt am: 18. Mrz. 2009 12: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

die richtige Fehlermeldung lautet.
Das Objekt ünterstützt diese Eigenschaft oder Methode nicht: 'prductDocument.part'


peace

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: 18. Mrz. 2009 12:44    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 sefonse 10 Unities + Antwort hilfreich

Servus
Änder die Zeile mal in:
Code:
Set partDocument2 = documents1.Item("ET-TEST-Teil.CATPart")
Set part2 = productDocument2.Part

Ist das Bauteil "ET-TEST-Teil.CATPart" geöffnet?

Gruß
Bernd

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

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

sefonse
Mitglied
Student


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

Beiträge: 18
Registriert: 24.02.2009

erstellt am: 18. Mrz. 2009 13:23    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

ja das Part ist geöffnet.
jetzt kriege ich folgende Meldung:

Objekt erforderlich: 'productDocument2'

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

Lusilnie
Mitglied



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

Beiträge: 1486
Registriert: 13.07.2005

erstellt am: 19. Mrz. 2009 01: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 sefonse 10 Unities + Antwort hilfreich

Hallo sefonse,

sorry, da hatte ich doch noch eine falsche Zeile übersehen! Die Zeile für "Part2" muss natürlich wie folgt lauten:

Code:
Set part2 = partDocument2.Part
Set selection2 = partDocument2.selection
Dann sollte es funktionieren...


mfg,
Lusilnie

------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!!

frei nach größeren Geistern

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

sefonse
Mitglied
Student


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

Beiträge: 18
Registriert: 24.02.2009

erstellt am: 19. Mrz. 2009 17: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

sorry leude klappt imma noch nicht...

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

Thomas Harmening
Ehrenmitglied V.I.P. h.c.
Arbeiter ツ



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

Beiträge: 2897
Registriert: 06.07.2001

NX 10
Win 7

erstellt am: 19. Mrz. 2009 22:44    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 sefonse 10 Unities + Antwort hilfreich

Aha, was erwartest du? Wo sind deine Lösungsansätze, ausser dem Aufzeichnungscode?

Code:
Sub copyanpasteresult()
'Set CATIA = GetObject("", "CATIA.Application")

Dim oActiveDoc As ProductDocument
    Set oActiveDoc = CATIA.ActiveDocument
   
    'Ob_a_P_u_P_s
    Dim oPart1Doc As PartDocument
    Dim oPart2Doc As PartDocument
    Set oPart1Doc = oActiveDoc.Product.Products.Item(1).ReferenceProduct.Parent
    Set oPart2Doc = oActiveDoc.Product.Products.Item(2).ReferenceProduct.Parent
   
    'z_ko_Obj_u_Ein_s
    Dim oCopyObject As HybridShape
    Dim oPasteObject As HybridBody
    Set oCopyObject = oPart1Doc.Part.HybridBodies.Item(1).HybridShapes.Item("Translate-1")
    Set oPasteObject = oPart2Doc.Part.HybridBodies.Item("Man piss die Wand an")
   
    'ko_u_ei_
    oActiveDoc.Selection.Clear
    oActiveDoc.Selection.Add oCopyObject
    oActiveDoc.Selection.Copy
    oActiveDoc.Selection.Clear
    oActiveDoc.Selection.Add oPasteObject
    oActiveDoc.Selection.PasteSpecial "CATPrtResultWithOutLink"
   
    oPart2Doc.Part.Update

Ende der Suppe



Produkt aktiv, 2 Parts, das zu kopierende Item ("Translate-1") im Quellpart und im Zielpart, ein Geoset ("Man piss die Wand an") aus (Donnie Brasco) oder auch Antwort http://ww3.cad.de/foren/ubb/Forum137/HTML/003196.shtml#000002

und ich erkenne immer noch nicht mehr, als nur das Posten von aufgezeichneten Befehlsfolgen...
...aber macht mal

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

Lusilnie
Mitglied



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

Beiträge: 1486
Registriert: 13.07.2005

erstellt am: 19. Mrz. 2009 23:44    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 sefonse 10 Unities + Antwort hilfreich

Hallo sefonse,

ich falle doch immer wieder darauf rein: Es gibt nur eine Selection im aktiven (Root-)Product! Also muss die Zeile

Code:
Set selection2 = partdocument2.selection
so lauten:
Code:
Set selection2 = CATIA.ActiveDocument.selection
selection2.Clear
Ansonsten sind auch die Fragen von "Thomas Harmening" nicht von der Hand zu weisen: Hast Du Dich schon mal tiefer in die VB-Programmierung versucht einzuarbeiten?


mfg,
Lusilnie

------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!!

frei nach größeren Geistern

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

sefonse
Mitglied
Student


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

Beiträge: 18
Registriert: 24.02.2009

erstellt am: 22. Mrz. 2009 19:14    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

@alle: danke, aber irendwie läuft es nicht, ich versuche mich schon hineinzu arbeiten, jedoch hat mir das buch(Makroprogrammierung mit Visual Basic Script) nur teilweise geholfen.
Es kann doch außerdem nicht so kompliziert sein copy/pastespecial als automatische operation zu editieren.
Ihr würdet mir sehr bei meiner Diplomarbeit behilflig sein, wenn wir es tatsächlich hinkriegen.

peace'n greetz
      sefone

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

makebeth
Mitglied



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

Beiträge: 12
Registriert: 21.03.2009

Dell Precision T3400; Vista x64; CATIA V5 R16 32Bit;

erstellt am: 23. Mrz. 2009 19: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 Nur für sefonse 10 Unities + Antwort hilfreich

wie thomas schon schrieb... es ist auch ganz einfach...

ich habe etwas ähniches zum kopieren von publizierten bodys gemacht.

Code:
'# COPY AS RESULT WITH LINK
function CopyAsResult(quellPart, quellBody, zielPart)
  dim s  '## deklarieren der selektion
  set s = CATIA.ActiveDocument.Selection  '## zuweisen von s
  s.Clear  '## vorhandene selektion löschen
  s.Add(quellBody.Valuation)  '## quellbody der selektion hinzufügen
  s.Copy()  '## selektion kopieren

  s.Clear  '## selektion erneut löschen
  s.Add(zielPart)  '## zielpart der selektion hinzufügen

  s.PasteSpecial "CATPrtResult"  '## einfügen

  '[...] abschnitt zum umbenennen entfernt
  zielPart.UpdateObject zielPart.Bodies.Item(zielPart.Bodies.Count)  '## kleines update zum schluss
end function


vor der wilden progammiererrei kann ich da nur etwas zu lesen empfehlen. der hanser verlag bietet einiges zu dem thema. oder einfach mal die reference anlesen.

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

sefonse
Mitglied
Student


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

Beiträge: 18
Registriert: 24.02.2009

erstellt am: 24. Mrz. 2009 10:27    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

@makebeth: ich verstehe FAST nur bahnhof.
@thomas: habe dein makro eingebaut, die Fehlermeldung 'Objekt erforderlich' war das resultat.


peace'n greetz
      7417

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

Thomas Harmening
Ehrenmitglied V.I.P. h.c.
Arbeiter ツ



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

Beiträge: 2897
Registriert: 06.07.2001

NX 10
Win 7

erstellt am: 24. Mrz. 2009 20: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 sefonse 10 Unities + Antwort hilfreich


23.zip

 
hmm, soll ich jetzt mitraten?

... gezippte 23 entpacken, Product23 laden, Desingmodus, Fokus auf das Produkt.
und wahlweise das Catscript oder das catvbs ausführen...

IMHOIn my humble oppinion (Meiner Meinung nach) sollte in beiden Fällen die Fläche als Result ins andere Part kopiert werden.

... was ist denn das Thema der Diplomarbeit?

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

DuffM4nUS
Mitglied
Konstrukteur


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

Beiträge: 26
Registriert: 14.04.2016

@ WORK
CATIA V5 R19 SP9
Windows 7 x64 Professional SP1
i7-3740 @ 2.7GHz
16GB RAM
NVIDIA Quadro 3000M
500GB SHDD

erstellt am: 04. Dez. 2017 18: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 sefonse 10 Unities + Antwort hilfreich

Hallo an euch Experten!

Ich möchte mit folgendem Code alle PartBodies eines Assemblies sukzessive kopieren und als Result mit Link in ein bestehendes Part innerhalb des Assemblies einfügen.
Das Ziel-Part ist dabei vorher manuell "aktiv" (blau markiert) gemacht wurden.

Der Code funktioniert bis auf die Kopieroperation wunderbar.
Für jede Hilfe bin ich sehr dankbar!

Ich habe es bereits mit einer zweiten Selektion, Selektion auf PartDokument und den hier im Forum hervorgebrachten Lösungen versucht.
Selbst wenn ich es mit dem Makrorekorder aufzeichne kommt immer der Fehler:
"Selected Elements not allowed for this operation".

Vielen Dank für Tipps & Hilfestellungen!
Steve

Code:
Option Explicit

Dim oActivePart As Part
Dim oSel As Selection
Dim strActivePartName As String

Sub CATMain()

    Dim oRoot As ProductDocument
    Dim oInstance As Product
   
    Set oRoot = CATIA.ActiveDocument
    Set oSel = oRoot.Selection
    oRoot.Product.ApplyWorkMode DESIGN_MODE
    oSel.Clear

    oSel.Search "(CATPrtSearch.PartFeature),in"
    Set oInstance = GetActivePart(oSel.Item(1).Value.Name)
    Set oActivePart = oInstance.ReferenceProduct.Parent.Part
    strActivePartName = oActivePart.Name
    oSel.Clear

    Call CopyPartBody(oRoot.Product.Products)

    oActivePart.Update

End Sub

Function CopyPartBody(oAssembly As Products)
    On Error GoTo 0
    Dim oProduct As Product
    Dim oPartBody As Body
   
    For Each oProduct In oAssembly
        If oProduct.Products.Count = 0 Then
            If oProduct.PartNumber <> strActivePartName Then
                oSel.Clear
                Set oPartBody = oProduct.ReferenceProduct.Parent.Part.MainBody
                oSel.Add oPartBody
                oSel.Copy

                oSel.Clear
                oSel.Add oActivePart
                oSel.PasteSpecial "CATPrtResult"
                oSel.Clear
            End If
        Else
            Call CopyPartBody(oProduct.Products)
        End If
    Next
End Function

Function GetActivePart(DocumentName As String)
    On Error GoTo 0

    Dim oDocuments As Documents
    Dim oDocument As Document
    Dim oProduct As Product
    Set oDocuments = CATIA.Documents

    For Each oDocument In oDocuments
        For Each oProduct In oDocument.Product.Products
            If DocumentName = oProduct.PartNumber Then
                Set GetActivePart = oProduct
                Exit Function
            End If
        Next
    Next
End Function


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

Sm1leX
Mitglied
Maschinenbau (B.Eng)


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

Beiträge: 27
Registriert: 13.09.2018

Win 10 64-bit
Intel Xeon E5-1620
CATIA V5 R28/R29
Solidworks

erstellt am: 04. Okt. 2018 07:54    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 sefonse 10 Unities + Antwort hilfreich

Guten Tag allerseits in einem alten Thema,

ich habe das Vorhaben, ein Copy Paste Makro zu bauen, dass mir eine Fläche aus einem Geoset eines Parts in ein Geoset eines anderen Parts einfügt. Klappt wunderbar mit der o.g. Vorlage 23.zip.

Allerdings greift diese nur auf GeoSets erster Ordnung zu. Ich habe ein GeoSet im GeoSet. Dort soll es rein.  Kann mir einer hierzu den Lösungsweg nennen.

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: 04. Okt. 2018 08:59    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 sefonse 10 Unities + Antwort hilfreich

Servus

Indem du auf das entsprechende Unter-GeoSet per Namen zugreifst zB:

Code:
Set oPasteObject = Part2Doc.Part.HybridBodies.Item("NameDesOberGeoSets").HybridBodies.Item("NameDesUnterGeoSets")
Gruß
Bernd

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

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