Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  .activate und .inactivate und .isactivate funktioniert 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:  .activate und .inactivate und .isactivate funktioniert nicht (886 mal gelesen)
Chrisma
Mitglied
Ingenieur


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

Beiträge: 85
Registriert: 29.03.2010

Solid Works 2013 Professional
Win7 SP1
Intel Xeon 2,67GHz
12GB Ram

erstellt am: 25. Mai. 2010 13: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

Servus alle zusammen,

ich habe ein Problem mit dem Abfrage ob ein Intersect aktiv ist oder nicht und dem Steuern dieses Paramters.

In Countname befindet sich der richtige Intersect. Der Status der aktivierung wird aber nicht erkannt.

Code:
Set part1 = CATIA.ActiveDocument.Part
Dim countname As AnyObjectSet part1 = CATIA.ActiveDocument.Part

Set countname = sel.Item(i)
  Debug.Print countname.Value.name
  If part1.IsInactive(countname) Then 'hier wird abgefragt, ob der intersect deaktiviert ist, wird aber nicht erkannt und übersprungen.
    part1.Activate
    part1.UpdateObject
   
    If Err.Number <> 0 Then
        part1.Inactivate countname
        part1.UpdateObject countname
    End If
   
    Else
   
    part1.Inactivate countname
    part1.UpdateObject countname
    part1.Activate countname
    part1.UpdateObject countname
   
    If Err.Number <> 0 Then
        part1.Inactivate countname
        part1.UpdateObject countname
    End If
    On Error GoTo 0
  End If
Next



------------------
Hihihi, lol, hihihi 

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 25. Mai. 2010 14: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 Nur für Chrisma 10 Unities + Antwort hilfreich

Servus
Ich weiß nicht, ob "IsInactive" nur im PartDesign funktioniert (also keine Flächen, Ebenen, Linien,..)
Gemäß Doku könnte es (für zB Taschen) über:
If part1.IsInactive(countname.value)
gehen (Zugriff auf das Objekt).

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

Chrisma
Mitglied
Ingenieur


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

Beiträge: 85
Registriert: 29.03.2010

erstellt am: 25. Mai. 2010 14: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

Hmmm, stimmt. Im Ziethen steht es unter der Klasse Part. Ich verschneide Linien und Ebenen im GSD. Mist.

in If part1.IsInactive(countname.value) das .Value steht im Ziethen nicht.Damit erkennt es zumindest schonmal, dass der Intersect deaktiviert ist. Der Intersect wird aber in der Abfrage dann nicht aktiviert. Weder mit noch ohne .value.

Bin auch für andere Ideen offen. Finde aber nichts dafür.

------------------
Hihihi, lol, hihihi 

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

Chrisma
Mitglied
Ingenieur


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

Beiträge: 85
Registriert: 29.03.2010

Solid Works 2013 Professional
Win7 SP1
Intel Xeon 2,67GHz
12GB Ram

erstellt am: 27. Mai. 2010 11: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

Also es geht auf jeden Fall Intersects auch mit dem Befehl Intersect.Inactivate zu steuern. Macht der Macrorecorder auch. Hab herausgefunden, dass es wohl daran liegt, wie ich meine Intersects auswähle.


Hubs, hab gar nicht dran gedacht, dass hier noch offen ist. Hier gehts dann weiter:
http://ww3.cad.de/foren/ubb/Forum137/HTML/004085.shtml

------------------
Hihihi,
  lol, hihihi 

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 27. Mai. 2010 18:11    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 Chrisma 10 Unities + Antwort hilfreich

Servus

Anbei ein Beispiel. Vielleicht hilft dass etwas weiter:

Code:
Sub CATMain()

Dim oPart As Part
Set oPart = CATIA.ActiveDocument.Part
Dim oSel As Selection
Set oSel = CATIA.ActiveDocument.Selection

oSel.Search "CATGmoSearch.GSMIntersect,all"

For X = 1 To oSel.Count2
Dim Objekt As Object
Set Objekt = oSel.Item2(X).Reference

If oPart.IsInactive(Objekt) Then

MsgBox Objekt.name & " ist deaktiviert"

oPart.Activate Objekt

End If

oPart.Update

Next

End Sub


Gruß
Bernd

PS: Über "Set Objekt = oSel.Item2(X).Value" läuft bei mir dass Script auch durch

------------------
Warum einfach, wenn es auch kompliziert geht.

[Diese Nachricht wurde von bgrittmann am 27. Mai. 2010 editiert.]

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

Chrisma
Mitglied
Ingenieur


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

Beiträge: 85
Registriert: 29.03.2010

erstellt am: 28. Mai. 2010 09:56    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

Hei danke dir. So funktionierts.

Ich denke es liegt daran, dass ich von meinem Intersect keine Reference gemacht habe (Set Objekt = oSel.Item2(X).Reference). Was genau macht das .Reference hier?
Ich kenne es leider nur wenn man Beispielsweise einem Punkt einen anderen Ursprung zuweist. Aber das hier ist ja wohl was anderes.

Code:

Sub CATMain()
'----Selektion der Intersects
Dim oSel As Selection
Set oSel = CATIA.ActiveDocument.Selection

oSel.Search "CATGmoSearch.GSMIntersect,all"


'----Überprfüung des Status auf aktivität und auf Existenz des Intersects
Set intPartObj = CATIA.ActiveDocument.Part
Dim Objekt As Object
For i = 1 To sel.Count
     
    Set Objekt = sel.Item2(i).Reference
   
    If intPartObj.IsInactive(Objekt) Then
       
        Debug.Print Objekt.name & " ist deaktiviert"
       
            intPartObj.Activate Objekt
            intPartObj.UpdateObject Objekt
           
                If Err.Number <> 0 Then
                intPartObj.Inactivate Objekt
                intPartObj.UpdateObject Objekt
                End If
   
   
    Else
   
       
        Debug.Print Objekt.name & " ist aktiviert"
           
            intPartObj.Inactivate Objekt
            intPartObj.UpdateObject Objekt
            intPartObj.Activate Objekt
            intPartObj.UpdateObject Objekt
               
                If Err.Number <> 0 Then
                intPartObj.Inactivate Objekt
                intPartObj.UpdateObject Objekt
                End If
       
    End If
End Sub
 
Next


------------------
Hihihi, lol, hihihi 

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