Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Surfaces mit mehreren Domains (R10 SP03)

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:  Surfaces mit mehreren Domains (R10 SP03) (3512 mal gelesen)
gdir
Mitglied



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

Beiträge: 157
Registriert: 25.06.2003

erstellt am: 25. Jun. 2003 19:30    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,

ich habe bei einem Skript (R10 SP03) gerade ein kniffliges Problem, für das vielleicht (hoffentlich!) jemand eine gute Lösungsidee hat.

Das Skript arbeitet überwiegend mit Drahtgitter- und Flächengeometrie. An einer Stelle des Skripts wird eine unbekannte Anzahl von Flächen gesplittet. Beim Split kommt es vor, dass ein "Multi-Result Element" entsteht, d.h. eine Fläche wird so geschnitten, dass das entstehende Split-Objekt aus mehreren, nicht zusammenhängenden Domains besteht. Das ist im allgemeinen nicht weiter kritisch, allerdings lässt sich von einem solchen Element kein Offset mehr bilden ("non-connex element ...").

An dieser Stelle komme ich nicht weiter. Ich brauche alle Teilflächen des Splits und ein Offset von allen Teilflächen.

Diverse Lösungsideen sind ins Leere gelaufen:
- beim Split erhalte ich keine Information, aus wie vielen Domains das Split-Objekt besteht. Den Return-Code von AddNewHybridSplit habe ich nicht abgefragt, aber erfahrungsgemäß kommt hier ohnehin immer 0 zurück, oder? Der Return-Code vom UpdateObject() ist ebenfalls 0, unabhängig von der Anzahl der Domains.
- ich kenne keine Funktion, mit der ich abfragen könnte, aus wie vielen Domains die Fläche besteht. Ideen?
- der Near-Operator bringt mich nicht weiter, da er sich immer anwenden lässt, egal ob meine Surface aus einer oder mehreren Domains besteht. Man erhält keine Information, um wie viele Domains es sich handelt. Selbst wenn ich das wüsste, müsste ich immer noch ermitteln, wo die Domains räumlich liegen, damit ich sie alle nacheinander mit dem Near-Operator erfassen könnte.
- Leider gibt es kein Disassemble bei der Skriptprogrammierung. Ein Disassemble in die Domains wäre genau das richtige. Ein Ausblick in die R11-Doku verspricht auch keine bessere Zukunft ...
- Beim Extract und Boundary müsste ich ein Startelement für jede Domain finden. Ich sehe aber keine brauchbare Möglichkeit dafür (das Skript soll an dieser Stelle ohne Usereingabe oder Selektion arbeiten).

Fällt Euch etwas ein?

Viele Grüße

Günther

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

gdir
Mitglied



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

Beiträge: 157
Registriert: 25.06.2003

erstellt am: 26. Jun. 2003 11:33    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,

ich probiere gerade etwas mit dem Extract herum. Beim Extract benötige ich ein Sub-Element aus meiner Multi-Domain Fläche. Genauer gesagt benötige ich die Referenz auf dieses Sub-Element.

Bei einem mit dem Makro-Rekorder aufgezeichnetem Skript verwendete CATIA V5 die Methode CreateReferenceFromBrepName. Dabei kommt bei der Selektion einer Teilfläche ein so wundervolles Konstrukt wie

...CreateReferenceFromBRepName("RSur:(Face:(Brp:(GSMBiDim.4;%224);None());WithPermanentBody;WithoutBuildError;WithSelectingFeatureReport)", ...)

heraus.

Unglücklicherwiese gibt es keinen erkennbaren Zusammenhang zwischen dem Namen meiner Multi-Domain Fläche und dem hier verwendeten Namen GSMBiDim.4. Auch steht der Zähler 224 in keinem erkennbaren Zusammenhang mit den 5 Faces meiner Fläche :-(

CreateReferenceFromBRepName scheidet damit für mich aus. Weiß jemand, wie man mit CreateReferenceFromName auf Sub-Elemente einer Fläche zugreifen kann?

Günther

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

gdir
Mitglied



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

Beiträge: 157
Registriert: 25.06.2003

erstellt am: 27. Jun. 2003 14: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

Hallo,

auch wenn's so aussieht, als ob ich selbst gern mit mir spreche: Hier ist die Lösung auf meine Frage. Hat mich nur drei Arbeitstage gekostet. Ich liebe CATScript-Programmierung ...

Falls jemand mal einen Extract im Script machen möchte und dafür notwendigerweise die Referenz auf eine Teil-Face der Ursprungsfläche
benötigt:

- Ursprungsfläche in die Selektion packen (mySelection.Add(Ursprungsfläche))
- innerhalb dieser Selektion nach Faces suchen (mySelection.Search("Topology.Face;sel")
- das führt dazu, dass man alle Teil-Faces in der Selektion hat
- auf die Teil-Faces kann man dann mit der Methode Item zugreifen (Set mySelectedElement = mySelection.Item(index))
- davon holen wir uns die Referenz (Set myRef = mySelectedElement .Reference)
- diese Referenz lässt sich leider nicht für den Extract gebrauchen
- stattdessen lassen wir uns den Pfad der Referenz ausgeben (myRefName = myRef.DisplayName)
- was dabei herauskommt, ist fast schon der BRep-Name:
Selection_RSur:(Face:(Brp:(GSMBiDim.4;%217);None:();GSMSplit.1)
- Nach ein wenig String-Manipulation kann man ihn für CreateReferenceFromBrepName gebrauchen

Und dann klappt's auch mit dem Extract

Ich liebe V5

Günther

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

RonnyS
Mitglied



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

Beiträge: 97
Registriert: 04.09.2003

erstellt am: 07. Jan. 2004 18:04    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 gdir 10 Unities + Antwort hilfreich

Hallo

ich habe das so einigermaßen hingekriegt

nur gibt es nur noch ein kleines Problem

.Reference funktioniert nicht da aus mir nicht bekannten gründen kein Objekt vom Typ item zurückgegeben wird sondern das Objekt zu dem das Face gehört

falls das jetzt zu kompliziert war

ein pad wird mittels split geschnitten und ich möchte den brep der schnittfläche habe ...stattdessen erhalte ich ein pad-objekt

was mache ich verkehrt?

------------------
gr33t7 Ronny

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

gdir
Mitglied



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

Beiträge: 157
Registriert: 25.06.2003

erstellt am: 08. Jan. 2004 08:01    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 Ronny,

ich kann Dir leider nicht helfen. Ich habe dieses Verfahren nur unter R10 SP03 mit reinen Flächenmodellen verwendet.

Viele Grüße

Günther

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

RonnyS
Mitglied



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

Beiträge: 97
Registriert: 04.09.2003

erstellt am: 08. Jan. 2004 08:57    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 gdir 10 Unities + Antwort hilfreich

naja das war ja auch nur ein beispiel

aber normalerweise sollte ich doch wenn ich Selection.search nach nem Face frage auch ein Face zurückbekommen ...oder ist das nur ein frommer wunsch

das verwirrende ist nur dass er manchmal halt das face liefert und manchmal halt das objekt zu dem selbiges gehört...egal ob das nun ein split, pad, pocket oder sonstwas ist.

ich hab die vermutung das das von irgendeiner (umgebungs?)variable des selection objekts gesetzt wird, komm aber einfach nicht drauf wie oder welche?

------------------
gr33t7 Ronny

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

brolk
Mitglied


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

Beiträge: 5
Registriert: 16.12.2004

erstellt am: 16. Dez. 2004 12:31    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 gdir 10 Unities + Antwort hilfreich

Hallo! Ich sitze an genau dem gleichen Problem und bin schon bis hier her gekommen... Aber mir ist nicht klar was für String Manipulationen ich machen muss, damit es klappt.

...
- was dabei herauskommt, ist fast schon der BRep-Name:
Selection_RSur Face Brp GSMBiDim.4;%217);None );GSMSplit.1)
- Nach ein wenig String-Manipulation kann man ihn für CreateReferenceFromBrepName gebrauchen

Ich habe des "Selection_" weg gemacht aber es klappt immernoch nicht.

Es wäre supertoll wenn Du mir sagen könntest was ich da abschneiden oder hinzufügen muss! Ich hocke schon EWIG dran 


Gruss Bro

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

noir333
Mitglied
Ingenieur


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

Beiträge: 148
Registriert: 27.01.2004

Dell Precision 450 Dual Xeon, 2MB RAM,
XP SP2, NX3
V5R17SP3

erstellt am: 07. Sep. 2006 13: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 Nur für gdir 10 Unities + Antwort hilfreich

Hallo zusammen, Hallo gdir

die Vorschläge sind super, ich habe daraus mal ein Visual Basic 2005 Porgramm gemacht, dass unter R14 läuft. Besonders zu beachten ist die Syntax im reference Befehl. Ich weiß nicht, ob die nicht unter anderen Releases angepasst werden muss, kann ja aber jeder mit Makroaufzeichnen nachvollziehen und ändern.

Hier der Code:

        SelFilter(0) = "BiDim"
        Stat = "Normal"
        MyPartDoc.Selection.Clear()

        Stat = MyPartDoc.Selection.SelectElement2(SelFilter, "Flächenkörper auswählen", True)
        oSel = MyPartDoc.Selection.Item(1).Value
        MyPartDoc.Selection.Search("Topology.CGMFace,sel")
        ci = MyPartDoc.Selection.Count
        For i = 1 To ci
            TeilFaces(i) = MyPartDoc.Selection.Item(i).Value
            TeilFacesNamen(i) = TeilFaces(i).Name.Replace("Selection_", "")
            i2 = TeilFacesNamen(i).LastIndexOf(";")
            ci2 = TeilFacesNamen(i).Length - i2
            TeilFacesNamen(i) = TeilFacesNamen(i).Remove(i2, ci2)
            reference1 = MyPart.CreateReferenceFromBRepName(TeilFacesNamen(i) & ";WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR14)", oSel)
            hse(i) = hybridShapeFactory1.AddNewExtract(reference1)
            hse(i).PropagationType = 3
            hse(i).ComplementaryExtract = False
            hse(i).IsFederated = False
            hybridBody1.AppendHybridShape(hse(i))
            MyPart.InWorkObject = hse(i)
        Next
        MyPart.Update()
        MsgBox("In " & SetName & " " & CStr(i) & " Flächen extrahiert.")


Die Dim's habe ich mal weggelassen....

Vielen Dank für Eure Hilfe

------------------
Bernd

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

AndiKrue
Mitglied
Berater


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

Beiträge: 72
Registriert: 04.12.2008

Windows XP Prof x64 Edition
Intel Xeon W3520 @ 2.67 GHz
8 GB RAM,
Nvidia Quadro FX 1800
CATIA V5R19

erstellt am: 23. Jan. 2009 10: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 gdir 10 Unities + Antwort hilfreich

Als was muss ich denn teilfaces deklarieren, dass es funktioniert im catscript?

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



Bauleiter (m/w/d) Sanitär-, Heizungs- und Klimatechnik

Die Salvia Gebäudetechnik ist ein mittelständisches, unabhängiges und familiengeführtes Unternehmen mit deutschlandweit mehr als 1700 Mitarbeitern. Als professioneller Multidienstleister bildet die Gruppe, an 29 Standorten in ganz Deutschland, den kompletten technischen Lebenszyklus von Gebäuden ab. Von der Planung bis zum Betrieb.

Bauleiter (m/w/d) Sanitär-, Heizungs- und Klimatechnik

...
Anzeige ansehenElektrik, Sanitär, Heizung, Klima
noir333
Mitglied
Ingenieur


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

Beiträge: 148
Registriert: 27.01.2004

Dell Precision 450 Dual Xeon, 2MB RAM,
XP SP2, NX3
V5R17SP3

erstellt am: 23. Jan. 2009 15: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 gdir 10 Unities + Antwort hilfreich

Hallo andikrue,

ich habe es im VB mit AnyObject deklariert, also allgemeines Catia-Object. Geht aber vermutlich auch als Object...

------------------
-----------

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