| |
| KISTERS 3DViewStation mit neuer Zerschneidefunktionen und erweitertem PMI-Support, eine Pressemitteilung
|
Autor
|
Thema: Parameter Auslesen läuft sehr langsam (3171 mal gelesen)
|
Hoemie Mitglied
Beiträge: 4 Registriert: 15.04.2011 CATIA V5R19 Windows XP SP3 Intel Core 2 Quad 2,33 MHz 3 GB RAM
|
erstellt am: 15. Apr. 2011 10:15 <-- editieren / zitieren --> Unities abgeben:
Guten morgen zusammen, ich möchte die Werte von Parametern aus CATIA in Excel auslesen und umgekehrt, ohne dabei die Konstruktionstabellen zu nutzen. In dem Forum habe ich diese Möglichkeit dazu gefunden: For I = 1 To oPart.Parameters.Count Set oParameter = oPart.Parameters.Item(I) If InStr(1, oParameter.Name, "MeinParameter", vbTextCompare) <> 0 Then 'Anweisungen zum Auslesen End If Next Das funktioniert grundsätzlich auch einwandfrei, aber pro Parameter benötigt die obige Schleife ca. 1 - 2 Sekunden und das, obwohl das eigentliche Auslesen noch gar nicht implementiert ist. Das Problem ist, dass das Modell sehr viele Parameter aufweist und es daher ewig dauern würde. Mache ich irgendetwas grundsätzlich falsch? Vielen Dank für eure Hilfe im Voraus! Björn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian.O Mitglied Konstrukteur
Beiträge: 1212 Registriert: 17.07.2009
|
erstellt am: 15. Apr. 2011 10:21 <-- editieren / zitieren --> Unities abgeben: Nur für Hoemie
Servus, und Willkommen im Forum. hast du schon versucht die Parameter über eine Suche zu selektieren und auszulesen? Geht das schneller? Bei mir läuft das sehr gut und vorallem schnell. ------------------ Mit freundlichen Grüßen aus Tirol Christian Obholzer Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 15. Apr. 2011 10:26 <-- editieren / zitieren --> Unities abgeben: Nur für Hoemie
Servus Willkommen im Forum. Bitte Systeminfo ausfüllen. Wenn du den genauen Namen des Parameters kennst sollte auch dein direkt Vergleich funktionieren (ist vielleicht etwas schneller): if oParamter.Name = "MeinParameter" thenZusätzlich könntest du im Durchlauf der For-next-Schleife mehrere Parameter abarbeiten (weiter if-Schleifen oder Select-Case) Eine weiter Möglichkeit ist direkt mit dem Namen auf den Parameter zugreifen, siehe hier (Fehlerbehandlung beachten). Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hoemie Mitglied
Beiträge: 4 Registriert: 15.04.2011 CATIA V5R19 Windows XP SP3 Intel Core 2 Quad 2,33 MHz 3 GB RAM
|
erstellt am: 15. Apr. 2011 11:34 <-- editieren / zitieren --> Unities abgeben:
Danke für die schnellen Antworten: @Christian: Ich weiß leider nicht ich das mit dem selektieren und auslesen anstellen muss. Könntest du mir da eventuell weiterhelfen? @Bernd: Das Makro läuft auch schon sehr langsam, wenn ich die if-Abfrage ganz raus nehme, also so: For I = 1 To oPart.Parameters.Count Set oparameter = oPart.Parameters.Item(I) Next End Sub Das set oparameter dauert bei mir anscheinend so lang. Wenn ich andersherum Nur die if Abfrage drin lasse also so: Set oparameter = oPart.Parameters.Item(1) For I = 1 To oPart.Parameters.Count If oparameter.Name = "MeinParameter" Then 'Anweisungen zum Auslesen End If Next geht es schnell. (Ist klar, dass das so nur den ersten Parameter prüft, wollte nur sehen, was so lange dauert.) Danke im Voraus!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kne Mitglied System-Ingenieur
Beiträge: 88 Registriert: 16.11.2007 Intel Xenon 2 x 2,53Mhz 12 GB Ram NVIDIA Quadro Fx 1800 Vista 64bit CATIA v5R18 + v5R19
|
erstellt am: 15. Apr. 2011 13:00 <-- editieren / zitieren --> Unities abgeben: Nur für Hoemie
Hi Hoemie, verstehe ich das richtig, dass du alle Parameter des Parts durchsuchst? Wenn ja ist es klar, dass das etwas länger dauert, da ein Part über 3000 Partameter besitzt. Versuche wie schon bgrittmann geschrieben hat deine Parameter direkt anzusprechen. Den Code dafür bekommst du auch über den Makrorekorder. Einfach mal Aufnahme starten und einen Parameterwert ändern. ------------------ Grüße aus Köln Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian.O Mitglied Konstrukteur
Beiträge: 1212 Registriert: 17.07.2009
|
erstellt am: 15. Apr. 2011 13:22 <-- editieren / zitieren --> Unities abgeben: Nur für Hoemie
Servus, so hab ich auslesen bzw. suchen gemeint:
Code: '***Performanceerhöhung der Suche CATIA.HSOSynchronized = False '***Parameter suchen objSel.Search "Knowledgeware.Parameter.Name !=Origin*" CATIA.HSOSynchronized = True
und fürs auslesen:
Code: For intI = 1 To objSel.Count '***Parameternamen eintragen objExcel.Cells(5 + intI, 1).Value = objSel.Item(intI).Value.Name '***Werte eintragen objExcel.Cells(5 + intI, 2).Value = objSel.Item(intI).Value.Value Next
------------------ Mit freundlichen Grüßen aus Tirol Christian Obholzer Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hoemie Mitglied
Beiträge: 4 Registriert: 15.04.2011 CATIA V5R19 Windows XP SP3 Intel Core 2 Quad 2,33 MHz 3 GB RAM
|
erstellt am: 15. Apr. 2011 14:59 <-- editieren / zitieren --> Unities abgeben:
Danke für die vielfältige Hilfe. @Christian: Deine Lösung funktioniert bei mir sehr gut und schnell. Danke! Ich habe allerdings noch nicht verstanden, wonach ich da genau suche. Was selektiere ich mit .Search "Knowledgeware.Parameter.Name !=Origin*"? Könnte ich z.B. auch alle vom Nutzer angelegten Parameter selektieren? (Das sind nämlich die, die ich später ein- und auslesen möchte.)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian.O Mitglied Konstrukteur
Beiträge: 1212 Registriert: 17.07.2009
|
erstellt am: 15. Apr. 2011 15:14 <-- editieren / zitieren --> Unities abgeben: Nur für Hoemie
|
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 15. Apr. 2011 15:30 <-- editieren / zitieren --> Unities abgeben: Nur für Hoemie
Servus Mit einer Abfrage nach "renamed" kannst du die umbenannten Parameter "ausfiltern" (leider nicht in der Suche): Code:
'***Performanceerhöhung der Suche CATIA.HSOSynchronized = False '***Parameter suchen objSel.Search "Knowledgeware.Parameter.Name !=Origin*" CATIA.HSOSynchronized = True For intI = 1 To objSel.Count 'Parameter umbenannt? if objSel.Item(intI).Value.renamed = true then '***Parameternamen eintragen objExcel.Cells(5 + intI, 1).Value = objSel.Item(intI).Value.Name '***Werte eintragen objExcel.Cells(5 + intI, 2).Value = objSel.Item(intI).Value.Value End if Next
Gruß Bernd------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hoemie Mitglied
Beiträge: 4 Registriert: 15.04.2011 CATIA V5R19 Windows XP SP3 Intel Core 2 Quad 2,33 MHz 3 GB RAM
|
erstellt am: 15. Apr. 2011 15:31 <-- editieren / zitieren --> Unities abgeben:
|
RSchulz Ehrenmitglied V.I.P. h.c. Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 06. Mai. 2011 11:54 <-- editieren / zitieren --> Unities abgeben: Nur für Hoemie
Zitat: Original erstellt von Christian.O: so hab ich auslesen bzw. suchen gemeint:
Code: '***Performanceerhöhung der Suche CATIA.HSOSynchronized = False '***Parameter suchen objSel.Search "Knowledgeware.Parameter.Name !=Origin*" CATIA.HSOSynchronized = True
Hallo zusammen, sollte damit jemand arbeiten, dann sei gesagt, dass CATIA R19SP08 mit diesem Befehl komplett zerissen wird. Der erste Programmdurchlauf funktioniert wunderbar. Sobald man das Programm beendet allerdings beendet, scheint es CATIA mit in den Abgrund zureißen. Danach funktionieren einige Dinge nicht mehr. Auf der Suche nach einer Lösung habe ich gesehen, dass es genau hierfür einen Hotfix 6 gibt! ...also nur zur Info. Ich bin nämlich gerade selbst derbe auf die Nase gefallen und konnte mir nicht erklären warum! ------------------ MFG Rick Schulz Nettiquette (CAD.de) - Was ist die Systeminfo? - Wie man Fragen richtig stellt. - Unities Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |