Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Extract und Fill in GeoSet detektieren

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:  Extract und Fill in GeoSet detektieren (1091 / mal gelesen)
4ppU
Mitglied



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

Beiträge: 44
Registriert: 19.04.2016

Unterschiedliche Arbeitsplätze/ Hardware.
Catia V5
Microsoft Visual Basic for Applications

erstellt am: 05. Jul. 2016 10: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

Guten Tag zusammen 

Ich habe ein Geometrisches Set, dass in einem Makro erstellt wird. In dieses GeoSet werden Extracts und Fills geschrieben. Diese möchte ich alle erfassen und durch einen Join zusammenfassen. Hat jemand eine Idee/Anregung wie ich das umsetzen kann? Es befinden sich allerdings auch ausgeblendete Extracts in dem GeoSet, die wiederum nicht in den Join kommen sollen 
Problem ist, es können mal nur 3 Fill& Extracts sein, mal 10, es sollen aber stets alle im GeoSet befindlichen F&E erfasst werden.

Sollte man mit einem Search Filter arbeiten ? Oder gibt noch andere Möglichkeiten?

Vielen Dank schon mal  

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 05. Jul. 2016 10:39    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 4ppU 10 Unities + Antwort hilfreich

Servus
Am Einfachst ist das wohl über die Suche:
GeoSet selektieren und in der Selektion nach Extracts und Fills suchen die sichtbar sind.
Hier ein Beispiel-Suchstring:
Code:
selection1.Search "(CATGmoSearch.GSMFill.Visibility=Visible + CATGmoSearch.GSMExtract.Visibility=Visible),sel"

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

4ppU
Mitglied



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

Beiträge: 44
Registriert: 19.04.2016

Unterschiedliche Arbeitsplätze/ Hardware.
Catia V5
Microsoft Visual Basic for Applications

erstellt am: 05. Jul. 2016 11: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

Moin Bernd,

danke für die schnelle Antwort. Ich werde es gleich mal ausprobieren. Die erfassten F&E werden dann in der Variable "selection1" gespeichert oder?
Da das GeoSet ja zuvor erstellt wird und immer den gleich Namen haben wird, kann ich die Selektion ja auch über das Makro einbinden.

Besten Dank.

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 05. Jul. 2016 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 Nur für 4ppU 10 Unities + Antwort hilfreich

Hi 4ppU,

Zitat:

Ich habe ein Geometrisches Set, dass in einem Makro erstellt wird. In dieses GeoSet werden Extracts und Fills geschrieben. Diese möchte ich alle erfassen und durch einen Join zusammenfassen.

Du könntest auch Dein Makro um den Join erweitern indem Du
- entweder die interessanten Elemente direkt nach der Erzeugung zunächst merkst und anschliessend joinst
- oder nach dem Erzeugen der Elemente das (neu erzeugte) Set ausliest und die Fills zusammenfügst

Tschau,
Joe

------------------
Inoffizielle Catia Hilfeseite

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

4ppU
Mitglied



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

Beiträge: 44
Registriert: 19.04.2016

Unterschiedliche Arbeitsplätze/ Hardware.
Catia V5
Microsoft Visual Basic for Applications

erstellt am: 05. Jul. 2016 11: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

Hey joehz,

Zitat:
- entweder die interessanten Elemente direkt nach der Erzeugung zunächst merkst und anschliessend joinst

das klingt auch nicht schlecht. Aber wie muss ich mir das mit dem merken vorstellen?

Also in dem Makro wird halt zunächst das GeoSet erstellt, anschließend ein Extract und dann über eine Schleife mehrere Fills. Das mit dem merken finde ich irgendwie gut ^^ nur kann ich mir da noch nicht wirklich etwas drunter vorstellen :P

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 05. Jul. 2016 11:38    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 4ppU 10 Unities + Antwort hilfreich

Servus
Du erstellst dir ein Array/Collection und packst dort die Fills/Extracts rein.
Später dann beim erstellen des Joins den Array/Collection mit einer Schleife abarbeiten.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

4ppU
Mitglied



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

Beiträge: 44
Registriert: 19.04.2016

Unterschiedliche Arbeitsplätze/ Hardware.
Catia V5
Microsoft Visual Basic for Applications

erstellt am: 05. Jul. 2016 14:10    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

Okay, scheint ne ganze coole Methodik zu sein  
Hab den Code mal angefangen. Es werden auch im Locals Fenster angezeigt, das er die Fs&Es gefunden hat. Allesdings verstehe ich nicht, wie das mit der Schleife gemeint ist? Also wenn ich jetzt über die Search Funktion gehe. Habe ich anschließend XY F&E, aber wie kann ich diese über eine Schleife wieder einlesen?
Find das nicht im Forum  

EDIT: Also mit XY F&E meine ich, eine gewisse Anzahl an Fills und Extracts.
Ich hab dann ja die Zeile in der die Variablen bzw. die F&E geaddet werden müssen. Da hänge ich nun.

Code:
Set hybridShapeAssemble1 = hybridShapeFactory1.AddNewJoin(Elements(i))

Ich glaube, wenn ich das dann verstanden habe, müsste das funktionieren.

[Diese Nachricht wurde von 4ppU am 05. Jul. 2016 editiert.]

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 05. Jul. 2016 14:50    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 4ppU 10 Unities + Antwort hilfreich

Servus
Indem du (wie in deinem andern Makro) über ".Item2" (+den Zähler) auf die einzelnen Element der Selektion zugreifst (siehe Doku)

Gruß
BErnd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

4ppU
Mitglied



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

Beiträge: 44
Registriert: 19.04.2016

Unterschiedliche Arbeitsplätze/ Hardware.
Catia V5
Microsoft Visual Basic for Applications

erstellt am: 05. Jul. 2016 15: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

Okay jetzt bin ich raus...
Also ich habe folgenden Code:

Code:
Sub CATMain()

Dim MyCatiaDocument As Document

Set selection1 = CATIA.ActiveDocument.Selection

MsgBox "Ein Join wird erstellt."

selection1.Search "(CATGmoSearch.GSMFill.Visibility=Visible + CATGmoSearch.GSMExtract.Visibility=Visible),GeoSet_Close_Surface"

Dim Elements() As Object
ReDim Elements(selection1.Count)
For i = 1 To selection1.Count
 
  Set Elements(i) = selection1.Item2(i)

Next

'########################
' Hier die Schleife erstellen, um die Referenzen dem Join hinzuzufügen?
'########################

Dim hybridShapeAssemble1 As HybridShapeAssemble

Set hybridShapeAssemble1 = hybridShapeFactory1.AddNewJoin(Elements)

hybridShapeAssemble1.SetConnex 1

hybridShapeAssemble1.SetManifold 0

hybridShapeAssemble1.SetSimplify 0

hybridShapeAssemble1.SetSuppressMode 0

hybridShapeAssemble1.SetDeviation 0.001

hybridShapeAssemble1.SetAngularToleranceMode 0

hybridShapeAssemble1.SetAngularTolerance 0.5

hybridShapeAssemble1.SetFederationPropagation 0

hybridBody1.AppendHybridShape hybridShapeAssemble1

part1.InWorkObject = hybridShapeAssemble1

part1.Update

End Sub


Also braucht .AddNewJoin auch eine reference?

Also ich hab das jetzt so verstanden:
Über die selection1.search werden alle F&E im GeoSet gefunden. Über Elements werden diese abgelegt. Im Locals Fenster werden diese ja auch unter Elements angezeigt.
Nun muss ich im Anschluss eine Schleife mit Hilfe der Selection erstellen, in der diese Elements wieder hergeholt werden und in den AddNewJoin eingesetzt werden?!

Zitat:
".Item2" (+den Zähler)

Meinst du dann quasi selection1.Item2(1 + i) oder wie?
Gibts hier im Forum ein ähnliches Beispiel oder so, wie man diese Werte wiederholt und einsetzt?

sorry:     

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 05. Jul. 2016 15:41    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 4ppU 10 Unities + Antwort hilfreich

Servus
Du kannst direkt aus der Selektion schon die Reference bilden:
Code:
Set Elements(i)= selection1.Item2(i).Reference

Schau dir mal in der Doku den Join an. Bei "AddNewJoin" müssen zwei Referenzen übergeben werden und danach die anderen mit ".AddElement" hinzugefügt werden.

Gruß
Bernd


EDIT: Folgende Zeile ist bei dir noch falsch:

Code:
selection1.Search "(CATGmoSearch.GSMFill.Visibility=Visible + CATGmoSearch.GSMExtract.Visibility=Visible),GeoSet_Close_Surface sel"
Zum muss vorher das GeoSet im dem du suchst selektiert sein.
------------------
Warum einfach, wenn es auch kompliziert geht.

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

4ppU
Mitglied



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

Beiträge: 44
Registriert: 19.04.2016

Unterschiedliche Arbeitsplätze/ Hardware.
Catia V5
Microsoft Visual Basic for Applications

erstellt am: 06. Jul. 2016 11:15    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

Guten Tag zusammen,

und danke für die Hinweise. Es klappt jetzt soweit, nur das am Ende die F&E nicht ausgeblendet werden, wie bei nem Join üblich. Hat da nochmal jemand nen Tipp oder ne Idee, warum das nicht zu Ende läuft?

Am Anfang hat es ein mal geklappt. Allerdings habe ich dann angefangen den Code weiterzubearbeiten, joa, und dann wars das ^^

Und @Bernd: wenn ich da sel hinmache klappt es nicht. Mit meinem Geo_Set_... funktioniert es. Zumindest fast ^^

Hier ist nun der Code:

Code:
'Joinen von extracts und fills

Sub Assembly()

    Dim partDocument1 As PartDocument
    Set partDocument1 = CATIA.ActiveDocument

    Dim part1 As Part
    Set part1 = partDocument1.Part

    Dim hybridBodies1 As HybridBodies
    Set hybridBodies1 = part1.HybridBodies

    Dim gSet As HybridBody
    Set gSet = hybridBodies1.Item("GeoSet_Close_Surface")

    Dim hybridShapes1 As HybridShapes

    Set selection1 = CATIA.ActiveDocument.Selection

    Dim i As Integer
   
    Dim hybridShapeFactory1 As HybridShapeFactory
   
    Dim oAssy As HybridShapeAssemble
     
    Set hybridShapeFactory1 = CATIA.ActiveDocument.Part.HybridShapeFactory
   
    selection1.Search "(CATGmoSearch.GSMFill.Visibility=Visible + CATGmoSearch.GSMExtract.Visibility=Visible),GeoSet_Close_Surface"

    Dim Elements() As Object

    ReDim Elements(selection1.Count)

    For i = 1 To selection1.Count

    Set Elements(i) = selection1.Item2(i).Reference

    Next

    Set oAssy = hybridShapeFactory1.AddNewJoin(Elements(1), Elements(2))
   
    If selection1.Count > 2 Then
       
    For i = 3 To selection1.Count
           
    oAssy.AddElement selection1.Item2(i).Reference
             
    Next
   
    End If
   
    selection1.Clear

    oAssy.SetConnex 1
   
    oAssy.SetManifold 0
   
    oAssy.SetSimplify 0
   
    oAssy.SetSuppressMode 0
   
    oAssy.SetDeviation 0.001
   
    oAssy.SetAngularToleranceMode 0
   
    oAssy.SetAngularTolerance 0.5
   
    oAssy.SetFederationPropagation 0
   
    gSet.AppendHybridShape oAssy

    part1.InWorkObject = oAssy
   
    part1.Update
   
    CATIA.ActiveDocument.Part.UpdateObject oAssy

End Sub


Danke 

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 06. Jul. 2016 11: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 4ppU 10 Unities + Antwort hilfreich

Servus
Zum Ausblenden: da du die Element ja noch selektiert hast kannst du diese ja einfach auslebenden (VisPropertySet).
IMHO musst du dein GeSet selektieren und dann darin suchen:
Code:
selection1.Clear
selection1.add gSet
selection1.Search "(CATGmoSearch.GSMFill.Visibility=Visible + CATGmoSearch.GSMExtract.Visibility=Visible),sel"
Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

4ppU
Mitglied



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

Beiträge: 44
Registriert: 19.04.2016

Unterschiedliche Arbeitsplätze/ Hardware.
Catia V5
Microsoft Visual Basic for Applications

erstellt am: 06. Jul. 2016 11:46    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 naja ok. Ist natürlich n blöder weg, aber wenns sein muss.
das merkwürdige ist ja, wenn ich den Join öffne (dk) und dann auf ok gehe, is alles ausgeblendet und alles so wie es gewollt ist...
sehr merkwürdig alles ...

EDIT: Sorry, war nicht so gemeint. Nur schade, dass es dann nach der ganzen Programmiererei nicht so schön funktioniert, als würde man es händisch machen.
Ich dachte, vielleicht hat noch jemand einen Tipp, was da fehlt oder so, das es dann auch automatisch ausgeblendet wird.

Aber jetzt funktioniert alles. Vielen Dank an alle \o/

[Diese Nachricht wurde von 4ppU am 07. Jul. 2016 editiert.]

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