Autor
|
Thema: Hinterlegte Materialien aus der Struktur löschen. (1939 mal gelesen)
|
MrLimes Mitglied Technischer Sachbearbeiter
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 / zitieren --> Unities abgeben:
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
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 29. Nov. 2013 11:29 <-- editieren / zitieren --> Unities abgeben: Nur für MrLimes
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
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 / zitieren --> Unities abgeben:
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
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 02. Dez. 2013 12:50 <-- editieren / zitieren --> Unities abgeben: Nur für MrLimes
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
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 / zitieren --> Unities abgeben:
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
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 02. Dez. 2013 17:35 <-- editieren / zitieren --> Unities abgeben: Nur für MrLimes
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
Beiträge: 114 Registriert: 11.02.2005 win10, CATIA R19 bis R30
|
erstellt am: 05. Dez. 2013 11:45 <-- editieren / zitieren --> Unities abgeben: Nur für MrLimes
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 |