Autor
|
Thema: .activate und .inactivate und .isactivate funktioniert nicht (886 mal gelesen)
|
Chrisma Mitglied Ingenieur
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 / zitieren --> Unities abgeben:
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.PartSet 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
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 25. Mai. 2010 14:19 <-- editieren / zitieren --> Unities abgeben: Nur für Chrisma
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
Beiträge: 85 Registriert: 29.03.2010
|
erstellt am: 25. Mai. 2010 14:35 <-- editieren / zitieren --> Unities abgeben:
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
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 / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 27. Mai. 2010 18:11 <-- editieren / zitieren --> Unities abgeben: Nur für Chrisma
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
Beiträge: 85 Registriert: 29.03.2010
|
erstellt am: 28. Mai. 2010 09:56 <-- editieren / zitieren --> Unities abgeben:
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.SelectionoSel.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 |