Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Bauteillage auslesen

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:  Bauteillage auslesen (1594 mal gelesen)
Antelito
Mitglied



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

Beiträge: 88
Registriert: 27.11.2013

CATIA R24
WIN 10 x64

erstellt am: 04. Apr. 2014 09:48    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


Messen.jpg

 
Hallo,

oftmals wird ein Bauteil einmal konstruiert und dann mehrmals im Produkt verwendet (z.B. Träger). Aus irgend einem Grund ist in meinem Datensatz die Position aller Träger gleich (Transformationsmatrix wird über die Methode GetComponents ausgelesen), obwohl sie an unterschiedlichen Stellen liegen. Eine Möglichkeit, von jedem der Träger die Lage zu bestimmen, ist den Punkt an der Achse zu messen (siehe Bild: Point on Absolute Axis System). Dies würde ich gerne automatisiert machen, weiss allerdings nicht wie...

Kann mir jemand helfen?

Danke im Vorraus!

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: 04. Apr. 2014 09:52    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 Antelito 10 Unities + Antwort hilfreich

Servus
Wie sieht dein entsprechender Code zum auslesen der Position aus?
Sind die Bauteile in Einbaulage konstruiert?

Gruß
Bernd

PS: Hast du zufällig in deinem Code ein "on error resume next" (wie in deinem anderen Beitrag)?
Lösche dies um bei einem Fehler eine Fehlermeldung zu bekommen.

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

[Diese Nachricht wurde von bgrittmann am 04. Apr. 2014 editiert.]

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: 04. Apr. 2014 15:23    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 Antelito 10 Unities + Antwort hilfreich

Versuch mal http://hoblila.wordpress.com/download/ ob es andere Ergebnisse liefert.

Dort hatte ich, glaube ich, zwei verschiedene Methoden verbaut. Einmal das GetComponents() und dann GetCoordinates.

Ansonsten stellt sich mri auch die Frage mit der Einbaulage. Ich schätze mal Du bekommst immer die Koordinaten zum Urpsrung des Parts statt die Lage des Parts zum Produkt, die Du ja eigentlich haben möchtest.

Habe die Methode dazu aber auf die Schnelle auch nicht parat... :-(

------------------
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

MarkusK
Mitglied



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

Beiträge: 130
Registriert: 09.08.2002

Dell Precision T5500
Intel Xenon X5560 4x 2,8 GHz
12 GB Ram
NVIDIA Quadro FX 3800
Win XP
Catia V5R19 SP3

erstellt am: 04. Apr. 2014 21: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 Antelito 10 Unities + Antwort hilfreich

Hallo,

ich habe mir mal ein Tool gebaut um eine Schweißzange an die entsprechenden Schweißpunkte zu setzen.
Wobei in der Zange eine Achse vorhanden ist (nicht auf 0), die als Werkzeug-Mittelpunkt gilt, und die Punkte auch in einem Part verteilt sind.

Die Punkte sowie die Zange liegen dabei irgendwo in einem Produkt mit beliebiger "Tiefe".
Es ging dann darum die Instanz der Zange so zu positionieren dass die Werkzeug-Achse der Zange mit dem entsprechendem Punkt übereinkommt.

Lange Rede, kurzer...
Ich musste mir die Lage der einzelnen Parts, im Produkt ermitteln.

Wenn ich es noch richtig weiß hatte ich damals auch das so ein Problem, da ich nicht die Instanz alos nicht das "Produkt" der Instanz genommen habe.
Das Part selbst (im Symbol mit Weißem Blatt und Zahnrad) ist ja nicht direkt im Produkt angehängt, sonder es ist ja immer noch die Instanz oder "Komponente" dazwischen. Und um die geht es.

hier mal mein Code in Auszügen:

1. Auswahl der Achse und ermitteln des Zangparts, sowie der Instanz.

Code:

SelFilter(0) = "AxisSystem"
Me.Hide
sStatus = sel.SelectElement2(SelFilter, "Bitte die Achse einer Zange auswählen. ESC=Abbrechen", False)
If sStatus <> "Cancel" Then ' Wenn Auswahl nicht abgebrochen
   
    Set ZangenProdukt = sel.Item(1).LeafProduct ' dazugehörige Instanz der Zange um diese Zange wieder zu finden
    Set oZangenAchse = sel.Item(1).Value
    Set ZangenPart = oZangenAchse.Parent.Parent

2. das oberste Produkt ermitteln

Code:
            Set oDoc = CATIA.ActiveDocument
            Set RootProdukt = oDoc.Product

3. und dann rekrusiv die Position der Instanz ermitteln

Code:

GetAbsPosition ZangenProdukt.Parent.Parent, RootProdukt, ZangenParentAbsolutPosition ' absolute Position der Zange

Public Sub GetAbsPosition(ByRef oProduct, ByRef oRoot, ByRef position)
'On Error Resume Next
If (oProduct.Name = oRoot.Name) Then
  position(0) = 1#
  position(1) = 0#
  position(2) = 0#
  position(3) = 0#
  position(4) = 1#
  position(5) = 0#
  position(6) = 0#
  position(7) = 0#
  position(8) = 1#
  position(9) = 0#
  position(10) = 0#
  position(11) = 0#
Else
  Dim positionToFather(11)
  Dim fatherAbsolutePosition(11)
  oProduct.position.GetComponents positionToFather
  GetAbsPosition oProduct.Parent.Parent, oRoot, fatherAbsolutePosition
  MatrixProduct positionToFather, fatherAbsolutePosition, position
End If
End Sub

Public Sub MatrixProduct(ByVal matrix1, ByVal matrix2, ByRef res)
Dim a(11)
Dim b(11)
Dim i As Integer

For i = 0 To 11
  a(i) = matrix1(i)
  b(i) = matrix2(i)
Next

res(0) = a(0) * b(0) + a(1) * b(3) + a(2) * b(6)
res(3) = a(3) * b(0) + a(4) * b(3) + a(5) * b(6)
res(6) = a(6) * b(0) + a(7) * b(3) + a(8) * b(6)
res(1) = a(0) * b(1) + a(1) * b(4) + a(2) * b(7)
res(4) = a(3) * b(1) + a(4) * b(4) + a(5) * b(7)
res(7) = a(6) * b(1) + a(7) * b(4) + a(8) * b(7)
res(2) = a(0) * b(2) + a(1) * b(5) + a(2) * b(8)
res(5) = a(3) * b(2) + a(4) * b(5) + a(5) * b(8)
res(8) = a(6) * b(2) + a(7) * b(5) + a(8) * b(8)
res(9) = a(9) * b(0) + a(10) * b(3) + a(11) * b(6) + b(9)
res(10) = a(9) * b(1) + a(10) * b(4) + a(11) * b(7) + b(10)
res(11) = a(9) * b(2) + a(10) * b(5) + a(11) * b(8) + b(11)
End Sub



------------------
Gruss Markus

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