Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Drehen und 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:  Drehen und kopieren (992 mal gelesen)
GeorgK
Mitglied



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

Beiträge: 619
Registriert: 06.06.2001

Inventor 2017
Siemens NX 8.5 - 12.0
Autocad Mechanical 2017
Catia V5R19
3,4 GHz; 64 GB RAM
Windows 10
openSUSE Leap 42.3
Visual Studio 2010 - 2017
Windows 2012 R2
Vault 2017

erstellt am: 07. Jun. 2005 18: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

Ich suche eine Möglichkeit ein Part in einem Produkt um eine Achse zu drehen und gleichzeitig zu kopieren.

Gibt es hierfür evtl. schon eine Lösung?

Danke

Georg

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

JonnyXe
Mitglied
Student


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

Beiträge: 16
Registriert: 24.03.2005

erstellt am: 09. Jun. 2005 14:11    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 GeorgK 10 Unities + Antwort hilfreich

Hallo,

also mit dem kopieren denk ich ist kein problem in nem Makro. Aber das mit dem drehen bereitet mir auch gerade Schwierigkeiten.

Gruß
JonnyXe

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

Steffen Hohmann
Mitglied
 


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

Beiträge: 446
Registriert: 06.03.2002

erstellt am: 09. Jun. 2005 14: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 GeorgK 10 Unities + Antwort hilfreich

Hallo,

das Drehen und Verschieben wird über das Ändern der Transformationsmatrix vorgenommen.

Im unteren Beispiel ist ein CATProduct geöffnet, welches ein CATPart enthält. Die Matrix wird mit Werten gefüllt und angewendet. In diesem Fall wird die x-Position auf 100 gesetzt.

iMatrix(0) bis (2) geben den Vektor der x-Achse an
iMatrix(3) bis (5) geben den Vektor der x-Achse an
iMatrix(6) bis (8) geben den Vektor der x-Achse an
iMatrix(9) bis (11) geben den Nullpunkt an


Sub CATMain()

    Dim oDoc As ProductDocument
    Set oDoc = CATIA.ActiveDocument
    Dim oProd 'As Product
    Set oProd = oDoc.Product.Products.Item(1)
   
    Dim iMatrix(11)
    iMatrix(0) = 1
    iMatrix(1) = 0
    iMatrix(2) = 0
    iMatrix(3) = 0
    iMatrix(4) = 1
    iMatrix(5) = 0
    iMatrix(6) = 0
    iMatrix(7) = 0
    iMatrix(8) = 1
    iMatrix(9) = 100
    iMatrix(10) = 0
    iMatrix(11) = 0
    oProd.Move.Apply iMatrix

End Sub

Wenn man relative Werte benötigt, muß man zuerst die aktuelle Matrix auslesen und die Deltawerte dazurechnen. Anschließend wird die modifizierte Matrix wieder angewendet.

Gruß
Steffen

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

JonnyXe
Mitglied
Student


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

Beiträge: 16
Registriert: 24.03.2005

erstellt am: 09. Jun. 2005 19:20    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 GeorgK 10 Unities + Antwort hilfreich

Danke für die Antwort,

hätte da aber noch ein kleines Problem, ich bekomme mein Teil aus einer Auswahl. Und möchte da jedes einzeln ansprechen:

'Auswahl def.:'
Dim selection1 As Selection
Set selection1 = productDocument1.Selection

'Suchkriterium der Auswahl:'
selection1.Search "Name:*Lager*;1"

Und möchte jetzt alle nach den obigen suchkriterium ausgewählten Teile  verdrehen. Dies möchte ich in einer For Schleife machen:

For i = 1 To anzahl
  'Einzlenes Lager auswählen'
  MsgBox "Ausrichten des Lagers Nr. " & i
  Set currentObject = selection1.Item(i)
   
    'Ausrichten des Lagers'
   
    Dim TransformationArray(11)
    'Um 45° um die X-Achse drehen'
    TransformationArray(0) = 1#
    TransformationArray(1) = 0
    TransformationArray(2) = 0
    TransformationArray(3) = 0
    TransformationArray(4) = 0.707
    TransformationArray(5) = 0.707
    TransformationArray(6) = 0
    TransformationArray(7) = -0.707
    TransformationArray(8) = 0.707
    'Verschiebungs Vektor (10,20,30)'
    TransformationArray(9) = 10#
    TransformationArray(10) = 20#
    TransformationArray(11) = 30#
    ->????<-.Move.Apply TransformationArray

 
Next

Wenn ich jetzt hier ein Product stehen hab funzt das schon, aber wie kann ich jetzt hie unten das i-te Element ansprchen?

Nochmal vielen Dank für die Mühe.

Gruß
JonnyXe

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

Steffen Hohmann
Mitglied
 


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

Beiträge: 446
Registriert: 06.03.2002

erstellt am: 10. Jun. 2005 09: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 GeorgK 10 Unities + Antwort hilfreich

Hallo JonnyXe,

auch ich habe die Lösung zu diesem Problem so ohne Weiteres nicht hinbekommen.
Das eigentliche Problem ist, dass der Typ eines selektierten Objektes über die Search-Methode ein "CATBaseDispatch" ist. Auf dieses ist die Move-Methode nicht anwendbar.

Nun zum Workarround:

Als erstes sollte die Search-Methode nur auf Produkte eingeschränkt werden:

selection1.Search "(Name=Lager* & CATAsmSearch.Product),all"´

Dann baut man eine Schleife von 1 bis selection1.count und holt sich den jeweiligen Namen des Produktes:

sProdName = selection1.Item(i).Reference.Name

Dann holt man sich das Parent (ist vom Typ "Products")

Set oParentProd = selection1.Item(i).Reference.Parent

Nun geht man die Products-Liste durch und vergleicht den Namen mit sProdName:

For j =1 To oParentProd.Count
    If oParentProd.Item(j).Name = sProdName Then
        Set ProductToMove = oParentProd.Item(j)
        Exit For
    End If
Next j


Nun hat man das Product für die Move-Methode gefunden.

Gruß
Steffen

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

Steffen Hohmann
Mitglied
 


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

Beiträge: 446
Registriert: 06.03.2002

erstellt am: 10. Jun. 2005 11: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 Nur für GeorgK 10 Unities + Antwort hilfreich

Es geht auch noch einfacher:

selection1.Search "(Name=*Lager* & CATAsmSearch.Product),all"´

sProdName = selection1.Item(i).Reference.Name
Set oParentProd = selection1.Item(i).Reference.Parent
Set ProductToMove = oParentProd.Item(sProdName)


Gruß
Steffen

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

JonnyXe
Mitglied
Student


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

Beiträge: 16
Registriert: 24.03.2005

erstellt am: 19. Jun. 2005 21: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 Nur für GeorgK 10 Unities + Antwort hilfreich

Danke!

Des Funzt. Ganz hab ichs noch nicht verstanden. Aber es geht. Sage nochmal danke für die Mühe.

Gruß
JonnyXe

[Diese Nachricht wurde von JonnyXe am 19. Jun. 2005 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