Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  CATIA V5 Programmierung
  TheSPAWorkbench.GetMeasurable viel zu langsam

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.
  
KISTERS 3DViewStation optimiert die Lizenzverwaltung für ihre Kunden, eine Pressemitteilung
Autor Thema:  TheSPAWorkbench.GetMeasurable viel zu langsam (2709 mal gelesen)
HeWa
Mitglied



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

Beiträge: 11
Registriert: 07.06.2009

erstellt am: 03. Nov. 2010 09:15    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,

habe massivs Perfomanceproblem (seltsames Verhalten) mit der Function '.GetMeasurable'. (Mit der Suche leider keine Lösungen dazu gefunden)

- wenn im Part-modell nur wenige Elemente vorhanden sind ist die Geschwindigkeit noch in Ordnung
- beim etwa größeren Part (obwohl ich die Referenzen explicit aus der Selection erstelle) wird der code grottenlangsam. Durch 'gebugen' die Problemstelle in der Zeile "Set TheMeasurable = TheSPAWorkbench.GetMeasurable(oSel.Item(i).Reference)" lokalisiert.

Ist es möglich den Code irgendwie zu beschleunigen?

Gruß
Waldemar

Hier der gesamte code
----------------------
Sub CATMain()

Dim oDoc As PartDocument
Set oDoc = CATIA.ActiveDocument

Dim HybridShapeFact As HybridShapeFactory
Set HybridShapeFact = oDoc.Part.HybridShapeFactory

Dim oSel As Object 'als Selection deklariert --> Fehler?!
Set oSel = oDoc.Selection

Dim Filter(2)
Filter(0) = "Sketch"
Filter(1) = "HybridShapeExtract"
Filter(2) = "HybridShapeCurveSmooth"

oSel.Clear
Status = oSel.SelectElement2(Filter, "Select Elements from tree: ", False)
oSel.Search ("Topology.Edge;sel")

Dim TheSPAWorkbench As Workbench
Set TheSPAWorkbench = oDoc.GetWorkbench("SPAWorkbench")

Dim TheMeasurable As Measurable

For i = 1 To oSel.Count
    Set TheMeasurable = TheSPAWorkbench.GetMeasurable(oSel.Item(i).Reference)
    Debug.Print TheMeasurable.Length 'z.B. Längenmessung
Next

End Sub
----------------------

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

DanielFr.
Ehrenmitglied V.I.P. h.c.
Manager


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

Beiträge: 2506
Registriert: 10.08.2005

HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3

erstellt am: 03. Nov. 2010 09: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 HeWa 10 Unities + Antwort hilfreich

Hallo,

es liegt IMHO nicht an der .GetMeasurebale Methode sondern an der Suche. Hast du die Eigenschaft "HSOSynchronized" vor dem Suchen "oSel.Search ("Topology.Edge;sel")" auf false gestellt? Wenn nicht dann dann implementiere das mal in den Code. Mehr dazu findest du wenn du hier im Forum dazu suchst oder die V5Automation.chm nach dem Schlagwort absuchst.

------------------
MFG Daniel

Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...)

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

HeWa
Mitglied



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

Beiträge: 11
Registriert: 07.06.2009

erstellt am: 03. Nov. 2010 13: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

Hallo Daniel,

leider bring die Einstellung "Catia.HSOSynchronized = false" in diesem Fall nichts.

Wenn man den Code Schritt für Schritt mit "F8" ausführt, dann sieht man wie es in der Zeile "Set TheMeasurable = TheSPAWorkbench.GetMeasurable(oSel.Item(i).Reference)" regelrecht "hackt"

Bin für weitere Vorschläge sehr dankbar.

MfG
Waldemar

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: 04. Nov. 2010 12: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 HeWa 10 Unities + Antwort hilfreich

bring mal oSel.Item(i).Reference in eine eigene Referenz, um das Problem besser bewerten zu können.
Nimm#s also aus der Zeile raus um festzustellen, ob's an der Referenz oder an der Messung liegt.

------------------
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

HeWa
Mitglied



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

Beiträge: 11
Registriert: 07.06.2009

erstellt am: 04. Nov. 2010 16: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

habe den Code geändert.
Es wird zuerst die Referenz und im 2. Schritt wird das Object "TheMeasurable" mit diser Referenz als Argument erstellt.
---
Set oRef = oSel.Item(i).Reference
Set TheMeasurable = TheSPAWorkbench.GetMeasurable(oRef)
---

Im Debug-Modus mit 'F8' kann man schön sehen, wie es beim Initialisieren von 'TheSPAWorkbench.GetMeasurable(oRef)' hackt. Also würde ich sagen das Problem liegt in der Zeile 'Set TheMeasurable = TheSPAWorkbench.GetMeasurable(oRef)'

Bin für weitere Vorschläge sehr dankbar.

Gruß
Waldemar

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: 04. Nov. 2010 16:31    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 HeWa 10 Unities + Antwort hilfreich

mach mal ein
CATIA.RefreshDisplay = false
catia.visible = false
und selection.clear

------------------
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

HeWa
Mitglied



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

Beiträge: 11
Registriert: 07.06.2009

erstellt am: 05. Nov. 2010 09:31    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

CATIA.RefreshDisplay = False
CATIA.Interactive = False
CATIA.Visible = False
hatte ich alles schon ausprobiert und es hat überhaupt nichts gebracht

Dann habe ich mal ein bisschen rumgesponnen und in einer Schleife die Referenz mehrmals gesetzt.

For i = 1 To 10
    Set oRef = oSel.Item(1).Reference 'keine Geschwindigkeitseinbuße auch bei n=1000
Next

For i = 1 To 10
    Set TheMeasurable = TheSPAWorkbench.GetMeasurable(oRef) 'ab hier wird's sehr langsam
Next

Das Sonderbare an der Geschichte:
wenn das part nur wenige Elemente hat läuft es wesentlich schneller als wenn das part aus vielen Elementen besteht, obwohl die Referenz auf das gleiche Element gesetzt wird!?

Ich bin mit meinem Latein am Ende.

PS.
Eine andere Möglichkeit wäre es die Kurve z.B. Boundary zu zerlegen und die HybridShapes auszumessen. Geht viel schneller. Es ist leider nicht erwünscht in das part irgendwas einzufügen.

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

Starbirth
Mitglied
Konstrukteur


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

Beiträge: 119
Registriert: 22.10.2009

Catia V5-6 R24
Windows 7 64bit
Intel Xeon (4x3,5GHz)
32B Ram
Nvidia Quatro K4200

erstellt am: 05. Nov. 2010 14:01    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 HeWa 10 Unities + Antwort hilfreich

Was spricht dagegen im Zuge des Macros eine Geometrie zu erstellen, zu messen und diese danach wieder löschen zu lassen?
Ist im Endeffekt ja so als wäre sie nicht da gewesen, aber du hast deine Daten.
Oder besteht einfach ein generelles Verbot, was das Erzeugen von Geometrien an geht, warum auch immer?

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

HeWa
Mitglied



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

Beiträge: 11
Registriert: 07.06.2009

erstellt am: 08. Nov. 2010 09:14    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

es besteht kein generelles Verbot, 'temporäre' Geometrie einzufügen. Nur ist diese Lösung, wie mein Chef zu sagen pflegt 'suboptimal'. :-)
Aber was ich nicht verstehen kann und immer noch auf der Suche nach der Antwort bin: Wieso dauert es viel länger das selbe Element in einem part mit vielen Elementen zu vermessen, als wenn ich das zu vermessende Element in ein separates kopiere und dort messe.

Gruß
Waldemar

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: 08. Nov. 2010 17:01    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 HeWa 10 Unities + Antwort hilfreich

Weil im CAA immer ein Body, und auch ein GeoSet ist ein HybridBody in einem BagRep komplett berechnet/addiert wird.
Daher muss er immer alle Elemente duchackern.
Willkommen in der Welt von CATIA! 

Wir Entwickler fragen bei CATIA nicht mehr nach dem Warum. *g*

------------------
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

HeWa
Mitglied



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

Beiträge: 11
Registriert: 07.06.2009

erstellt am: 09. Nov. 2010 09:15    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 Antworten.

Dann werde ich mich wohl damit abfinden müssen. Es ist wie es ist

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