Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Hinterlegte Materialien aus der Struktur löschen.

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:  Hinterlegte Materialien aus der Struktur löschen. (1939 mal gelesen)
MrLimes
Mitglied
Technischer Sachbearbeiter


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

Beiträge: 14
Registriert: 15.09.2009

Visual Studio 2013 + Devexpress v16.2.5
CATIA V5-6 R24, SP4 HF 33

erstellt am: 29. Nov. 2013 09:49    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 zusammen,

ich grübel gerade an einem kleinen Tool, welches mir die Materialien aus
einer Baugruppe (ca. 2000 Products) löschen soll. Mein bisheriger Code funktioniert
zwar, aber braucht leider sehr lange für die Baugruppe. Kennt jemand eine Möglichkeit
den Code zu beschleunigen oder aber vielleicht ein effizienteres Vorgehen beim Löschen
der Materialien.

Vielen Dank vorab. 

Code:
Sub delete()
Set osel = CATIA.ActiveDocument.Selection
osel.Search "(CATProductSearch.MatMaterialType),all"

Dim mColBody As New Collection

If osel.Count > 0 Then
    For i = 1 To osel.Count
        mColBody.Add osel.Item(i).Value
    Next
End If
osel.Clear

If mColBody.Count > 0 Then
    For ii = 1 To mColBody.Count
        osel.Clear
        osel.Add mColBody.Item(ii)
        osel.Search "(CATProductSearch.MatMaterialType),sel"
     
        If osel.Count > 0 Then
            osel.delete
        End If
    Next
End If
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: 29. Nov. 2013 11:29    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 MrLimes 10 Unities + Antwort hilfreich

Servus
Warum füllst du noch eine Collection? Warum hast du zwei Schleifen? Kannst du nicht gleich nach der 1. Suche diese Elemente löschen?

Gruß
Bernd

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

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

MrLimes
Mitglied
Technischer Sachbearbeiter


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

Beiträge: 14
Registriert: 15.09.2009

Visual Studio 2013 + Devexpress v16.2.5
CATIA V5-6 R24, SP4 HF 33

erstellt am: 02. Dez. 2013 11: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 Bernd,

hmm irgendwie steh ich da auf dem Schlauch. Hab zwar schon versucht es nur mit einer Collection
zu machen, aber leider bekomm ich da immer den Hinweis:
Object doesn`t support this property or method

Ich probier es weiter :-( trotzdem vielen Dank für den Hinweis.

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. Dez. 2013 12:50    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 MrLimes 10 Unities + Antwort hilfreich

Servus
Versuch es mal so:
Code:
Sub delete()
Dim osel As Object
Set osel = CATIA.ActiveDocument.Selection
osel.Search "(CATProductSearch.MatMaterialType),all"
osel.delete
End Sub
Gruß
Bernd

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

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

MrLimes
Mitglied
Technischer Sachbearbeiter


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

Beiträge: 14
Registriert: 15.09.2009

Visual Studio 2013 + Devexpress v16.2.5
CATIA V5-6 R24, SP4 HF 33

erstellt am: 02. Dez. 2013 17:13    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

Bernd ich hab deinen Teil ausprobiert. Gott ich glaub ich würd selbst ein Hello
World no in Sand setzen 

Das Problem bei der Sache mit der Selection auf Material scheint es mir, dass
er immer nur das erste Material löscht und selbst bei einer Schleife regt er
sich beim zweiten Material auf: "The method Delete failed". Es wundert mich,
dass man nicht einfach alle Objekte selektieren und auf einmal löschen kann.

Ich hab das Makro nun auf eine größere Fahrzeugbaugruppe los gelassen und es
dauert ca. 95min für 1940 Materialwerte 

Ich werde mal versuchen nicht mit der Suche zu arbeiten sondern rekursiv die
Struktur zu durchlaufen und ein Material Null zuzuweisen. Vielleicht bringt
dieser Schritt noch etwas mehr Performance.

Gruß
Rainer

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. Dez. 2013 17:35    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 MrLimes 10 Unities + Antwort hilfreich

Servus
Vielleicht reicht es die Darstellung der Selektion (CATIA.HSOSynchronized=False) vor der Suche zu deaktivieren.
Oder du könntest auch die Documentscollection (alle geöffneten Dokumente) durcharbeiten, dort die Suche nach dem Material starten und dann diese löschen.

Gruß
Bernd

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

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

ptit.tom
Mitglied
CAD-Berater


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

Beiträge: 114
Registriert: 11.02.2005

win10, CATIA R19 bis R30

erstellt am: 05. Dez. 2013 11:45    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 MrLimes 10 Unities + Antwort hilfreich

Ich würde ein paar MsgBox einbauen, um zu sehen wo das Makro Zeit benötigt:
- ist es die Suche nach Materialen ?
- ist es das Speichern in einem Collection-Objekt
- ist es das Löschen ?


CATIA.HSOSynchronized auf False setzen kann helfen. Es werden viele Operationen mit Selektion gemacht. Nur daran denken, das Makro nicht aus der VBA-Umgebung zu starten (sondern mit geschlossene Entwicklungsumgebung, über Alt+F8 und Run). Sonst wird es ignoriert.

[Diese Nachricht wurde von ptit.tom am 05. Dez. 2013 editiert.]

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