Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Makro Laufzeit

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:  Makro Laufzeit (918 / mal gelesen)
Manjyzz
Mitglied


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

Beiträge: 5
Registriert: 09.11.2016

Catia_R24_SPK4_HF78

erstellt am: 27. Jan. 2017 11:34    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 ein Makro programmiert, das Copy Flächen aus verschiedene Geo Sets von ein Part und Paste diese Flächen abhängig von seinen jeweiligen Farben in einem neue Geo Set eines neues Part.
Ich verstehe nicht, wieso die Laufzeit des Makro (für dasselbe Part) nicht immer dieselbe ist. Normalerweise das erste mal ist schneller als die folgende.
Einige Ideen?

Gruß
Mario

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 27. Jan. 2017 12: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 Manjyzz 10 Unities + Antwort hilfreich

Hi Mario,
Zitat:
Einige Ideen?

Klar. Aber solange Du mir das Makro nicht zeigst, mag ich auch nicht!
Show me yours and I'll show you mine.

Tschau,
Joe

PS: Bitte SystemInfo im Profil eintragen.

------------------
Inoffizielle Catia Hilfeseite

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

Manjyzz
Mitglied


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

Beiträge: 5
Registriert: 09.11.2016

Catia_R24_SPK4_HF78

erstellt am: 27. Jan. 2017 12:38    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

Zitat:
Original erstellt von joehz:

Show me yours and I'll show you mine.

Jawohl!

Code:

Option Explicit

Sub CATMain()

CATIA.HSOSynchronized = False
CATIA.RefreshDisplay = False

Dim StartTime As Date
StartTime = Time
Dim oDocuments As Documents
Set oDocuments = CATIA.Documents
Dim oPartDocument, RGBDocument As Document
Set oPartDocument = CATIA.ActiveDocument
Dim AliasPart, oPart As Part
Set AliasPart = oPartDocument.Part
Dim AliasHybridBodies, oHybridBodies As HybridBodies
Set AliasHybridBodies = AliasPart.HybridBodies
Dim AliasHybridBody, oHybridBody, FarbeHybridBody As HybridBody
Set RGBDocument = oDocuments.Add("Part")
Set oPart = RGBDocument.Part
Set oHybridBodies = oPart.HybridBodies
Dim oSelection, RGBsel As Selection
Set RGBsel = RGBDocument.Selection
Dim oName As String
Dim r, g, b As Long
Dim i, j, k, l, m As Integer
Dim newLayerSet, newSet As Boolean
Dim oVisproperties As VisPropertySet
Dim oHybridShape As HybridShape


Set oHybridBody = oHybridBodies.Add()
oHybridBody.Name = AliasHybridBodies.Item(1).Name


'Loop for sorting Layer as Original_Layer and Color
For i = 1 To AliasHybridBodies.Count

    newLayerSet = True
   
    For j = 1 To oHybridBodies.Count
        If AliasHybridBodies.Item(i).Name = oHybridBodies.Item(j).Name Then
        Set oHybridBody = oHybridBodies.Item(j)
        newLayerSet = False
        End If
    Next j
   
    If newLayerSet = True Then
    Set oHybridBody = oHybridBodies.Add()
    oHybridBody.Name = AliasHybridBodies.Item(i).Name
    End If
   
    'Loop for each HybridShape of the Layer
    For l = 1 To AliasHybridBodies.Item(i).HybridShapes.Count
    Set oHybridShape = AliasHybridBodies.Item(i).HybridShapes.Item(l)
    oPartDocument.Selection.Add oHybridShape
    Set oSelection = oPartDocument.Selection
    Set oVisproperties = oSelection.VisProperties
    oSelection.VisProperties.GetRealColor r, g, b
    oSelection.Copy
    oSelection.Clear
    oName = CStr(r) + " " + CStr(g) + " " + CStr(b)
   
    newSet = True
 
    If oHybridBody.HybridBodies.Count > 0 Then
 
        For m = 1 To oHybridBody.HybridBodies.Count
        If oHybridBody.HybridBodies.Item(m).Name = oName Then newSet = False
        Next m
 
    End If
 
    If newSet = True Then
 
    Set FarbeHybridBody = oHybridBody.HybridBodies.Add()
    FarbeHybridBody.Name = r & " " & g & " " & b
    RGBsel.Add FarbeHybridBody
    RGBsel.PasteSpecial "CATPrtResultWithOutLink"

    Else
 
    RGBsel.Add oHybridBody.HybridBodies.Item(r & " " & g & " " & b)
    RGBsel.PasteSpecial "CATPrtResultWithOutLink"
   
    End If
   
    RGBsel.Clear
   
    Next l
   
Next i

CATIA.StartCommand ("collapse all")
oPart.Update
CATIA.HSOSynchronized = True
CATIA.RefreshDisplay = True
MsgBox "Total time: " & Format(Time - StartTime, "hh:mm:ss"), vbOKOnly
 
End Sub



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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 27. Jan. 2017 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 Nur für Manjyzz 10 Unities + Antwort hilfreich

Hi Manjyzz,

also zuallerst ein paar formale Dinge:

Die meisten Dims sind unsauber.
Siehe dazu hier:

http://ww3.cad.de/foren/ubb/Forum137/HTML/005635.shtml

Aus der Online-Hilfe(gekürzt):

Zitat:

Dim Statement

Declares variables and allocates storage space.

Syntax

Dim varname [As type] [, varname [As type]] . . .



Anstatt zB.

Dim i, j as integer

zu schreiben müsstest Du, falls i und j integer sein sollen

Dim i as integer, j as integer

schreiben.

Ausserdem würde ich alle Dims an den Anfang setzen.
Danach StartTime = ...
Dann den Rest.

Die Formatierung ist auch nicht konsequent.
Hierzu als Hilfe:
http://catia2.cad.de/index.php/de/tipps-tricks/programmierung/162-mztools-fuer-vba6-vb5-vb6
Die kostenfreie Version3 schwirrt noch im Inet rum.
oder/und
http://catia2.cad.de/index.php/de/tipps-tricks/programmierung/279-smart-indenter-vb-add-in

Weiterhin:
Die Zeilen haben innerhalb einer Schleife nix verloren:

Code:

        Set oSelection = oPartDocument.Selection
        Set oVisproperties = oSelection.VisProperties

Statt

Code:
        oPartDocument.Selection.Add oHybridShape

kannst dann auch
Code:
oSelection.Add oHybridShape

Das soll erstmal reichen.
Programmlogik später.

Tschau,
Joe

------------------
Inoffizielle Catia Hilfeseite

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: 172
Registriert: 19.02.2010

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

erstellt am: 27. Jan. 2017 13:48    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 Manjyzz 10 Unities + Antwort hilfreich

Hallo Mario,

die unterschiedlichen Laufzeiten resultieren Wahrscheinlich aus dem sich füllenden Arbeitsspeicher (Undo) und beim zweiten Lauf ist auch das Zielpart größer.

Wenn es darum geht das Makro schneller zu machen würde ich versuchen erst alle Elemente eines Typs in die Selektion zu packen und dann komplett zu kopieren.

Alternativ kannst du auch ein selection.search nach Farben innerhalb eines Selektierten Sets versuchen. Das muß aber nicht zwingens schneller sein.

mfG
Mario

------------------
Wenn das die Lösung sein soll,
will ich mein Problem zurück !!

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

Manjyzz
Mitglied


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

Beiträge: 5
Registriert: 09.11.2016

Catia_R24_SPK4_HF78

erstellt am: 27. Jan. 2017 14:12    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

Zitat:
Original erstellt von joehz:
Die meisten Dims sind unsauber.

Anstatt zB.

Dim i, j as integer

zu schreiben müsstest Du, falls i und j integer sein sollen

Dim i as integer, j as integer

schreiben.


Weiterhin:
Die Zeilen haben innerhalb einer Schleife nix verloren:

Code:

         Set oSelection = oPartDocument.Selection
         Set oVisproperties = oSelection.VisProperties

Statt

Code:
         oPartDocument.Selection.Add oHybridShape

kannst dann auch

Code:
oSelection.Add oHybridShape


Danke! Die Tipps haben die Laufzeit gekürzt.


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