Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Achsensysteme 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
Autor Thema:  Achsensysteme kopieren (2669 mal gelesen)
IAmTheFabian
Mitglied
Konstrukteur


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

Beiträge: 58
Registriert: 17.10.2013

CATIA V5 R19
Windows 7 Professionel
Intel Core 2
Duo8GB RAM
64Bit System

erstellt am: 22. Okt. 2013 12: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

Folgendes Problem:
Ich habe ein Part mit mehreren Achsensystem.
Diese sind dem Geometrischen Set untergeordnet.

Ich möchte jedes einzelne Achsensystem in einem seperaten Part einfügen.

Bei meinem Makro werden leider alle Achsensysteme eingefügt.

Wo ist das Problem?

Sub CATMain()

'Suchen und Selektieren aller Achsensysteme
MsgBox ("Suchen und Selektieren aller Achsensysteme")
Set Selection = CATIA.ActiveDocument.Selection
Selection.Clear
Selection.Search ".Axis System;all"

MsgBox ("Aufzählen einzelner Achsensysteme")

If Selection.Count > 0 Then
   
    For I = 1 To Selection.Count
    MsgBox (Selection.Item(I).Value.Name)

    Selection.Copy
   
    Dim documents1 As Documents
    Set documents1 = CATIA.Documents
    Dim partDocument2 As Document
    Set partDocument2 = documents1.Add("Part")
    Set partDocument2 = CATIA.ActiveDocument
    Dim selection2 As Selection
    Set selection2 = partDocument2.Selection
    selection2.Clear
    Dim part1 As Part
    Set part1 = partDocument2.Part
    selection2.Add part1
    selection2.Paste
   
  Next
   
End If

End Sub


Bitte um Hilfe 

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. Okt. 2013 12: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 IAmTheFabian 10 Unities + Antwort hilfreich

Servus
Willkommen im Makro. Bitte Systeminfo ausfüllen.
bei dem Makro werden alle Achsensysteme selektiert (wie von Hand markiert) und dann über Copy kopiert.
Du müsstest deinen Code um eine Zwischenspeicherung der Selektion erweitern:
- mit einer Schleife alle Element der Selektion in einem Array/Collection zwischenspeichern
- Selektion leeren (.Clear)
- Schleife über den Array/Collection:
      - Element der Selektion hinzufügen (.Add)
      - kopieren
      - neues Teil erstellen
      - einfügen
      - Selektion leeren

Gruß
Bernd

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

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

IAmTheFabian
Mitglied
Konstrukteur


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

Beiträge: 58
Registriert: 17.10.2013

CATIA V5 R19
Windows 7 Professionel
Intel Core 2
Duo8GB RAM
64Bit System

erstellt am: 22. Okt. 2013 12: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

Danke für die schnelle Antwort. Ich werde es sofort ausprobieren und dann Rückmeldung geben

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

IAmTheFabian
Mitglied
Konstrukteur


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

Beiträge: 58
Registriert: 17.10.2013

CATIA V5 R19
Windows 7 Professionel
Intel Core 2
Duo8GB RAM
64Bit System

erstellt am: 22. Okt. 2013 19:56    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

Also da bin ich wieder mit einer erneuten Frage:

Sub CATMain()

'Suchen und Selektieren aller Achsensysteme
MsgBox ("Suchen und Selektieren aller Achsensysteme")
Set Selection = CATIA.ActiveDocument.Selection
Selection.Clear
Selection.Search ".Achsensystem;all"

'Aufzählen einzelner Achsensysteme
MsgBox ("Aufzählen einzelner Achsensysteme")

Dim size As Long
size = Selection.Count

Dim achsensysteme
Set achsensysteme = CreateObject("System.Collections.ArrayList")


If Selection.Count > 0 Then

    For i = 1 To Selection.Count
    'MsgBox (Selection.Item(i).Value.Name)
    achsensysteme.Add (Selection.Item(i))
   
    Next
   
    Selection.Clear
   
    For i = 1 To size
   
    Dim selectedAchsensystem As AnyObject
    Set selectedAchsensystem = achsensysteme.Item(i)
    Selection.Add selectedAchsensystem
   
    Selection.Copy
   
    Dim documents1 As Documents
    Set documents1 = CATIA.Documents
    Dim partDocument2 As Document
    Set partDocument2 = documents1.Add("Part")
    Set partDocument2 = CATIA.ActiveDocument
    Dim selection2 As Selection
    Set selection2 = partDocument2.Selection
    selection2.Clear
    Dim part1 As Part
    Set part1 = partDocument2.Part
    selection2.Add part1
    selection2.Paste
   
    Next
   
End If

End Sub

Bekomme eine Fehlermeldung
Das Verfahren Add ist fehlgeschlagen
(run-time error '-2147467259 (80004005)' vba)
bei
Selection.Add selectedAchsensystem

Was nun?


------------------
Anfänger!

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. Okt. 2013 20: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 Nur für IAmTheFabian 10 Unities + Antwort hilfreich

Servus
Du greifst nicht richtig auf das selektierte Objekt zu.
Vermutlich reicht folgende Änderung (den restlichen Code hab ich nicht richtig analysiert):
Code:
achsensysteme.Add (Selection.Item2(i).value)
Gruß
Bernd

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

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

IAmTheFabian
Mitglied
Konstrukteur


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

Beiträge: 58
Registriert: 17.10.2013

CATIA V5 R19
Windows 7 Professionel
Intel Core 2
Duo8GB RAM
64Bit System

erstellt am: 23. Okt. 2013 08:31    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 Bernd!
Du hast Recht!
Jetzt funktioniert alles bis auf dass ich am Ende folgende Meldung erhalte:
Der Index lag außerhalb des Bereichs. Er muss nicht negativ und kleiner als die Auflistung sein.
Parametername: Index

(Fehler in Fettschrift)

Sub CATMain()


'Suchen und Selektieren aller Achsensysteme
MsgBox ("Suchen und Selektieren aller Achsensysteme")
Set Selection = CATIA.ActiveDocument.Selection
Selection.Clear
Selection.Search ".Axis System;all"

'Neue Variable
Dim size As Long
size = Selection.Count

'Neue Variable
Dim achsensysteme
Set achsensysteme = CreateObject("System.Collections.Arraylist")


If Selection.Count > 0 Then

    'Aufzählen einzelner Achsensysteme
    MsgBox ("Aufzählen einzelner Achsensysteme")
   
        For i = 1 To Selection.Count
        MsgBox (Selection.Item(i).Value.Name)
        achsensysteme.Add (Selection.Item2(i).Value)
        Next
   
            'Achsensysteme in einzelne Parts einfügen
            For i = 1 To size
   
            Selection.Clear
   
            'Neue Variable
            Dim selectedAchsensystem As AnyObject
            Set selectedAchsensystem = achsensysteme.Item(i)   
            Selection.Add selectedAchsensystem
   
            Selection.Copy
   
   
            Dim documents1 As Documents
            Set documents1 = CATIA.Documents
            Dim partDocument2 As Document
            Set partDocument2 = documents1.Add("Part")
            Set partDocument2 = CATIA.ActiveDocument
            Dim selection2 As Selection
            Set selection2 = partDocument2.Selection
            selection2.Clear
            Dim part1 As Part
            Set part1 = partDocument2.Part
            selection2.Add part1
            selection2.Paste
   
            Next
   
End If

End Sub

------------------
Anfänger!

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

IAmTheFabian
Mitglied
Konstrukteur


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

Beiträge: 58
Registriert: 17.10.2013

CATIA V5 R19
Windows 7 Professionel
Intel Core 2
Duo8GB RAM
64Bit System

erstellt am: 23. Okt. 2013 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

Mir ist aufgefallen, dass bei der 1.Selection.Copy das zweite Achsensystem selektiert wird.
Es sollte aber das erste selektiert werden.
Woran liegt das?

------------------
Anfänger!

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: 23. Okt. 2013 12: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 IAmTheFabian 10 Unities + Antwort hilfreich

Servus
Verendest du nun einen Array oder eine Collection?
Ein Array fängt mit dem Index 0 an. lass die mal die obere und untere Grenze des Arrays7Collection ausgeben.

Gruß
Bernd

EDIT: Du scheinst einen Array zu verwenden: siehe Doku

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

[Diese Nachricht wurde von bgrittmann am 23. Okt. 2013 editiert.]

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

IAmTheFabian
Mitglied
Konstrukteur


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

Beiträge: 58
Registriert: 17.10.2013

CATIA V5 R19
Windows 7 Professionel
Intel Core 2
Duo8GB RAM
64Bit System

erstellt am: 23. Okt. 2013 13: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

Hab nun die zweite Schleife auf

For i = 0 To (Selection.Count - 1)

statt

For i = 1 To Selection.Count

gesetzt.

Das passt nun.
Danke Bernd

Thema geschlossen.

------------------
Anfänger!

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