Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Wie kann Mann ein kopierte GeoSet mit Parent Name umbennen?

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:  Wie kann Mann ein kopierte GeoSet mit Parent Name umbennen? (1869 mal gelesen)
Sylas
Mitglied



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

Beiträge: 322
Registriert: 19.11.2012

Dell Precision T3500
Intel Xeon W3550 @ 3,07 GHz
12 GB RAM
CATIA V5 R28

erstellt am: 21. Aug. 2014 11:15    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 Leute

Ich habs Mal ein Makro gesrieben, welches mehrere GeoSets (mit original Name "Part_Geometry")aus Produkt-Strukturbaum kopiert und im neues Part eingefügt. meine Frage ist: wie kann Mann jedes Item aus Selektion umbennenen mit Parent.Name?
Z.B.:

oSel.Item(1), welches heisst "Part_Geometry"-wie alle Elemente aus oSel, kommt aus Part1 - Ich will oSel.Item(1) heissen "Part1" statt "Part_Geometry".
Mein Kode unten:

Code:

Sub CATMain()
'start by declaring the selection
Dim oSel
Set oSel = CATIA.ActiveDocument.Selection
'Create an array for CATParts
ReDim strArray(0)
strArray(0)="Part"

osel.Search "CATPrtSearch.PartFeature,all"

'Count the number of selected parts
iCount = oSel.Count

'Create a For Next loop to cycle through all selected parts
'Isn't vb scripting fun?
For i= 1 to iCount
Dim myObject2
Set myObject2 = oSel.Item(i).value
'Search only the selected objects for the object named "Part_Geometry"
oSel.Search "Name=Part_Geometry,sel"

'now we take all the Part_Geometry objects found and copy them
ReDim copies(iCount)
For k=1 to iCount
Set copies(k)=oSel.Item(k).Value
oSel.Add copies(k)
oSel.Copy
'close the loops
Next 'k
Next 'i
'Now use CATIA scripting basics to create a new part
Dim part2
Set part2 = CATIA.Documents.Add("CATPart")
Dim partDocument2 'As PartDocument
'rename the new part
part2.Product.PartNumber = "My New Part"
'optional step: create a new geometrical set and rename it
Dim GSet1 'As HybridBody
Set GSet1 = part2.part.HybridBodies.Add ()
GSet1.Name = "Flachen"
'set the newly create part to the active document
Set partDocument2= CATIA.ActiveDocument
Dim ActSel 'As Selection
Set ActSel=partDocument2.Selection
ActSel.Add GSet1
'paste special the PartBody objects from the orginial file and paste as result without link
ActSel.PasteSpecial("CATPrtResultWithOutLink" )
'clear the selection
ActSel.Clear
End Sub


Dazu habe ich noch eine Frage: wie kann ich kopierte GeoSets einfach unten Partbody statt "Flachen" einfugen?

Sorry fuer mein Deutsch
Danke im Voraus fuer jede Antwort

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: 21. Aug. 2014 11: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 Nur für Sylas 10 Unities + Antwort hilfreich

Servus
Wo die Elemente eingefügt werden, wird durch die Selekton im Zieldokument bestimmt. Wenn du dort statt der GeoSet das Part angibst, sollt die GeoSets auf oberster Ebene erscheinen.
Code:
ActSel.Add partDocument2.Part

IMHO musst du um die Namen der GeoSets anzupassen das Makro folgend ändern:
- Über Suche werden die GeoSets selektiert
- Objekte der Selektion zwischen speichern (Array, Collection)
- GeoSets einzeln kopieren und in Zielpart einfügen
- GeoSet (das letzte in der GeoSet-Collection) umbenennen

Gruß
Bernd

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

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

Sylas
Mitglied



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

Beiträge: 322
Registriert: 19.11.2012

Dell Precision T3500
Intel Xeon W3550 @ 3,07 GHz
12 GB RAM
CATIA V5 R28

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

Zitat:
Original erstellt von bgrittmann:

IMHO musst du um die Namen der GeoSets anzupassen das Makro folgend ändern:
- Über Suche werden die GeoSets selektiert
- Objekte der Selektion zwischen speichern (Array, Collection)
- GeoSets einzeln kopieren und in Zielpart einfügen
- GeoSet (das letzte in der GeoSet-Collection) umbenennen


Korrekt mich wenn ich das falsch verstanden habe: Statt ganze Selektion einfuegung, soll Ich ein Loop machen mit zwei Schritte: einfuegen & umbennenen fuer jedes oSel.Item?

Warum soll ich nur letzte GeoSet umbenennen? Sie kommen von mehrere, unterschiedliche Teile....


[Diese Nachricht wurde von Sylas am 21. Aug. 2014 editiert.]

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

Sylas
Mitglied



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

Beiträge: 322
Registriert: 19.11.2012

Dell Precision T3500
Intel Xeon W3550 @ 3,07 GHz
12 GB RAM
CATIA V5 R28

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

Halo noch Mal 

Kann mir jemand zeigen, wie kann ich der Code

Code:

ReDim copies(iCount)
For k=1 to iCount
Set copies(k)=oSel.Item(k).Value
oSel.Add copies(k)
oSel.Copy
'close the loops
Next 'k
Next 'i

so ändern, das jedes Objekt im oSel seinem Fater-name hat, bevor dem Kopieren ins einen neuen Part?

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: 22. Aug. 2014 19:18    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 Sylas 10 Unities + Antwort hilfreich

Servus
AFAIR solltest du den Namen über
Code:
oSel.Item(k).Value.Name = "Bla"
ändern können. Allerdings wrid dann das Ursprungsobjekt umbenannt.
Die Kopie kann man IMHO erst nach dem Einfügen umbenennen.
Sollen alle GeoSets nach dem kopieren gleich heißen, oder den Partnamen/Exemplanamen des Ursprungsobjekts erhalten?

Gruß
Bernd

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

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

Sylas
Mitglied



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

Beiträge: 322
Registriert: 19.11.2012

Dell Precision T3500
Intel Xeon W3550 @ 3,07 GHz
12 GB RAM
CATIA V5 R28

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

Halo Bernd
Zitat:
Original erstellt von bgrittmann:

Sollen alle GeoSets nach dem kopieren gleich heißen, oder den Partnamen/Exemplanamen des Ursprungsobjekts erhalten?

Gruß
Bernd


Die GeoSets sollen Partnamen/Exemplanamen des Ursprungsobjekts erhalten.

EDIT:
Nach folgende Makro-Änderung:

Code:

ReDim copies(iCount)
ReDim names(iCount)
For k=1 to iCount
Set copies(k)=oSel.Item(k).Value
Set names(k)=oSel.Item(k).Value.parent.parent.name
Set copies(k).name=names(k)
oSel.Add copies(k)
oSel.Copy
'close the loops
Next 'k
Next 'i

kriege ich eine Meldung das:

entsprechende String "BLECH1" ist auffindbar aber wie kann ich jetzt weiter gehen?

P.S. I entschuldige für Polnische Sprache auf dem Bild - Ich komme aus Polen 

Gruß

[Diese Nachricht wurde von Sylas am 25. Aug. 2014 editiert.]

[Diese Nachricht wurde von Sylas am 25. Aug. 2014 editiert.]

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