Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Winkel zwischen 2 Linien messen

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:  Winkel zwischen 2 Linien messen (4912 mal gelesen)
dabaeda
Mitglied



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

Beiträge: 15
Registriert: 05.03.2007

Catia V5 R14 SP5 Build 14 Hot Fix 35

erstellt am: 08. Mai. 2007 14:00    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,

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


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

Beiträge: 67
Registriert: 21.12.2006

erstellt am: 08. Mai. 2007 14:29    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 dabaeda 10 Unities + Antwort hilfreich

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



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

Beiträge: 15
Registriert: 05.03.2007

Catia V5 R14 SP5 Build 14 Hot Fix 35

erstellt am: 09. Mai. 2007 11:26    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

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


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

Beiträge: 208
Registriert: 24.11.2004

erstellt am: 09. Mai. 2007 12:50    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 dabaeda 10 Unities + Antwort hilfreich

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


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

Beiträge: 67
Registriert: 21.12.2006

erstellt am: 09. Mai. 2007 14: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 dabaeda 10 Unities + Antwort hilfreich

Nehme ich auch mal an,dass es am Get liegt. Sonst ist am Code ja alles richtig.

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

dabaeda
Mitglied



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

Beiträge: 15
Registriert: 05.03.2007

Catia V5 R14 SP5 Build 14 Hot Fix 35

erstellt am: 09. Mai. 2007 15:40    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

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



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

Beiträge: 15
Registriert: 05.03.2007

Catia V5 R14 SP5 Build 14 Hot Fix 35

erstellt am: 10. Mai. 2007 10:19    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

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



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

Beiträge: 15
Registriert: 05.03.2007

Catia V5 R14 SP5 Build 14 Hot Fix 35

erstellt am: 10. Mai. 2007 12: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

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



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

Beiträge: 1486
Registriert: 13.07.2005

erstellt am: 10. Mai. 2007 23:05    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 dabaeda 10 Unities + Antwort hilfreich

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



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

Beiträge: 15
Registriert: 05.03.2007

Catia V5 R14 SP5 Build 14 Hot Fix 35

erstellt am: 14. Mai. 2007 08: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

Hallo Lusiline,

das hat leider nicht geklappt.
Gleiche Fehlermeldung.
Aber trotzdem danke.

Gruß
dabaeda

[Diese Nachricht wurde von dabaeda am 14. Mai. 2007 editiert.]

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



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 ansehenBauwesen
imation1999
Mitglied
dipl.-ing. Maschinenbau


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

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 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 dabaeda 10 Unities + Antwort hilfreich


Bild11.jpg

 
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

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