Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  SelectElement2

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:   SelectElement2 (431 mal gelesen)
Desken
Mitglied



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

Beiträge: 24
Registriert: 12.03.2019

Intel Xeon Cpu E5-1620
32Gb Ram
Catia V5

erstellt am: 12. Mrz. 2019 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

Hallo,

ich habe folgendes Problem bei meiner CatVBA Programmierung:
Ich habe ein Produkt mit mehreren Parts. Nun soll der Nutzer aufgefordert werden, aus einem Part mehrere Flächen/Elemente zu selektieren (entweder durch einzelnes Markieren oder durch aufspannen eines Kastens mit der Maus).Die selektierten Elemente sollen dann in eine anderes Part im Produkt als "dumme" Flächen kopiert werden.
Bisher bin ich soweit, dass der Nutzer nur 1 Element auswählen kann. Müsste irgendwie eine Schleife oder Ähnliches durchgelaufen werden? Bin Neuling in der VBA Programmierung und würde mich über Hilfe oder Codeschnippsel freuen.

Viele Grüße
Dennis

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: 10549
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 12. Mrz. 2019 18: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 Nur für Desken 10 Unities + Antwort hilfreich

Servus Dennis

Willkommen im Forum. Bitte Systeminfo ausfüllen.
Der Ablauf könnte sein:

  • Elemente der Multiselektion in einem Array abspeichern
  • Array abarbeiten: Element einzeln selektieren, kopieren, einfügen
Gruß
Bernd

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

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

Desken
Mitglied



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

Beiträge: 24
Registriert: 12.03.2019

Intel Xeon Cpu E5-1620
32Gb Ram
Catia V5

erstellt am: 13. Mrz. 2019 09: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

Hallo Bernd,

danke für die Antwort. An ein Array habe ich auch schon gedacht. Wie würde ich in einem Array die Elemente selektieren. Müsste jedes Element einzeln bearbeitet werden? Es kann eine große Menge an Elemente werden ...
Ich probiere die Selektion gerade mit der SelectElement3. Kannst du mir dabei ein Tipp geben, wie ich vom Assemply ins Shape Design wechseln kann? Ich kann die Elemente aus einem Part kopieren, aber nicht in ein anderes Part des Produktes einfügen. Öffnen eines neuen Fensters mittels StartWorkbench"Workbenchid" führt nicht zum erfolg. Ein neues Fenster wird zwar im Shape geöffnet, die Arbeitsumgebung im Produkt wird aber nicht gewechselt

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: 10549
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 13. Mrz. 2019 17:42    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 Desken 10 Unities + Antwort hilfreich

Servus

Beispiel zum Kopieren in ein anders Part des Products: siehe zB hier.
Zum selektieren von den im Array gespeicherten Elementen:

Code:
for i = LBound(oArrayBuffer) to UBound(oArrayBuffer)
  oSel.Clear
  oSel.Add oArrayBuffer(i)
  oSel.Copy
  'hier weiter Code für das Einfügen
next
Gruß
Bernd

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

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

Desken
Mitglied



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

Beiträge: 24
Registriert: 12.03.2019

Intel Xeon Cpu E5-1620
32Gb Ram
Catia V5

erstellt am: 14. Mrz. 2019 14:43    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 Bernd,

danke für die Antwort, das hilft mir weiter. Gibt es einen Befehl, der prüft, ob ein Element in einem Geoset oder doch in einem Body ist? Würde es dann in einer If-Schleife verpacken. If Element in Geoset, dann kopieren... if Element in Body, dann Extract usw.

Grüße

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: 10549
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 14. Mrz. 2019 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 Desken 10 Unities + Antwort hilfreich

Servus

mit .Parent.Parent zum Body/GeoSet hoch hangeln und zB mit TypeName prüfen.

Gruß
Bernd

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

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

Desken
Mitglied



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

Beiträge: 24
Registriert: 12.03.2019

Intel Xeon Cpu E5-1620
32Gb Ram
Catia V5

erstellt am: 15. Mrz. 2019 09:18    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 Bernd,

kannst du mir den Befehl .parent.parent genauer erklären?
Würde z.B " Selektion" meine ausgewählten Elemente beinhalten, welche in einem Body liegen:

If Selektion.Parent.Parent.TypeName = "Bodybezeichnung" Then
CATIA.StartCommand ...?

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: 10549
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 15. Mrz. 2019 09: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 Desken 10 Unities + Antwort hilfreich

Servus

Du musst auch  auf das selektierte Element zugreifen:

Code:
Set oSelElement = oSel.item2(1).Value
MsgBox (TypeName(oSelElement.Parent.Parent))
Vermutlich muss du für dein Vorhaben nicht die Workbench wechseln.
StartCommands würde ich nur benutzen wenn es nicht anders geht.

Gruß
Bernd

PS: Falls du in VBA programmierst: schau dir mal das Watch- und Local-Fenster an.

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

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

Desken
Mitglied



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

Beiträge: 24
Registriert: 12.03.2019

Intel Xeon Cpu E5-1620
32Gb Ram
Catia V5

erstellt am: 15. Mrz. 2019 09: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

Da stehe ich im Moment auf dem Schlauch.
Hier ist mein Code, der die Selektion anfordert:

Dim UserSel As Object
    Set UserSel = Document.SELECTION
    UserSel.Clear


InputObjectType(0) = "AnyObject": iMsg = "Select curves..."

MsgBox "Bitte bestätigen und die Elemente selektieren"

Status = UserSel.SelectElement3(InputObjectType, iMsg, _
False, CATMultiSelTriggWhenUserValidatesSelection, True)

If ((Status = "Cancel") Or (Status = "Undo") Or (Status = "Redo")) Then Exit Sub

' CrCount = UserSel.Count
Dim oSelElement As Object

Set oSelElement = Status.Value
MsgBox (TypeName(oSelElement.Parent.Parent))


CATIA.ActiveDocument.SELECTION.Copy

Im letzten Schritt vor der MsgBox kommt der Fehler ,dass ihm das Objekt noch fehlt.
Das Local Fenster kenne ich schon, auf jeden Fall sehr sinnvoll.

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: 10549
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 15. Mrz. 2019 10: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 Nur für Desken 10 Unities + Antwort hilfreich

Servus

Schau bitte mal in die Doku was dir SelectElement3 zurück liefert.
Du musst auch ein selektiertest Element (und nicht alle) ansprechen:

Code:
Set oSelElement = UserSel.item(1).Value 'das erste selektierte Element

Gruß
Bernd

PS: Vorsicht mit dem Filter bei der Selektion. Möglichst weit einschränken, sonst fällt deine Makro ggf voll auf die Nase.

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

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

Desken
Mitglied



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

Beiträge: 24
Registriert: 12.03.2019

Intel Xeon Cpu E5-1620
32Gb Ram
Catia V5

erstellt am: 15. Mrz. 2019 10: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

Danke, daran lag es

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

Desken
Mitglied



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

Beiträge: 24
Registriert: 12.03.2019

Intel Xeon Cpu E5-1620
32Gb Ram
Catia V5

erstellt am: 15. Mrz. 2019 10:54    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

Du meintest, StartCommands sollten lieber vermieden werden. Wenn bei mir jetzt das ausgewählte Element  ein Solid ist, also in einem Body steckt, soll davon ein "dummes" Multiple Extract gemacht werden und die dadurch erzeugte Fläche weiter verwendet werden.
Geht es denn überhaupt, den StartCommand "Multiple Extract zu umgehen?

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: 10549
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 15. Mrz. 2019 11:12    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 Desken 10 Unities + Antwort hilfreich

Servus

Hast du dazu schon mal in die V5Automation.chm geschaut oder versucht was dazu der Makrorekorder ausspuckt? (AddNewExtractMulti hört sich doch vielversprechend an)

Gruß
Bernd

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

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

Desken
Mitglied



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

Beiträge: 24
Registriert: 12.03.2019

Intel Xeon Cpu E5-1620
32Gb Ram
Catia V5

erstellt am: 15. Mrz. 2019 12: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

Die Automationdatei habe ich auch schon durchgestöbert, nur den Befehl nicht gefunden. AddNewExtractMulti ist genau das, was ich gesucht habe.
Folgendes habe ich:

If TypeName(oSelElement.Parent.Parent) = "Body" Then

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 hybridBody1 As HybridBody
Set hybridBody1 = hybridBodies1.Add()

hybridBody1.AddNewExtractMulti (oSelElement)

End If

Bei der Zuweisung, von welchem Element ein Extract gemacht werden soll, kommt noch ein Fehler. Aber oSelElement sollte doch schon durch UserSel.Item(1).Value definiert sein, oder liege ich da falsch?
Vielen Danke für die Antworten

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: 10549
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 15. Mrz. 2019 13:34    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 Desken 10 Unities + Antwort hilfreich

Servus

Hast du die Fehlermeldung gelesen? Und auch verstanden?
Ein HybridBody hat nicht die Methode AddNewExtractMulti und erwartet vermutlich auch einen bestimmten Input (siehe Doku).
Schau dir zB mal dazu die Makroaufzeichnung an.

Gruß
Bernd

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

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

Desken
Mitglied



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

Beiträge: 24
Registriert: 12.03.2019

Intel Xeon Cpu E5-1620
32Gb Ram
Catia V5

erstellt am: 18. Mrz. 2019 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

Hey Bernd,

wie du schon erahnt hast, fehlt ihm das Inputobjekt. Den Macrorecorder habe ich mal laufen lassen, das hilft mir schon bei den folgenden Befehlen weiter. Jedoch bekomme ich es noch nicht hin, den Befehl AddNewExtractMulti mit meinem erzeugten Geoset zu verbinden. Der Recorder schreibt etwas mit HybridShapeFactories, das ist mir leider noch ziemlich unbekannt...

Folgendes habe ich:

Dim oSelElement As Object

Set oSelElement = UserSel.Item(1).Value
       
        If TypeName(oSelElement.Parent.Parent) = "Body" Then

            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 hybridBody1 As HybridBody
            Set hybridBody1 = hybridBodies1.Add()

Das klapp, es wird ein neues Geoset erstellt, wenn sich die Selektion in einem Body befindet.
Hier ist das, was der Recorder zu Beginn ausgibt:

Sub CATMain()

Dim partDocument1 As PartDocument
Set partDocument1 = CATIA.ActiveDocument

Dim part1 As Part
Set part1 = partDocument1.Part

Dim bodies1 As Bodies
Set bodies1 = part1.Bodies

Dim body1 As Body
Set body1 = bodies1.Item("Result of 5NA807111_TM012__TRAEGER STF VORN_17-08-2015_00.1\TRAEGER")

Dim shapes1 As Shapes
Set shapes1 = body1.Shapes

Dim solid1 As Solid
Set solid1 = shapes1.Item("Solid.1")

Dim reference1 As Reference
Set reference1 = part1.CreateReferenceFromObject(solid1)

Dim reference2 As Reference
Set reference2 = part1.CreateReferenceFromObject(solid1)

Dim hybridShapeFactory1 As HybridShapeFactory
Set hybridShapeFactory1 = part1.HybridShapeFactory

Dim hybridShapeExtractMulti1 As HybridShapeExtractMulti
Set hybridShapeExtractMulti1 = hybridShapeFactory1.AddNewExtractMulti(reference2)

Dim reference3 As Reference
Set reference3 = part1.CreateReferenceFromObject(solid1)

Ab hier folgen dann die Einstellungen des Extract.
Es klappt nur noch nicht, das vom Recorder mit meinem Code zu verbinden...
Vielleicht hast du ja noch einen Tipp, 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: 10549
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 18. Mrz. 2019 11: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 Desken 10 Unities + Antwort hilfreich

Servus Dennis

Was HybridShapeFactory siehe V5Automation, ein Hybridshape zu einem geoSet hinzufügen geht über AppendHybridShape.
So könnten die beiden Codes zusammengefasst werden:

Code:
If TypeName(oSelElement.Parent.Parent) = "Body" Then

            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 hybridBody1 As HybridBody
            Set hybridBody1 = hybridBodies1.Add()

            Dim refSelElement As Reference
            Set refSelElement = part1.CreateReferenceFromObject(oSelElement)

            Dim hybridShapeFactory1 As HybridShapeFactory
            Set hybridShapeFactory1 = part1.HybridShapeFactory

            Dim hybridShapeFactory1 As HybridShapeFactory
            Set hybridShapeFactory1 = part1.HybridShapeFactory

            Set hybridShapeExtractMulti1 = hybridShapeFactory1.AddNewExtractMulti(refSelElement)
....


Was mich entwas wundert: du wolltest doch in ein CATProduct die Flächen selektieren lassen, somit sollte hier Set partDocument1 auf die Nase fallen.
Ja nach dem was du für die Selektion zulässt (zB Teilflächen (BREP) wirst du noch auf weitere Probleme stoßen. Deshalb den Filter möglichst weit einschränken.

Gruß
Bernd

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

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

Desken
Mitglied



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

Beiträge: 24
Registriert: 12.03.2019

Intel Xeon Cpu E5-1620
32Gb Ram
Catia V5

erstellt am: 18. Mrz. 2019 15: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

Danke, das klappt jetzt!. Habe es jetzt nochmal etwas anders aufgebaut. Ein Produkt wird nicht mehr erzeugt, sondern einzelne Parts geöffnet und die Flächen als Variable gespeichert.
Es klappe jetzt super, der Nutzer wählt die Fläche aus, ist sie in einem Body bzw ein Solid, wird sie als "Datum" extrahiert und weiter verarbeitet.
Danke bis hier schonmal  

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

Desken
Mitglied



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

Beiträge: 24
Registriert: 12.03.2019

Intel Xeon Cpu E5-1620
32Gb Ram
Catia V5

erstellt am: 19. Mrz. 2019 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

Gibt es eine Möglichkeit, ein Join von den Elementen eines Arrays zu machen?. Der Nutzer wählt Flächen aus, diese werden in einem Array gespeichert und sollen schließlich zu einem Join zusammengefasst werden.

Hier ist mein Code bisher:
' Auswahl festlegen -------------------
        Dim Was1(0)
        Was1(0) = "Face": iMsg = "Select curves..."
        '--------------------------------------
        MsgBox "Bitte bestätigen und die Elemente selektieren!"


Hier auch noch eine Fragen: Kann man mehrere Auswahlfilter festlegen? Z.b "Face" und "Solid" getrennt durch oder? Es geht wahrscheinlich, ich komme nur noch nicht drauf, in welcher Form das Programm es haben will, habe schon vieles probiert.


'        Dim Auswahl
        Auswahl = UserSel.SelectElement3(Was1, iMsg, _
        False, CATMultiSelTriggWhenUserValidatesSelection, True)

        If ((Auswahl = "Cancel") Or (Auswahl = "Undo") Or (Auswahl = "Redo")) Then Exit Sub
'
        CrCount = UserSel.Count
        CrCount = Auswahl.Count
       
'Selektierten Elemente in ein Array speichern---------------------------------------------

Dim AuswahlArray()
ReDim AuswahlArray(UserSel.Count)

For N = 1 To UserSel.Count
  Set AuswahlArray(N) = UserSel.Item(N).Value
Next


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: 10549
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 19. Mrz. 2019 17:55    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 Desken 10 Unities + Antwort hilfreich

Servus Denis

Bitte Code in entsprechenden Tags posten.
zum Filter: du kann doch den Array mit mehr Elementen dimensionieren:

Code:
Dim Was1(1)
Was1(0) = "Face"
Was1(1) = "Solid"
Zu deinem Join: mit AddNewJoin den Join erstellen und mit AddElement weitere Elemente hinzufügen (siehe Doku und Forensuche)

Gruß
Bernd

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

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)2019 CAD.de | Impressum | Datenschutz