| |
| KISTERS 3DViewStation: Effektiver Know-how-Schutz von sensiblen Produktdaten, eine Pressemitteilung
|
Autor
|
Thema: Punktabstand zwischen versch. Produkten & Parts (3188 mal gelesen)
|
Alexander.Stud Mitglied
Beiträge: 30 Registriert: 15.09.2012 CATIA V5 R19SP9 WINDOWS XP & WINDOWS 7
|
erstellt am: 08. Jan. 2013 14:25 <-- editieren / zitieren --> Unities abgeben:
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
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 / zitieren --> Unities abgeben: Nur für Alexander.Stud
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
Beiträge: 30 Registriert: 15.09.2012 CATIA V5 R19SP9 WINDOWS XP & WINDOWS 7
|
erstellt am: 08. Jan. 2013 16:02 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 79 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 / zitieren --> Unities abgeben: Nur für Alexander.Stud
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
Beiträge: 30 Registriert: 15.09.2012 CATIA V5 R19SP9 WINDOWS XP & WINDOWS 7
|
erstellt am: 09. Jan. 2013 07:53 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 415 Registriert: 19.05.2007 Win XP Catia V5 R19 Catia V5 R24
|
erstellt am: 09. Jan. 2013 09:28 <-- editieren / zitieren --> Unities abgeben: Nur für Alexander.Stud
Hallo, meinst du so was in dieser Art?: Code: Dim UserSelektion As Selection Set UserSelektion = CATIA.ActiveDocument.SelectionFor 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
Beiträge: 79 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 / zitieren --> Unities abgeben: Nur für Alexander.Stud
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
Beiträge: 30 Registriert: 15.09.2012 CATIA V5 R19SP9 WINDOWS XP & WINDOWS 7
|
erstellt am: 09. Jan. 2013 10:44 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 30 Registriert: 15.09.2012 CATIA V5 R19SP9 WINDOWS XP & WINDOWS 7
|
erstellt am: 09. Jan. 2013 11:23 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 79 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 / zitieren --> Unities abgeben: Nur für Alexander.Stud
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
Beiträge: 30 Registriert: 15.09.2012 CATIA V5 R19SP9 WINDOWS XP & WINDOWS 7
|
erstellt am: 09. Jan. 2013 13:56 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 79 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 / zitieren --> Unities abgeben: Nur für Alexander.Stud
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
Beiträge: 30 Registriert: 15.09.2012 CATIA V5 R19SP9 WINDOWS XP & WINDOWS 7
|
erstellt am: 10. Jan. 2013 10:07 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 79 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 / zitieren --> Unities abgeben: Nur für Alexander.Stud
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
Beiträge: 30 Registriert: 15.09.2012 CATIA V5 R19SP9 WINDOWS XP & WINDOWS 7
|
erstellt am: 10. Jan. 2013 11:41 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 10. Jan. 2013 12:27 <-- editieren / zitieren --> Unities abgeben: Nur für Alexander.Stud
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
Beiträge: 30 Registriert: 15.09.2012 CATIA V5 R19SP9 WINDOWS XP & WINDOWS 7
|
erstellt am: 10. Jan. 2013 12:36 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 10. Jan. 2013 12:51 <-- editieren / zitieren --> Unities abgeben: Nur für Alexander.Stud
|
Alexander.Stud Mitglied
Beiträge: 30 Registriert: 15.09.2012 CATIA V5 R19SP9 WINDOWS XP & WINDOWS 7
|
erstellt am: 10. Jan. 2013 13:02 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 10. Jan. 2013 13:10 <-- editieren / zitieren --> Unities abgeben: Nur für Alexander.Stud
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
Beiträge: 30 Registriert: 15.09.2012 CATIA V5 R19SP9 WINDOWS XP & WINDOWS 7
|
erstellt am: 10. Jan. 2013 13:20 <-- editieren / zitieren --> Unities abgeben:
|
Alexander.Stud Mitglied
Beiträge: 30 Registriert: 15.09.2012 CATIA V5 R19SP9 WINDOWS XP & WINDOWS 7
|
erstellt am: 10. Jan. 2013 18:06 <-- editieren / zitieren --> Unities abgeben:
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 |