Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Makro um Userselektionen als Ergebnis (Tot) einzufügen

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:  Makro um Userselektionen als Ergebnis (Tot) einzufügen (3273 mal gelesen)
Beny
Mitglied
Konstrukteur - Standardisierung


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

Beiträge: 36
Registriert: 15.11.2010

erstellt am: 17. Jan. 2011 15: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

Ein herzliches Hallo,


ich habe ein "kleines" Problem    wo ich im moment voll aufn schlauch stehe und einfach nicht mehr weiterweiß.
etwas ähnliches habe ich hier leider nochnicht gefunden.

und zwar geht es darum das ich ein Makro schreiben soll wo der User elemente Selektiert und danach werden die vom User selektierten Elemente (in dem Fall linien, punkte und Ebenen) in ein neu erstelltes Geometrisches Set als ergebnis eingefügt. (ich habe es in VBA angefangen weil ich damit die Mehrsprachigkeit in Catia realisieren kann.)

Anbei der Code:


Sub CATMain()

    Dim AktuellesPartDocument As PartDocument
    Set AktuellesPartDocument = CATIA.ActiveDocument
       
    Dim AktuellesPart As Part
    Set AktuellesPart = AktuellesPartDocument.Part
       
        Dim GSHBS_CP As HybridBodies
        Set GSHBS_CP = AktuellesPart.HybridBodies
        Dim GSHB_CP As HybridBody
        Set GSHB_CP = GSHBS_CP.Add()
        GSHB_CP.Name = "Kopierte Drahtgeometrien"
        AktuellesPart.InWorkObject = GSHB_CP
    AktuellesPart.Update
   
        'GSHBS_CP = GeometrischesSetHybridBodieS_Copy
        'GSHB_CP = GeometrischesSetHybridBody_Copy
   
    '----- Selektion definieren und leeren -----
    Dim UserSel1 'As Object
    Set UserSel1 = AktuellesPartDocument.Selection
 
    UserSel1.Clear
    UserSel1.Search "CATPrtSearch.BodyFeature,all"
    'UserSel1.VisProperties.SetPick catVisPropertyNoPickAttr                      <== Stellt alle Bodys ins NOPICK
    UserSel1.Clear

      '----- Auswahlfilter festlegen -------------------
        Dim Was(0 To 2)
        Was(0) = "Point"
        Was(1) = "Plane"
        Was(2) = "Line"
      '-------------------------------------------
     
      '----- User Auswahl für späteren Kopiervorgang -------------------
        Dim Auswahl 'As Object
        Auswahl = UserSel1.SelectElement3(Was, "Bitte selektieren sie NUR Drahtgeometrien (z.B. Entformungsrichtungen, Positionselemente)/ ESC zum Abbrechen", False, CATMultiSelTriggWhenUserValidatesSelection, False)
   
    '----- Formular mit der Infomeldung verdecken (nonmodal Thema)-------------------
    frm1.Hide
   
    '----- User Auswahl kopieren und in dem oben erstellten geoSet "GSHB_CP" einfügen -------------------
    '*
    '*
    '*
    '*
    '*
    '*
    '*
    '*
    'UserSel1.PasteSpecial "CATprtResultwithoutLink"
    '*
    '*
    '*
    '*
    '*
   
       
       
     
    AktuellesPart.Update

End Sub


Das Formular frm1 ist einfach nur eine Info-Box die dem User nochmal ausführlich erklärt was er anklicken soll. (habe ich in einem Formular lösen müssen, weil es nonmodal sein muss...) (der user soll ja nebenbei noch elemente in Catia auswählen können)

Ich weiß jetzt einfach nicht wie ich die "Auswahl" (vom User) in meine Selection im Programm bekomme, damit ich sie dann kopieren und in das geoset einfügen kann.
wäre toll wenn jemand eine Idee hätte wie das funktionieren könnte.
Habe schon daran gedacht die "Auswahl" variable als eine Selection oder wie in der Ziethen-Biebel (Seite.49-51) als CATBSTR zu deklarieren, da lauf ich aber ständig auf einen fehler.

Ich bedanke mich schonmal jetzt für eure antworten.

Vielen dank

lg beny

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: 17. Jan. 2011 17: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 Beny 10 Unities + Antwort hilfreich

Servus
Sollte etwa so gehen (Element sind ja schon selektiert):
Code:
UserSel1.Copy

UserSel1.Clear
UserSel1.Add GSHB_CP
UserSel1.PasteSpecial "CATprtResultwithoutLink"


Gruß
Bernd

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

[Diese Nachricht wurde von bgrittmann am 17. Jan. 2011 editiert.]

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

Beny
Mitglied
Konstrukteur - Standardisierung


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

Beiträge: 36
Registriert: 15.11.2010

erstellt am: 18. Jan. 2011 09: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 Morgen,

Ja sowas habe ich auch erst probiert, aber irgendwie passiert da gar nichts....

(Ich vermute das ich vllt. die Variable "Auswahl" noch zur Selection hinzufügen muss... also damit er die vom User selectierten Elemente im 3D, oder Baum in die Variable "UserSel1" hinzufügen müsste) wenn ich das allerding versuche (wie du oben nur mit Auswahl statt GSHB_CP) dann läuft der auf einen Fehler...

Lg beny

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

Beny
Mitglied
Konstrukteur - Standardisierung


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

Beiträge: 36
Registriert: 15.11.2010

erstellt am: 18. Jan. 2011 09:49    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 nochmal,


Ich hab den Fehler gefunden, da hat was von der Logik nich gepasst und ein schreibfehler war auch noch drin.

Anbei der fertige Code:

Sub CATMain()

    Dim AktuellesPartDocument As PartDocument
    Set AktuellesPartDocument = CATIA.ActiveDocument
       
    Dim AktuellesPart As Part
    Set AktuellesPart = AktuellesPartDocument.Part
       
        Dim GSHBS_CP As HybridBodies
        Set GSHBS_CP = AktuellesPart.HybridBodies
        Dim GSHB_CP As HybridBody
        Set GSHB_CP = GSHBS_CP.Add()
        GSHB_CP.Name = "Kopierte Drahtgeometrien"
        AktuellesPart.InWorkObject = GSHB_CP
    AktuellesPart.Update
   
        'GSHBS_CP = GeometrischesSetHybridBodieS_Copy
        'GSHB_CP = GeometrischesSetHybridBody_Copy
   
    '----- Selektion definieren und leeren -----
    Dim UserSel1 'As Object
    Set UserSel1 = AktuellesPartDocument.Selection
 
    UserSel1.Clear
    UserSel1.Search "CATPrtSearch.BodyFeature,all"
    'UserSel1.VisProperties.SetPick catVisPropertyNoPickAttr                      <== Stellt alle Bodys ins NOPICK
    UserSel1.Clear

      '----- Auswahlfilter festlegen -------------------
        Dim Was(0 To 2)
        Was(0) = "Point"
        Was(1) = "Plane"
        Was(2) = "Line"
      '-------------------------------------------
     
      '----- User Auswahl für späteren Kopiervorgang -------------------
        Dim Auswahl 'As Object
        Auswahl = UserSel1.SelectElement3(Was, "Bitte selektieren sie NUR Drahtgeometrien (z.B. Entformungsrichtungen, Positionselemente)/ ESC zum Abbrechen", False, CATMultiSelTriggWhenUserValidatesSelection, False)
   
    '----- Formular mit der Infomeldung verdecken (nonmodal Thema)-------------------
    frm1.Hide
    '----- User Auswahl kopieren und in dem oben erstellten geoSet "GSHB_CP" einfügen -------------------
    UserSel1.Copy
   
    Dim UserSel2 As Selection
    Set UserSel2 = AktuellesPartDocument.Selection
    UserSel2.Clear
    UserSel2.Add GSHB_CP
    UserSel2.PasteSpecial "CATPrtResultWithOutLink"
   
    AktuellesPart.Update

End Sub

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