Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Hauptkörper ändern

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:  Hauptkörper ändern (1924 / mal gelesen)
razzor88
Mitglied



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

Beiträge: 42
Registriert: 09.06.2016

erstellt am: 17. Jun. 2016 20: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,

ich habe folgendes Problem.
Ich habe mehrere Körper in einem Part
nun möchte ich einen der Körper zum neuen Hauptkörper machen. Normalerweise mache ich rechtsklick auf den Körper und dann klicke ich auf "Hauptkörper ändern" und der Körper wird zum neuen Hauptkörper und wird automatisch an die oberste Stelle gesetzt.
Wenn ich das nun per Makro versuche wird der Körper zwar zum Hauptkörper geändert und der Originale Hauptkörper wird zu einem normalen Körper. Allerdings bleiben beide Körper im Baum an ihrer ursprünglichen stelle!
Hat jemand eine Idee woran das liegen kann, bzw eine Lösung wie man den neuen Hauptkörper an die oberste Stelle setzen kann?
 

Code:
  Sub Hauptkörper_ändern()
        Dim part1 As PartDocument
        part1 = Catia.ActiveDocument
        part1.Part.MainBody = part1.Part.Bodies.Item(3)
        part1.Part.Update()
  End Sub

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: 20. Jun. 2016 15: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 Nur für razzor88 10 Unities + Antwort hilfreich

Servus
Meiner Ansicht nach gibt es dazu zwei Lösungsansätze:
- Körper über ein StartCommand (gib es diese Command überhaupt?) zum Hauptkörper machen
- den Baum neu anordnen (über externes Programm per WindowsAPI die Klicks zum manuelle Neuordnen des Baums nach bilden. Sehr kompliziert)

Gruß
Bernd

PS: Bitte Systeminfo ergänzen.

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

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

razzor88
Mitglied



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

Beiträge: 42
Registriert: 09.06.2016

erstellt am: 20. Jun. 2016 20:47    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, also ich habe das ganze nun über StartCommand gelöst. Wenn man einen Körper zum Hauptkörper machen will bekommt man ein Fenster das man mit OK bestätigen muss. Dafür habe ich einen Sub "Fenster_bestätigen" geschrieben. Der Sub sucht in einer Endlosschleife nach dem Fenster, wenn es gefunden wurde wird es in den Vordergrund geholt und der "Enter" Befehl wird an das Fenster geschickt. Dieser Sub muss in einen anderen Thread ausgelagert werden, da der Hauptprozess in dem der StartCommand "Hauptkörper ändern" aufgerufen wird, angehalten wird sobald das Fenster erscheint das man mit OK bestätigen muss. Also weist man den Sub "Fenster_bestätigen" vorher einem neuen Thread zu und startet diesen, anschließend wird dann der StartCommand aufgerufen. Läuft bei mir einwandfrei 

An den Sub "Fenster_bestätigen" muss ein Array übergeben werden was einmal den Class-Name und den Titel des Fensters was gesucht werden soll enthalten muss. So kann man den Sub bestimmt auch nochmal für andere Fenster verwenden  .


Code:
trd = New System.Threading.Thread(AddressOf Fenster_bestätigen)
                        trd.IsBackground = True
                        trd.Start(str)
                        Catia.Application.RefreshDisplay = True
                        ' In die PartDesign Workbench wechseln
                        If Not Catia.GetWorkbenchId = "PrtCfg" Then
                            Catia.StartWorkbench("PrtCfg")
                        End If
                        AppActivate("Catia V5")
                        Catia.StartCommand("Hauptkörper ändern")

Code:

  '===========================================================================
    ' Die Funktion sucht nach einem Fenster und bestätigt dieses mit Enter
    ' Es muss ein Array mit folgendem Inhalt an diese Funktion übergeben werden:
    ' str(0) = Name der Klasse des Fensters
    ' str(1) = Titel des Fensters
    '===========================================================================
    Sub Fenster_bestätigen(str As Object())
        Dim hWndTmp As Long
        Dim objWshShell As Object
        Dim strTitle As String
        Dim strClass As String
        objWshShell = CreateObject("Wscript.Shell")
        strClass = str(0)
        strTitle = str(1)
        Do
            hWndTmp = FindWindow(strClass, strTitle)
            If hWndTmp <> 0 Then
                Do
                    trd.Sleep(10)
                    SetForegroundWindow(hWndTmp)
                    objWshShell.SendKeys("{ENTER}")
                    hWndTmp = FindWindow(strClass, strTitle)
                Loop Until hWndTmp = 0
                Exit Do
            End If
        Loop
    End Sub

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: 30. Jun. 2016 07:39    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 razzor88 10 Unities + Antwort hilfreich

Hallo,

kurze Nachfrage: das Problem ist also eher das Sortieren der Bodies im Tree, nicht einen Body zum PartBody zu machen?

Denn folgendes zur Info: sollte bereits einmal mit Script irgendein Body zum PartBody gemacht worden sein funktioniert die von dir beschriebene Logik nicht mehr, d.h. auch bei manuellem Ausführen über die Rechte Maustaste (wie von dir oben beschrieben) wird der "Neue PartBody" nicht mehr an die erste Stelle im Tree geschoben.

Kannst du ausprobieren, indem du folgendes CATScript über ein Part mit mehreren Bodies laufen lässt und dann manuell einen Body zum PartBody machst. Der landet nicht mehr oben.

Sub CATMain()
Set oP =  CATIA.ActiveDocument.Part
Set oB = oP.Bodies
For i = 1 to oB.Count
Set oB1 = oB.Item(i)
oP.MainBody = oB1
oB1.Name = oB.Name & ".Renamed" & i
oP.Update
Next
End Sub

Zum reinen "sortieren" von Bodies meine ich mal hier im Forum was gelesen zu haben. Schicke dir einen Link wenn ich s wiederfinde.

Gruß TomTom

[Diese Nachricht wurde von tomtom1972 am 30. Jun. 2016 editiert.]

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

razzor88
Mitglied



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

Beiträge: 42
Registriert: 09.06.2016

erstellt am: 30. Jun. 2016 15: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

Ja genau. Der neue Hauptkörper soll im Tree an oberster Stelle stehen.
Bisher läuft meine Lösung einwandfrei, allerdings freue ich mich über andere Lösungsvorschläge. Soweit ich weis funktioniert das sortieren des Trees auch nur über StartCommand und die WindowsAPI.

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