| | | KISTERS 3DViewStation: Mehr CAD Lizenzen durch 3D-Viewer ersetzen und Geld sparen, eine Pressemitteilung
|
Autor
|
Thema: Parameter anlegen und einfach wiederfinden (2710 mal gelesen)
|
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
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: 12. Mrz. 2012 17:41 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich brauch mal einen kleinen Denkanstoß. :-) Und zwar möchte ich einem Part einen Parameter hinzufügen und diesen dann schnell wiederfinden können. Beides kein Problem:
Code:
Set parameterWork = parametersWork.CreateInteger(sParameterName, i_iIndex)
und dann finden über
Code:
Set parameterWork = parametersWork.Item(sParameterName)
Jetzt würde ich aber gern das ParameterSet verkleinern um die Suche über Item() oder GetItem() zu beschleunigen. Dies mache ich über SubListen, also
Code:
Set parametersWork = i_partWork.Parameters Set parametersWork = parametersWork.SubList(i_partWork, True)
Jetzt stört mich, dass ich die SubList rekursiv bilde, also mit dem True, statt False, weshalb die SubList mir noch immer zu viele Parameter enthält und die Suche noch immer mindestens eine Sekunde dauert. Daher erhoffe ich mir jetzt einen Denkanstoß, von euch, wie ich den Parameter entweder sinnvoller anlegen könnte, oder die SubList cleverer bilden könnte. ------------------ 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 |
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: 12. Mrz. 2012 19:22 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
Hallo Henry, irgendwie fehlt mir da noch ein bissel, gut ich gebe zu kein CATIA zur Hand zu haben und nicht geprüft zu haben, wieviele Parameter Standardmäßig ausgespuckt werden, aber mir stellt sich am Ende jedes Gedankenganges die gleiche Frage. Was genau hast du vor bzw. was möchtest du herauskürzen und wie sieht die SubList aktuell aus? Im Endeffekt wenn du die kürzen möchtest, musst du auch Plausibilitäten haben, die das kürzen oder vereinfachen. ...oder möchtest du nur innerhalb des Projektes etwas vereinfachen... Fragen über Fragen, die mich irgendwie die ganze Zeit plagen Erzähl mal bissel mehr, dann kann ich dir vll. auch helfen oder den richtigen Anstoß, wenn er nicht schon dabei war, raushauen ------------------ 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 |
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: 13. Mrz. 2012 10:17 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
Hallo Henry, wenn dein Code ungefähr so aussieht... Code:
Dim Docs1 As Documents Dim Doc1 As Document Dim PartDoc As PartDocument Dim Part As Part Dim ParamsWork As Parameters Dim Param As ParameterSet Docs1 = CATIA.Documents Set Doc1 = CATIA.ActiveDocument Set PartDoc = CATIA.ActiveDocument Set Part = PartDoc.Part Set ParamWorks = Part.Parameters Set Param = ParamWorks.CreateInteger("Blah", 1) Set Param = ParamWorks.Item("Blah") Set ParamsWork = ParamWorks.SubList(Part, True)
...dann dürfte sich an ParamsWork eigentlich garnichts ändern. Ich weis wie gesagt noch nicht genau was du vorhast, aber wenn du über SubList gehst, dann muss du dir ein Object definieren, welches innerhalb des Parts vorhanden ist und dessen Parameter du haben möchtest. Also so ungefähr... Code:
Dim MainBody as AnyObjectSet MainBody = Part.MainBody Set Paramswork = Paramswork.SubList(MainBody,True)
...dann würdest du nur die Paramter im Mainbody erhalten. Das Parameterset des Parts kannst du aber doch garnicht wirklich verkleinern, sonst fehlen dir doch relevante Parameter für das Model selbst. Wenn du gezielt an das Parameterset "Parameter" rangehen möchtest, dann versuch mal folgendes... Code:
Set ParamWorks = PartDoc.Product.UserRefProperties
HTH ------------------ 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 |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
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: 13. Mrz. 2012 11:50 <-- editieren / zitieren --> Unities abgeben:
Hallo Rick, danke für Deine Kreativität! :-) Verzeih mir bitte, dass ich nicht immer Details ausspucken kann und daher nur die Aufgabenstellung umreiße. :-) Ich brauch einen globalen Parameter/Wert im Part, der vom Makro erzeugt und auch von anderen verwendet werden kann. Also dachte ich mir, Parameteranlegen und auf Hidden setzen ist ja nicht schwer. dies tue ich über Code:
Set parametersWork = i_partWork.Parameters Set parametersWork = parametersWork.SubList(i_partWork, True) Set parameterWork = parametersWork.CreateInteger(sParameterName, i_iIndex)
Nun habe ich eine andere Funktion, die genau diesen Wert wieder zurückgeben muss (Beispiel: Makro wird 2 Tage später nochmals verwendet) Dafür muss ich den Parameter finden. Bei i_partWork.Parameters sind das bei meinem kleinen Beispiel schon 2877 Parameter. Bei Set parametersWork = parametersWork.SubList(i_partWork, False) habe ich dann 5, aber die flaschen :-). Set parametersWork = parametersWork.SubList(i_partWork, True) liefert leider genau wieder die 2877, was mir beim Suchen zu lange dauert. :-) Also es geht hier nicht um ein konkreten Fehler oder arges Problem, sondern um die Optimierung einer bestehenden Methode. Vor zwei Jahren hatte ich mal ähnliche Probleme und konnte, allerdings in einem anderen Release, die Parameterliste über die SubList gut reduzieren, ich weiß nur nicht mehr wie. :-) Dein Vorschlag mit den UserRefProperties kam mir auch schon in den Sinn, ich scheue mich nur davor, weil ich in der Funktion nur das Part habe und mich jetzt nicht hochhangeln wollte. Denke aber, dass es die günstigste Lösung ist und probiere sie daher gleich aus. ------------------ 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 |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
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: 13. Mrz. 2012 12:29 <-- editieren / zitieren --> Unities abgeben:
UserRefProperties ist okay, aber dann habe ich es im Properties-Dialog vom Part, dass sie editierbar sind. :-( ------------------ 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 |
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: 13. Mrz. 2012 12:34 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
Naja dann musst du es doch über die SubList versuchen. Dann brauchst du aber definitiv das Objekt, indem die von dir hinzugefügten Parameter vorhanden sind. Demnach eben irgendwie den Parameter-Pfad, den ich bis dato nicht gefunden habe bzw. nicht weis, wie ich den Knoten als Objekt definieren kann. Dann könntest du auch wieder mit rekursiv=true arbeiten, da er dir dann nur die Sachen aus diesem Objekt/Unterknoten zurückliefert. Ich habe allerdings jetzt erstmal keine Zeit mehr mich damit zu befassen. Ich muss mich jetzt durch die in meinen Augen wirklich schlechte Automationdokumentation von SmarTeam durchkämpfen. ------------------ 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 |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
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: 13. Mrz. 2012 12:44 <-- editieren / zitieren --> Unities abgeben:
Ich bleib erst einmal bei UserRefProperties, die sind zwar einfacher zu finden, aber editieren kann man ja beide Varianten. :-) ------------------ 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 |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|