Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Item Funktion geht nicht!

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:  Item Funktion geht nicht! (1215 mal gelesen)
tonka
Mitglied



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

Beiträge: 59
Registriert: 18.07.2006

erstellt am: 04. Aug. 2006 08:32    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

Hy @ all

Habe ein großes Problem. Ich mache eine Multiselection mit dem Befehl SelectElement3. Es werden lauter projizierte Punkte ausgewählt. Der Befehl steht in der Function Multiselect. Hier kann ich ohne Probleme auf die einzelnen Selectionen (über item) anwählen. Ich schreibe die Selection sowohl in eine globale Variable, als auch als Rückgabewert der function. Jedoch kann ich auserhalb der Funktion nicht mehr mittels item auf die einzelnen Elemente zugreifen -> WIESO???

Ich programmiere mit dem internen CATIA Visual Basic Editor. CATIA V5 R14

Hier ein Auszug aus dem Code:

Function multiselect()

    Dim Referenzebene
    Dim Was(0)
    'Dim selektieren
    Dim zaehler As Integer
   
    Was(0) = "Reference"
           
    Dim E
    Dim UserSel As Object
    Set UserSel = CATIA.ActiveDocument.Selection
    UserSel.Clear
   
    Prismen.Hide
   
    E = UserSel.SelectElement3(Was, "Multiselection", True, CATMultiSelTriggWhenSelPerf, False)
   
    If (E = "Normal") Then
        Set multiselect = UserSel  'UserSel.Item(1).Value
        MsgBox ("Multiselect geschrieben")
        MsgBox (multiselect.Item(1).Value.Name)
        Set AuswahlMultiselect = multiselect
        MsgBox (AuswahlMultiselect.Item(1).Value.Name)  Hier gehts noch
    Else
        abbruch = 1
        Set multiselect = CATIA.ActiveDocument.Part
    End If
       
    If (UserSel.Count Mod 2 = 0) Then
        'MsgBox (UserSel.Count & " = Gerade")
        AnzahlElemente = UserSel.Count
    Else
        'MsgBox (UserSel.Count & " = Ungerade")
        AnzahlElemente = UserSel.Count - 1
    End If
   
   
    zaehler = 1
    'MsgBox (AnzahlElemente)
    'If (abbruch <> 1 And AnzahlElemente <> 0) Then
    '    Do
    '        MsgBox (UserSel.Item(zaehler).Value.Name)
            'MsgBox (AnzahlElemente & " - " & zaehler)
    '        zaehler = zaehler + 1
    '    Loop Until (zaehler = AnzahlElemente + 1)
    'End If
    'MsgBox ("alt= " & UserSel.Count & " neu= " & AnzahlElemente)
    'MsgBox (selektieren.Name)
   
    UserSel.EndSelectElement
    UserSel.Clear

End Function

Private Sub multiselection_Click()

    Dim ergebnis, erg
    Set ergebnis = multiselect()
   
    If (ergebnis.Name = CATIA.ActiveDocument.Part.Name) Then
        'Achsenwinkel.Caption = "Bitte Achsenwinkel auswählen"
        'freigabe7 = 0
        MultiselectAktivieren = 0
        Punkt1.Enabled = True
        Punkt2.Enabled = True
        freigabe2 = 0
        freigabe3 = 0
        MsgBox ("Der ****** is falsch")
    Else
        MultiselectAktivieren = 1
        Punkt1.Enabled = False
        Punkt2.Enabled = False
        freigabe2 = 1
        freigabe3 = 1
        'Set AuswahlMultiselect = ergebnis
        MsgBox (ergebnis.Item(1).Value.Name)  Hier funktioniert es nicht mehr
        'If (ergebnis.Unit.Name <> "Grad") Then
        '    Achsenwinkel.Caption = "Bitte Achsenwinkel auswählen"
        '    freigabe7 = 0
        '    MsgBox ("ACHTUNG: Der von Ihnen ausgewählte Parameter besitzt nicht die Einheit 'deg'!!!" & chr(13) & "Bitte wählen Sie erneut einen Parameter aus, der die Einheit 'deg' besitzt")
        'Else
        '    Achsenwinkel.Caption = ergebnis.Name
        '    freigabe7 = 1
        'End If
    End If
    'Set AuswahlAchsenwinkel = ergebnis
       
    erg = freischalten()
    Prismen.Show
   
   
   
End Sub


Vielleicht kann mir jemand von euch helfen!!!

MfG
Tonka

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

dr
Mitglied
CAD-/PLM-Entwickler und -Berater


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

Beiträge: 87
Registriert: 30.10.2001

erstellt am: 04. Aug. 2006 08: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 Nur für tonka 10 Unities + Antwort hilfreich

Hi,

Meine spontante Vermutung:
Als Rückgabewert in multiselect() verwendest Du UserSel.
set multiselect = UserSel weist 'multiselect' eine Referenz (!) auf UserSel zu.

multiselect und UserSel verweisen also auf dasselbe (!) Objekt.
Später rufst Du dann UserSel.Clear auf.
Damit ist die Selection wieder leer.
Also kannst Du beim Aufrufer auch nicht auf die Items darin zugreifen.

Direkt nach UserSel.Clear sollte multiselect.item(1) etc. auch bereits nicht mehr funktionieren.

Also: Entweder die Selection nicht leeren oder vorher kopieren...

------------------
--
Danny Reinhold
Reinhold Software Services

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

tonka
Mitglied



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

Beiträge: 59
Registriert: 18.07.2006

erstellt am: 04. Aug. 2006 08: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

Hy dr!

Danke für deine schnelle Antwort. Mit kopieren meinst du ich solls mit = kopieren.

aslo: multiselect = UserSel

Meinst du das so oder anders?

MfG
Tonka

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

dr
Mitglied
CAD-/PLM-Entwickler und -Berater


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

Beiträge: 87
Registriert: 30.10.2001

erstellt am: 04. Aug. 2006 08: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 tonka 10 Unities + Antwort hilfreich

Hi,

Nee, da wird VB wohl meckern.

Mit Kopieren meine ich grob sowas:

Code:

  dim result(100) ' Oder sonstwas...
  dim i as integer
  for i = 1 to usersel.count
    set result(i) = usersel.item(i)
    set result(i + 1) = nothing ' Kann später als "Ende"
                                ' Kennzeichen genutzt werden...
  next

Ein bissel besser müsste das wohl noch durchdacht werden, aber irgendsowas halt: Ein Kopieren aller Items der Selection bevor sie geleert wird...

------------------
--
Danny Reinhold
Reinhold Software Services

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

tonka
Mitglied



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

Beiträge: 59
Registriert: 18.07.2006

erstellt am: 04. Aug. 2006 09:32    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 wars

Thank you very very much

MfG
Tonka

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