Hot News:

Mit Unterstützung durch:

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

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:  Selection Copy/Paste (3091 mal gelesen)
Ivanl
Mitglied



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

Beiträge: 28
Registriert: 21.10.2011

i7 2,80 Ghz
8GB Ram
Win XP Pro SP2
CATIA V5 R19 SP9

erstellt am: 14. Nov. 2011 10: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 zusammen,

Seit zwei tagen setze ich mich nun mit, einem für mich doch leider größeren, Problem auseinander. Da ich mich erst seit zwei Wochen mit der Makroprogrammierung beschäftige ist mein Wissen leider sehr überschaubar. Da ich im Forum nach mehrstündiger suche leider nichts konkrettes zu meinem Problem gefunden habe (eventuel falsche suchkriterien) wende ich mich nun direkt an euch.

Ich habe mir einen Slider Crank (Schubkurbel) in mit Catia v5 R19 erstellt und mit Bedingungen vesehen. Nun möchte ich über ein Makro den Crank (die Kurbel) drehen lassen und zu jeder angegebenen Winkelstellung die Bauteile aus denen ich den Slider angefertigt habe in ein neues Produkt kopieren (bis hierhin Funktioniert alles einwandfrei).

Nun zum Problem:
Sobald ich das Programm mir einer "Auswahl Selection" erweitern möchte, dass nur die Teile kopiert werden sollen, welche ich ausgewählt habe tretten die ersten Probleme auf. Die Selection an sich Funktioniert, d.h. die Teile die ich vor dem Makrostart ausgewählt habe werden auch kopiert. Was nicht Funktioniert ist, dass nach jeder Winkelposition die Parts an die richtige Stelle kopiert werden. Die Teile werden alle an die selbe (erste) Position kopiert. Nachdem ich eine MsgBox eingebaut habe die sich nach jedem durchlauf meldet ist mir aufgefallen, dass nach dem ersten durchlauf meine selektierten bodies nicht mehr selektiert sind. Ich glaube daran liegt das Problem bin mir aber nicht sicher.

Wäre super wenn Ihr mir da irgendwie weiterhelfen könntet dieses Problem zu beheben.

Gruß Ivanl


Anbei habe ich mal meinen Programmcode eingefügt:

Sub CATMain()                                                      'Part für Kopien erzugen

Dim productDocument1 As Document
Set productDocument1 = CATIA.ActiveDocument

Dim product1 As Product
Set product1 = productDocument1.Product

Dim products1 As Products
Set products1 = product1.Products

Dim product2 As Product
Set product2 = products1.Item("Varianten.1")                        'Zielproduct in dem die Bodies Kopiert werden sollen

Dim products2 As Products
Set products2 = product2.Products

Dim product3 As Product
Set product3 = products2.AddNewComponent("Part", "")


Dim UserSelektion As Selection                                      'Selektion der Bodies
Set UserSelektion = CATIA.ActiveDocument.Selection

If UserSelektion.Count > 0 Then
    Dim Was As Integer
    Was = UserSelektion.Count
    For I = 1 To UserSelektion.Count
        MsgBox (UserSelektion.Item(I).Value.Name)
    Next
End If

UserSelektion.Copy
Dim Name As String

Dim documents1 As Documents                                          'Kopien erzeugen
Set documents1 = CATIA.Documents


Set productDocument1 = CATIA.ActiveDocument

Dim selection2 As Selection
Set selection2 = productDocument1.Selection

selection2.Clear

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

Dim part2 As Part
Set part2 = partDocument2.Part

selection2.Add part2

selection2.PasteSpecial "CATPrtResultWithOutLink"

product1.Update

End Sub


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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

Beiträge: 1118
Registriert: 29.05.2008

DELL PRECISION T3500
Intel(R) Xeon(R) CPU W3540 @ 2.93GHz
12285 MB RAM
NVIDIA Quadro FX 1800
Microsoft Windows 7 Enterprise Service Pack 1
CATIA V5 R19 SP09 HF69
VB6.5
CAA RADE CDC

erstellt am: 14. Nov. 2011 13:55    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 Ivanl 10 Unities + Antwort hilfreich

Hallo Ivanl und willkommen im Forum.

Ich glaub Du bist genau auf der richtigen Spur. :-)

Nach dem Einfügen aus einer Selection ist diese deselektiert.

Also vorher einfach den Inhalt der Selection in ein Array oder eine Collection (ich empfehle letzteres) oder wenn Du im VBS unterwegs bist, dann in ein Dictionary schreiben und dann einzeln durcharbeiten.

Hoffe nicht am Thema vorbei geredet zu haben.

------------------
Mit freundlichen Grüßen,
Henry Schneider
alias Lila

Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren:
Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen,
die Natur versucht, immer bessere Idioten zu bauen

Xing

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

Ivanl
Mitglied



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

Beiträge: 28
Registriert: 21.10.2011

i7 2,80 Ghz
8GB Ram
Win XP Pro SP2
CATIA V5 R19 SP9

erstellt am: 14. Nov. 2011 15:01    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 HoBLila und danke für die schnelle Antwort.

Leider kann ich mit dem Begriff Collection nicht wirklich was anfangen. Kannst du mir kurz erläutern wobei es sich dabei handelt?

Grüße Ivanl

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: 14. Nov. 2011 15:07    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 Ivanl 10 Unities + Antwort hilfreich

Servus
Eine Collection ist, vereinfacht ausgedrückt, eine "benutzerfreundliches" Array mit Zusatzfunktionen (siehe auch hier.

Gruß
Bernd

PS: Bitte Systeminfo ausfüllen

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

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

Ivanl
Mitglied



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

Beiträge: 28
Registriert: 21.10.2011

i7 2,80 Ghz
8GB Ram
Win XP Pro SP2
CATIA V5 R19 SP9

erstellt am: 14. Nov. 2011 16: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

Hallo,

ich schon wieder  . Irgendwie bekomme ich es nicht hin. habe deinen Rat befolgt und wollte eindach die selections in ein Array Speichern. Ich glaube ich stelle mich etwas doof an.

wollte es folgendermaßen machen:

'ins Array speichern (vermutlich scheitert es hier schon)

Dim Array()                           
For i = 1 to UserSelektion.Count
Array(i) = UserSelektion.Item(i)
next


und später dann eine neue Selection öffnen und mit der weiterarbeiten

Set sel1 = Catia.ActiveDocument.Selection

sel1.add Array(i)
sel1.copy

usw. wie oben im quelcode

Danke schonmal im vorraus.

Grüße Ivanl

PS: Systeminfo folgt 

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: 14. Nov. 2011 17: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 Nur für Ivanl 10 Unities + Antwort hilfreich

Servus
Zunächst musst du den Array auch richtig dimensionieren (Anzahl der Objekte), dann muss diesem auch das Objekt deiner Selektion hinzufügen (UserSelection.Item2(i).Value):
Code:
Dim Datenfeld()
ReDim Datenfeld(UserSelection.Count2)

For i = 1 To UserSelection.Count2
    Set Datenfeld(i) = UserSelection.Item2(i).Value
Next

UserSelection.Clear

UserSelection.Add Datenfeld(1)
UserSelection.Copy


Siehe auch allgemeine Doku zu VB oder VBA.

Gruß
Bernd

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

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

Ivanl
Mitglied



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

Beiträge: 28
Registriert: 21.10.2011

i7 2,80 Ghz
8GB Ram
Win XP Pro SP2
CATIA V5 R19 SP9

erstellt am: 14. Nov. 2011 22:00    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

Hi Bernd.

Danke für deine Antwort, werde es morgen ausprobieren. Eine sache musst du mir bitte noch erklären. Warum muss man den weg über ReDim gehen? hätte man nicht direkt Dim Datenfeld(UserSelection.Count2) schreiben können?

Grüße Ivanl

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: 14. Nov. 2011 22: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 Nur für Ivanl 10 Unities + Antwort hilfreich

Servus
Klar hätte ich gleich den Array richtig dimensionieren können.
Im Allgemeinen werden aber ganz am Anfang alle Variablen deklariert und erst später im weiteren Programmablauf einem Wert/ein Objekt (oder die korrekte Größe) definiert/zugewiesen.

Gruß
Bernd

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

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

Ivanl
Mitglied



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

Beiträge: 28
Registriert: 21.10.2011

i7 2,80 Ghz
8GB Ram
Win XP Pro SP2
CATIA V5 R19 SP9

erstellt am: 15. Nov. 2011 16: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

Danke für die Hilfe,

jetzt funktioniert es so wie es soll.


Grüße Ivanl

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

4ppU
Mitglied



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

Beiträge: 44
Registriert: 19.04.2016

Unterschiedliche Arbeitsplätze/ Hardware.
Catia V5
Microsoft Visual Basic for Applications

erstellt am: 22. Apr. 2016 11:32    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 Ivanl 10 Unities + Antwort hilfreich

Moin Moin,

Zitat:
jetzt funktioniert es so wie es soll.

Auch wenn es lange her ist, kannst du dein Ergebnis bzw. deine Korrektur vielleicht hier präsentieren (Quellcode)?

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