Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Länge einer Split-Kurve 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:  Länge einer Split-Kurve messen (2746 mal gelesen)
Lidef
Mitglied



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

Beiträge: 11
Registriert: 04.07.2007

erstellt am: 04. Jul. 2007 12:52    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 Community,

ich möchte die Länge eine Kurve messen. Diese Kurve habe ich vorher mithilfe von zwei Ebenen mit "Split" zugeschnitten. Also ist meine Kurve nun ein Split.

Mit dem folgenden Befehl realisiere ich das ganze:

Set Mess_Kurve = TheSPAWorkbench.GetMeasurable(Ref_Kurve)

Laenge_Kurve = Mess_Kurve.Length

MsgBox (Laenge_Kurve)

Nun meckert der Compiler: "The method length failed"

So wie es aussieht kann er die Länge einer Splitkurve nicht messen, denn wenn ich die Referenz einer geraden Linie (Line) oder einer Intersection als Linie übergebe, gibt das Programm mir die Länge ohne Probleme zurück.

Kann mir jemand sagen, ob mein Vorhaben möglich ist?
Oder was ich falsch mache?

Gruß

Alex

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

AlfaRomeo75
Mitglied
Dipl.Ing. - Flächenkonstrukteur/Methodenplaner


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

Beiträge: 174
Registriert: 06.12.2004

-----------------
Windows XP professional Version2002
Service Pack 2
-----------------
CATIA V5 R16 SP5
-----------------
Intel Pentium 4 3,4GHz
4 GB RAM
-----------------

erstellt am: 04. Jul. 2007 14:11    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 Lidef 10 Unities + Antwort hilfreich

Hallo Alex,
kann dein Problem gerade nicht ganz nachvollziehen! Mit welcher CATIA Version arbeitest Du?

Bei mir kann ich mit folgendem Makro beliebige Kurven anwählen und messen!

Probier mal so:

Sub CATMain()

Dim Status, oSelection, oSelectedElement, oDoc, oInstance, oRef, TheSPAWorkbench, TheMeasurable, Laenge
Dim InputObjectType(0)

Set oDoc = CATIA.ActiveDocument.Part

InputObjectType(0) = "HybridShape"

Set oSelection = CATIA.ActiveDocument.Selection
oSelection.Clear

Status = oSelection.SelectElement2(InputObjectType, "Bitte eine Kurve selektieren . . .", False)

If (Status <> "Normal") Then
Exit Sub
Else
Set oSelectedElement = oSelection.Item(1).Value
oSelection.Clear
End If

Set oRef = oDoc.CreateReferenceFromObject(oSelectedElement)

Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")
Set TheMeasurable = TheSPAWorkbench.GetMeasurable(oRef)

Laenge = TheMeasurable.Length

Msgbox "Die Laenge von " & oSelectedElement.Name & " ist " & Laenge & " mm !"

End Sub

------------------
-------------------------------------------------
Gruß,
AlfaRomeo75  

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

Lidef
Mitglied



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

Beiträge: 11
Registriert: 04.07.2007

erstellt am: 04. Jul. 2007 16:35    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 deine Antwort AlfaRomeo75,

aber das hilft mir bei meinem Problem nicht weiter.
Ich arbeite mit der Version R16.

Eigentlich wollte ich auf eine Kurve in 3D 20 Punkte äquidistant verteilen.
Mit "AddNewPointOnCurveFromDistance" wollte ich dann in einer For-Schleife diese 20 Punkte erzeugen, indem ich mich immer auf die Länge meiner Kurve bezog. Da aber meine Kurve ein Split ist, wollte mir das Programm die Länge über "Measurable" nicht liefern, warum auch immer. Zur Kontrolle habe ich dann andere Kurven vermessen, die keine Splits sind:

Set Mess_Kurve = TheSPAWorkbench.GetMeasurable(Ref_andere_Kurve)

und das ging.

Offensichtlich lag das Problem darin, dass die Kurve ein Split ist.
Und das hat mich eben verwundert. Normalerweise müsste es ja gehen.

Naja egal, das Problem habe ich gelöst, indem ich meine 20 Punkte über "AddNewPointOnCurveFromPercent" auf meine Split-Kurve gelegt hab.
Denn da brauche ich die Gesamtlänge der Kurve nicht. (Der Gesamtanteil = 1 = Gesamtlänge)

Und dass es über "Selektieren" klappt war mir klar. War aber nicht das was ich wollte.

Trotzdem danke für deine Mühe.

Gruß

Alex

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

AlfaRomeo75
Mitglied
Dipl.Ing. - Flächenkonstrukteur/Methodenplaner


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

Beiträge: 174
Registriert: 06.12.2004

-----------------
Windows XP professional Version2002
Service Pack 2
-----------------
CATIA V5 R16 SP5
-----------------
Intel Pentium 4 3,4GHz
4 GB RAM
-----------------

erstellt am: 09. Jul. 2007 07: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 Nur für Lidef 10 Unities + Antwort hilfreich

Hallo Alex,
mmmhhh, das verstehe ich dann auch nicht!
Bei dem von mir geposteten Code lassen sich bei mir auch "Split's" messen!
Sehr merkwürdig ... aber Du hast ja dein Problem gelöst ... 

------------------
-------------------------------------------------
Gruß,
AlfaRomeo75  

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: 24. Sep. 2007 08: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 Lidef 10 Unities + Antwort hilfreich

Hallo ihr beiden,

ich hatte auch das Problem, dass "die Methode ..." fehlgeschlagen war.

Hatte ich im Skript vor der Messung ein Part-Update ausfuehren lassen, lief die Messung einwandfrei durch.

Vielleicht erklaert das eure Sachverhalte.

Gruss

Thomas

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

AlfaRomeo75
Mitglied
Dipl.Ing. - Flächenkonstrukteur/Methodenplaner


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

Beiträge: 174
Registriert: 06.12.2004

-----------------
Windows XP professional Version2002
Service Pack 2
-----------------
CATIA V5 R16 SP5
-----------------
Intel Pentium 4 3,4GHz
4 GB RAM
-----------------

erstellt am: 25. Sep. 2007 07:21    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 Lidef 10 Unities + Antwort hilfreich

Vielen Dank, Thomas!
Würde mich nun doch sehr interessieren ob dann funzt, Alex!
Probier's doch bitte mal und sag' dann bescheid, Alex!

------------------
-------------------------------------------------
Gruß,
AlfaRomeo75  

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: 26. Sep. 2007 03: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 Lidef 10 Unities + Antwort hilfreich

Das Problem liegt glaube ich darin, dass die Kurve gesplittet wird.
Ein Split hat nicht die Eigenschaften einer Kurve zum messen. Wie wäre es denn die Kurve vor dem splitten zu messen, dann darauf Punkte verteilen zu lassen. Nun die Kurve splitten und um nur die Punkte zu haben die auf dem Split liegen, mit einer Error Abfrage ein Split zwischen dem Split und den punkten zu machen. Geht es dann ist der punkte auf dem Split, wenn nicht dann nicht.

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: 26. Sep. 2007 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 Lidef 10 Unities + Antwort hilfreich

Kann ich nicht zustimmen. Ich habe Splitkurves (durch Makro erzeugt), die aus Split mit Punkt auf einer Intersection Curve hervorgehen, die ich auch mittels selbigem Makro messen kann. Aber die Messung klappt eben nur mit vorherigem Update.

Entschuldigt meine Penetranz, aber ich hatte eben genau diese "Methode failed" - Geschichte ohne vorheriges Update.

Gruesse aus dem Rheinland

Thomas

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

greenday
Mitglied
student

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

Beiträge: 6
Registriert: 19.10.2007

erstellt am: 24. Nov. 2007 01: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 Lidef 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von AlfaRomeo75:
Hallo Alex,
kann dein Problem gerade nicht ganz nachvollziehen! Mit welcher CATIA Version arbeitest Du?

Bei mir kann ich mit folgendem Makro beliebige Kurven anwählen und messen!

Probier mal so:

Sub CATMain()

zitat gekürzt

End Sub


Hallo,

irgendwie steig ich grad nicht mehr durch, und habe eine Frage, die viele hier schnell beantworten können müssten. und zwar möchte ich genau das makro da oben benutzen, nur soll keine Kurve ausgewählt werden, sondern automatisch eine eingelesen werden.

die kurve ist genauso ein Schnitt und heisst (PartBody/)Schnittkurve .
Wie bekomme ich es hin, dass die Kurve automatisch ausgewählt wird, und danach die Länge ausgegeben wird?
(wie oben, nur viel einfacher, da immer die gleiche Kurve)

schönen dank!

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

AlfaRomeo75
Mitglied
Dipl.Ing. - Flächenkonstrukteur/Methodenplaner


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

Beiträge: 174
Registriert: 06.12.2004

-----------------
Windows XP professional Version2002
Service Pack 2
-----------------
CATIA V5 R16 SP5
-----------------
Intel Pentium 4 3,4GHz
4 GB RAM
-----------------

erstellt am: 26. Nov. 2007 07:17    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 Lidef 10 Unities + Antwort hilfreich

Hallo Greenday,
wenn die Kurve immer den gleichen Namen hat brauchst Du doch nur eine "Suche" über SELECTION.Search starten und dann das gefundene Objekt übergeben und eine Referenz darauf bilden!
Oder habe ich Dich da falsch verstanden ... 

------------------
-------------------------------------------------
Gruß,
AlfaRomeo75  

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

greenday
Mitglied
student

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

Beiträge: 6
Registriert: 19.10.2007

erstellt am: 26. Nov. 2007 18: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 Lidef 10 Unities + Antwort hilfreich

nein, Du hast mich völlig richtig verstanden, das Problem ist nur, dass meine Kentnisse jetzt nicht sooo berauschend sind, ich kann nen Makro aufnehmen, und auch leicht bearbeiten, aber so komplett neu schreiben kann ich nicht. Und für eine Schleife brauche ich jetzt die Länge, mit dem oben genannten Beispiel schaffe ich das auch, aber das ganze muss im Endefekt ohne Benutzereingriff gehen.

Desshalb bin ich auch noch nicht weiter als dashier:

Code:

Dim  TheSPAWorkbench, TheMeasurable, Laenge

was muss ich hier hinschreiben?

Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")

Set TheMeasurable = TheSPAWorkbench.GetMeasurable("hier muss was anderes hin")

Laenge = TheMeasurable.Length


Die Kurve hat immer den gleichen Namen, und verändert nur ihren Wert.

Ich werde mich gleich mal wieder durch die Hilfe arbeiten, aber wenn mir jemand die Zeilen nennen kann, wäre das natürlich besser für mich.
Dankeschön

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: 27. Nov. 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 Nur für Lidef 10 Unities + Antwort hilfreich

Hallo greenday,

in deinem Fall ist bestimmt auch ein Versuch mit dem Makro-Rekorder erfolgreich.

Versuche doch mal über Tools-Makro-Makroaufzeichnung, deine nachfolgenden Aktionen

- Bearbeiten - Suchen
- Eingabe des Kurven-Namens oben unter Name
- Suche starten mit Fernglassymbol
- Selektieren ducrch Anklicken des unteren Buttons Select
und zuletzt Beenden der Makroaufzeichnung

als Makro-Aufzeichnung zu erhalten.

Danach kannst du mit Tools-Makro-Makros und Edit des entsprechenden neuen Makros in der Liste genau das finden, wonach du suchst.

Diesen Schnipsel etwas anpassen und in das vorhandene Makro einfügen.

Grüße aus dem Rheinland

Thomas

------------------
CATIA - eine Laune der Natur ...

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

AlfaRomeo75
Mitglied
Dipl.Ing. - Flächenkonstrukteur/Methodenplaner


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

Beiträge: 174
Registriert: 06.12.2004

-----------------
Windows XP professional Version2002
Service Pack 2
-----------------
CATIA V5 R16 SP5
-----------------
Intel Pentium 4 3,4GHz
4 GB RAM
-----------------

erstellt am: 27. Nov. 2007 10: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 Nur für Lidef 10 Unities + Antwort hilfreich

Hallo Greenday,
probier's mal so:

Sub CATMain()

Dim Status, oSelection, oSelectedElement, oDoc, oInstance, oRef, TheSPAWorkbench, TheMeasurable, Laenge

Set oDoc = CATIA.ActiveDocument.Part

Set oSelection = Catia.ActiveDocument.Selection

oSelection.Search "Name=Schnittkurve,all"

Set oSelectedElement = oSelection.Item(1).Value

oSelection.Clear

Set oRef = oDoc.CreateReferenceFromObject(oSelectedElement)

Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")
Set TheMeasurable = TheSPAWorkbench.GetMeasurable(oRef)

Laenge = TheMeasurable.Length

Msgbox "Die Laenge von " & oSelectedElement.Name & " ist " & Laenge & " mm !"

End Sub

Allerdings, du schreibst, das die Kurve im PartBody liegt?!
Wie geht'n das? Eine Kurve als Volumen, oder ist es eine Skizze?
Bei einer Skizze funktioniert die Methode nämlich nich'!
Dann müsstest Du zuvor eine Ableitung der Skizze machen ... 

------------------
-------------------------------------------------
Gruß,
AlfaRomeo75  

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

greenday
Mitglied
student

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

Beiträge: 6
Registriert: 19.10.2007

erstellt am: 27. Nov. 2007 18:24    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 Lidef 10 Unities + Antwort hilfreich

Moin,

danke, das letzte Makro funktioniert wunderbar!!

Die Kurve liegt in der Tat im PartBody, und ist ein Schnitt von 2 extrude .. Da muss wohl wer was schlecht konstruiert haben..

Das Makro wollt ich vorher aufnehmen, aber auf den genannten Weg kommt ja keiner.

Mit der Lösung kann ich dann hoffentlich meine anderen Probleme lösen 

Gruss

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