Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Punkt auf Kurve

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:  Punkt auf Kurve (1278 mal gelesen)
BettinaRauch
Mitglied
BA-Studentin, Fahrzeug-System-Engineering


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

Beiträge: 65
Registriert: 06.07.2009

Catia V5 R19

erstellt am: 03. Aug. 2009 14:43    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,

hab ein Makro programmiert und möchte jetzt prüfen, ob ein bestimmter Punkt auf einer Kurve liegt (3D-Elemente). Hab schon versucht, es über den Abstand zwischen Punkt und Kurve zu lösen. Also wenn Abstand = 0, dann liegt der Punkt auf der Kurve. Leider funktioniert das nicht, da wegen der 3D-Geometrie nicht immer "0" ausgegeben wird, obwohl der Punkt auf der Kurve liegt.
Hat jemand ne andere Idee? Bin für jeden Tipp dankbar.

Gruß Betty

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

tberger
Mitglied
Application Manager CATIA V5 / V6


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

Beiträge: 1385
Registriert: 13.01.2007

WIN 7 64bit
V5R21SP3HF49
3DX/V6 R2016x

erstellt am: 06. Aug. 2009 15: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 BettinaRauch 10 Unities + Antwort hilfreich

Vielleicht kann man einen kleinen Umweg gehen: eine Projektion des Punktes auf die Kurve erzeugen, den neuen Punkt zum alten ausmessen (Wenn du DMU-Lizenzen hast um SPAWorkbench zu nitzen) bzw. eine Line mit den Punkten zu erzeugen. Läuft die Line-Erzeugung auf einen Fehler (weil Anfangspunkt und Endpunkt gleich liegen und die Strecke der Linie 0 wird) könnte man den Fehler abfangen und den Abstand "0" annehmen, also damit "Punkt auf Kurve".

------------------
Grüße aus dem Rheinland

Thomas

+++++++++++++++++++++++++++++++++

CATIA - eine Laune der Natur ...

"Phase 2 in CATIA V5"  - www.tobeplus.de

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

BettinaRauch
Mitglied
BA-Studentin, Fahrzeug-System-Engineering


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

Beiträge: 65
Registriert: 06.07.2009

Catia V5 R19

erstellt am: 07. Aug. 2009 09:49    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,
Danke für den Beitrag. Die Idee gefällt mir. Mein Problem ist jetzt nur: wie kann ich einen Fehler abfangen?
Mit einer If-Verzweigung? Wie muss dann die Anweisung lauten?

Set ref1 = part1.CreateReferenceFromObject(Punkt1)
Set ref2 = part1.CreateReferenceFromObject(Punkt2)
Set Line1 = hybridShapeFactory1.AddNewLinePtPtOnSupport(reference1, reference2)
If Error Then
...
Else If
...
End If

Gruß Betty

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

DanielFr.
Moderator
Manager


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

Beiträge: 2506
Registriert: 10.08.2005

HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3

erstellt am: 07. Aug. 2009 10:59    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 BettinaRauch 10 Unities + Antwort hilfreich

Hallo Bettina,

dazu musst du erstmal den internen ErrorHandler ausschalten. Das geht mit der Anweisung

Code:

On Error Resume next

Tritt jetzt ein Fehler auf läuft das Script einfach weiter und die Fehlernummer wird in der Systemvariable Err.Number gespeichert.

Mit dem

Code:
On Error Goto 0

schaltest du den internen ErrorHandler wieder ein (das ist wichtig sonst führt es zu einem unkontrollierten Scriptverhalten)

Hier jetzt mal ein kleines Beispeil

Code:

Dim myIntergerInput as Integer
On Error Resume next 'Hier wird der ErrorHandler ausgeschaltet
myIntergerInput = InputBox("Bitte geben Sie nur eine Zahl ein",0)
If Err.Number <> 0 'Abfagen eines allgemeinen Fehlers (du konntest auch If Err.Number = 123 schreiebn wenn du die genaue Fehlernummer weißt)
On Error Goto 0 'hier wird der ErrorHandler weider eingeschaltet den brauchst du jetzt wieder
Box = MsgBox("Die Eingabe war keine Zahl",vbCritical,"Hinweis")
End If




[Edit]
Was schreibst du dir den Überhaupt? Ein CATScript (dann siehe oben) oder ein CATvba? Bei einer CATvba solltest du es mit einer Try...Catch...[Finally]...End try Anweisung machen. Hier kann man sehr egnau auf die Fehler eingehen die ausgeworfen werden. Außerdem kann man selber einen Fehler "werfen"

Dazu gibt es aber viele Seiten im Internet also einfach mal bei google suchen.

------------------
MFG Daniel

Die KATJA ist halt doch nur ne zickige Französin

   

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

BettinaRauch
Mitglied
BA-Studentin, Fahrzeug-System-Engineering


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

Beiträge: 65
Registriert: 06.07.2009

Catia V5 R19

erstellt am: 07. Aug. 2009 12: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

Danke für die Antwort. Ich schreibe das Ganze im Moment in VBScript. Werde mich mal im Internet schlau machen, sobald ich ein bißchen Zeit hab, und dann wird wieder mal probiert...

Grüße vom Bodensee
Betty

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

BettinaRauch
Mitglied
BA-Studentin, Fahrzeug-System-Engineering


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

Beiträge: 65
Registriert: 06.07.2009

Catia V5 R19

erstellt am: 11. Aug. 2009 09: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


Dokument1.pdf

 
Hallo,

hab jetzt mal nach Try...Catch im Internet gesucht und mir folgendes Programm dazu gebastelt, welches nicht funktioniert (bei dem Update der Linie kommt eigentlich eine Fehlermeldung, da die zwei Punkte genau aufeinander liegen):

----------------------------------
Language="VBSCRIPT"
Sub CATMain()
Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part

Set hybridShapeFactory1 = part1.HybridShapeFactory

Set hybridBodies1 = part1.HybridBodies
Set hybridBody1 = hybridBodies1.Item("Tool")
Set hybridBodies2 = hybridBody1.HybridBodies
Set hybridBody2 = hybridBodies2.Item("Ergebnis")
Set hybridBodies3 = hybridBody2.HybridBodies
Set hybridBody3 = hybridBodies3.Item("Punkte")

Set hybridShapes1 = hybridBody3.HybridShapes
Set hybridShapePointOnCurve1 = hybridShapes1.Item("Point.6067")
Set reference1 = part1.CreateReferenceFromObject(hybridShapePointOnCurve1)
Set hybridShapePointOnCurve2 = hybridShapes1.Item("Point.6066")
Set reference2 = part1.CreateReferenceFromObject(hybridShapePointOnCurve2)

Try
Set hybridShapeLinePtPt1 = hybridShapeFactory1.AddNewLinePtPt(reference1, reference2)
hybridBody4.AppendHybridShape hybridShapeInverse1
part1.InWorkObject = hybridShapeInverse1
part1.UpdateObject hybridShapeInverse1
Catch ex
MsgBox ("Linie wurde nicht erstellt!")
End Try

End Sub
----------------------------------

Dabei kommt die erste Fehlermeldung im Anhang.

Wenn ich nun anstatt 'End Try' 'EndTry' schreibe, kommt die zweite Fehlermeldung.

Hat jemand ne Ahnung, was an meinem Code falsch ist? Hab im Internet auch gelesen, dass es Try Catch in VBA gar nicht gibt. Meinen Code schreibe ich in VBScript. Kann das darauf auch zutreffen?

Gruß Betty

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

DanielFr.
Moderator
Manager


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

Beiträge: 2506
Registriert: 10.08.2005

HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3

erstellt am: 11. Aug. 2009 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 Nur für BettinaRauch 10 Unities + Antwort hilfreich

Hallo Bettina,

sag mal ließt du meine Beiträge nicht oder erkläre ich so schlecht? 

In einem CATscript kannst du keine Try...Catch...End Try einsetzen da das eine interen VBA Funktion ist. Das Try Statement kannst du AUSSCHLIEßLICH in einer CATvba einsetzen. Wenn du ein CATScript hast dann musst du den Fehler mit "On Error Resume next" -> "If err.Number <> 0" und "On error goto 0" abfangen. Hier mal den Script umgeschrieben auf ein CATScript (OHNE TRY-Statement)

Code:

Language="VBSCRIPT"
Sub CATMain()
Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part

Set hybridShapeFactory1 = part1.HybridShapeFactory

Set hybridBodies1 = part1.HybridBodies
Set hybridBody1 = hybridBodies1.Item("Tool")
Set hybridBodies2 = hybridBody1.HybridBodies
Set hybridBody2 = hybridBodies2.Item("Ergebnis")
Set hybridBodies3 = hybridBody2.HybridBodies
Set hybridBody3 = hybridBodies3.Item("Punkte")

Set hybridShapes1 = hybridBody3.HybridShapes
Set hybridShapePointOnCurve1 = hybridShapes1.Item("Point.6067")
Set reference1 = part1.CreateReferenceFromObject(hybridShapePointOnCurve1)
Set hybridShapePointOnCurve2 = hybridShapes1.Item("Point.6066")
Set reference2 = part1.CreateReferenceFromObject(hybridShapePointOnCurve2)

On Error Resume next
  Set hybridShapeLinePtPt1 = hybridShapeFactory1.AddNewLinePtPt(reference1, reference2)
If Err.Number <> 0 then
  On Error goto 0
  MsgBox ("Linie wurde nicht erstellt!")
else
  hybridBody4.AppendHybridShape hybridShapeInverse1
  part1.InWorkObject = hybridShapeInverse1
  part1.UpdateObject hybridShapeInverse1
End If

End Sub


------------------
MFG Daniel

Die KATJA ist halt doch nur ne zickige Französin

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



Project Engineer Mechanical (m/w/d)

Die Motherson Group ist einer der 25 größten und am schnellsten wachsenden Anbieter von Komplett­system­lösungen für die globale Auto­mobil­industrie und bedient eine Viel­zahl weiterer Branchen wie Eisen­bahn, Luft- und Raum­fahrt, Medizin, IT und Logistik mit über 168.000 Mitar­beitern in 41 Ländern welt­weit. Samvardhana Motherson Reflectec (SMR) ist der Spezialist der Gruppe für Rück­sicht­systeme für die Auto­mobil­industrie....

Anzeige ansehenProjektmanagement
BettinaRauch
Mitglied
BA-Studentin, Fahrzeug-System-Engineering


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

Beiträge: 65
Registriert: 06.07.2009

Catia V5 R19

erstellt am: 11. Aug. 2009 10: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,

Danke nochmal für die schnelle Antwort.
Nein, das liegt wohl weniger an deinen Erklärungen als an meinem Verständnis für die ganzen Script-Sprachen...  hört sich alles so ähnlich an und von der Programmierung ist das ja teilweise auch nicht sooo unterschiedlich... CATScript, VBScript, CATVBA, ...
Deine Antwort war da jetzt wohl aber mehr als deutlich. Ich werde das jetzt mit dem Error-Zeug abfragen. Ich denke mal, dass ich das hinkriegen müsste. Ansonsten sieht man wieder einen Beitrag von mir im Forum... Also, Danke nochmal.

Gruß Betty

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