Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  CATIA V5 Programmierung
  Parts aus einem Unterprodukt kopieren

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
  
CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min 48
  
KISTERS 3DViewStation: Neuer Strukturvergleich ab sofort verfügbar, eine Pressemitteilung
Autor Thema:  Parts aus einem Unterprodukt kopieren (3137 mal gelesen)
T.Pundt
Mitglied
Konstrukteur


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

Beiträge: 83
Registriert: 07.08.2014

Windows 7
Catia V5 R19

erstellt am: 07. Aug. 2014 10:46    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

Guten Morgen, ich bin neu hier und habe auch gleich ein Problem.
Problemstellung: Ich habe ein Produkt in dem mehrere Parts sind und in dem Produkt befindet sich zudem noch ein weiteres Produkt mit einigen Parts. Ich möchte Publikationen der einzelnen Parts erzeugen und in das Part1 einfügen. Dabei hatte ich zunächst das Problem, dass bei gleichnamigen Parts die Position bei Copy/Paste von dem ersten Part im Baum übernommen wird. Dies habe ich gelöst, indem ich die Parts nach und nach deaktiviere und nach dem Copy/Paste mit einer weiteren Schleife wieder alle Parts aktiviere. Nun habe ich das Problem, dass ich mit dem Makro nur die Parts in der ersten Ebene erreiche und nicht die in dem Unterprodukt.

Falls jemand mein Makro so umgestalten kann, dass ich die Parts in dem Unterprodukt auch kopieren und in das Part1 einfügen kann, wäre ich ihm sehr dankbar, da ich mich auch erst seit 4 Wochen mit der Makroprogrammierung beschäftige, weiß ich an dieser Stelle nciht weiter. Ich habe auch schon ähnliche Themen gefunden, habe aber Probleme damit diese in mein Makro zu integrieren.

Sub CATMain(product)
Dim documents1 As Documents
Set documents1 = CATIA.Documents

Dim partDocument1 As Document
Set partDocument1 = documents1.Item("TEST_Bauraumerfassung.CATPart")

Dim part1 As Part
Set part1 = partDocument1.Part
Dim TmpNode As product
Dim MainPRD As product
Dim TmpPartDoc As PartDocument
Dim TmpPart As Part
Dim ActiveWindow As ProductDocument
Dim TmpSelection As Selection
Set ActiveWindow = CATIA.ActiveDocument
Set MainPRD = ActiveWindow.product

For Each TmpNode In MainPRD.products                                                                ' für jedes Part in der Baugruppe wird eine Publikation von dem Körper "PartBody" erzeugt
    Set TmpPartDoc = TmpNode.ReferenceProduct.Parent
    Set TmpPart = TmpPartDoc.Part
    On Error Resume Next
    Dim reference1 As Reference
    Set reference1 = TmpNode.CreateReferenceFromName("TmpPart/!PartBody")

    Dim publications1 As Publications
    Set publications1 = TmpNode.Publications

    Dim publication1 As Publication
    Set publication1 = publications1.Add("Koerper")

    publications1.SetDirect "Koerper", reference1

    Dim settingControllers1 As SettingControllers
    Set settingControllers1 = CATIA.SettingControllers

    Dim visualizationSettingAtt1 As SettingController
    Set visualizationSettingAtt1 = settingControllers1.Item("CATVizVisualizationSettingCtrl")

    visualizationSettingAtt1.SaveRepository

    Dim bodies5 As Bodies                                                      ' jede Publikation der einzelnen Parts wird kopiert und in das Part der PCB als Result with links eingefügt
    Set bodies5 = part1.Bodies

    Dim bodies6 As Bodies                                                      ' jede Publikation der einzelnen Parts wird kopiert und in das Part der PCB als Result with links eingefügt
    Set bodies6 = TmpPart.Bodies

    Dim body21 As Body
    Set body21 = bodies6.Item("PartBody")

    Dim body100 As Body
    Set body100 = TmpPart.FindObjectByName("PartBody")
                                                               
    ActiveWindow.Selection.Clear                        ' kopieren und einfügen der Publikationen in das Part von der Einzelleiterplatte
    ActiveWindow.Selection.Add body100
    ActiveWindow.Selection.Copy
    ActiveWindow.Selection.Clear
    ActiveWindow.Selection.Add part1
    ActiveWindow.Selection.PasteSpecial "CATPrtResultWithOutLink"

    ActiveWindow.Selection.Item(1).Value.Name = "Bauteil1"      ' die Publication wird umbenannt

Dim body22 As Body                                                          ' die Publikationen werden als Boolsche Operation dem Körper Baugruppe zugefügt
Set body22 = bodies5.Item("Baugruppe")

Dim shapeFactory1 As Factory
Set shapeFactory1 = part1.ShapeFactory

Dim body23 As Body
Set body23 = bodies5.Item("Bauteil1")

part1.InWorkObject = body22

Dim add21 As Add
Set add21 = shapeFactory1.AddNewAdd(body23)

part1.UpdateObject add21

TmpNode.Update

body23.Name = "Bauteil"

TmpNode.Update
part1.Update

Dim parameters As parameters                        ' pro Schleifendurchlauf wird ein Part deactiviert, da ansonsten gleichnamige Parts alle die gleiche Prosition im Raum aufweisen (erste Part im Strukturbaum gibt die Position der anderen Parts vor)
Set parameters = product.parameters

Dim products As products
Set products = product.products

Dim subList As List
Dim parameter As parameter

Set subList = parameters.subList(TmpNode, False)
Set parameter = subList.Item(1)
If parameter.ValueAsString = "true" Then
parameter.ValuateFromString "false"
End If

TmpNode.Update

Next
For Each TmpNode In MainPRD.products ' alle Parts werden wieder aktiviert
Set subList = parameters.subList(TmpNode, False)
Set parameter = subList.Item(1)
If parameter.ValueAsString = "false" Then
parameter.ValuateFromString "true"
End If
Next
End Sub

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: 12054
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 07. Aug. 2014 12:10    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 T.Pundt 10 Unities + Antwort hilfreich

Servus
Willkommen im Forum. Bitte Systeminfo ausfüllen.
Welchen Sinn hat das Publizieren des MainBodies?
Könntest du nicht einfach ein AllCATPart erstellen, und in diesem dann alle Körper deren Namen nicht auf "PartBody" enden löschen?

Gruß
Bernd

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

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

T.Pundt
Mitglied
Konstrukteur


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

Beiträge: 83
Registriert: 07.08.2014

Windows 7
Catia V5 R19

erstellt am: 07. Aug. 2014 12: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

Hallo, wurde gemacht.
Nein, ich möchte keine bodies löschen. In unserer Firma sind alle Strukturen von Parts so aufgebaut, dass diese sich in dem Mainbody (PartBody) befinden. Das Makro ist auch noch länger, aber dies möchte ich hier nicht Veröffentlichen. Gibt es denn keine Möglichkeit an die Unterstruktur zu gelangen?

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: 12054
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 07. Aug. 2014 12:49    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 T.Pundt 10 Unities + Antwort hilfreich

Servus
Du müsstest dein Makro rekursiv aufbauen, dass die ganze Unterstruktur abgearbeitet wird.
Bei dem Code-Auszug zweifle ich aber das das Makro überhaupt funktioniert ("On Error Resume next" nicht bewusst eingesetzt, Referenz für Veröffentlichung über statischen Namen, ...).

Gruß
Bernd

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

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

T.Pundt
Mitglied
Konstrukteur


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

Beiträge: 83
Registriert: 07.08.2014

Windows 7
Catia V5 R19

erstellt am: 07. Aug. 2014 13: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

Das Makro funktioniert excellent, nur halt nicht für eine tifere Ebene.
"On Error Resume next" benötige ich dafür, wenn mehrere Parts die gleiche Bennenung aufweisen, wird die Publikation gleich in allen Parts gemacht. Daher muss ich den Punkt, wo die Publikation eingefügt wird überspringen. Wie meinen Sie das mit rekursiv aufbauen, was müsste ich dafür in dem Makro ändern?

Vielen Dank!

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

T.Pundt
Mitglied
Konstrukteur


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

Beiträge: 83
Registriert: 07.08.2014

Windows 7
Catia V5 R19

erstellt am: 07. Aug. 2014 13:51    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,

kann mir einer sagen, wie ich aus einem Product per Makro ein CATALLPART machen kann.

Vielen Dank

Gruß Timo

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: 12054
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 07. Aug. 2014 14:17    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 T.Pundt 10 Unities + Antwort hilfreich

Servus
Bitte Suchfunktion nutzen. Siehe zB hier

Gruß
Bernd

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

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

T.Pundt
Mitglied
Konstrukteur


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

Beiträge: 83
Registriert: 07.08.2014

Windows 7
Catia V5 R19

erstellt am: 07. Aug. 2014 14:28    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, hatte auch schon was gefunden.
Ich versuche gerade ihre Variante zu verfolgen und bin bislang auch gut vorrangekommen.
1. CATALLPART von einem Produkt erzeugen
2. neues Produkt öffnen
3. einfügen des CATALLPART´s und eines Parts in das neu eingefügte Product
4. Alle Körper des ALLCATPART´s kopieren und in das Part einfügen (Hier bin ich gerade dabei, es kann sein, dass hierzu noch fragen kommen)
5. ALLCATPART und Produkt löschen

Vielen Dank erstmal.

Gruß Timo

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: 12054
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 07. Aug. 2014 14:43    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 T.Pundt 10 Unities + Antwort hilfreich

Servus
Warum extra die Körper in ein anderes Part kopieren? Du hast doch schon ein entsprechendes Part.

Gruß
Bernd

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

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

T.Pundt
Mitglied
Konstrukteur


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

Beiträge: 83
Registriert: 07.08.2014

Windows 7
Catia V5 R19

erstellt am: 07. Aug. 2014 14:57    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

Ich benötige diese für Extremaberechnungen und diese können ncith in einem Produkt berechnet werden.

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

T.Pundt
Mitglied
Konstrukteur


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

Beiträge: 83
Registriert: 07.08.2014

Windows 7
Catia V5 R19

erstellt am: 07. Aug. 2014 15:25    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

Ich habe jetzt das Problem, dass ich nicht weiß, wie ich die einzelnen Bodies kopieren kann und anschließend in das Part einfügen kann. Die Benennung der Parts ist immer unterschiedliche, heißt das, dass ich dies nur über eine Selektion hinbekomme oder funktioniert das damit auch nicht?

Kann mir da jemand helfen?

Vielen Dank.

Gruß Timo

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: 12054
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 07. Aug. 2014 15:47    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 T.Pundt 10 Unities + Antwort hilfreich

Servus
Warm willst du die Körper kopieren, diese sind doch schon in einem extra Part.
Du kannst die Körper auch mit dem Zähler ( zB Bodies.item(1)) ansprechen.

Gruß
Bernd

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

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

T.Pundt
Mitglied
Konstrukteur


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

Beiträge: 83
Registriert: 07.08.2014

Windows 7
Catia V5 R19

erstellt am: 08. Aug. 2014 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

ich habe zwei Parts, dass ALLCATPart und ein Part in dem sich ein Bauteil befindet. Ich benötige alle Körper in in dem zweiten Part. Mein Problem ist jetzt noch, dass ich nciht weiß, wie ich die Anzahl der Körper im ALLCATPart zählen kann um die Anzahl der Schleifen zu definieren? Ich habe es bislang mit selection1.Search "CATPrtSearch.BodyFeature,sel" versucht, jedoch muss ich vorher das Part Selektieren und das funktioniert irgendwie nicht.   Sieht bzw. kennt jemand eine andere Möglichkeit?

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: 12054
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 08. Aug. 2014 08: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 T.Pundt 10 Unities + Antwort hilfreich

Servus
Zum zählen des Bodies gibt es bei der Bodies-Collection die Mehtode "count" (siehe auch mal in der Doku)
Oder über die Suche (wie von dir gepostet) alle Körper selektieren und kopieren, dann ins Zielpart wechseln dort Part selektieren und dann "Einfügen spezial".

Gruß
Bernd

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

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

T.Pundt
Mitglied
Konstrukteur


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

Beiträge: 83
Registriert: 07.08.2014

Windows 7
Catia V5 R19

erstellt am: 08. Aug. 2014 11:24    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,

habe mich für den ersten Schritt entschieden und soweit klappt auch alles. Mein Problem ist jetzt bei dem einfügen der beiden Parts in das neu erzeugte Produkt, da gibt er mir immer eine Fehlermeldung raus, weil er immer auf den Namen der Parts in den einzelnen Fenstern zugreift und diese sich bei mehrmaligem Testen ändern (Beispiel: Part Name: Product1_AllCATPart; Name im Fenster:Product1_AllCATPart_9).
Gibt es hier nicht irgendeine andere Möglickeit z.B. über die "Part Number" die Parts in das Produkt einfügen?
Dim specsAndGeomWindow1 As Window
Set specsAndGeomWindow1 = windows1.Item.("Product1_AllCATPart")

Vielen Dank.

Gruß Timo

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: 12054
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 08. Aug. 2014 11:30    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 T.Pundt 10 Unities + Antwort hilfreich

Servus
Kannst du mal deinen groben Code posten?
Was hast du genau vor und warum? (ggf Screenshot der Struktur), ich befürchte du hast dich total verzettelt.

Gruß
Bernd

EDIT: Wenn du Code postest bitte immer zwischen den Tags "[CODE][/CODE]".

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

[Diese Nachricht wurde von bgrittmann am 08. Aug. 2014 editiert.]

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

T.Pundt
Mitglied
Konstrukteur


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

Beiträge: 83
Registriert: 07.08.2014

Windows 7
Catia V5 R19

erstellt am: 08. Aug. 2014 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

Sub CATMain(product)

Set oBGRoot = CATIA.ActiveDocument 'es wird ein CATALLPart von dem Produkt erzeugt
Set oBGProd = oBGRoot.product
'On Error Resume Next
'oBGProd.ApplyWorkMode DESIGN_MODE
'On Error GoTo 0
Set oProd2Part = oBGProd.GetItem("DECProductToPart")
oProd2Part.Run
sError = oProd2Part.GetError
If sError <> "" Then
  MsgBox sError, 16, " Ausnahmefehler DECProductToPart. Abbruch."
End If
Set oAllCATPart = oProd2Part.GetResult


Dim documents12 As Documents ' es wird ein neues Produkt geöffnet
Set documents12 = CATIA.Documents

Dim productDocument12 As Document
Set productDocument12 = documents12.Add("Product")

Dim windows1 As Windows ' das CATALLPart und das Part der Leiterplatte werden in das neu geöffnete Produkt kopiert
Set windows1 = CATIA.Windows

Dim specsAndGeomWindow1 As Window
Set specsAndGeomWindow1 = windows1.Itemname("Product1_AllCATPart")

specsAndGeomWindow1.Activate

Dim partDocument111 As Document
Set partDocument111 = CATIA.ActiveDocument

Dim selection111 As Selection
Set selection111 = partDocument111.Selection

selection111.Clear

Dim part11 As Part
Set part11 = partDocument111.Part

selection1.Add part11

selection111.Copy

Dim specsAndGeomWindow2 As Window
Set specsAndGeomWindow2 = windows1.Item("Product3")

specsAndGeomWindow2.Activate

Dim productDocument111 As Document
Set productDocument111 = CATIA.ActiveDocument

Dim selection12 As Selection
Set selection12 = productDocument111.Selection

selection12.Clear

Dim product12 As product
Set product12 = productDocument111.product

selection12.Add product12

selection12.Paste

Dim specsAndGeomWindow3 As Window
Set specsAndGeomWindow3 = windows1.Item("Product1.CATProduct")

specsAndGeomWindow3.Activate

Dim productDocument112 As Document
Set productDocument112 = CATIA.ActiveDocument

Dim selection13 As Selection
Set selection13 = productDocument112.Selection

selection13.Clear

Dim product112 As product
Set product112 = productDocument112.product

Dim products12 As products
Set products12 = product112.products

Dim product13 As product
Set product13 = products12.Item("STARTMODEL_3D_R19.2")

selection13.Add product13

selection13.Copy

specsAndGeomWindow2.Activate

Set productDocument112 = CATIA.ActiveDocument

Dim selection14 As Selection
Set selection14 = productDocument112.Selection

selection14.Clear

selection14.Add product13

selection14.Paste

specsAndGeomWindow2.WindowState = catWindowStateMaximized

asdasd

Dim productDocument13 As Document ' alle Bodies aus dem CATALLPart werden kopiert und in das Part mit der Leiterplatte eingefügt
Set productDocument13 = CATIA.ActiveDocument

Dim selection1 As Selection
Set selection1 = productDocument1.Selection
selection1.Clear

Dim documents1 As Documents
Set documents1 = CATIA.Documents

Dim partDocument1 As Document
Set partDocument1 = documents1.Item("Product1_AllCATPart.CATPart") ' kann man vielleicht weglassen???

Dim part1 As Part
Set part1 = partDocument1.Part

Set productDocument1 = CATIA.ActiveDocument

Dim selection2 As Selection
Set selection2 = productDocument1.Selection

selection2.Clear

Dim partDocument2 As Document
Set partDocument2 = documents1.Item("TEST_Bauraumerfassung.CATPart")

Dim part2 As Part
Set part2 = partDocument2.Part

Dim ActiveWindow As ProductDocument
Set ActiveWindow = CATIA.ActiveDocument
    Dim bodies6 As Bodies                                                      ' jede Publikation der einzelnen Parts wird kopiert und in das Part der PCB als Result with links eingefügt
    Set bodies6 = part1.Bodies

For I = 1 To Bodies6.Count                                                          ' für jedes Part in der Baugruppe wird eine Publikation von dem Körper "PartBody" erzeugt

    Dim settingControllers1 As SettingControllers
    Set settingControllers1 = CATIA.SettingControllers

    Dim visualizationSettingAtt1 As SettingController
    Set visualizationSettingAtt1 = settingControllers1.Item("CATVizVisualizationSettingCtrl")

    visualizationSettingAtt1.SaveRepository

    Dim bodies5 As Bodies                                                      ' jede Publikation der einzelnen Parts wird kopiert und in das Part der PCB als Result with links eingefügt
    Set bodies5 = part2.Bodies

    Set body21 = part1.Bodies.Item(I)
                                                   
    ActiveWindow.Selection.Clear                        ' kopieren und einfügen der Publikationen in das Part von der Einzelleiterplatte
    ActiveWindow.Selection.Add body21
    ActiveWindow.Selection.Copy
    ActiveWindow.Selection.Clear
    ActiveWindow.Selection.Add part2
    ActiveWindow.Selection.Paste

    ActiveWindow.Selection.Item(1).Value.Name = "Bauteil1"      ' die Publication wird umbenannt

Dim body22 As Body                                                          ' die Publikationen werden als Boolsche Operation dem Körper Baugruppe zugefügt
Set body22 = bodies5.Item("Baugruppe")

Dim shapeFactory1 As Factory
Set shapeFactory1 = part2.ShapeFactory

Dim body23 As Body
Set body23 = bodies5.Item("Bauteil1")

part2.InWorkObject = body22

Dim add21 As Add
Set add21 = shapeFactory1.AddNewAdd(body23)

part2.UpdateObject add21

part2.Update

body23.Name = "Bauteil"

part2.Update
part1.Update

Next
End Sub


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: 12054
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 08. Aug. 2014 11:40    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 T.Pundt 10 Unities + Antwort hilfreich

Servus
Du kannst doch direkt die Körper des AllCatPart in dein "Part2" kopieren. Das du diese in Baugruppe nicht in er Baugruppe positionierst/verschiebst, benötigst du den Baugruppenkontext nicht (den du in deinem Code eh nicht berücksichtigt).

Gruß
Bernd

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

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

T.Pundt
Mitglied
Konstrukteur


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

Beiträge: 83
Registriert: 07.08.2014

Windows 7
Catia V5 R19

erstellt am: 08. Aug. 2014 11:41    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

Eigentlich könnte ich mir das Product auch sparen und gleich die Körper von einem Part kopieren und in das andere einfügen oder ist das aufwendiger?

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

T.Pundt
Mitglied
Konstrukteur


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

Beiträge: 83
Registriert: 07.08.2014

Windows 7
Catia V5 R19

erstellt am: 08. Aug. 2014 12: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

Danke, dass habe ich mir gerade auch schon gedacht.
Ich habe jetzt das Makro folgendermaßen abgeändert und kriege folgende Fehlermeldung:

No CSO element remains after the filtering through the UI active object. The Copy operation could not be performed.


Sub CATMain(product)

Set oBGRoot = CATIA.ActiveDocument 'es wird ein CATALLPart von dem Produkt erzeugt
Set oBGProd = oBGRoot.product
'On Error Resume Next
'oBGProd.ApplyWorkMode DESIGN_MODE
'On Error GoTo 0
Set oProd2Part = oBGProd.GetItem("DECProductToPart")
oProd2Part.Run
sError = oProd2Part.GetError
If sError <> "" Then
  MsgBox sError, 16, " Ausnahmefehler DECProductToPart. Abbruch."
End If
Set oAllCATPart = oProd2Part.GetResult


Dim documents1 As Documents ' alle Bodies aus dem CATALLPart werden kopiert und in das Part mit der Leiterplatte eingefügt
Set documents1 = CATIA.Documents

Dim partDocument1 As Document
Set partDocument1 = documents1.Item("Product1_AllCATPart.CATPart")

Dim part1 As Part
Set part1 = partDocument1.Part

Dim partDocument2 As Document
Set partDocument2 = documents1.Item("TEST_Bauraumerfassung.CATPart")

Dim part2 As Part
Set part2 = partDocument2.Part

    Dim bodies6 As Bodies                                                      ' jede Publikation der einzelnen Parts wird kopiert und in das Part der PCB als Result with links eingefügt
    Set bodies6 = part1.Bodies

For I = 1 To Bodies6.Count                                                          ' für jedes Part in der Baugruppe wird eine Publikation von dem Körper "PartBody" erzeugt

    Dim settingControllers1 As SettingControllers
    Set settingControllers1 = CATIA.SettingControllers

    Dim visualizationSettingAtt1 As SettingController
    Set visualizationSettingAtt1 = settingControllers1.Item("CATVizVisualizationSettingCtrl")

    visualizationSettingAtt1.SaveRepository

    Dim bodies5 As Bodies                                                      ' jede Publikation der einzelnen Parts wird kopiert und in das Part der PCB als Result with links eingefügt
    Set bodies5 = part2.Bodies

    Set body21 = part1.Bodies.Item(I)
Set partDocument1 = CATIA.ActiveDocument
    Dim Selection As Selection
Set Selection = CATIA.ActiveDocument.Selection                                           
Selection.Clear                        ' kopieren und einfügen der Publikationen in das Part von der Einzelleiterplatte
    Selection.Add body21
    Selection.Copy
    Selection.Clear
    Selection.Add part2
    Selection.Paste
Set partDocument2 = CATIA.ActiveDocument
part2.Selection.Item(1).Value.Name = "Bauteil1"      ' die Publication wird umbenannt

Dim body22 As Body                                                          ' die Publikationen werden als Boolsche Operation dem Körper Baugruppe zugefügt
Set body22 = bodies5.Item("Baugruppe")

Dim shapeFactory1 As Factory
Set shapeFactory1 = part2.ShapeFactory

Dim body23 As Body
Set body23 = bodies5.Item("Bauteil1")

part2.InWorkObject = body22

Dim add21 As Add
Set add21 = shapeFactory1.AddNewAdd(body23)

part2.UpdateObject add21

part2.Update

body23.Name = "Bauteil"

part2.Update
part1.Update

Next
End Sub


Weiß jemand wo der fehler ist?

Vielen Dank.

Gruß Timo

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: 12054
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 08. Aug. 2014 12:34    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 T.Pundt 10 Unities + Antwort hilfreich

Servus
Ich würde den Code so aufbauen:
Code:
Sub CATMain()
Dim oBGRoot As ProductDocument
Dim oBGProd As product
Dim oProd2Part As Object
Dim sError As String
Dim oAllCatPart As Part
Dim oZielPartDoc As PartDocument
Dim oSel As Selection
Dim objSel As Object

'AllCatPart erstellen
Set oBGRoot = CATIA.ActiveDocument
Set oBGProd = oBGRoot.product

Set oProd2Part = oBGProd.GetItem("DECProductToPart")
oProd2Part.Run
sError = oProd2Part.GetError
If sError <> "" Then
  MsgBox sError, 16, " Ausnahmefehler DECProductToPart. Abbruch."
End If
Set oAllCatPart = oProd2Part.GetResult.Part

'alle Körper kopieren
Set objSel = oAllCatPart.Parent.Selection
Set oSel = objSel

oSel.Search "CATPrtSearch.BodyFeature,all"
oSel.Copy
oSel.Clear

'im Zielpart einfügen
Set oZielPartDoc = CATIA.Documents.Item("TEST_Bauraumerfassung.CATPart")
oZielPartDoc.Activate
Set objSel = oZielPartDoc.Selection
Set oSel = objSel

oSel.Add oZielPartDoc.Part
oSel.Paste
oSel.Clear

oAllCatPart.Parent.Close

End Sub


Gruß
Bernd

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

[Diese Nachricht wurde von bgrittmann am 08. Aug. 2014 editiert.]

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

T.Pundt
Mitglied
Konstrukteur


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

Beiträge: 83
Registriert: 07.08.2014

Windows 7
Catia V5 R19

erstellt am: 08. Aug. 2014 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

So, dass kopieren klappt nun, ich habe jetzt das Problem, dass das Einfügen in das Part 2 nicht klappt.
Erkennt jemand den Fehler?

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

T.Pundt
Mitglied
Konstrukteur


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

Beiträge: 83
Registriert: 07.08.2014

Windows 7
Catia V5 R19

erstellt am: 08. Aug. 2014 12:47    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

Hervorragend, vielen Dank!

Gruß Timo

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

T.Pundt
Mitglied
Konstrukteur


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

Beiträge: 83
Registriert: 07.08.2014

Windows 7
Catia V5 R19

erstellt am: 12. Aug. 2014 13:34    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,

weiß jemand, ob/wie man mehrere Soldis in einen Körper fügen kann? Mein Problem ist, dass ich sonst zu viele Boolesche Operationen benötige, die ganz schön viel Zeit in Anspruch nehmen.

Vielen Dank.

Gruß, Timo

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: 12054
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 12. Aug. 2014 14: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 Nur für T.Pundt 10 Unities + Antwort hilfreich

Servus
Bitte keine Doppelposts: hier geht es weiter.

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)2025 CAD.de | Impressum | Datenschutz