Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Feststellen ob Element in Selektion

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:  Feststellen ob Element in Selektion (414 mal gelesen)
Tiberius
Mitglied
 


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

Beiträge: 414
Registriert: 19.02.2002

erstellt am: 24. Jul. 2009 07:41    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,

man angenommen bevor ein Skript gestartet wird, wird vom user eine Selektion getroffen. Wenn dann das Skript abläuft und die Baumstruktur durchforstet soll es feststellen ob gerade diese Element in der Selektion vom User liegt. Wie bekomm ich das am einfachsten hin? (Das Systematische durchgehen des Baumes habe ich bereits, es dreht sich nur noch um die Feststellung ob selektiert).

Gruß

Tiberius

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

DanielFr.
Moderator
Manager


Sehen Sie sich das Profil von DanielFr. 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: 24. Jul. 2009 09:10    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 Tiberius 10 Unities + Antwort hilfreich

Hallo,

so ganz verstehe ich den Beitrag von dir nicht. Du spricht vom "gerade dieses"...welches? Woher bekommst du den den Input bzw. das Teil zum vergleichen?

Hier mal ein Code der Selektion. Mit diesem kannst du z.B. die Namen von einem Input (von dir vorgegeben) und der User-Selektion vergleichen.

Code:

Dim oSel as Selection
Dim oDoc as Document

Set oDoc = CATIA.ActiveDocument
Set oSel = oDoc. Selection

If oSel.Count = 1 then
  Set mySelName = oSel.Item(1).Value
  If mySelName = "xyz" then'hier wird abgefragt ob es sich um ein bestimmtes Teil handelt
  End If
ElseIf oSel.Count = 0 then
  MsgBox "Keine Selektion vorgenommen"
ElseIf oSel.Count > 1 then
  MsgBox "Es wurden mehrere Teile selektiert"


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

Die KATJA ist halt doch nur ne zickige Französin

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

Tiberius
Mitglied
 


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

Beiträge: 414
Registriert: 19.02.2002

erstellt am: 24. Jul. 2009 09:48    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

Ich möchte nicht die Selektion durchgehen, sondern den kompletten Baum - und dort bei den einzelnen Unterelementen feststellen ob dieses Element in der Selektion mit drinnen ist. Hatte gehoffe es gibt ne Methode das abzufragen die dann true oder false zumindest liefert.

Wenn ich z.B. meherere Aufspannungen habe und darunter wieder mehrere Programme und diese dann komplett durchgehe, will ich nur wissen ob das gerade untersuchte Element (in dem Fall das Programm in einer Aufspannung) in der vorher gewählten Selektion ist.

Hoffe es ist jetzt etwas klarer.

Grüße

Tiberius

[Diese Nachricht wurde von Tiberius am 24. Jul. 2009 editiert.]

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

DanielFr.
Moderator
Manager


Sehen Sie sich das Profil von DanielFr. 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: 25. Jul. 2009 09:58    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 Tiberius 10 Unities + Antwort hilfreich

Hallo Tiberius,

schau dir mal folgendes Beispiel an. Ich hoffe es ist das was du suchst. Der Anwender muss zuerst mindestens ein Programm im Strukturbaum selektieren. Wird dann das Makro ausgeführt, durchläuft das Makro den Baum, sucht alle Programme raus und vergleicht diese mit der Selektion. Ist ein Programm in der Selektion vorhanden gibt das Makro ein Nachricht aus und schreibt das Objekt in ein Array (das kannst du dann weiter benutzen).

Ich hoffe ich habe das jetzt richtig verstanden 

Code:

Sub CATMain()

    'Deklarationen
    Dim oDoc As Document
    Dim oProg As ManufacturingProgram
    Dim oProcess As PPRActivity
    Dim oSel As Selection
    Dim mySelecedArray() As ManufacturingProgram
    Dim Counter As Integer
    Dim myChilds As ChildrenActivities
    Dim myActiveChild As Activity
    Dim mySubChild As Activity
    Dim mySelName As String
       
    'Hauptschleife
    Counter = -1
    Set oDoc = CATIA.ActiveDocument
    Set oSel = oDoc.Selection
    If oSel.Count = 0 Then
        Box = MsgBox("Es liegt keine Selektion vor!", vbCritical, "KEINE SELEKTION")
        Exit Sub
    End If
    Set oProcess = oDoc.GetItem("Process")
    Set myChilds = oProcess.ChildrenActivities
    For i = 1 To myChilds.Count
        Set myActiveChild = myChilds.Item(i)
        If myActiveChild.Type = "ManufacturingSetup" Then
            If CStr(myActiveChild.Active) = "True" Then
                For hh = 1 To myActiveChild.ChildrenActivities.Count
                    Set mySubChild = myActiveChild.ChildrenActivities.Item(hh)
                    If mySubChild.Type = "ManufacturingProgram" Then
                        If (mySubChild.Active) = "True" Then
                            For ii = 1 To oSel.Count
                                Set myAktiSel = oSel.Item(ii).Value
                                mySelName = myAktiSel.Name
                                If mySubChild.Name = mySelName Then
                                    'Selektierte Programme in Array schreiben
                                    Counter = Counter + 1
                                    ReDim Preserve mySelecedArray(Counter)
                                    Set mySelecedArray(Counter) = mySubChild
                                    Box = MsgBox("Folgendes Programm ist in der Selektion enthalten:" + Chr(10) + _
                                                "==> " + Chr(34) + mySubChild.Name + Chr(34) + " <==", vbInformation, _
                                                "Hinweis")
                                End If
                            Next
                        End If
                    End If
                Next
            End If
        End If
    Next
End Sub


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

Die KATJA ist halt doch nur ne zickige Französin

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

Tiberius
Mitglied
 


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

Beiträge: 414
Registriert: 19.02.2002

erstellt am: 26. Jul. 2009 18:19    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 Daniel,

vielen Dank für Deine Mühen. Ich hatte inzwischen auch ne Idee nur kam ich nicht groß online. Ich hab Deinen Code noch nicht ganz durchgesehen, jedoch werde ich das auf alle fälle noch machen. meine Idee hat auch blendend funktioniert. Ich möchte das aber erst noch fertig bekommen und dann kann ich es hier rein stellen dass andere auch was davon haben. Aber wie gesagt ich will das erst fertig machen damits nichts halbes ist.

Gruß

Tiberius

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