Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Listbox -> Selection -> Hide

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:  Listbox -> Selection -> Hide (2183 mal gelesen)
Smerg
Mitglied
Student


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

Beiträge: 43
Registriert: 20.03.2008

erstellt am: 30. Aug. 2008 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

Halli Hallo,

ich schreib zurzeit an einem Macro. Nun stehe ich leider vor einem Problem, wo ich Hilfe brauche... 
und zwar habe ich eine Listbox in der, durch den User, selektierte (verschiedene) Elemente aus Catia aufgelistet sind.

Zur Vereinfachung gehen wir einmal davon aus, dass der User nun einen Button drückt und darauf hin die Elemente der Listbox alle auf "hide" gesetzt werden in CATIA.

Nun zu meinem Problem, wie bekomme ich Rückwirkend die Elemente der Listbox in eine Selection hinein!?
Wie ich Hide setzte ist klar usw. Aber mir fehlt irgendwie der Gedanke, wie ich der Selection sagen soll, dass ist das Teil aus Catia und adde es... 


gruß Stefan

------------------
ODI PROFANUM VULGUS

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

denyo_1
Moderator
Manager


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

Beiträge: 2506
Registriert: 10.08.2005

HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3

erstellt am: 30. Aug. 2008 19: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 Smerg 10 Unities + Antwort hilfreich

Hallo Stefan,

du kannst dir doch die Teile aus deiner ListBox wieder über die Items holen. Dann machst du eine Schleife und fügst alle Teile der Box innerhalb der Schleife in die Selektion.

For i=1 to ListBox1.Items.Count
set aktiElemet = ListBox1.Items.Item(i)
oSel.Add (aktiElemet)
Next

Hab ich jetzt nicht getestet aber sollte ungefähr so funktionieren.

Grüße vom Barthelmarkt ;-)

------------------
MFG Daniel

Die KATJA ist halt doch nur ne zickige Französin

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

tomtom1972
Mitglied
dipl ing maschinenbau


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

Beiträge: 605
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon E5-1620, 64GB RAM
Windows10 64bit
R30 <= CATIA V5 > =R19

erstellt am: 01. Sep. 2008 08: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 Nur für Smerg 10 Unities + Antwort hilfreich

Hallo,

so einfach gehts dann doch nicht.
Ein ListBox (also das List.Item) kann nur Strings enthalten, keine Objekte. Und wenn du die Strings für das Catia.Selection.Add() verwendest, hilft das gar nichts. Um Objekte handeln zu können, würde das List.Item einen .Tag benötigen.
Den hat es aber erst in VB.net, vorher nicht.

Bis dahin (in VB6 oder so) musst du die Objekte separt zur ListBox in einer Collection verwalten.

D.h. wenn du den Namen (=String) einer Instanz (also das .Product) eines Catia-Modells einer Listbox zufügst, fügst du das Objekt einer Collection zu, wobei der Key des Items der Collection die Verbindung zur Listbox ist.

Also z.B.:

Set oNode1 = CATIA.ActiveDocument.Product.Products.Item(1) '--- das ist der erste Knoten eines Produkes

'--- dein ListBox, als Bsp. List1
List1.AddItem oNode1.Name '--- der Instanz-Name

Wie man ListBoxen verwaltest scheinst du zu wissen. Die Collection:

Dim cItems As Collection
Set cItems = New Collection
'--- oNode ist das Object, oNode1.Name der Key
cItems.Add oNode, oNode1.Name

Wenn nun jemand die Listbox anklickt (oder wie du es auch sonst immer umsetzten möchtest) bekommst du ein Click-Ereignis:

Private Sub List1Click()
   iIndex = List1.ListIndex
   sSelectedItem = List1.List(Index)
End Sub

Über den String sSelectedItem kann auf das entsprechende Object in der Collection zugegriffen werden:
Set oItem = cItems.Item(sSelectedItem)

und das dann in die CATIA Selection zufügen
oSelection.Add(oItem)

Achtung: Der Key muss unikal sein, d.h. er darf nur einmal vorkommen. D.h. bei Strukturen, in welchen mehrere Intancen mit dem selben Index auftauchen musst du etwas anderes als den Instanznamen verwende, z.B,. den "Pfad" vom Root nach unten

Root
   Product1.1
      Part1.1
      Part1.2
   Product2.1
      Part1.1    <--- Zuordnung nicht rein über den .Name möglich, weil oben schon einmal, also
      Part1.2         besser Root/Product2.1/Part1.1

Hoffe das hilft dir

Gruss TomTom

------------------
tomtom1972

[Diese Nachricht wurde von tomtom1972 am 01. Sep. 2008 editiert.]

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: 01. Sep. 2008 09:25    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 Smerg 10 Unities + Antwort hilfreich

Und was ist mit .GetReferenceByName oder .FindObjectByName?
Wäre das nicht einfacher, weil dann bekommt man doch selektierbare Elemente als Rückgabe, wenn ein String (aus der Listbox) übergeben wurde.

Ich weiß, das gibt wieder Probleme, falls Namen doppelt auftreten, weshalb ich auch eine Collecton bevorzugen würde, aber für einfache Anwendungsfälle müsste es ausreichen.

------------------
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

tomtom1972
Mitglied
dipl ing maschinenbau


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

Beiträge: 605
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon E5-1620, 64GB RAM
Windows10 64bit
R30 <= CATIA V5 > =R19

erstellt am: 01. Sep. 2008 09: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 Smerg 10 Unities + Antwort hilfreich

Hallo,

du meinst .CreateReferenceFromName ?
Könnte vielleicht auch gehen.
Mit .CreateReferenceFromName hast du (denke ich) das Problem, das du dir den Pfad über die komplette Struktur (vom Root bis zum Object) zusammenbasteln musst, das ist der Krümpel, den der Recorder aufzeichnet, wenn du z.B. innerhalb einer Struktur einen Constraint auf irgendein Object erzeugst oder etwas publizierst. Es gibt Fälle, da geht es nur über .CreateReferenceFromName (z.B. das Erzeugen von Baugruppenconstrainst), aber ansonsten würde ich das eher vermeiden.

.FindObjectByName ist eine Methode, die zum Part (Dokument) gehört und dir deshalb immer nur Objekte des Dokuments zurück gibt.
Wenn du also ein Part geöffnet hast und Elemente (Flächen oder sonst was) handelst geht das ganz gut.
Auf eine Struktur bezogen heisst das allerdings, das immer die erste in der Struktur verbaute Instanz behandelt wird und das führt zu Fehlern.

Das direkte Arbeiten mit den Objekten (aus der Collection) geht einfacher.
Oder eben keine Listbox verwenden sondern z.B. ein TreeView bei dem die einzelnen Nodes ein .Tag besitzen (dem direkt Objekte zugewiesen werden können) und welches man so aufbauen kann, das es wie ein Liste aussieht.

Die Vorgehensweise mit der Collection ist jedoch meines Erachtens nach am einfachsten.

Gruß TomTom 

------------------
tomtom1972

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

Smerg
Mitglied
Student


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

Beiträge: 43
Registriert: 20.03.2008

erstellt am: 03. Sep. 2008 13: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

danke danke... sind hilfreiche Tipps.
Hab schon gedacht, dass ich in diese Richtung noch was machen muss...

------------------
ODI PROFANUM VULGUS

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

Smerg
Mitglied
Student


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

Beiträge: 43
Registriert: 20.03.2008

erstellt am: 03. Sep. 2008 14: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

Leider merke ich mal wieder, dass ich mich in Catia nicht wirklich auskenne... das Programm ist leider nicht meine Heimat.
Nun muss ich mich da rein denken und nachfragen, damit ich nen bekannten das gewünschte Macro geben kann. ^^

QUELLTEXT mit Fehlermeldung: Method 'Add' of object 'Selection' failed
-> kann mir da jemand weiter helfen

Public bItems As Collection


Sub CATMain()
...
  Set bItems = New Collection
...
End Sub


Sub SelectionShow(Multipagenumber As Integer)
   
 
    Dim sSelection As Selection
    Set sSelection = CATIA.ActiveDocument.Selection
           
 
    Select Case Multipagenumber
       
            Case "1"
                If UserForm.ListBox_B_CAE.ListCount > 0 Then
               
               
                    For i = 1 To UserForm.ListBox_B_CAE.ListCount Step 1
                       
                        sSelectedItem = UserForm.ListBox_B_CAE.List(i)
                        Set oItem = bItems.Item(sSelectedItem)
                        sSelection.Add (oItem)  '---> FEHLER
                                     
                    Next
                End If
    ...

    End Select

   
    Set visPropertySet1 = Selection.VisProperties
    visPropertySet1.SetShow 1
   
    sSelection.Clear
   
 

End Sub
------------------
ODI PROFANUM VULGUS


[Diese Nachricht wurde von Smerg am 04. Sep. 2008 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