Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Den Baum alphanumerisch sortieren

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:  Den Baum alphanumerisch sortieren (3115 mal gelesen)
karlos1
Mitglied
Ingenieur

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

Beiträge: 2
Registriert: 12.11.2012

CATIA V5 R19
64 bit/ RAM 48 G

erstellt am: 12. Nov. 2012 17: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

Hallo Leute,

ich brauche dringend Hilfe    
Mein Model (PartCAT) besteht aus vielen Bodies, die erstmal umbenannt und danach alphanummerisch sortiert werden müssen. Die Bodies sind alle tode Solides (Vater & Children spielt keine Rolle).

Ich habe hier im Forum ein Makro gefunden, womit man den Baum in einem Product sortieren kann. Zwar funktioniert es, allerdings hilft mir nicht:

Sub CATMain()

    'Abfrage Dokumente
    If CATIA.Windows.Count = 0 Then
   Box = MsgBox("Es ist kein Dokument geladen!" + Chr(10) + "Das Makro kann nicht ausgefuehrt werden und wird beendet!", vbCritical, "Keine Dokument geladen")
   Exit Sub
   End If
       
    Set Dokument = CATIA.ActiveDocument
    If TypeName(Dokument) <> "ProductDocument" Then
        Box = MsgBox("Das aktiv geladen Dokument ist KEIN CATProduct!" + Chr(10) + "Bitte aktivieren sie ein CATProduct und starten sie das Makro erneut!", vbExclamation, "Abbruch falscher Dateityp")
        Exit Sub
    End If

set Product_Collection = new Collection

Set Produkte = Dokument.Product.Products

for each Product in Produkte
Product_Collection.add Product.Name
next

Product_Collection.sort

Set oSel = Dokument.Selection
oSel.clear

for i = 1 to Product_Collection.Count
oSel.add Produkte.Item(Product_Collection.Item(i))
oSel.cut
oSel.clear
oSel.add Dokument.Product
oSel.Paste
oSel.clear
next

end sub

'==================================================================================================
class Collection

    private Array()

    sub class_initialize()
      'Array mit 1 (leeren) Datenfeld anlegen'
      Redim Array(0)   
    end Sub
   

    'Elemat am Ende des Arrays hinzufuegen (automatische erweitern))_________________________________________

    public Sub add(Datenfeld) 
          Index = Ubound(Array)
          ReDim preserve Array((Index+1))
          Array(Index+1) = Datenfeld
    end Sub   
   
    'Datenfeld ausgeben___________________________________________

    public function Item(Index)
        'Ueberpruefen: Index zu hoch? Index 0 ist leer'
        if (Index <= 0 and Index > Ubound(Array)) then       
          Item = "ungueltiger Index"       
        Else   
          Item = Array(Index)         
        End If   
    end function
   
   
    'den Array aufsteigend sortieren'
    Sub sort
        'Bubblesort 
        for i = 1 to Ubound(Array)-1
          for u = i to Ubound(Array)
            if Array(i) > Array(u) then
                'temp-Variable schreiben, danach austauschen
                temp = Array(i)
                Array(i) = Array(u)
                Array(u) = temp
            end if
          next
        next        
    end Sub

public function Count
Count = Ubound(Array)
end function

end class


Kann mir einer dabei helfen das Makro für ein Part umzuschreiben bzw. paar Hinweise geben, die mir zum Ziel bringen können.

Danke für eure Hilfe


[Diese Nachricht wurde von karlos1 am 12. Nov. 2012 editiert.]

[Diese Nachricht wurde von karlos1 am 12. Nov. 2012 editiert.]

[Diese Nachricht wurde von karlos1 am 12. Nov. 2012 editiert.]

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: 12. Nov. 2012 18: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 Nur für karlos1 10 Unities + Antwort hilfreich

Servus
Willkommen im Forum. Bitte Systeminfo ausfüllen.
Das Makro kommt mir sehr bekannt vor *grins*
Wenn du das Makro nicht umschreiben kannst/willst kannst du auch einfach das Part in eine Bagruppe konvertieren (siehe Forensuche (AFAIR copyPARTtoPRODUCT_boole.CATScript), dann das Sortieren-Makro ausführen und wieder ein AllCATPart erstellen.

Gruß
Bernd

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

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

karlos1
Mitglied
Ingenieur

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

Beiträge: 2
Registriert: 12.11.2012

CATIA V5 R19
64 bit/ RAM 48 G

erstellt am: 13. Nov. 2012 09:57    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

Genial  es hat funktioniert.
Besten Dank

[Diese Nachricht wurde von karlos1 am 13. Nov. 2012 editiert.]

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

Marks
Mitglied
Konstrukteur

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

Beiträge: 3
Registriert: 25.11.2008

CATIA V5
Windows 7 Enterprise SP1
Intel Xeon E5-1620 0 @ 3.6GHz
32GB RAM

erstellt am: 25. Jun. 2013 11: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 karlos1 10 Unities + Antwort hilfreich

Hallo zusammen,

das Sortieren von Bauteilen ist auch mir ein Anliegen, jedoch habe ich mit dem Erstellen von Klassen
weder Erfahrung noch eine Vorstellung wie ich das machen soll (Wenn ihr dazu ein gutes  Tutorial wisst,
dann wäre ich ein dankbarer Abnehmer! 

Leider komme ich auch mit dem Vorschlag des Konvertierens des Part-ZB-Bauteils in ein Product auch nicht weiter.

Meine Idee wäre jetzt gewesen über ITEM die Bodies anzusprechen und die Namen auszulesen und diese in ein Array
abzuspeichern, welche dann die Soriterung mittels Bubblesort durchführt. Dann sollte das 5P Alphabetisch-numerisch
sortiert sein.

Jetzt habe ich den "leisen" Verdacht, dass diese Methode hier erheblich schlanker und unkomplizierter
abläuft als mein "Kopfmodell".

Ich würde mich sehr darüber freuen, wenn ich dazu aus dem Forum einige Denkanstöße bekommen könnte...

------------------

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. Jun. 2013 11:55    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 karlos1 10 Unities + Antwort hilfreich

Servus
Das Makro macht genau das was du beschreibst, nur das die entsprechende Funktionalität (sortieren, zum Array hinzufügen) in eine Class "ausgegliedert" wurde.
Das Makro sollte schnell umgebaut sein: die For-next-Schleife statt auf die Producta auf die Bodies "loslassen" (Vorsicht: ggf ist eine Prüfung nach dem Mainbody notwendig, da dieser nicht ausgeschnitten werden kann)

Gruß
Bernd

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

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

geekv5
Mitglied
Konstrukteur


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

Beiträge: 214
Registriert: 13.07.2011

Notebook<P>MSI GX660R
Intel Core i5 460M
8GB DDR3
1GB Mobility HD5870
80GB Intel X25-M Postville
250GB HDD<P>Desktop<P>AMD Phenom II X4 965
1GB HD4890@ FirePro V8700
8GB DDR3-1600
2,5TB HDD<P>Belinea 2485 S1W 24" MVA

erstellt am: 03. Jul. 2013 14: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 karlos1 10 Unities + Antwort hilfreich

Hatte mal vor einiger Zeit einen Code in einem anderen Forum gefunden, welcher mittels Win API den "Kinder neu ordnen"-Dialog gesteuert hat.. Hatte das noch erweitert und eine GUI erstellt, sodass man z.B. sagen kann: schiebe mir Element 1 vor Element 10, um so z.B. ein Element um 100 Positionen zu verschieben ohne 100 mal zu klicken.. Werde das bei Gelegenheit nochmal raussuchen und vielleicht noch ein wenig erweitern (z.B. mehrere Elemente verschieben)..

------------------
Seid nicht dumm, lest drin rum!

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