Autor
|
Thema: Winkel zwischen 2 Linien messen (4912 mal gelesen)
|
dabaeda Mitglied
Beiträge: 15 Registriert: 05.03.2007 Catia V5 R14 SP5 Build 14 Hot Fix 35
|
erstellt am: 08. Mai. 2007 14:00 <-- editieren / zitieren --> Unities abgeben:
Hallo, vielleicht hat jmd ne Idee dazu: ich möchte den Winkel zwischen einer Linie(line) und einer anderen Linie(projection) messen, und dann in Excel abspeichern. Beide Linien sind nicht in einem Sketch, sondern als 3D-Geometrie in einem Geoset. 1.Mit welchem Befehl kann man denn Winkel messen? 2.Wie kann ich dann die Winkel weitergeben? Später muss ich viele Winkel (automatisch) messen, und diese dann als txt-File speichern. Beim speichern von koordinaten habe ich das bisher so gemacht: Zitat: Redim aCoord(2)dim Datei as File set Datei = CATIA.FileSystem.CreateFile ("u:\Daten\Output.txt", True) dim ostream as TextStream set ostream = Datei.OpenAsTextStream ("ForAppending") set oshapes = CATIA.ActiveDocument.Part.HybridBodies.Item("Macropunkte").HybridShapes For i=1 to oshapes.count oshapes.item(i).getcoordinates aCoord ostream.Write(acoord(0) & ";" & acoord(1) & ";" & acoord(2) & Chr(10)) Next ostream.close
Bin für jede Antwort dankbar. Gruß dabaeda P.s.: Verwende CATScript Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
YellowDevil Mitglied PI, Makroentwicklung, NC Automatisierung
Beiträge: 67 Registriert: 21.12.2006
|
erstellt am: 08. Mai. 2007 14:29 <-- editieren / zitieren --> Unities abgeben: Nur für dabaeda
Dim TheSPAWorkbench As Workbench Dim aTheMeasurable,bTheMeasurable As Measurable Dim angle1 Dim reference1 As Reference Dim reference2 As Reference Set reference1=part1.CreateReferenceFromObject('deine erste Linie') Set reference2=part1.CreateReferenceFromObject('deine zweite Linie') Set TheSPAWorkbench=CATIA.ActiveDocument.GetWorkbench("SPAWorkbench") Set aTheMeasurable=TheSPAWorkbench.GetMeasurable(reference1) angle1=aTheMeasurable.GetAngleBetween(reference2) Ich hoffe das hilft dir weiter. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dabaeda Mitglied
Beiträge: 15 Registriert: 05.03.2007 Catia V5 R14 SP5 Build 14 Hot Fix 35
|
erstellt am: 09. Mai. 2007 11:26 <-- editieren / zitieren --> Unities abgeben:
Danke für den Tip, leider funkt das nicht ganz. Folgenden Code habe ich: Zitat: Dim angle1 Dim TheSPAWorkbench As Workbench Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench ( "SPAWorkbench" ) Dim TheMeasurable As Measurable Set TheMeasurable = TheSPAWorkbench.Measurable(RefPtRichtung) 'Hier liegt der Fehler angle1 = TheMeasurable.GetAngleBetween(RefProjektionNormale(0))
Fehlerbewschreibung: Das Objekt unterstürtz diese Eigenschaft/Methode nicht.:'TheSPAWorkbench.Measurable' Stimmt das mit der referenz was nicht, oder was könnte das sein? RefPtRichtung ist eine Referenz von einer LinePtDir RefProjektionNormale(0) ist eine Referenz von einem Project Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proofin Mitglied Dpl.Ing
Beiträge: 208 Registriert: 24.11.2004
|
erstellt am: 09. Mai. 2007 12:50 <-- editieren / zitieren --> Unities abgeben: Nur für dabaeda
Moin dabaeda, kann es sein das du dich in der Zeile: "Set TheMeasurable = TheSPAWorkbench.Measurable(RefPtRichtung) 'Hier liegt der Fehler" vertippt hast? Es sollte heissen: Set TheMeasurable = TheSPAWorkbench.GetMeasurable(RefPtRichtung) Gruß Proofin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
YellowDevil Mitglied PI, Makroentwicklung, NC Automatisierung
Beiträge: 67 Registriert: 21.12.2006
|
erstellt am: 09. Mai. 2007 14:10 <-- editieren / zitieren --> Unities abgeben: Nur für dabaeda
|
dabaeda Mitglied
Beiträge: 15 Registriert: 05.03.2007 Catia V5 R14 SP5 Build 14 Hot Fix 35
|
erstellt am: 09. Mai. 2007 15:40 <-- editieren / zitieren --> Unities abgeben:
Hm, werde das morgen gleich mal probieren und das Ergebnis hier dann posten. In der VB-Hilfe von Catia ist das ohne Get gestanden, deswegen hatte ich das nicht reingeschrieben. Vielen Danke nochmal für die Hinweise. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dabaeda Mitglied
Beiträge: 15 Registriert: 05.03.2007 Catia V5 R14 SP5 Build 14 Hot Fix 35
|
erstellt am: 10. Mai. 2007 10:19 <-- editieren / zitieren --> Unities abgeben:
Nun hat es geklappt (fast). Mit dem Code: Zitat: Dim angle(100) Dim TheSPAWorkbench As Workbench Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench ( "SPAWorkbench" ) Dim TheMeasurable(100) As Measurable dim zaehler as double for zaehler=1 to 10 'Hier liegt ein Problem Set TheMeasurable(zaehler) = TheSPAWorkbench.GetMeasurable(RefPtRichtung(zaehler)) angle(zaehler) = TheMeasurable(zaehler).GetAngleBetween(RefProjektionNormale(zaehler)) next
Habe ich nun folgendes Problem: Schreibe ich: for zaehler=1 to 9, dann geht alles einwandfrei, bei: for zaehler=1 to 10kommt die Fehlermeldung: Typen unverträglich: 'TheSPAWorkbench.GetMeasureable' in der Zeile: Zitat: Set TheMeasurable(zaehler) = TheSPAWorkbench.GetMeasurable(RefPtRichtung(zaehler))
RefPtRichtung(10) ist aber vorhanden. Woran könnte das liegen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dabaeda Mitglied
Beiträge: 15 Registriert: 05.03.2007 Catia V5 R14 SP5 Build 14 Hot Fix 35
|
erstellt am: 10. Mai. 2007 12:06 <-- editieren / zitieren --> Unities abgeben:
Habe den Fehler gefunden: scheinbar kommt Catia nicht mit RefPtRichtung(10) und RefProjektionNormale(10) in dem Ausdruck klar, auch nicht wenn ich in der ersten Schleife nur bis 9 zähle, und ein einer seperaten Schleife dann die 10 erzeuge. Lösung: RefPtRichtung(10) in RefPtRichtung(11) (bei anderer Referenz analog) umbenannt und folgenden Code eingefügt: Zitat: dim bThemeasurable as Measurable set bTheMeasurable = TheSPAWorkbench.GetMeasurable (RefPtRichtung(11)) angle(10) = bTheMeasurable.GetAngleBetween(RefProjektionNormale(11))
Nicht ganz sauber, aber zumindest ne Lösung. Mich würde an dieser Stelle nur interessieren, warum ich einen Workaround machen muss? Kann das daran liegen, da kein RefPtRichtung(0), RefProjektionNormale(0) vorhanden sind? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 10. Mai. 2007 23:05 <-- editieren / zitieren --> Unities abgeben: Nur für dabaeda
Hallo dabaeda, mal eine andere Fehler-Idee: Warum ist Dein "zaehler" ein "double"? Sollte es nicht ein "integer" sein? Vielleicht ist ja das schon die Lösung? Wenn nicht, ändert sich vielleicht die Fehlermeldung? mfg, Lusilnie
------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dabaeda Mitglied
Beiträge: 15 Registriert: 05.03.2007 Catia V5 R14 SP5 Build 14 Hot Fix 35
|
erstellt am: 14. Mai. 2007 08:23 <-- editieren / zitieren --> Unities abgeben:
|
| Bauingenieur TGA (m/w/d) im Bereich der Gebäudesanierung und Instandhaltung | Die Kassenärztliche Vereinigung Baden-Württemberg organisiert mit ihren über 23.500 Ärzten und Psychotherapeuten die ambulante medizinische Versorgung von über neun Millionen Versicherten der gesetzlichen Krankenversicherung in Baden-Württemberg. Das Aufgabenspektrum unserer rund 2.000 Beschäftigten ist vielfältig und abwechslungsreich, weil unsere Verantwortung dem höchsten Gut überhaupt gilt: unserer Gesundheit.... | Anzeige ansehen | Bauwesen |
|
imation1999 Mitglied dipl.-ing. Maschinenbau
Beiträge: 276 Registriert: 02.08.2011 Dell Precision T3500 Intel® Xeon® Quad Core NVIDIA Quadro® 5000 Win7 x64 Ultimate CATIA V5 R20 SP2
|
erstellt am: 23. Sep. 2012 09:51 <-- editieren / zitieren --> Unities abgeben: Nur für dabaeda
Hallo Zusammen, mit folgende Code möchte ich den Winkel zwischen 2 Linie messen: Code: Language="VBSCRIPT"Sub CATMain() Dim partDocument1 As Document Set partDocument1 = CATIA.ActiveDocument Dim part1 As Part Set part1 = partDocument1.Part Dim UserSelection as Selection Set UserSelection = CATIA.ActiveDocument.Selection Dim Mes1 As Reference dim status Dim Was(0) Was(0)="Line" UserSelection.Clear status=UserSelection.SelectElement2(was, "Select a Line", False) Set Mes1=part1.CreateReferenceFromObject(UserSelection.Item(1).Value) Dim Mes2 As Reference UserSelection.Clear status=UserSelection.SelectElement2(was, "Select a Line", False) Set Mes2=part1.CreateReferenceFromObject(UserSelection.Item(1).Value) Set TheSPAWorkbench =CATIA.ActiveDocument.GetWorkbench("SPAWorkbench") Set TheMeasurable =TheSPAWorkbench.GetMeasurable(Mes1) angle =TheMeasurable.GetAngleBetween(Mes2) MsgBox angle UserSelection.Clear End Sub
Mein Makro liefert MANCHMAL die falsche (komplement) Winkel, MANCHMAL die richtige. (Siehe Bild: Grün: Das Ergebnis ist eine komplement Winkel Schwarz: Das Ergebnis ist die richtige Winkel Die Linien stehen unter dem gleichen Winkel)
Wovon hängt es ab? @Edit
Hat jemand ne Idee dazu? [Diese Nachricht wurde von imation1999 am 08. Apr. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |