Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  CATIA V5 Programmierung
  Welchen Datentyp verwendet ihr?

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co.
  
Erfolgreich unterwegs mit der KISTERS 3DViewStation, ein Whitepaper
Autor Thema:  Welchen Datentyp verwendet ihr? (1426 mal gelesen)
INLU
Mitglied
Konstrukteur Automotive


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

Beiträge: 71
Registriert: 01.03.2008

erstellt am: 23. Okt. 2010 13:26    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 eine Frage zur Verwendung von Datentypen.

Ich habe mir ein Makro geschrieben, um aus Catia heraus eine Stückliste zu erzeugen. Hierfür verwende ich arrays. Das heißt, ich scanne meine Baumstruktur und lege die Dokumenteigenschaften (In meinem Falle userproberties mit eingetragenen Werten) in ein array z.b.:

aMaterial(i) = aktivesdokument(i).eigenschaft.material
aHersteller(i) = aktivesdokument(i).eigenschaft.hersteller

usw.....

So habe ich für jedes Dokument und jede Eigenschaft ein array, in die ich meine Einträge schreibe.
Das Funktioniert auch ganz gut, aber es ist schwer, eine nachträgliche Sortierung durchzuführen.

Ich möchte das Makro jetzt in VB.net umsetzen, und wollt euch fragen, wie ihr die Informationen speichern würdet, um sie im nachhinein noch zu manipulieren, also z.b. Sortierung und Löschung.

Ich bin gespannt auf eure Vorschläge!

mfg
  Lars

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: 12054
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 23. Okt. 2010 13: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 INLU 10 Unities + Antwort hilfreich

Servus
Du könntest dir eine Collection erstellen (ist eigentlich ein mehrdimensionales Array mit Zusatzfunktionen).
Diese Collection könntest du noch mit einer Sortierung ergänzen zB siehe hier

Gruß
Bernd

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

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

INLU
Mitglied
Konstrukteur Automotive


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

Beiträge: 71
Registriert: 01.03.2008

erstellt am: 23. Okt. 2010 14: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 Bernd,

erst einmal Danke für deine Antwort! 

ich habe mir das gerade mal im VBA angeschaut.

Das scheint schon einfacher zu sein als die arrays, aber wenn ich ein Item verschieben will, müsste ich das mit allen collections gleichzeitig machen, damit ich nicht die Zugehörigkeit der Elemente verliere. Ich hatte da eher an so eine Art Tabelle gedacht, in der man ganze Zeilen verschieben kann. Gibt es so etwas?

mfg
  Lars

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

roccat
Mitglied
Konstrukteur


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

Beiträge: 175
Registriert: 19.02.2010

WinXP/Win7
Office XP/2007
Catia V5 R16-R19, VB6.0, VBA, BASCOM-AVR
VB .Net 2010

erstellt am: 23. Okt. 2010 14:44    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 INLU 10 Unities + Antwort hilfreich

Hallo Lars,

ich habe das bis jetzt auch immer mit einem mehrdimensionalen Array gemacht und dieses dann sortiert. Ist aber immer bissl aufwendig. Ich bin zwar nicht der Hirsch in .Net aber dort gibts glaube ich eine automatische ArraySortier-funktion. (war auch mal bitter nötig   )

In VB6 oder VBA habe ich das so gemacht. (Habs aus einen größeren Project rauskopiert hoffe du überschaust das wichtigste, die Array´s waren da global Dimensioniert.)

Code:
Function STLSort()

Dim i   As Integer
Dim c   As Integer
Dim m   As Integer

mStart.TraceNow ("3. STLSort:             start...")

'Schleife über alle Positionen
For i = 0 To mStart.iSTL - 2
    'Schleife über alle Positionen
    For c = i To mStart.iSTL - 2
            If IsNumeric(mStart.ArrSTL(1, i)) And IsNumeric(mStart.ArrSTL(1, c)) Then
                If CInt(mStart.ArrSTL(1, i)) > CInt(mStart.ArrSTL(1, c)) Then
                            SwapIt i, c
                            c = 0
                            i = 0
                            Exit For
                ElseIf CInt(mStart.ArrSTL(1, i)) = CInt(mStart.ArrSTL(1, c)) Then
                        If IsNumeric(mStart.ArrSTL(0, i)) And IsNumeric(mStart.ArrSTL(0, c)) Then
                            If CInt(mStart.ArrSTL(0, i)) > CInt(mStart.ArrSTL(0, c)) Then
                                SwapIt i, c
                                c = 0
                                i = 0
                                Exit For
                            End If
                        End If
                End If
            End If
    Next
   
'Prozentanzeige
If i > m Then
    mStart.TraceNow ("3. STLSort:             start..." & Int((((100 / (mStart.iSTL - 2)) * m))) & "%")
    m = i
End If
Next

mStart.Trace ("3. STLSort:              end...")

End Function

Function SwapIt(i As Integer, c As Integer)
Dim iC          As Integer
Dim iZ          As Integer
Dim ArrTemp()
Dim AnzTemp     As Integer
Dim ProdTemp    As String

iZ = UBound(mStart.ArrParLR)
ReDim ArrTemp(iZ)

'Temp Dateien merken
For iC = 0 To UBound(mStart.ArrParLR)
    ArrTemp(iC) = mStart.ArrSTL(iC, i)
Next
AnzTemp = mStart.ArrANZ(i)
ProdTemp = mStart.ArrPRO(i)

'Dateien Hin Schreiben
For iC = 0 To UBound(mStart.ArrParLR)
    mStart.ArrSTL(iC, i) = mStart.ArrSTL(iC, c)
Next
mStart.ArrANZ(i) = mStart.ArrANZ(c)
mStart.ArrPRO(i) = mStart.ArrPRO(c)

'Dateien Her Schreiben
For iC = 0 To UBound(mStart.ArrParLR)
    mStart.ArrSTL(iC, c) = ArrTemp(iC)
Next
mStart.ArrANZ(c) = AnzTemp
mStart.ArrPRO(c) = ProdTemp


End Function


Achso: Hier werden Baugruppennummer und Positionionsnummer getrennt behandelt und vorangestellte Nullen habe ich zuvor entfernt ("001" --> "1")

mfG
Mario

Edit: Falls du die Werte in Excel schreibst lässt sich das dort am einfachsten sortieren. (Ist halt ein wenig unpro...  )

[Diese Nachricht wurde von roccat am 23. Okt. 2010 editiert.]

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

roccat
Mitglied
Konstrukteur


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

Beiträge: 175
Registriert: 19.02.2010

WinXP/Win7
Office XP/2007
Catia V5 R16-R19, VB6.0, VBA, BASCOM-AVR
VB .Net 2010

erstellt am: 23. Okt. 2010 14: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 Nur für INLU 10 Unities + Antwort hilfreich

Also ich habs grad mal nachgeschaut, in net ist´s wirklich ein kinderspiel arrays zu sortieren.

Code:
Dim x As Integer
Dim names(3) As String
names(0) = "Howard, Ryan"
names(1) = "Allen, Ray"
names(2) = "Pujols, Albert"
names(3) = "Iverson, Allen"
For x = 0 To (names.Length - 1)
Console.WriteLine(CStr(x) + ". " + names(x).ToString())
Next x
Array.Sort(names)
For x = 0 To (names.Length - 1)
Console.WriteLine(CStr(x) + ". " + names(x).ToString())
Next x

mfG
Mario

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

INLU
Mitglied
Konstrukteur Automotive


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

Beiträge: 71
Registriert: 01.03.2008

erstellt am: 23. Okt. 2010 15:46    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 roccat,

Danke für deine Antwort.

Ich möchte aber auch die Möglichkeit haben, einzelne Elemente zu verschieben. Da scheint mir die Lösung mit der Collection doch recht passend zu sein. Ich habe mir den verlinkten Workshop von Bernd jetzt mal durchgelesen. etwas aufwendiger aber anscheinen gut. Hat jemand soetwas schon mit einer Collection umgesetzt. Ist ein verschieben der Datensätzte ohne das komplette Neuschreiben der Selbigen möglich?

mfg
  Lars

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

roccat
Mitglied
Konstrukteur


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

Beiträge: 175
Registriert: 19.02.2010

WinXP/Win7
Office XP/2007
Catia V5 R16-R19, VB6.0, VBA, BASCOM-AVR
VB .Net 2010

erstellt am: 23. Okt. 2010 19:58    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 INLU 10 Unities + Antwort hilfreich

Hallo Lars,

hier mal die Unterschiede zwischen Array und Collection.

Für das Sortieren wirst du wohl noch eine zusätzliche Funktion schreiben müssen.

Für das tauschen würde ich auch eine Funktion schreiben mit 2x Add an bestimmter Stelle (ist im Link beschrieben) und dann 2x Remove sollte aber relative übersichtlich bleiben.

mfG
Mario

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

P-Star
Mitglied
Konstrukteur

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

Beiträge: 4
Registriert: 23.09.2010

erstellt am: 29. Okt. 2010 09: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 INLU 10 Unities + Antwort hilfreich

Hallo Lars,

nur für den Fall, dass du es noch nicht wußtest, CATIA hat eine Stücklistenfunktion!

Gruß

P-Star

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)2025 CAD.de | Impressum | Datenschutz