Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Erstellen von Parts auf vordefinierten Achsensystemen

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:  Erstellen von Parts auf vordefinierten Achsensystemen (1431 mal gelesen)
KNaumann1
Mitglied
Maschinenbau Student


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

Beiträge: 10
Registriert: 12.07.2017

Catia V5 R24 SP4

erstellt am: 12. Jul. 2017 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

Hallo zusammen,

Zu meinem Szenario:
Ich erstelle manuell Achsensysteme mit der Bezeichnung "Robot Axis System" in einem bestehendem Product. Im Anschluss führe ich mein Makro aus. Dieses sucht die Achsensysteme gibt die Anzahl der Achsensysteme aus und nummeriert sie. Im Anschluss möchte ich auf diesen Achsensystemen jeweils ein Part erstellen.
Letzteres hat so nicht funktioniert und alle Parts hatten ihren Ursprung im Ursprung des Products.
Mein zweiter Ansatz war nun in der Schleife das Achsensystem des Parts und das entsprechende "Robot Axis System" über Constraints miteinander zu verbinden. Hier scheitere ich an der Definition der Referenzen.
Vielen Dank im Voraus.

Hier ein Beispiel mit festen Namen:


'Z-ACHSE
'Dim constraints10 As Constraints
'Set constraints10 = product1.Connections("CATIAConstraints")

'Set reference2 = product1.CreateReferenceFromName("FakeProduct/FakeSensor2/!Selection_REdge Edge Face Brp AxisSystem.1;3);None );Cf11 ));Face Brp AxisSystem.1;2);None );Cf11 ));None Limits1 );Limits2 ));Cf11 ));AxisSystem.1;Z0;G5656)")

'Set reference1 = product1.CreateReferenceFromName("FakeProduct/2/!Selection_REdge Edge Face Brp AxisSystem.1;3);None );Cf11 ));Face Brp AxisSystem.1;2);None );Cf11 ));None Limits1 );Limits2 ));Cf11 ));AxisSystem.1;Z0;G5656)")

'Dim constraint10 As Constraint
'Set constraint10 = constraints10.AddBiEltCst(catCstTypeOn, reference2, reference1)

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: 12. Jul. 2017 15:09    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 KNaumann1 10 Unities + Antwort hilfreich

Servus
Willkommen im Forum.
Bei deinem ersten Ansatz: hast du dort auch die Werte des Achsensystems ausgelesen und dieser der Position der Instanz deines Parts zugewiesen?
Zu deinem jetzigen Ansatz:
Warum setzt du die Achsensystem nicht direkt nur mit einer Bedingung aufeinander?
Hier findest du einen Beitrag der dir erklärt wie die Referenz dafür erstellt wird.

Gruß
Bernd

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

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

KNaumann1
Mitglied
Maschinenbau Student


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

Beiträge: 10
Registriert: 12.07.2017

Catia V5 R24 SP4

erstellt am: 12. Jul. 2017 15:21    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 dir Bernd

Ansatz 1:
Nein hab ich nicht und ich weiß auch ehrlich gesagt nicht, wie das funktioniert. Benutze VBA und habe das Teil per Makro Recording aufgenommen. Hierbei hatte ich den Ursprungspunkt des Robot Axis System als Ursprungspunkt des neuen Parts ausgewählt. Weiter konnte ich mir hier aber nicht helfen.

Ansatz 2:
Das Problem ist, dass ich nicht den Pfad nehmen kann, da dieser variiert. Zunächst kann das Product variieren, da mein Makro in verschiedenen Products anwendbar sein soll. Außerdem sind meine "Robot Axis System" Ebenfalls mit der Variable i versehen.

Hier mal meine Zeilen zum auswählen und Umbenennen der Achsensysteme (heißen hier Laser Axis System):

'AUSWÄHLEN DER ACHSENSYSTEME

Dim objSearch As Selection
Set objSearch = CATIA.ActiveDocument.Selection
objSearch.Search ("Name = Laser Axis System*,all")

objcount = objSearch.Count & " zu erstellende/r Sensor/en erkannt"
MsgBox objcount

'UMBENENNEN DER ACHSENSYSTEME

Dim i As Integer
For i = 1 To objSearch.Count

objSearch.Item(i).Value.Name = objSearch.Item(i).Value.Name & i

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: 12. Jul. 2017 16: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 KNaumann1 10 Unities + Antwort hilfreich

Servus
Zu Ansatz 1:
Schau mal in der Doku (V5Automation) nach "Position"

Zu Ansatz 2:
Genau hier fängt das Makroprogrammieren erst richtig an.
Du musst dir per Makro den String für die Reference zusammenbauen.
Der Link im anderen Beitrag, die Doku, das Watchfenster und die Forensuche hilft dir da sicher weiter.

Gruß
Bernd

PS: Grenze die Suche so weit wie möglich ein, nicht dass zB auch ein Punkt der so heißt selektiert wird (dann fällt dein Makro auf die Nase)

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

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

KNaumann1
Mitglied
Maschinenbau Student


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

Beiträge: 10
Registriert: 12.07.2017

Catia V5 R24 SP4

erstellt am: 14. Jul. 2017 08:36    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

Servus

Aktuell verfolge ich den Ansatz, dass ich in die manuell erstellten Parts meine Bauteile einfüge. Mein Makro erkennt die entsprechenden Parts (bezeichnet als Sensor Axis System). Im Anschluss habe ich versucht in jedes objSearch.Item(i) ein Bauteil zu erstellen. Das klappt so aber nicht. Ich vermute, weil objSearch.Item(i) Teil einer Selection ist. Auch Spezifikationen wie Type = Part oder dergleichen haben mir nicht weitergeholfen.
Meine Struktur besteht aus einem Produkt, in dem bereits Produkte und Parts vorhanden sind. Anschließend sollen Parts mit dem Namen "Sensor Axis System" eingefügt werden.

Unten findet ihr einen Code der zwar funktioniert, jedoch in jedem Part einen Sensor erstellt. Die fehlerhafte Zeile habe ich markiert.

[CODE][
Sub CATMain()

Dim productDocument1 As ProductDocument
Set productDocument1 = CATIA.ActiveDocument

Dim product1 As Product
Set product1 = productDocument1.Product

Dim products1 As Products
Set products1 = product1.Products

'AUSWÄHLEN DER ACHSENSYSTEME

Dim objSearch As Selection
Set objSearch = CATIA.ActiveDocument.Selection
objSearch.Search "(.Part.Name = *Sensor Axis System*),In"


objcount = objSearch.Count & " zu erstellende/r Sensor/en erkannt"
MsgBox objcount

'ERSTELLEN DER SENSOREN

Dim i As Integer
For i = 1 To objSearch.Count


Dim oDoc1 As Document

Set product2 = products1.Item(i) <-----Hier habe ich versucht objSearch.Item(i) einzusetzen hat aber mit der folgenden Zeile Probleme erzeugt
Set oDoc1 = product2.ReferenceProduct.Parent

If TypeName(oDoc1) = "PartDocument" Then

Dim oPart1 As Part
Set oPart1 = oDoc1.Part
...
/CODE]

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. Jul. 2017 09: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 KNaumann1 10 Unities + Antwort hilfreich

Servus
Kannst du mal ein Bild des Strukturbaums posten?
Was bedeutet für dich "Bauteil erstellen"? Wo soll dies geschehen?
Was selektierst du? Lass dir mal den Typ ausgeben zB:
Code:
msgBox TypeName(objSearch.item2(i).Value)
'das Value ist wichtig, somit kannst du das selektierte Objekt ansprechen

Von der Suche her würde ich vermuten dass du Parts selektierst.

Gruß
Bernd

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

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

KNaumann1
Mitglied
Maschinenbau Student


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

Beiträge: 10
Registriert: 12.07.2017

Catia V5 R24 SP4

erstellt am: 14. Jul. 2017 10:16    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


Unbenannt.PNG

 
Hallo Bernd,

Mit Bauteil erstellen meine ich, das bereits vorhandene Part auszuwählen und zum Beispiel ein Pad zu erzeugen.
Im Anhang findest du beispielhaft einen Strukturbaum. Ja ich wähle aktuell ein Part aus. Ich habe die Suche noch weiter eingeschränkt:

Code:

objSearch.Search "(Name = *Sensor Axis System* & Part Design.Part),all"

Mein Value ist Part, wie ich es wollte. Aber ich kann damit nicht weiterarbeiten.
Was ist denn der Unterschied zwischen objSearch.Item(i) und objSearch.Item2(i)?


[Diese Nachricht wurde von KNaumann1 am 14. Jul. 2017 editiert.]

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. Jul. 2017 10: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 KNaumann1 10 Unities + Antwort hilfreich

Servus
Du kannst dann über eine Schleife deine Parts abarbeiten. zB:
Code:
Dim myPart as Part
For i = 1 To objSearch.Count
  Set MyPart = objSearch.item2(i).Value
  'mach hier was mit dem Part
next
Unterschied Item zu Item2: siehe Doku 

Gruß
Bernd

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

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

KNaumann1
Mitglied
Maschinenbau Student


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

Beiträge: 10
Registriert: 12.07.2017

Catia V5 R24 SP4

erstellt am: 14. Jul. 2017 10: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

Danke dir!

.Value hat mir die ganze Zeit gefehlt, aber jetzt funktioniert das Makro.

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

KNaumann1
Mitglied
Maschinenbau Student


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

Beiträge: 10
Registriert: 12.07.2017

Catia V5 R24 SP4

erstellt am: 18. Jul. 2017 08:29    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

Servus,
Muss den Beitrag doch wieder nutzen. Und zwar habe ich wieder Probleme mit den einzelnen Items einer Selection.
Ich möchte zuvor kopierte Bodies in jedes Item der Selection einfügen.
Kopieren und ______objSel.PasteSpecial ("CATPrtResultWithOutLink"________ funktionieren. Aber über diesen Befehl kann ich die Bodies nicht in jedes Item der Selection einfügen.
Die Items in der Selection sind Parts.

Hatte mir das so vorgestellt:

Code:

For i = 1 to objSel.Count
Dim oPart1 as Part
Set oPart1 = objSel.item2(i).Value   
oPart1.PasteSpecial ("CATPrtResultWithOutLink")

Scheitert an der fett geschriebenen Zeile.
Ebenfalls frage ich mich ob man die zuvor kopierten Bodies zu einem einzigen Body zusammenfassen kann?

Grüße
Knaumann

[Diese Nachricht wurde von KNaumann1 am 18. Jul. 2017 editiert.]

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. Jul. 2017 09: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 KNaumann1 10 Unities + Antwort hilfreich

Servus
Du musst die Parts, in die du was einfügen willst, einzeln selektieren und dann auf die Selektion die Methode PasteSpecial anwenden.
ggf am Anfang deine Körper suchen/selektieren, diese dann in einem Array bzw einer Collection zwischenspeichern. Dann kannst du per Schleife diesen Zwischenspeicher abarbeiten und kannst die Selektion wieder unabhängig nutzen.

Gruß
Bernd

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

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

KNaumann1
Mitglied
Maschinenbau Student


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

Beiträge: 10
Registriert: 12.07.2017

Catia V5 R24 SP4

erstellt am: 18. Jul. 2017 09: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

Danke für den Ansatz Bernd.

Leider kenne ich mich mit Array und Collections nicht aus. Die V5Automation Datei hilft mir auch nicht wirklich weiter.
Hast du einen hilfreichen Link für mich?

Grüße
KNaumann

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. Jul. 2017 09: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 KNaumann1 10 Unities + Antwort hilfreich

Servus
zum Thema Array: schau mal in Basis-Schulungen und Tutorials zu allgemein VBA oder VB6.

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