Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Selection.Add // Method Add of object Selection failed

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.Add // Method Add of object Selection failed (1813 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: 31. Mrz. 2009 15:33    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

hi,

irgendwie mag mich CATIA in letzter Zeit nicht ^^
Zuerst musste ich es neu aufsetzen und jetzt komme ich beim programmieren nicht weiter.

Jedenfalls jetzt erstmal zu meinem Problem:
Bei

Code:
sSel.Add CATIA.Documents.Item(i)
kommt immer die Fehlermeldung Method "Add" of object "Selection" failed.
Nach meiner Auffassung sollte das jedoch glauben, gebe der Selection ja ein Object vom Typ CATPart mit... hab verschiedene Varianten und sonst was ausprobiert. Mit watch bin ich auch net aufm richtigen Pfad gekommen. Jetzt brauch ich bitte eine Idee von euch!?

Hier der Quellcode und danke im vorraus

Code:
Function SaveVisibleStateDoc() As Variant
'Speichern des Showstate der CATParts

    Dim sSel As Selection
    Set sSel = CATIA.ActiveDocument.Selection

    Dim visPropertySet1 As VisPropertySet
    Set visPropertySet1 = sSel.VisProperties

    Dim showstate As CatVisPropertyShow
    Dim save() As Variant
    Dim show

    ReDim save(CATIA.Documents.count - 1)

    For i = 1 To CATIA.Documents.count
        sSel.Clear
        If TypeName(CATIA.Documents.Item(i)) = "PartDocument" Then
       
            sSel.Add CATIA.Documents.Item(i) 'Fehler

            show = visPropertySet1.GetShow(showstate)
            save(i - 1) = showstate
        End If
    Next

    SaveVisibleStateDoc = save

End Function


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

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

ogard1
Mitglied
Verfahrenstechniker


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

Beiträge: 442
Registriert: 12.09.2004

R19 SP2

erstellt am: 31. Mrz. 2009 21: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 Smerg 10 Unities + Antwort hilfreich

Hallo,
was  für Dokument möchtest du übergeben, CATPart?

If TypeName(CATIA.Documents.Item(i)) = "CATPart" Then

probiere es so

Gruß

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

Lusilnie
Mitglied



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

Beiträge: 1486
Registriert: 13.07.2005

erstellt am: 31. Mrz. 2009 23:24    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 Smerg,

ich sehe 2 Probleme in Deinem Code.

Erstens:
"CATIA.Documents.Item(i)" ist ein Item in der Collection "Documents" und damit vom Typ "Document". Wenn Du das Part im "PartDocument" ansprechen willst, musst du "CATIA.Documents.Item(i).Part" benutzen.

Zweitens:
Die Selektion selbst! Die Selektion ist ein Teil des aktiven Dokuments. Wenn du dort ein beleibigees Dokument Deiner CATIA-Session hinzufügen willst, kann es durchaus schon dann zum Problem kommen, wenn der "Inhalt" des selektierten Dokumentes nicht im aktiven Dokument enthalten ist. Kann man überhaupt eine Selektion außerhalb des aktiven Dokumentes nutzen? Das versuchst Du aus meiner Sicht mit Deinem Code!

Was ist eigentlich das Ziel Deiner Selektion? Funktioniert dies auch interaktiv?


mfg,
Lusilnie

------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!!

frei nach größeren Geistern

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: 07. Apr. 2009 17:35    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 für die Tipps ...

@ogard1: hat damit nicht funktioniert... die Bedingung wurde nie erfüllt, dass mein PartDocument = CatPart ist... aber ich schaue mal, ob nicht irgendwo anders die eigenschaft CatPart verglichen werden kann

@Lusilnie: bei mir gibt es kein ".Part" bei "CATIA.Documents.Item(i).Part"!?

Das Problemm wenn der "Inhalt" des selektierten Dokumentes nicht aktiven Dokument ist, ist bekannt. Soll auch im kommenden Release von dem Skript kommen. Aber Step by Step ... das Skript soll erstmal für einfache Dokumente funktionieren ;-)
Im Prinzip soll der Code, "nur" die Eigenschaften der Sichbarkeit speichern um ihn an gegebener Stelle wieder herzustellen... zwischen drin wird ziemlich viel hin und her gemacht mit der Sichtbarkeit...

danke euch jedenfalls ...
Noch Tipps für mich!?

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

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: 08. Apr. 2009 07:54    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


Show_NoShow.jpg

 
Hallo Smerg,

grundsätzlich geht das schon, was du vor hast.

Nur ist es eben so, das die Eigenschaft der Sichtbarkeit keine Eigenschaft des Dokumentes ist, sondern der Instanz, d.h. also des .Product eines Dokuments.

Ob das nun wiederum zum aktiven Dokument gehört oder nicht spielt dabei keine Rolle, auch wenn die Selektion selbst immer dem CATIA.ActiveDocument zugeordnet ist.
Hast du z.B. zwei Strukturen geöffnet, sagen wir ein Root1.CATProduct und ein Root2.CATProduct, wobei Root1 das CATIA.ActiveDocument ist, so kannst du über die CATIA.Documents das Root2 aufrufen und sowohl
die Sichtbarkeit der "Instanz" (also des .Product) des Roots selbst auslesen als auch die Sichtbarkeit aller in Root2 verbauten Instanzen.

Bsp. fürs Root2, welches nicht das CATIA.ActiveDocument ist:

Set oSel = Catia.ActiveDocument.Selection
Set oVis = oSel.VisProperties
Set oRoot2 = Catia.Documents.Item("Root2.CATProduct")
oSel.Add (oRoot2.Product)
oVis.GetShow showstate

Bsp. für den ersten Knoten im Root(2, welche nicht das CATIA.ActiveDocument ist)

Set oSel = Catia.ActiveDocument.Selection
Set oVis = oSel.VisProperties
Set oRoot2 = Catia.Documents.Item("Root2.CATProduct")
Set oNode1 = oRoot2.Products.Products.Item(1)
oSel.Add (oNode1)
oVis.GetShow showstate

Folgendes solltest du jedoch erst einmal bedenken:

Wenn du z.B. ein Part in einem Product verbaust und in diesem Product das Part (bzw. richtiger gesagt die Instanz des Parts) ins NoShow legst und dann das Part in einem eigenen Fenster öffnest, so befindet sich das Part in dem eigenen Fenster wieder im Show, da wie schon weiter oben gesagt die Property Sichtbarkeit zur Instanz gehört und eben nicht zum Dokument. Du wirst also für alle Modelle die du über die CATIA.Documents aufrufst und ausliest die Info bekommen, das sie sichtbar (also im Show) sind, sofern nicht irgendjemand die "zum Dokument selbst gehörende Instanz" ins NoShow gelegt hat (ich weiß nicht, wie ich das besser formulieren soll: gemeint ist damit z.B. der im Bild selektierte Knoten unterhalb des Instanz-Knotens von Part1.1).
Und wenn das jemand tun will muss er alle Modelle in einem eigenen Fenster öffnen, da sich dieser Knoten sonst nicht in NoShow legen lässt (da es sich eben um die "zum Dokument selbst gehörende Instanz" handelt, die interaktiv nur zugänglich ist, wenn das Dokument das CATIA.ActiveDokument ist, oder eben per Script über die CATIA.Documents oder das ReferenceProduct.Parent.Product in einer Struktur)

Das was du vor hast erscheint mir also ein wenig sinnlos, da wahrscheinlich alles sichtbar sein wird (auch wenn es sich innerhalb einer Struktur irgendwo im NoShow befindet).

Gruß TomTom

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

[Diese Nachricht wurde von tomtom1972 am 08. Apr. 2009 editiert.]

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: 08. Apr. 2009 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,

@tomtom: genauso sehe ich das auch, was bei großen Baugruppen zu riesigen Problemen führt dann man sollte es vermeiden alle Part´s einzeln zu öffnen (Rechnerstabilität). Aber für deinen Beitrag bekommst du von mir auf jeden Fall U´s (vielleicht kannst du ja damit deine Arztrechnung bezüglich Behandlung von wunden Fingerkuppen durch intensives Tippen auf einer Tastatur bezahlen  )

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

Die KATJA ist halt doch nur ne zickige Französin

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: 25. Apr. 2009 12: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

denke ich weiß jetzt, wo der Fehler liegt.
Werd ihn kommende Woche versuchen auf den Leib zu rücken ...

@TomTom: danke für die ausführliche Beschreibung

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

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