Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Punktabstand zwischen versch. Produkten & Parts

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:   Punktabstand zwischen versch. Produkten & Parts (2548 mal gelesen)
  
Die Gewinne der Zukunft werden mit intelligenten, autonomen Elektrofahrzeugen eingefahren. (3DEXPERIENCE)
Alexander.Stud
Mitglied



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

Beiträge: 30
Registriert: 15.09.2012

CATIA V5 R19SP9
WINDOWS XP & WINDOWS 7

erstellt am: 08. Jan. 2013 14: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

Hallo zusammen,

ich habe ein kleines Problem zum Thema "Messen von Punkten in einem Produkt". Ich habe auch schon das cad.de-Forum und sonstige Quellen durchforstet, allerdings nicht die passende Lösung für mich gefunden.

Ich habe folgende Struktur:

Product
  '- Product1(Product1.1)
        '- Part1
              '-...
                  '- Point.WZ
                  '- Point.UX
  '- Product1(Product1.2)
        '- Part1
              '-...
                  '- Point.WZ
                  '- Point.UX

Wie schon zu erkennen ist werden (mindestens) zweimal die identischen Bauteile(Parts) verwendet. Das ist aber erst einmal nicht mein Problem. Ich möchte nun mit einem Makro den Abstand zwischen den beiden gleichbenannten Parts anhand der Punkte "Point.WZ" oder "Point.UX" messen. Sprich die Strecke von "part1.point.wz" zu "part1.point.wz".

Mein bisheriger Code (Scriptsprache = VBA) sieht wie folgt aus, dieser funktioniert NOCH über eine händige Selektion der Punkte durch den User:
----------------------------------------
Sub CATMain()

'### Ersten Punkt per UserSel auswählen
Set Selection1 = CATIA.ActiveDocument.Selection
    Dim Elementtyp(0)
    ElementTyp(0) = "Point"
    Selection1.Clear
    A = Selection1.SelectElement2(ElementTyp, "Ersten Punkt auswählen!", False)

    Dim Reference1 As Reference
    Set Reference1 = Selection1.Item(1).Reference

    Selection1.Clear

'### Zweiten Punkt per UserSel auswählen
Set Selection1 = CATIA.ActiveDocument.Selection
    Dim Elementtyp2(0)
    ElementTyp2(0) = "Point"
    Selection1.Clear
    A = Selection1.SelectElement2(ElementTyp2, "Zweiten Punkt auswählen!", False)

    Dim Reference2 As Reference
    Set Reference2 = Selection1.Item(1).Reference

    Selection1.Clear

'### Messen:

Dim TheSPAWorkbench As Workbench
Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")
Dim TheMeasurable = TheSPAWorkbench.GetMeasurable(Reference1)
Dim Distance As Double
Distance = TheMeasurable.GetMinimumDistance(reference)

MsgBox Distance

End Sub
----------------------------------------
Wähle ich nun Punkte im selben Part an, so funktioniert es und er gibt mir den richtigen Wert raus (Bsp. „Part1.Point.wz“ zu „Part1.Point.ux“). Allerdings kann ich nicht partübergreifend messen. Das Problem wurde hier im Forum bereits thematisiert, aber leider ohne funktionierendes Ergebnis beendet.
Das Makro starte ich während die oberste Produktebene aktiv ist.

Vielleicht kann mir jemand helfen?!

Danke und VG
Alexander

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: 08. Jan. 2013 14:42    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 Alexander.Stud 10 Unities + Antwort hilfreich

Hallo Alexander,

ich glaube Du kannst immer nur die Punktkoordinaten in Relation zum Ursprung Deines Parts ermitteln.
Das ist aber nicht schlimm, denn Du kannst auch die Koordinaten des Ursprungs Deines Parts auf Produktebene ermitteln.
Ich glaube das geht über die Funktion GetComponents(). Diese müsstest Du auf das ReferenceProduct Deines Parts anwenden und eine 12er Matrix zurück bekommen.

Daraus kannst Du die absoluten Koordinaten Deiner Punkte ermitteln. Nun bildest Du einen Vektor zwischen Deinen Punkten und der Betrag des Vektors wäre der Abstand.

Also:
- CoordPoint1()
- CoordPoint2()
- CoordPart1()
- CoordPart2()

absoluteCoord1() = CoordPart1() + CoordPoint1()
absoluteCoord2() = CoordPart2() + CoordPoint2()

VektorBetween() = absoluteCoord2() - absoluteCoord1()

Abstand = | VektorBetween() |

Hoffe richtig zu liegen, weil ist grad aus der Hüfte geschossen. :-)

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

Alexander.Stud
Mitglied



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

Beiträge: 30
Registriert: 15.09.2012

CATIA V5 R19SP9
WINDOWS XP & WINDOWS 7

erstellt am: 08. Jan. 2013 16:02    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

Hey Henry,

dein Hüftschuss hat mich aber auf die einfachere Umsetzung gebracht :-)
Ich berechne mir nun einfach den Vektor aus den Koordinatenpunkten, sind zum Berechnen nur 4 Zeilen. Brauche aber nicht zwischen den Koordinatenpunkten des Points und der des Parts zu differenzieren. Muss lediglich die der Points mitnehmen und in die Berechnung einbeziehen. Was mir auch recht ist, dass ich somit die SPAWorkbench komplett raus lassen kann.

Grüße
Alexander

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

CadV5UserR
Mitglied
Dipl.Ing. Maschinenbau


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

Beiträge: 78
Registriert: 18.04.2008

Windows 7 x64 Professional SP1
Dell Precision T3500
Intel Xeon CPU W3580 3.33GHz
24Gb Ram
NVIDIA Qudro 4000
Catia V5R20 Sp6
SmarTeam V5R20 SP6

erstellt am: 08. Jan. 2013 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 Nur für Alexander.Stud 10 Unities + Antwort hilfreich

Hallo Alexander,


Doch du kannst im aktiven Produkt (!!!) auch den Abstand von Punkten messen.
Dabei ist es egal ob die Punkte in unterschiedlichen Parts sind oder das gleiche Part mehrmals verbaut ist.

Im Grunde hattest du schon den richtigen Ansatz das ganze einfach zu messen.
Leider kann/darf ich dir mein komplettes Script nicht zeigen. Habe hier aber mal die wichtigsten Punkte.

Im Grunde hangelst du dich im aktiven Produkt durch die Parts und dann durch die Punkte und holst dir davon die Referenz
-> Set ref1 = product1.CreateReferenceFromName("Product1/Part1.1/!Punkt.1")
-> Set ref2 = product1.CreateReferenceFromName("Product1/Part2.1/!Punkt.1")
-> Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench ( "SPAWorkbench" )
-> Set TheMeasurable = TheSPAWorkbench.GetMeasurable(ref1)
-> TheMeasurable.GetMinimumDistancePoints ref2, Coordinates


Hier ein kurzer Auszug von meinem Script:
……..
Set partDocument1 = productDocument1.Products.Item(N).ReferenceProduct.Parent
exemplarName = product1.Products.Item(N).Name
……..

……..
Set part1 = partDocument1.Part

Set hybridBodies1 = part1.HybridBodies

Set hybridBody1 = hybridBodies1.Item(1)

Set hybridShapeFactory1 = part1.HybridShapeFactory

Set ohShapes = hybridBody1.HybridShapes

part1.Update

' Set ref1 = product1.CreateReferenceFromName("Product1/Part1.1/!Punkt.1")

Set ref1 = product1.CreateReferenceFromName(product1.Name & "/" & exemplarName & "/!" & ohShapes.Item(1).Name)

……..

Set part2 = partDocument2.Part

Set hybridBodies2 = part2.HybridBodies

Set hybridBody2 = hybridBodies2.Item(1)

Set hybridShapeFactory2 = part2.HybridShapeFactory

Set ohShapes2 = hybridBody2.HybridShapes

part2.update

PunktName01 = ohShapes2.Item(1).Name

PfadName01 = PfadName01 & PartName01 &"/!" &PunktName01


' Set ref2 = product1.CreateReferenceFromName("Product1/Part2.1/!Punkt.1")
Set ref2 = product1.CreateReferenceFromName(PfadName01)


Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench ( "SPAWorkbench" )
Set TheMeasurable = TheSPAWorkbench.GetMeasurable(ref1)
TheMeasurable.GetMinimumDistancePoints ref2, Coordinates


Das Script ist so nicht funktionsfähig, das auslesen von
PartName01 und PfadName01 fehlt.
Für verschachtelte Produkte ist etwas aufwendiger
Ich habe im Moment leider nicht so viel Zeit, hoffe aber das kann dir helfen.

Grüße,
Ralf

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

Alexander.Stud
Mitglied



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

Beiträge: 30
Registriert: 15.09.2012

CATIA V5 R19SP9
WINDOWS XP & WINDOWS 7

erstellt am: 09. Jan. 2013 07:53    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 Ralf,

danke für deine Code-Auszüge. So in der Art hatte ich es vorher auch schon. Lediglich mit dem Unterschied, dass ich eine UserSel verwendet habe und verwenden will. Hier taucht dann mein Problem zu dieser Vorgehensweise auf: Der User soll NICHT den Punkt auswählen sondern das Part in dem der Punkt liegt. Anhand des Parts soll der Punkt gefunden werden, allerdings kann ich wenn ich "Selection.Search" zu einer bestehenden Selection benutze nicht die Koordinaten des Punktes verwenden. Beispiel:

Selection1.Search ".Point.Name = Point.UX; sel"

Gibt es denn für den Fall MEINER Selection auch eine Lösung, sodass ich den User nur das part auswählen lasse? DAs Problem besteht natürlich auch bei HoBLila's Lösung.

VG
Alexander

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

K.Siebert
Mitglied
Tech Zeichner


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

Beiträge: 415
Registriert: 19.05.2007

Win XP
Catia V5 R19
Catia V5 R24

erstellt am: 09. Jan. 2013 09: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 Nur für Alexander.Stud 10 Unities + Antwort hilfreich

Hallo,
meinst du so was in dieser Art?:

Code:
Dim UserSelektion As Selection
Set  UserSelektion = CATIA.ActiveDocument.Selection

For I = 1 to UserSelektion.Count

Name = (UserSelektion.Item(I).Value.ReferenceProduct.Name)
FullNameX = (UserSelektion.Item(I).Value.ReferenceProduct.Parent.Fullname)

if Name = "" Then
Box = msgbox ("KEIN TEIL SELEKTIERT" , vbCritical, "Abbruch")
Exit sub
end if

msgbox "Name=  " + Name

next


------------------
Sei Schlau bleib Dumm !!?!!

[Diese Nachricht wurde von K.Siebert am 09. Jan. 2013 editiert.]

[Diese Nachricht wurde von K.Siebert am 09. Jan. 2013 editiert.]

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

CadV5UserR
Mitglied
Dipl.Ing. Maschinenbau


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

Beiträge: 78
Registriert: 18.04.2008

Windows 7 x64 Professional SP1
Dell Precision T3500
Intel Xeon CPU W3580 3.33GHz
24Gb Ram
NVIDIA Qudro 4000
Catia V5R20 Sp6
SmarTeam V5R20 SP6

erstellt am: 09. Jan. 2013 10:39    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 Alexander.Stud 10 Unities + Antwort hilfreich

Hallo,

Das Problem ist nicht ganz so einfach wie es sich anhört.
Wenn man eine Messung direkt mit dem Ergebnis einer Selektion macht, wird die Einbau – Position im Produkt nicht berücksichtigt !

Was K.Siebert beschrieben hat liefert den Namen des Punktes.
Name = (selection1.Item(i).Value.Name)
Liefert : “Punkt.1”

Name = (selection1.Item(i).Value.ReferenceProduct.Name)
Sollte den gebrauchten Namen des Parts zeigen. Liefert aber einen Fehler da die Methode nicht unterstützt wird, da wir keine Suche über ein Produkt haben, sondern leider nur eine Selektion.

Du brauchst für die Messung den ganzen Namen mit Pfad.
-> Product1/Part1.1/!Punkt.1

Wie du von einer Selektion auf den Namen des Parts kommst, den du brauchst kann ich dir leider nicht sagen.
Wenn du dir den Debugger mal genauer anschaust, kannst du sehr gut sehen was man wie auslesen kann. Aber auf den Namen des Parts komme ich nicht.
selection1.Parent.Name liefert nur das aktive Produkt in dem die Auswahl ausgeführt wird.


Ich bin mir nicht sicher ob du über eine Selektion ans Ziel kommst.

Grüße,
Ralf

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

Alexander.Stud
Mitglied



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

Beiträge: 30
Registriert: 15.09.2012

CATIA V5 R19SP9
WINDOWS XP & WINDOWS 7

erstellt am: 09. Jan. 2013 10: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

Hi K.,

das sieht schon gut aus, danke! Aber eine blöde Frage habe ich noch: Wo hinterlege ich jetzt den zu suchenden Punkt, bei mir Point.UX?  

Stand jetzt wird die Methode nicht von VBA in CATIA akzeptiert.

VG
Alexander

Edit: Antwort auf Beitrag von Ralf

Hm, dann müsste ich es mit ein paar Schleifen abfangen, sprich: wird ein Part XY selektiert, dann benutze den hinterlegten Pfad. Glücklicherweise wäre das kein Problem, da es sich um nicht veränderbare "Normteile" aus einer Bibliothek handelt...


[Diese Nachricht wurde von Alexander.Stud am 09. Jan. 2013 editiert.]

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

Alexander.Stud
Mitglied



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

Beiträge: 30
Registriert: 15.09.2012

CATIA V5 R19SP9
WINDOWS XP & WINDOWS 7

erstellt am: 09. Jan. 2013 11: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

Ich stehe grad völlig auf dem Schlauch...

Wenn ich den Pfad zum Point.UX haben will, wie sollte dieser denn dann aussehen:
Test1 (oberstes Produkt)
  '- TestProd1
        '- TestPart1
              '-...
              '-Geometrical Set
                  '- Point.WZ
                  '- Point.UX

Den Pfad muss ich ja dann "nur" in das Beispiel von Ralf einsetzen (Set ref1 = product1.CreateReferenceFromName(product1.Name & "/" & exemplarName & "/!" & ohShapes.Item(1).Name)) oder?

VG
Alexander

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

CadV5UserR
Mitglied
Dipl.Ing. Maschinenbau


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

Beiträge: 78
Registriert: 18.04.2008

Windows 7 x64 Professional SP1
Dell Precision T3500
Intel Xeon CPU W3580 3.33GHz
24Gb Ram
NVIDIA Qudro 4000
Catia V5R20 Sp6
SmarTeam V5R20 SP6

erstellt am: 09. Jan. 2013 11: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 Alexander.Stud 10 Unities + Antwort hilfreich

Hallo,

Ich hoffe das ich deine Frage richtig verstanden habe.

Wenn du ein Produkt hast wie folgt:

RootProduct : Product59
  |
  |- Product : Part1 (Part1.1)
  |
  |- Product : Product1 (Product1.1)
        |
        |- Product : Product2 (Product2.1)
              |
              |- Product : Part2 (Part2.1)

Dann sollte deine Reference so aussehen:
Set ref1 = product1.CreateReferenceFromName("Product59/Part1.1/!Punkt.1")
Set ref2 = product1.CreateReferenceFromName("Product59/Product2.1//Part2.1/!Punkt.1")

Ich hatte dazu in meinen Script den Pfad so aufgebaut
product1.Name liefert : Product59
exemplarName  der als schleife den Pfad bis zum Part addiert bekommt : Product2.1//Part2.1
fehlt in meinem Beispiel.
ohShapes.Item(1).Name liefert : Punkt.1

Dann setze ich den String einfach zusammen

Grüße,
Ralf

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

Alexander.Stud
Mitglied



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

Beiträge: 30
Registriert: 15.09.2012

CATIA V5 R19SP9
WINDOWS XP & WINDOWS 7

erstellt am: 09. Jan. 2013 13: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

Ich bins nochmal  

danke Ralf :-)
Ich habe nun einen etwas anderen Weg gefunden aber deine Ideen eingebaut, dieser funktioniert leider nicht GLOBAL gesehen:
___________________________
Sub CATMain()

Set selection1 = CATIA.ActiveDocument.Selection
    Dim ElementTyp(0)
    ElementTyp(0) = "Part"
    selection1.Clear
   
    Auswahl = selection1.SelectElement2(ElementTyp, "Wählen Sie ein Part aus...", False)
        If Auswahl = "Normal" Then
        Set Element1 = selection1.Item(1)
        End If

Dim hybridBodies1 As HybridBodies
Set hybridBodies1 = Element1.Value.HybridBodies

Dim hybridBody1 As HybridBody
Set hybridBody1 = hybridBodies1.Item("Geometrie")       '## "Geometrie" ist geometrisches Set

MsgBox hybridBody1.Name    '----> gibt richtiges Set aus

Dim hybridShapes1 As HybridShapes
Set hybridShapes1 = hybridBody1.HybridShapes

Dim hybridShapePointCoord1 As HybridShapePointCoord
Set hybridShapePointCoord1 = hybridShapes1.Item("Point.UX")      '## "Point.UX" ist ges. Punkt

Dim oSTR As String
oSTR = hybridShapePointCoord1.Name
MsgBox oSTR      '----> gibt richtigen Punkt aus

Set Element1 = hybridShapePointCoord1
Dim Koordinaten(2)
Element1.GetCoordinates Koordinaten
MsgBox "x= " & Koordinaten(0)       '----> nur lokale Koordinaten (0,0,0)  
MsgBox "y= " & Koordinaten(1)
MsgBox "z= " & Koordinaten(2)
selection1.Clear

End Sub
___________________________


Mit den MsgBoxen lasse ich mir die Namen der "gefundenen" Objekte ausgeben, diese sind auch alle richtig. Jedoch sind die Koordinaten am Ende nur lokal (0, 0, 0,). Der Punkt liegt im Ursprung des Achsensystems des selektierten Parts.
Womit ich wieder am Anfang wäre?! Kann ich diese an dieser Stelle global "setzen" sodass ich den Abstand der Koordinaten zum Produktursprung habe??

Hoffe es geht irgendwie?!

DANKE & VG

[Diese Nachricht wurde von Alexander.Stud am 09. Jan. 2013 editiert.]

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

CadV5UserR
Mitglied
Dipl.Ing. Maschinenbau


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

Beiträge: 78
Registriert: 18.04.2008

Windows 7 x64 Professional SP1
Dell Precision T3500
Intel Xeon CPU W3580 3.33GHz
24Gb Ram
NVIDIA Qudro 4000
Catia V5R20 Sp6
SmarTeam V5R20 SP6

erstellt am: 09. Jan. 2013 16: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 Alexander.Stud 10 Unities + Antwort hilfreich

Hallo,

Ich denke, dass du so nicht zum Erfolg kommen wirst.    Lasse mich aber sehr gerne korrigieren!
Du liest so die Koordinaten im Part, bezogen auf das Part aus. 
Meiner Meinung kommst du nicht um eine Messung herum, die wie in meinem Beispiel am Anfang aufs Produkt bezogen laufen muss.

Vielleicht gibt es noch andere Meinungen dazu!??

Grüße,
Ralf

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

Alexander.Stud
Mitglied



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

Beiträge: 30
Registriert: 15.09.2012

CATIA V5 R19SP9
WINDOWS XP & WINDOWS 7

erstellt am: 10. Jan. 2013 10: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

Ich habe jetzt nochmal einiges ausprobiert und rumgemurkst, aber funktionieren tut es nicht :-(

Hier nochmal mein Code-Auszug und die zugehörige Struktur zum setzen der Referenzen, nach deinem Ansatz Ralf:

Code:
Strukturbaum:
PRODUCT1
  '- Abdeckblech.1 (Product)
      '- Abdeckblech (Part)
          '- Geometrie (geometrisches Set)
              '- Point.UX (Punkt im geometrischen Set)
  '- Abdeckblech.2 (Product)
      '- Abdeckblech (Part)
          '- Geometrie (geometrisches Set)
              '- Point.UX (Punkt im geometrischen Set)

Und hier der Code:

Dim product1 As Product
Set product1 = CATIA.ActiveDocument.Product

Dim ref1 As Reference
Dim ref2 As Reference
Set ref1 = product1.CreateReferenceFromName("product1/Abdeckblech.1/Abdeckblech/Geometrie/!Point.UX)
Set ref1 = product1.CreateReferenceFromName("product1/Abdeckblech.2/Abdeckblech/Geometrie/!Point.UX)

'######## --> lasse ich mir hier den ref1.Name ausgeben erhalte ich "CATIA-Reference"

Dim Coordinates(8)
Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")
Set Measurable1 = TheSPAWorkbench.GetMeasurable(ref1)
Measurable1.GetMinimumDistancePoints ref2, coordinates

'##### --> Lasse ich mir hier über "MsgBox Coordinates (0) etc" die Werte ausgeben erhalte ich nur leere MsgBoxen.


Ich komme einfach nicht dahinter, so dass es funktioniert. 

Danke!

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

CadV5UserR
Mitglied
Dipl.Ing. Maschinenbau


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

Beiträge: 78
Registriert: 18.04.2008

Windows 7 x64 Professional SP1
Dell Precision T3500
Intel Xeon CPU W3580 3.33GHz
24Gb Ram
NVIDIA Qudro 4000
Catia V5R20 Sp6
SmarTeam V5R20 SP6

erstellt am: 10. Jan. 2013 11: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 Alexander.Stud 10 Unities + Antwort hilfreich

Hallo,

Ich habe kurz mal probiert, so funktioniert es bei mir, und er gibt auch den richtigen Abstand raus.

Mir ist da noch einige Kleinigkeiten in deinem Code aufgefallen.
Zuerst hier mal meine Struktur: ( Part und Produkt Abdeckblech zu nennen war mir zu unübersichtlich)

RootProduct : Product1
  |
  |- Product : Abdeckblech (Abdeckblech.1)
        |
        |- Product : Part1 (Part1.1)
  |
  |- Product : Abdeckblech (Abdeckblech.2)
        |
        |- Product : Part1 (Part1.1)

Das Part hat ein Geometrisches Set mit dem Namen
Geometrisches Set.1
Darin ist dann ein Punkt mit dem Namen Point.UX

---------------------------------------------------------------------------------------------------------------------------
Sub CATMain()

Dim product1 As Product
Set product1 = CATIA.ActiveDocument.Product
Dim ref1 As Reference
Dim ref2 As Reference

Set ref1 = product1.CreateReferenceFromName("Product1/Abdeckblech.1/Part1.1/Geometrisches Set.1/!Point.UX")
Set ref2 = product1.CreateReferenceFromName("product1/Abdeckblech.2/Part1.1/Geometrisches Set.1/!Point.UX")    'ref2!!!!


Dim Coordinates(8)
Dim TheSPAWorkbench As Workbench
Dim TheMeasurable As Measurable

Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")
Set TheMeasurable = TheSPAWorkbench.GetMeasurable(ref1)
TheMeasurable.GetMinimumDistancePoints ref2, Coordinates

' Um den Abstand zu erhalten nun die Auswertung:
MsgBox Coordinates(3) - Coordinates(0) & " ; " & Coordinates(4) - Coordinates(1) & " ; " & Coordinates(5) - Coordinates(2) & " ; "
End Sub
---------------------------------------------------------------------------------------------------------------------------

Schreib mal obs funktioniert hat. 

Grüße,
Ralf

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

Alexander.Stud
Mitglied



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

Beiträge: 30
Registriert: 15.09.2012

CATIA V5 R19SP9
WINDOWS XP & WINDOWS 7

erstellt am: 10. Jan. 2013 11:41    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

Hey Ralf,

vielen vielen Dank für deine Mühe!!!

das mit dem ref1 statt ref2 war ein Tippfehler, konnte eben nicht copy/paste sondern musste es rasch abtippen.

Ich habe es genauso wie du, bekomme aber die Werte 0;0;0 heraus 
Funktioniert dein Code in VBA oder ist es irgend ne blöde Einstellungssache?!
Aber mach dir bitte keinen Stress Ralf (auch wenn das vielleicht schon zu spät ist :-))

Zur not verwende ich eine weniger elegante Lösung mit der Auswahl von den Punkten durch den USer...wäre auch akzeptabel!

Danke&Grüße
Alexander

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: 11074
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 10. Jan. 2013 12: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 Nur für Alexander.Stud 10 Unities + Antwort hilfreich

Servus
Bei mir läuft der Code.
Programmierst du im VBA-Editor? Was zeigen die Namen der Referenzen?

Gruß
Bernd

PS: Ggf musst du in VBA TheMeasurable als Object definieren

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

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

Alexander.Stud
Mitglied



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

Beiträge: 30
Registriert: 15.09.2012

CATIA V5 R19SP9
WINDOWS XP & WINDOWS 7

erstellt am: 10. Jan. 2013 12: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

Hallo Bernd,

TheMeasurable hatte ich als Object, weil er sonst einen Fehler meldet und ja ich programmiere im VBA-Editor!

Wenn ich mir die Namen der Referenzen über eine MsgBox (MsgBox Ref1.Name) ausgeben lasse sagt er in der MsgBox "CATIAReference()".

Hm, das verstehe ich nicht, dass es bei euch funktioniert 

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: 11074
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 10. Jan. 2013 12:51    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 Alexander.Stud 10 Unities + Antwort hilfreich

Servus
bei Displayname müsse der zuvor erstellte "Pfad" stehen.
Ist die bei dir so?

Gruß
Bernd

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

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

Alexander.Stud
Mitglied



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

Beiträge: 30
Registriert: 15.09.2012

CATIA V5 R19SP9
WINDOWS XP & WINDOWS 7

erstellt am: 10. Jan. 2013 13:02    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

Bei mir spuckt er "PRODUCT1/!PRODUCT1/" in der MsgBox aus.

Gruß

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: 11074
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 10. Jan. 2013 13:10    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 Alexander.Stud 10 Unities + Antwort hilfreich

Servus
Nur so eine Idee: hast du in den Optionen aktiviert, dass du Bedingungen nur auf veröffentliche Geometrie referenzieren kannst?

Gruß
Bernd

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

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

Alexander.Stud
Mitglied



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

Beiträge: 30
Registriert: 15.09.2012

CATIA V5 R19SP9
WINDOWS XP & WINDOWS 7

erstellt am: 10. Jan. 2013 13: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

Hallo Bernd,

ich habe unter Options/Mechanical Design/Assembly Design/Constraints/Constraints creation --> "Use any geometry" angeklickt. Ich hoffe du meintest diese Option?!

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

Alexander.Stud
Mitglied



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

Beiträge: 30
Registriert: 15.09.2012

CATIA V5 R19SP9
WINDOWS XP & WINDOWS 7

erstellt am: 10. Jan. 2013 18:06    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 ihr beiden,

das Problem ist endlich gelöst, der Code von Ralf funktioniert perfekt!! 
ich habe mein Product noch einmal neu zusammengebaut und nun funktioniert's. Woran es endgültig lag, kann ich nicht sagen...

Also nochmal Danke für diese schwere Geburt!

VG

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)2020 CAD.de | Impressum | Datenschutz