Autor
|
Thema: Länge einer Split-Kurve messen (2746 mal gelesen)
|
Lidef Mitglied
Beiträge: 11 Registriert: 04.07.2007
|
erstellt am: 04. Jul. 2007 12:52 <-- editieren / zitieren --> Unities abgeben:
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
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 / zitieren --> Unities abgeben: Nur für Lidef
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
Beiträge: 11 Registriert: 04.07.2007
|
erstellt am: 04. Jul. 2007 16:35 <-- editieren / zitieren --> Unities abgeben:
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
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 / zitieren --> Unities abgeben: Nur für Lidef
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
Beiträge: 1385 Registriert: 13.01.2007 WIN 7 64bit V5R21SP3HF49 3DX/V6 R2016x
|
erstellt am: 24. Sep. 2007 08:59 <-- editieren / zitieren --> Unities abgeben: Nur für Lidef
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
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 / zitieren --> Unities abgeben: Nur für Lidef
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
Beiträge: 67 Registriert: 21.12.2006
|
erstellt am: 26. Sep. 2007 03:29 <-- editieren / zitieren --> Unities abgeben: Nur für Lidef
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
Beiträge: 1385 Registriert: 13.01.2007 WIN 7 64bit V5R21SP3HF49 3DX/V6 R2016x
|
erstellt am: 26. Sep. 2007 09:28 <-- editieren / zitieren --> Unities abgeben: Nur für Lidef
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
Beiträge: 6 Registriert: 19.10.2007
|
erstellt am: 24. Nov. 2007 01:29 <-- editieren / zitieren --> Unities abgeben: Nur für Lidef
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
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 / zitieren --> Unities abgeben: Nur für Lidef
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
Beiträge: 6 Registriert: 19.10.2007
|
erstellt am: 26. Nov. 2007 18:27 <-- editieren / zitieren --> Unities abgeben: Nur für Lidef
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, Laengewas 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
Beiträge: 1385 Registriert: 13.01.2007 WIN 7 64bit V5R21SP3HF49 3DX/V6 R2016x
|
erstellt am: 27. Nov. 2007 08:23 <-- editieren / zitieren --> Unities abgeben: Nur für Lidef
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
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 / zitieren --> Unities abgeben: Nur für Lidef
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
Beiträge: 6 Registriert: 19.10.2007
|
erstellt am: 27. Nov. 2007 18:24 <-- editieren / zitieren --> Unities abgeben: Nur für Lidef
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 |