Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Parameter anlegen und einfach wiederfinden

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:  Parameter anlegen und einfach wiederfinden (2672 mal gelesen)
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: 12. Mrz. 2012 17:41    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,

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
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

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 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 HoBLila 10 Unities + Antwort hilfreich

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
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

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 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 HoBLila 10 Unities + Antwort hilfreich

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 Parameter

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

Set 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


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: 13. Mrz. 2012 11:50    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 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


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: 13. Mrz. 2012 12: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

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
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

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 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 HoBLila 10 Unities + Antwort hilfreich

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


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: 13. Mrz. 2012 12:44    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

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

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