Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Objekt finden, vergleichen und in Tabelle darstellen.

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:  Objekt finden, vergleichen und in Tabelle darstellen. (2483 mal gelesen)
lamdiabolo
Mitglied
Student


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

Beiträge: 31
Registriert: 17.04.2013

Intel Pentium 4CPU 2,8GHz
1GB RAM
32-Bit Betriebssystem
Win 7
Catia V5R21

erstellt am: 30. Apr. 2013 09:33    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

Guten Tag,

ich hoffe ihr könnt mir nochmal behilflich sein.
Ich probiere im Moment ein Makro zu programmieren, welches in Catia ein Bauteil durchgehen und alle Löcher finden, den Durchmesser bemessen und alle gleichen Löcher mit der Gesamtanzahl in einer Tabelle ausgeben soll.

Es soll nachher ungefähr folgend aussehen:
3 x 50mm
5 x 20mm
4 x 10mm

Es wäre natürlich schön wenn die Durchmesser der Größe nach geordnet wären, aber wenns leichter ist reicht es mir erst auch mal, wenn man überhaupt die Anzahl mit den dazugehörigen Durchmessern in einer Tabelle ausgegeben bekommt.

Es wäre nett wenn ihr mir ein paar eurer Ideen schicken könntet, da ich im Moment nicht allzu weit komme.

Die Löcher zu finden und deren Durchmesser herauszufinden bekomme ich hin, nur nicht die Auflistung bzw der vergleich unter den Löchern, ob sie den gleichen Durchmesser haben.

Mein bisherige Codeversuche:

Set selection1 = CATIA.ActiveDocument.Selection
selection1.Search ".hole,all"

'----Selection sichern
Dim SelElemente() As Object
ReDim SelElemente(selection1.Count)
For i = 1 To selection1.Count
  Set SelElemente(i) = selection1.Item(i)
Next

Dim length1 As Length
Dim hole2

'----Selection wieder herstellen
For i = 1 To UBound(SelElemente)
selection1.Clear
selection1.Add SelElemente(i).Value

Set hole2 = selection1.Item2(1).Value

Set length1 = hole2.Diameter

Next

selection1.Clear

Das nachfolgende um die einzelnen Löcher anzuwählen und dessen jeweiligen Durchmesser anzuzeigen:

'----Checkbox (Durchmesser Liste) deklarieren
If CheckBox2.Value = True Then
selection1.Search ".hole,all"
For i = 1 To selection1.Count
Set hole1 = selection1.Item2(i).Value
Set laenge = hole1.Diameter
Dim ausgabe As Integer
ausgabe = laenge.Value
Dim box As Long
box = MsgBox(selection1.Item2(i).Value.Name & " = " & ausgabe & "mm", 48, "Durchmesser Löcher!")
Next

Set documents1 = CATIA.Documents
For h = 1 To documents1.Count
On Error Resume Next
Set partdocument1 = documents1.Item(h)
Next
End If

Vielen Dank schonmal im Vorraus!
Gruß
Jan

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: 30. Apr. 2013 10:42    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 lamdiabolo 10 Unities + Antwort hilfreich

Servus
Grober Ablauf:
- alle Löcher suchen
- Dictionary (siehe zB hier) für Durchmesser und Anzahl erstellen
- Selektion "abarbeiten"
- für jedes Loch den Durchmesser ermitteln
      - prüfen ob Durchmesser schon im Dictionary vorhanden ist
            - wenn ja Zähler um ein erhöhen
            - wenn nicht, Durchmesser im Dictionary anlegen

Gruß
Bernd

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

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

lamdiabolo
Mitglied
Student


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

Beiträge: 31
Registriert: 17.04.2013

Intel Pentium 4CPU 2,8GHz
1GB RAM
32-Bit Betriebssystem
Win 7
Catia V5R21

erstellt am: 30. Apr. 2013 10: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

Vielen Dank Bernd,
ich werde es sofort mal ausprobieren.

Gebe dann später bekannt ob es geklappt hat.

Gruß
Jan

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

lamdiabolo
Mitglied
Student


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

Beiträge: 31
Registriert: 17.04.2013

Intel Pentium 4CPU 2,8GHz
1GB RAM
32-Bit Betriebssystem
Win 7
Catia V5R21

erstellt am: 30. Apr. 2013 11: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

Habe das mal ausprobiert, muss aber ehrlich sein und zugeben, das ich den Dictionary Befehl nicht ganz verstehe.

Bislang mein Code:

Sub CATMain()
'----Dokument nach Löchern durchsuchen
set selection1 = catia.activedocument.selection
selection1.Search ".hole,all"

'----Dictionary erstellen

'---- Durchmesser der Löcher herausfinden
For i = 1 To selection1.Count
Set hole1 = selection1.Item2(i).Value
Set laenge = hole1.Diameter
Dim ausgabe As Integer
ausgabe = laenge.Value

'----Prüfen ob Durchmesser schon im Dictionary
t=0
if ausgabe = dictionary then
t=t+1
else
set ausgabe.save =dictionary
end if


Set documents1 = CATIA.Documents
For h = 1 To documents1.Count
On Error Resume Next
Set partdocument1 = documents1.Item(h)
Next

End Sub

Falls ihr mir da eventuell weiter helfen könntet, wäre ich euch sehr verbunden
Danke schonmal imVorraus
Jan

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: 30. Apr. 2013 12:06    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 lamdiabolo 10 Unities + Antwort hilfreich

Servus
Diconary ist auch kein Befehl sonder ein Objekt (ähnlich wie eine Collection bzw Array). Mit dem Unterschied dass man einen Key (zB den Durchmesser) und einen Value (zB Anzahl) angeben kann.
Das Dictonary bietet dann zB die Methode "Exists" um zu prüfen ob ein Key schon vorhanden ist.

Gruß
Bernd

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

[Diese Nachricht wurde von bgrittmann am 30. Apr. 2013 editiert.]

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

lamdiabolo
Mitglied
Student


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

Beiträge: 31
Registriert: 17.04.2013

Intel Pentium 4CPU 2,8GHz
1GB RAM
32-Bit Betriebssystem
Win 7
Catia V5R21

erstellt am: 30. Apr. 2013 13:33    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

Vielen Dank für die schnelle Antwort.

Ich habe jetzt mal ein wenig rumprobiert, bekomme es leider aber immer noch nicht hin, da ich die einzelnen Schritte, die bei der Dictionary Programmierung durchlaufen werden, nicht ganz verstehe.

Für weitere Unterstützung wäre ich sehr dankbar.

Mit freundlichem Gruß
Jan

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

Beiträge: 1118
Registriert: 29.05.2008

DELL PRECISION T3500
Intel(R) Xeon(R) CPU W3540 @ 2.93GHz
12285 MB RAM
NVIDIA Quadro FX 1800
Microsoft Windows 7 Enterprise Service Pack 1
CATIA V5 R19 SP09 HF69
VB6.5
CAA RADE CDC

erstellt am: 30. Apr. 2013 15:51    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 lamdiabolo 10 Unities + Antwort hilfreich

Hallo Jan,

schau Dir vielleicht mal mein Dictionary (http://ww3.cad.de/foren/ubb/Forum137/HTML/005045.shtml) an, vielleicht ist das eindeutiger für Dich.

------------------
Mit freundlichen Grüßen,
Henry Schneider
alias Lila

Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren:
Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen,
die Natur versucht, immer bessere Idioten zu bauen

Xing

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

lamdiabolo
Mitglied
Student


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

Beiträge: 31
Registriert: 17.04.2013

Intel Pentium 4CPU 2,8GHz
1GB RAM
32-Bit Betriebssystem
Win 7
Catia V5R21

erstellt am: 30. Apr. 2013 16: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

Hallo Henry,
bei deinem Dictionary verstehe ich leider auch nicht genau wie ich ihn umbauen muss, damit er mir meine Durchmesser behält und diese abgleicht bzw. bei mehrfachvorkommen, den Zähler erhöht und nachher eine Tabelle ausgibt.

Ich beschäftige mich leider erst seit kurzem mit der Makroprogrammierung bei Catia und bin daher noch nicht der aller geübteste,im Umgang mit VBA bzw.VBS Script.

Danke aber trotzdem für dein Bemühen

Gruß
Jan

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

imation1999
Mitglied
dipl.-ing. Maschinenbau


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

Beiträge: 276
Registriert: 02.08.2011

Dell Precision T3500
Intel® Xeon® Quad Core
NVIDIA Quadro® 5000
Win7 x64 Ultimate
CATIA V5 R20 SP2

erstellt am: 01. Mai. 2013 10: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 lamdiabolo 10 Unities + Antwort hilfreich

Ich würde es so machen (nach empfehlung von Bernd):

Code:

Sub CATMain()

Dim length1 As Length
Dim hole1
Dim d
Dim It
Dim Ke
Const CNew = 1  ' Counter New = 1
Dim CAct        ' Counter Actual
dim Text

Set Selection1 = CATIA.ActiveDocument.Selection
Selection1.Search ".hole,all"

Set d = CreateObject("Scripting.Dictionary")

For i = 1 To Selection1.Count

  Set hole1 = Selection1.Item2(i).Value
  Set length1 = hole1.Diameter
    
     If d.Exists(length1.Value) Then
           
        CAct = d.Item(length1.Value)
        CAct = CAct + 1
        d.Item(length1.Value) = CAct
         
        Else
           
            d.Add length1.Value, CNew
       
      End If
   
Next

It = d.Items
Ke = d.Keys
For i = 0 To d.Count - 1
     Text = Ke(i) & "mm ---> " & It(i) & "Stk." & vbCrLf & Text
Next

Selection1.Clear

MsgBox Text

End Sub



[Diese Nachricht wurde von imation1999 am 01. Mai. 2013 editiert.]

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

lamdiabolo
Mitglied
Student


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

Beiträge: 31
Registriert: 17.04.2013

Intel Pentium 4CPU 2,8GHz
1GB RAM
32-Bit Betriebssystem
Win 7
Catia V5R21

erstellt am: 02. Mai. 2013 08: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

Meine Güte, ihr seit wohl alle Profis hier im Forum.
Das System läuft, wie auch alle zuvor, einwandfrei.
Ich danke dir imation 1999 für deinen Code und zudem verstehe ich diesen auch noch

So, jetzt probiere ich den Code noch so zu ändern, das er nachträglich alle Größen vom größten Durchmesser zum kleinsten hin sortiert.

Gruß
Jan

PS:Vielen Dank nochmal an alle die mir behilflich waren, ich werde dieses Forum auf jeden Fall weiterempfehlen, da man hier noch respektvoll behandelt wird.

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

Beiträge: 1118
Registriert: 29.05.2008

DELL PRECISION T3500
Intel(R) Xeon(R) CPU W3540 @ 2.93GHz
12285 MB RAM
NVIDIA Quadro FX 1800
Microsoft Windows 7 Enterprise Service Pack 1
CATIA V5 R19 SP09 HF69
VB6.5
CAA RADE CDC

erstellt am: 02. Mai. 2013 13: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 Nur für lamdiabolo 10 Unities + Antwort hilfreich

Hallo Jan,

in meinem Dictionaly ist eine QuickSort-Methode bereits implementiert.

Diese arbeitet zwar in der aktuellen Version mit Strings, aber es sollte ein leichtes sein den Stringvergleich gegen einen Double-Vergleich zu ersetzen.

Hintergrund ist der, dass ich natürlich gleich Methoden implementiert habe, die mir in dem normalen Dictionary immer fehlten, wie auch die Methode auf genau ein Item zuzugreifen, auch wenn ich den Key nicht habe.

Des Weiten lässt die Add() Methode nur jeden Key genau einmal zu, wodurch Du nicht abprüfen musst ob das Element schon existiert.

Du müsstest also nur ein New Dictionary machen und dann alle Durchmesser hinzufügen, als Key würden sie sowieso nicht doppelt gehen und dann die Sort-Methode aufrufen (die für die Strings heißt glaube ich sortABC()).

------------------
Mit freundlichen Grüßen,
Henry Schneider
alias Lila

Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren:
Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen,
die Natur versucht, immer bessere Idioten zu bauen

Xing

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: 02. Mai. 2013 13: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 lamdiabolo 10 Unities + Antwort hilfreich

Servus
kleiner Hinweis zum Makro:
ich befürchte (gemäß meinem Test)dass bei diesem Makro die Zählungen von Bohrungen die gemustert wurden, die falsche Anzahl ermittelt wird.

Gruß
Bernd

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

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

lamdiabolo
Mitglied
Student


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

Beiträge: 31
Registriert: 17.04.2013

Intel Pentium 4CPU 2,8GHz
1GB RAM
32-Bit Betriebssystem
Win 7
Catia V5R21

erstellt am: 02. Mai. 2013 14: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

Hallo,

also der Code von Imation1999 funktioniert bei mir einwandfrei, nur werden mir bislang die ergebnisse querbeet bzw nach dem ersten Vorkommen im Strukturbaum angezeigt.

Zum beispiel:
50 mm -> 3stk
36 mm-> 2stk
40 mm-> 5stk

Aber das ist nicht all zu schlimm, wichtig war mir ja das ich überhaupt auf einen Blick sehe wie viele Löcher es von jeweils einem Durchmesser gibt und das funktioniert damit super.
Danke euch für die schnellen Antworten.

Schönen Tag noch
Gruß
Jan

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

imation1999
Mitglied
dipl.-ing. Maschinenbau


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

Beiträge: 276
Registriert: 02.08.2011

Dell Precision T3500
Intel® Xeon® Quad Core
NVIDIA Quadro® 5000
Win7 x64 Ultimate
CATIA V5 R20 SP2

erstellt am: 02. Mai. 2013 15:07    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 lamdiabolo 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von bgrittmann:
Servus
kleiner Hinweis zum Makro:
ich befürchte (gemäß meinem Test)dass bei diesem Makro die Zählungen von Bohrungen die gemustert wurden, die falsche Anzahl ermittelt wird.

Gruß
Bernd


Hallo Bernd,

du hast natürlich Recht.
Hast du vielleicht einen Vorschlag, wie man korrigieren kann?


EDIT (VBAProject mit Sortierung von Durchmesser):


Code:

Sub CATMain()

Dim length1 As Length
Dim hole1
Dim d
Dim It
Dim Ke
Const CNew = 1  ' Counter New = 1
Dim CAct        ' Counter Actual
Dim Arr()
Dim dTemp
Dim KeyVal
Dim Txt
dim Temp
    
Set Selection1 = CATIA.ActiveDocument.Selection
Selection1.Search ".hole,all"

Set d = CreateObject("Scripting.Dictionary")

For i = 1 To Selection1.Count

  Set hole1 = Selection1.Item2(i).Value
  Set length1 = hole1.Diameter
    
     If d.Exists(length1.Value) Then
           
        CAct = d.Item(length1.Value)
        CAct = CAct + 1
        d.Item(length1.Value) = CAct
       
        Else
           
            d.Add length1.Value, CNew
       
      End If
   Next
   
       Ke = d.keys
       It = d.Items
   
ReDim Arr(0 To d.Count - 1)
    
  
     For i = 0 To d.Count - 1
         Arr(i) = Ke(i)
     Next i
        
     For i = LBound(Arr) To UBound(Arr) - 1
         For j = i + 1 To UBound(Arr)
             If Arr(i) > Arr(j) Then
                 Temp = Arr(j)
                 Arr(j) = Arr(i)
                 Arr(i) = Temp
             End If
         Next j
     Next i
    
     Set dTemp = CreateObject("Scripting.Dictionary")
   
     For i = LBound(Arr) To UBound(Arr)
         KeyVal = Arr(i)
         dTemp.Add Key:=KeyVal, Item:=d.Item(KeyVal)
       
     Next i
      
     For i = 0 To d.Count - 1
         Txt = Arr(i) & "mm ---> " & It(i) & "Stk." & vbCrLf & Txt
     Next i
      
     MsgBox Txt, vbInformation

Selection1.Clear

End Sub



[Diese Nachricht wurde von imation1999 am 02. Mai. 2013 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: 02. Mai. 2013 19: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 Nur für lamdiabolo 10 Unities + Antwort hilfreich

Servus
Zitat:
Original erstellt von imation1999:
Hast du vielleicht einen Vorschlag, wie man korrigieren kann?
Solange immer nur die Bohrungen gemustert wurden und nicht ein ganzer Körper könnte es so gehen:
- alle Muster (im PartDesign) suchen
- über "ItemToCopy" jedes Muster prüfen ob dabei eine Bohrung gemustert wurde
- Muster untersuchen welche Anzahl von Bohrungen diese beinhaltet (auch die inaktivierten Positionen beachten)

Gruß
Bernd

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

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



(Senior) TGA Planer - HLS (m/w/d)

Die CG Plan GmbH ist eine 100 %-ige Tochter der CG Elementum und professioneller Generalplaner, technischer Projektsteuerer und Berater für unternehmenseigene Immobilien-Projekte. Mit moderner Hard- und Software und integralen 3-D-Modellen entsprechend der BIM-Methodik entwickeln wir Ausführungspläne, Mengenauszüge und Visualisierungen. Darüber hinaus fungieren wir als Wissensträger für unternehmensinterne ...

Anzeige ansehenProjektmanagement
lamdiabolo
Mitglied
Student


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

Beiträge: 31
Registriert: 17.04.2013

Intel Pentium 4CPU 2,8GHz
1GB RAM
32-Bit Betriebssystem
Win 7
Catia V5R21

erstellt am: 06. Mai. 2013 09:19    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 liebe Community,

ich habe jetzt ein Makro geschrieben, welches alle Durchmesser eines Bauteils ausgibt und nach Art unterschiedlich einfärbt.

Dazu habe ich eine Listbox benutzt, welche ich gerne sortiert haben würde. Ich habe mich auch schon im Internet etwas schlau gemacht, wie das funktionieren könnte, aber leider funktioniert das bei mir nicht so wie erwartet.
Ich habe es mit : Listbox1.sorted=true        ausprobiert, was aber leider zu keinem Ergebnis geführt hat.

Bitte helft mir,wenn ihr irgendeine Idee habt, danke!
Mit freundlichem Gruß
Ja

PS: Meinen Code welcher die Listbox füllt:

Dim length1 As Length
Dim hole1
Dim d
Dim It
Dim Ke
Const CNew = 1  ' Counter New = 1
Dim CAct        ' Counter Actual
Dim Text

Set selection1 = CATIA.ActiveDocument.Selection
If CheckBox1.Value = True And CheckBox3.Value = True Then
selection1.Search ".hole,all"
t = 1
ElseIf CheckBox1.Value = True Then
selection1.Search ".hole.threaded=true,all"
t = 1
ElseIf CheckBox3.Value = True Then
selection1.Search ".hole.threaded=false,all"
t = 1
Else
MsgBox (" Bitte setzen sie mindestens ein Häkchen!")
End If

Set d = CreateObject("Scripting.Dictionary")

For i = 1 To selection1.Count

  Set hole1 = selection1.Item2(i).Value
  Set length1 = hole1.Diameter
   
    If d.Exists(length1.Value) Then
           
        CAct = d.item(length1.Value)
        CAct = CAct + 1
        d.item(length1.Value) = CAct
         
        Else
           
            d.Add length1.Value, CNew
       
      End If
   
Next

It = d.Items
Ke = d.Keys
lstuebung.Clear
For i = 0 To d.Count - 1
    'Text = Ke(i) & "mm ---> " & It(i) & "Stk." & vbCrLf & Text
    'lstuebung.AddItem (Ke(i) & "mm ---> " & It(i) & "Stk.")
    lstuebung.AddItem

lstuebung.List(lstuebung.ListCount - 1, 0) = Ke(i)

lstuebung.List(lstuebung.ListCount - 1, 1) = It(i)

Next

selection1.Clear
End Sub

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