Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Rootknoten aktivieren

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:  Rootknoten aktivieren (2554 mal gelesen)
Lambo5
Mitglied
Consulting

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

Beiträge: 4
Registriert: 16.02.2007

erstellt am: 16. Feb. 2007 20: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,

ich möchte mit einem Skript den Rootknoten einer Baugruppe aktivieren (blau hinterlegt).
Beim Start des Skripts ist ein beliebiges Part in der Baugruppe aktiv. Aus diesem heraus wird das Skript gestartet, welches u.a. an jedem Knoten in der Baugruppe einen Parameter erzeugt. Diese Parameter sollen aber nur temporär sein, und ich möchte diese am Ende des Skriptlaufs wieder aus der Baugruppe löschen. Dies funktioniert aber nur, wenn der Rootknoten in der Baugruppe aktiv ist. Ansonsten kommt beim Löschen in immer die Meldung "Selected elements not allowed for this operation".

Weiss da vielleicht jemand Rat. Alle meine Versuche mit .Product / .ReferenceProduct /. ActivateDefaultShape usw. sind bisher fehlgeschlagen.

Danke für die Hilfe.....

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: 19. Feb. 2007 07:14    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 Lambo5 10 Unities + Antwort hilfreich

Hallo Lambo5,

was du schreibst ist nicht richtig.
Es kann in einer verschachtelten Produktstruktur in der tiefsten Ebene ein Part aktiviert sein (in dem du dich befindest, welches also "blau hinterlegt" ist), und du kannst in der kompletten restlichen Struktur Objekte löschen/anlegen/editieren.
Das ein Part/Product "blau hinterlegt" (= aktiviert) sein muss, um mittels Script etwas damit zu machen ist ein Irrtum, den ich im Forum öfter lese. Das ist nur für bestimmte mittels CATIA.StartCommand ausgeführte Befehle der Fall.

Beschreib mal ein bischen genauer, was du vor hast.

Gruss
TomTom

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

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

Lambo5
Mitglied
Consulting

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

Beiträge: 4
Registriert: 16.02.2007

erstellt am: 19. Feb. 2007 11:22    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 TomTom,

ich durchsuche mit meinem Skript die Produkstruktur nach bestimmten Strings in der Partnumber. Die gefundenen Teile sollen im Anschluss aus der Produktstruktur entfernt werden. Um diese Teile später aber evt. wieder an der richtigen Stelle einzufügen, hinterlege ich im Adapterteil die Information in welcher Subbaugruppe sich das Einzelteil vor dem Löschen befand. Um diese Info in den Adapter zu übertragen, erstelle ich für jedes Product/Part auf Assemblyebene einen Parameter in dem drinsteht, welchem übergeordneten Productknoten dieses Teil / Baugruppe zugeordnet ist. Diese Infoparameter brauche ich aber nur temporär, und möchte sie am Ende des Skriptlaufes wieder löschen... und genau da liegt mein Problem - ich krieg die Dinger nur raus, wenn ich von Hand den Rootknoten der Baugruppe aktiviere. Ist ein Teil aktiv, so kann Catia die Parameter nicht löschen.

Gruss

Lambo

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: 19. Feb. 2007 13:59    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 Lambo5 10 Unities + Antwort hilfreich

Hallo,

erzeuge mal eine verschachtelte Product-Struktur (CATProducts, CATParts). Bitte abspeichern.
Wechsle in ein Part ganz unten im Tree (dieses ist jetzt "blau hinterlegt").
Jetzt starte mal u.s. Script und klicke auf "Yes". In jedem CATProduct & CATPart werden 5 Parameter erzeugt.
Jetzt starte das Script noch mal und klicke auf "No". In jedem CATProduct & CATPart werden die Parameter gelöscht.
Obwohl ein Part ganz unten im Tree "aktiv" ist.

Wo liegt das Problem? Oder ich habs immer noch nicht verstanden.
Bei mir gehts auf jeden Fall.

Gruss
TomTom

Code:

Language="VBSCRIPT"

Sub CATMain()
Set oRoot = Catia.ActiveDocument
Set oProduct = oRoot.Product
Set oProducts = oProduct.Products
iDelOrCreate = MsgBox("Yes = Create Parameters    No = Delete Parameters  ", 3, "What do you want to do?")
If iDelOrCreate = 6 Then
  MsgBox "Now we create some Parameters    ", 64, "Info"
  For i = 1 to 5
      SUB_ProdScan oProducts, iDelOrCreate, i
      oProduct.Update
  Next
ElseIf iDelOrCreate = 7 Then
  MsgBox "Now we delete the Parameters    ", 64, "Info"
  SUB_ProdScan oProducts, iDelOrCreate, 0
  oProduct.Update
Else
  Exit Sub
End if
End Sub

Sub SUB_ProdScan(oProducts, iDelOrCreate, i)
For iProdScan = 1 To oProducts.Count
  Set oProduct = oProducts.Item(iProdScan)
  If TypeName(oProduct.ReferenceProduct.Parent) = "PartDocument" Then
      Set oDoc = oProduct.ReferenceProduct.Parent.Part
  ElseIf TypeName(oProduct.ReferenceProduct.Parent) = "ProductDocument" Then
      Set oDoc = oProduct.ReferenceProduct.Parent.Product
      If oProduct.Products.Count > 0 Then
        Set oProductsUebergabe = oProduct.Products
        SUB_ProdScan oProductsUebergabe, iDelOrCreate, i
      End If
  End If
  Set oParams = oDoc.Parameters
  If iDelOrCreate = 6 Then
      Set strParam1 = oParams.CreateString("Test." & i, "Hallo Welt")
  ElseIf iDelOrCreate = 7 Then
      For Each oParameter in oParams
        If Instr(1, oParameter.Name, "Test") Then
            oParams.Remove(oParameter.Name)
        End if
      Next
  End if
Next
End Sub

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

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

prosper
Mitglied
Dipl.-Ing. -- Methoden und Prozessentwicklung Catia V5


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

Beiträge: 86
Registriert: 05.05.2004

erstellt am: 20. Feb. 2007 19: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 Lambo5 10 Unities + Antwort hilfreich

Servus zusammen,

Tomtom hat im Bereich Parameters schon recht, weil er die Parameters nicht über die Selektion löscht sondern über Parameters.Remove (oParam.Name).

Wenn es sich aber um Copy/Paste Operationen handelt (die über die Selection laufen) sollte schon mindestens das gemeinsame Produkt zwischen den beide Parts blau hinterlegt sein. Optimal, um sicher zu sein, wäre schon schön das RootProdukt blau zu hinterlegen. Ich habe es persönnlich noch nicht geschaft.

Eines habe ich sogar schon mal probiert. Jetzt können sie lachen. 
Das RootProdukt in die Selection addieren (Root wird rot markiert), ein ScreenShot erzeugen, und die Pixels nach RGB Farbe zu analysieren. Wenn ein Roter Bereich gefunden ist, die Maus auf die Koordinaten positionieren und ein Doppel Klick simulieren....    Das habe ich natürlich nur zum Spass gemacht, die Performance ist echt beschissen. 

Hat jemanden vielleicht eine schnellere und stabilere Lösung?

Ich muss nur noch über die Vorgehensweise lachen. 

Gruss

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

Lambo5
Mitglied
Consulting

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

Beiträge: 4
Registriert: 16.02.2007

erstellt am: 22. Feb. 2007 12:18    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,

vielen Dank für deinen Lösungsvorschlag TomTom. Mein Fehler war, dass ich die Parameter über die Selection löschen wollte. Mit Remove funktioniert das ganze.
Habe nun auch noch den Fall, dass ich Parts aus der Produktstruktur löschen will. Da gibts ja eigentlich auch die Remove-Methode. Aber die klappt bei mir nicht - bzw. nur wenn beim Skriptstart der Rootknoten aktiviert ist.

Mir ist aufgefallen dass du TypeName verwendet hast - war mir bisher unbekannt. Hab so etwas immer über .FullName gelöst. Scheint genauso zu funktionieren - auf die Performance hats jedenfalls keinen Einfluss.

Vielen Dank nochmal für die schnelle Hilfe 

Lambo

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

Goosnargh
Mitglied



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

Beiträge: 80
Registriert: 30.11.2004

erstellt am: 27. Feb. 2007 14:00    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 Lambo5 10 Unities + Antwort hilfreich

Ich hab mir mal ne Lösung gebastelt, aber auch nicht gerade stabil:

Sub NeuesProdukt()
Dim ToBeClosed As String


CATIA.ActiveDocument.Selection.Add CATIA.ActiveDocument.Product
CATIA.ActiveDocument.Selection.Copy
CATIA.ActiveDocument.Selection.Clear

Dim documents1 As Documents
Set documents1 = CATIA.Documents
Dim productDocument1 As ProductDocument
Set productDocument1 = documents1.Add("Product")

CATIA.ActiveDocument.Selection.Add CATIA.ActiveDocument.Product
ToBeClosed = CATIA.ActiveDocument.Product.PartNumber

CATIA.ActiveDocument.Selection.PasteSpecial "CATProdCont"


CATIA.DisplayFileAlerts = False
CATIA.StartCommand ("Open In New Window")

CATIA.Windows.Item(ToBeClosed).Close

End Sub

Ich kopiere mein Aktives Dokument in ein neues Produkt, und offne es wieder in einem neuen fenster.
Endet leider öfter mal im Command Interrupt.

Ausserdem funktioniert das Windows.Close nicht. Gar nicht,
egal wo ich es anwende, er aktiviert das Fenser und schließt es nicht. Hat da jemand ne lösung?

[Diese Nachricht wurde von Goosnargh am 27. Feb. 2007 editiert.]

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



Ingenieur Maschinenbau (m/w/d)
Menschen und Technologien zu verbinden, den Perfect Match für unsere Kunden zu gestalten, immer die richtigen Expert:innen für die jeweilige Herausforderung zu finden - das ist unser Anspruch bei FERCHAU und dafür suchen wir dich: als ambitionierte:n Kolleg:in, der:die wie wir Technologien auf die nächste Stufe bringen möchte. Du weißt genau, was du technologisch auf dem Kasten hast? Du suchst einen ...
Anzeige ansehenMaschinenbau
Lambo5
Mitglied
Consulting

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

Beiträge: 4
Registriert: 16.02.2007

erstellt am: 28. Feb. 2007 20: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

Hallo,

statt dem Öffnen, könntest du ja auch die .Read Methode verwenden. Funktioniert bei mir ganz gut. Hat aber leider Mängel, wenn du innerhalb einer Baugruppe alle Subprodukte bearbeiten willst.
Für die erste Ebene der Subprodukte ist es aber nicht schlecht.

Gruss
Lambo

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