Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  selection elemente löschen

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:  selection elemente löschen (1259 mal gelesen)
joerneman
Mitglied
Konstrukteur


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

Beiträge: 140
Registriert: 19.07.2009

erstellt am: 29. Apr. 2015 11:13    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 zusammen,

ich habe eine selection mit mehreren String Elementen. Die Anzahl der Elemente ist variable.
z.B

"002" "005" "004" "006" "002" "004" "001"

jetzt möchte ich gerne alle doppelten rauslöschen.

Das nachher nur noch "002" "005" "004" "006" "001" übrigbleiben.
Wie gehe ich da am besten vor.

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

Beiträge: 1118
Registriert: 29.05.2008

DELL PRECISION T3500
Intel(R) Xeon(R) CPU W3540 @ 2.93GHz
12285 MB RAM
NVIDIA Quadro FX 1800
Microsoft Windows 7 Enterprise Service Pack 1
CATIA V5 R19 SP09 HF69
VB6.5
CAA RADE CDC

erstellt am: 29. Apr. 2015 12: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 joerneman 10 Unities + Antwort hilfreich

Möchtest Du aus dem String oder aus der Selection löschen?

Ich würd's mit einer Collection oder einem Dictionary lösen.

Jedes Element in einer Schleife hinzufügen und vor dem Hinzufügen prüfen ob es bereits schon vorhanden ist.
Wenn ja, dann das aktuelle löschen, wenn nein, dann hinzufügen

Code:

If(MyCollection.Exists(sNameOfElement)) Then
' Löschen
Else
' Hinzufügen
MyCollection.Add(sNameOfElement, objElement) ' kann auch andersrum sein, Dictionary und Collection haben je den Key an der anderen Stelle
End If

Ich mag die Collection, da sie super simpel ist, aber das Dictionary macht Dir später in anderen Programmen weniger Ärger. Reiner Erfahrungswert.
Wenn es ein CATVBS werden muss und unter Unix laufen soll, dann kannst Du hier auch suchen, ich habe irgendwann mal eine eigene Dictionary-Klasse gepostet, diese kann auch besser auf einzelne Elemente zugreifen.

------------------
Mit freundlichen Grüßen,
Henry Schneider
alias Lila

Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren:
Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen,
die Natur versucht, immer bessere Idioten zu bauen

Xing

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

joerneman
Mitglied
Konstrukteur


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

Beiträge: 140
Registriert: 19.07.2009

erstellt am: 29. Apr. 2015 13:53    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

Vielen Dank für die Antwort.

Ja ich will aus der Selection löschen.

Ich werden es mit der Collection mal ausprobieren, habe ich noch nicht mit gearbeitet.
Und mich melden falls es nicht klappt. 

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

Beiträge: 1118
Registriert: 29.05.2008

DELL PRECISION T3500
Intel(R) Xeon(R) CPU W3540 @ 2.93GHz
12285 MB RAM
NVIDIA Quadro FX 1800
Microsoft Windows 7 Enterprise Service Pack 1
CATIA V5 R19 SP09 HF69
VB6.5
CAA RADE CDC

erstellt am: 29. Apr. 2015 14: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 joerneman 10 Unities + Antwort hilfreich

Aus der Selection löschen könnte sogar noch einfacher werden.

Füge einfach über die Schleife alle Elemente zur Collection hinzu.
Die Collection akzeptiert nur einen Eintrag je Key (Name).

Dann leere die Selection selWork.Clear und füge über eine Schleife alle Elemente der Collection wieder zur Selection hinzu.

Und schwupp ist das Thema erledigt mit nur 2 Schleifen und den zwei Klassen Collection und Selection.

Ein Array wäre aber ressourcenschonender, jedoch nicht so leicht zu verwenden.

------------------
Mit freundlichen Grüßen,
Henry Schneider
alias Lila

Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren:
Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen,
die Natur versucht, immer bessere Idioten zu bauen

Xing

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

joerneman
Mitglied
Konstrukteur


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

Beiträge: 140
Registriert: 19.07.2009

erstellt am: 29. Apr. 2015 14: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

Ok, werde es so mal probieren.

Ist denn in der Collection direkt der String hinterlegt sprich "001"? Oder die Variable z.B test = "001"?

Code:

For i=1 to selection1.count

set mNr = selection1.Item(i).Value
Ver_Nr  = mNr.Name

    If(MyCollection.Exists(Ver_Nr)) Then
    End if
    Else
    MyCollection.Add(Ver_Nr)
    End if
Next



(Der Code ist ungetestet, wie gesagt habe ich noch nicht mit einer Collection gearbeitet und weiss nicht wie diese aufgebaut ist)

Dann noch die Schleife um die Collection wieder der Selection hinzuzufügen.

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

Beiträge: 1118
Registriert: 29.05.2008

DELL PRECISION T3500
Intel(R) Xeon(R) CPU W3540 @ 2.93GHz
12285 MB RAM
NVIDIA Quadro FX 1800
Microsoft Windows 7 Enterprise Service Pack 1
CATIA V5 R19 SP09 HF69
VB6.5
CAA RADE CDC

erstellt am: 29. Apr. 2015 14: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 joerneman 10 Unities + Antwort hilfreich

Beginnt die Selection bei 1 und nicht bei 0?
Nimm lieber einen sprechenden Namen als nur ein Zeichen für den Iterator. Spart Dir später massig Ärger, z.B. beim Suchen & Ersetzen.
Ansonsten solltest Du das Objekt selbst auch hinzufügen und dann den Namen als Key verwenden.
Wenn die Objekte schon in der Collection sind hast Du später weniger Arbeit die Selection neu zu schreiben, weil Dir MyCollection.Keys bereits ein Array liefert wo alle Objekte drin sind.

Was ich grad auch nicht weiß:
selWork.Item(iIterator) ist ohne .Value vom Typ SelectedElement. Eventuell kannst Du bereits mit genau diesem Objekt arbeiten ohne das .Value zu bilden.
Später wird es durch das Selection.Add ja ehh wieder ein SelectedElement. Hier kenne ich mich aber auch nicht so gut aus.

Code:

For iIterator=0 to selection1.count-1

set objWork = selWork.Item(iIterator).Value
sNameOfObj  = objWork .Name

    If(MyCollection.Exists(sNameOfObj)) Then
    Else
    MyCollection.Add(objWork, sNameOfObj)
    End if
Next iIterator


------------------
Mit freundlichen Grüßen,
Henry Schneider
alias Lila

Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren:
Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen,
die Natur versucht, immer bessere Idioten zu bauen

Xing

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

joerneman
Mitglied
Konstrukteur


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

Beiträge: 140
Registriert: 19.07.2009

erstellt am: 29. Apr. 2015 15: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

Vielen Dank schonmal für deine Hilfe.

sobald ich Zeit habe es zu testen, melde ich mich.

Danke

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