Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Kurve auf Kreisform prüfen

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:  Kurve auf Kreisform prüfen (1944 mal gelesen)
Starbirth
Mitglied
Konstrukteur


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

Beiträge: 119
Registriert: 22.10.2009

erstellt am: 08. Jun. 2011 11: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

Hallo Forum,

zur Vorgeschichte: Ich müsste wissen ob die vorliegende Fläche ein Zylinder oder sonst irgendwie kreisförmigen Querschnittes ist.

Mein erster Ansatz dazu war eine Boundary auf die Fläche zu legen und mit einem Near dafür zu sorgen, dass das Element auch Connex ist.

Im nächsten Schritt habe ich versucht mir über ein Measurable den Radius ausgeben zu lassen. Hierbei konnte jedoch die Methode "Radius" meines Measurable nicht durchgeführt werden, auch bei Boundaries die definitiv kreisförmig sind und bei Messungen per Hand auch einen Radius ausgeben. läuft trotzdem auf einen Fehler.
Wieso das so ist kann ich mir nicht erklären. Das gemessene Near ist in den Baum eingehangen und ads Part zum Zeitpunkt der Messung up to date.

Code dazu:

Code:
'Test auf kreisförmigen QS - Ausmessen des Radius

    Dim TheSPAWorkbench As Workbench
    Dim TheMeasurable As Measurable
    Dim BoundaryRadiusTest as Double
   
    Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")
    Set TheMeasurable = TheSPAWorkbench.GetMeasurable(Boundary_of_1st_Near)    'Boundary_of_1st_Near ist die
besagte Boundary, oben korrekt erzeugt
       
    ActivePart.Update
       
    On Error Resume Next
    BoundaryRadiusTest = TheMeasurable.Radius    '<<-- Schlägt fehl/kann nicht durchgeführt werden, egal ob
Near kreisförmig oder nicht

    If Err <> 0 Then
        On Error GoTo 0
        'Hier gehts weiter wenn die Fläche keinen kreisförmigen Querschnitt hat
    Else
        On Error GoTo 0
        'Hier gehts weiter wenn die Fläche einen kreisförmigen Querschnitt aufweist
    End If


Nachdem der Weg nicht zum Erfolg führte, dachte ich, erzeuge ich halt den Mittelpunkt der Kurve. Wenn das funktioniert habe ich was kreisförmiges vorliegen. So bekomme ich vom Compiler aber die Aussage, dass die Funktion Measurable.GetCenter als Verwendungsbeschränkt markiert ist. Hilft also auch nicht weiter.

Code dazu:

Code:
'Test auf kreisförmigen QS - Centerpoint auf Near erzeugen

    Dim TheSPAWorkbench As Workbench
    Dim TheMeasurable As Measurable
    Dim BoundaryRadiusTest(2)
   
    Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")
    Set TheMeasurable = TheSPAWorkbench.GetMeasurable(Boundary_of_1st_Near)    's.o.
       
    ActivePart.Update
       
    On Error Resume Next
    BoundaryRadius() = TheMeasurable.GetCenter '<<-- HIER FEHLER "marked as restricted"

    If Err <> 0 Then
        Erase BoundaryRadiusTest
        On Error GoTo 0
        'Hier gehts weiter wenn die Fläche keinen kreisförmigen Querschnitt hat
    Else
        Erase BoundaryRadiusTest
        On Error GoTo 0
        'Hier gehts weiter wenn die Fläche einen kreisförmigen Querschnitt aufweist
    End If


Die Frage wäre nun:
Wie kriege ich raus ob mir eine Fläche mit kreisförmigem Querschnitt vorliegt? Oder was mache ich bei den bisherigen Versuchen falsch?

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

zoltan.bekesi
Mitglied



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

Beiträge: 321
Registriert: 22.10.2006

Job:
CATIA V5R19 / XP 32bit
MS Office 2003
Microstation V8 2004 Edition
DELL Precision M6300

erstellt am: 08. Jun. 2011 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 Starbirth 10 Unities + Antwort hilfreich

Hallo,

Measurable.GeometryName liefert den Typ des Objektes zurück.
Kannst in V5Automation.chm unter "Measurable" darüber nachlesen.

Gruß,
Zoltan

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

Starbirth
Mitglied
Konstrukteur


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

Beiträge: 119
Registriert: 22.10.2009

erstellt am: 09. Jun. 2011 08: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

Danke Zoltan,
dachte bisher über die Funktion komme ich an den Namen der ausgemessenen Geometrie  

Jedenfalls läuft das so dann auch ohne Fehlermeldung durch.

Das Problem muss aber noch irgendwo in der Messung selber liegen. Verfolge ich den Makroablauf, stelle ich fest, dass der Near immer als CATMeasurableUnknown gemessen wird (Identifier = 0, CatMeasurableCircle sollte aber 9 sein). Vollkommen unabhängig davon wie der Near nun aussieht.

Somit kriege ich keine Unterscheidung rein. Was stimmt mit meiner Messung nicht? Wie gesagt, wenn ich es händisch mache ist alles i.O.

Ich werde jetzt noch mal versuchen die Kurve vor dem ausmessen als Result zu kopieren. Evtl funktioniert es ja damit. Für weiteres Feedback bin ich trotzdem immer dankbar.

-------------------------- EDIT --------------------------
Zusatz:
-------------------------------------------------------------
Mittlerweile ist mir aufgefallen, dass ich das Measurable direkt aus einem Objekt erzeugt habe, statt wie in der Hilfe angegeben aus einer Reference. Geändert, löst aber nicht das Problem. Keine Änderung im beobachteten Verhalten

Das über PasteSpecial as Result erzeugte dumme Element verhält sich aber auch komisch. Gesehen habe ich etwas Vergleichbares erst ein mal. Hier beschrieben.
Jedoch hilft die dortige Lösung hier nicht weiter. Measure läuft ja nicht.

Das Icon im Baum ist das Selbe wie damals.

Dieses Element ist intern als "Item" beschrieben. Benennung "3DDatum.1".
Versuche ich dieses Element einem Objekt zuzuweisen das als HybridShapeCurveExplicit deklariert ist erhalte ich einen Type Missmatch (obwohl es, eigentlich, passen müsste).

Auch kann ich, genau wie damals, nicht auf die .Name Property dieses Elementes zugreifen, obwohl sie im Watchfenster gelistet ist.
Per Hand kann ich dieses Element auch nicht ausmessen, genau so wenig wie im Makro.
Eine, per Hand erstellte, dumme Kopie der Kurve wird korrekt als Kurve erkannt, im Baum auch so angezeigt und kann gemessen werden.

Ich verzweifel hier noch 

[Diese Nachricht wurde von Starbirth am 09. Jun. 2011 editiert.]

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

zoltan.bekesi
Mitglied



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

Beiträge: 321
Registriert: 22.10.2006

Job:
CATIA V5R19 / XP 32bit
MS Office 2003
Microstation V8 2004 Edition
DELL Precision M6300

erstellt am: 09. Jun. 2011 20: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 Starbirth 10 Unities + Antwort hilfreich

Da weiß ich leider auch nicht weiter.
Wir haben es bei Flächen verwendet um zu prüfen, ob es zylindrisch, konisch oder flach ist. Da hat es manchmal auch fehlerhaft reagiert. In den konnten wir nur den Fehler ignorieren und die Auswertung nicht machen. Diese waren aber immer B-Reps.
Versuche die Deklaration als "Object". Das ist ein genereller Typ und verträgt alles (nur Intellisense wird nicht richtig funktionieren). Mit TypeName(Variable) kannst du anschließend den richtigen Typ abfragen.

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

Starbirth
Mitglied
Konstrukteur


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

Beiträge: 119
Registriert: 22.10.2009

erstellt am: 10. Jun. 2011 09:09    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

Hmm. Ich wäre Glücklich wenn ich hier die Option hätte den Check entfallen zu lassen, ist aber leider nicht drin. Für den weiteren Ablauf des Makros ist es absolut notwendig zu wissen ob die Kurve nun ein Kreisbogen oder -segment ist.
Wenn cih das nicht schaffe laufe ich später in der Routine unweigerlich auf Fehler die ich kaum erkennen und abfangen kann.

Eine Idee die mir gestern Nachmittag noch kam war, die Kurve im Near über einen Brep anzusprechen.
Die Idee kommt daher, dass ich vermute, dass ein Near im Baum eigentlich nur eine Art Container ist. Über den BRep sollte es eindeutiger sein. Mal sehen was daraus wird.
Sollte das funktionieren melde ich mich hier noch mal.

EDIT:
Habe jetzt den Namen Ausgelesen und entsprechend einer Vorlage aus dem Makro Kochbuch bereinigt. Sowas hat auch oben im Makro schon mal gut funktioniert (zum ableiten aller Flächen eines Bodies).
Jetzt kriege ich beim Versuch aus dem BRep Name eine Referenz zu erzeugen allerdings die Meldung "Invalid Procedure Call". Ich vermute mal, dass mein BRep String noch nicht ganz passt.
Gibt es irgendwo eine Dokumentation der BReps, Übersicht über die einzelenn Bestandteile und Bedeutung der ganzen Dinger?
Ansonsten werde ich es noch mal mit rumtesten versuchen. Helfen würde es trotzdem wenn ich wüsste wo ich drehen muss.

Momentan bekomme ich als "fertigen" BRep String sowas raus:

Code:
"WireREdge:(Wire:(Brp:(FeatureFSUR.2;(Brp:(Solid.1;%7);Brp:(Solid.1;%1)));None:(Limits1:();Limits2:());Cf11:());WithPermanentBody;WithoutBuildError;WithSelectingFeatureSuppor  t;MFBRepVersion_CXR15)"

[Diese Nachricht wurde von Starbirth am 10. Jun. 2011 editiert.]

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

Starbirth
Mitglied
Konstrukteur


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

Beiträge: 119
Registriert: 22.10.2009

Catia V5-6 R24
Windows 7 64bit
Intel Xeon (4x3,5GHz)
32B Ram
Nvidia Quatro K4200

erstellt am: 10. Jun. 2011 11: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

Die BReps haben sich erledigt.

Und ich muss sagen: Danke Zoltan! Du hast mir wunderbar weitergeholfen, und zwar hier.

Durch den Tipp mit der Reference konnte ich mir den ganzen BRep Kram sparen.

So angesprochen wird die Kurve nun auch korrekt ausgemessen und ich weiß, ob ich einen Kreis vorliegen habe oder nicht. Die Abfrage läuft auch. Hier und da noch ein false positive (weil zufällig eine falsche Kurve ausgemessen wurde) aber den kriege ich schon in den Griff 

Gott und CAD.de sei dank. Es läuft. 

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