Nastavení hodnoty dle volby parametru typu String
Uživatel | Příspěvek |
Tomáš Fridrichovský ![]() ![]() Poslat zprávu | Profil |
Datum:
13.7. 2021
| Zobrazeno:
3739x Konfigurace CATIA: V5-6R2018, MD2 Text dotazu: |
Ing Jan Cinert ![]() ![]() Poslat zprávu | Profil |
[#6992]
| Publikováno:
13.07. 2021 - 16:04 Dobrý den,
problém je v tom, že Law skutečně umí pracovat jen s typem Real (pro mě stále nepochopitelné). Řešením je Rule, ale na to zase potřebujete licenci KWA. Workaround: Jediná mě známá možnost je dostat do hodnot parametrů nějaká čísla, např. 1_A, 2_B atd. ty pak vypreparovat pomocí String->Extract a String->ToReal do dalšího parametru - již typu Real, a s ním jít do Law. Samotný Law pak nemusí přebírat hodnoty dalších parametrů, ale rovnou řídit POLOROZVOR (dá se větvit neomezeně). Je to trochu krkolomnější, ale funkční řešení. |
Tomáš Fridrichovský ![]() ![]() Poslat zprávu | Profil |
[#6993]
| Publikováno:
13.07. 2021 - 17:28 Dobrý den, sice to nebude úplně čisté řešení, ale použití číslovek by nevadilo. Pro změnu teď narážím na problém syntaxe příkazu String To Real. Nemáte nějaký příklad, jak jí přesně napsat, respektive co přesně vložit? Dostávám jen errory... |
Pavel Krsek ![]() ![]() Poslat zprávu | Profil |
[#6994]
| Publikováno:
14.07. 2021 - 06:54 Dobrý den,
další možnost je také ve skeletonu vytvořit design table ze kterého se nalinkují parametry. Něco hodné podobného jsme měli u nás také vytvořené a fungovalo to OK. Sice jsem to nakonec předělal jako externí makro, ale jen z důvodu, že při práci s naším PLM systémem se musí XLS tabulka design table ukládat jako samostatný dataset. |
Tomáš Fridrichovský ![]() ![]() Poslat zprávu | Profil |
[#6995]
| Publikováno:
14.07. 2021 - 10:20 Dobrý den,
design table je určitě je ve hře, ale tak trochu povinností je mít z hlediska uživatelského komfortu vybíratelné menu - typ A, typ B, anebo typ 1_A, typ 2_B apod. Bohužel převod ze String na Real se mi furt nedaří, respektive nevím, jak přesně má vypadat syntaxe. Pokud dovytvořím parametr TYP_Real, tak ve skupině příkazů String je "String->ToReal (): Real" s obsahem v kolonce pro formuli "->ToReal()". Bohužel ať zkouším libovolnou syntaxi, např.: "->ToReal(`TYP_Real` )" nebo "`typ` ->ToReal(`TYP_Real` )" atd., tak skončím u chyby Syntax Error line 0... apod. Počítám, že prostor před šipkou nezůstává prázdný, ale to se spíš jen domnívám podle vyhodnocení pro Law. |
Ing Jan Cinert ![]() ![]() Poslat zprávu | Profil |
[#6996]
| Publikováno:
15.07. 2021 - 14:46 Zkuste to takhle...
Extract se musí nastavit tak, aby vytáhl tu číselnou hodnotu ze stringu. První parametr je odkud (pozor, první znak je na pozici 0), druhý udává délku podřetězce. Pokud budete mít více než 10 hodnot, pak je dobré začít s 01 atd a tahat dva znaky. |
Honza_V ![]() ![]() Poslat zprávu | Profil |
[#7243]
| Publikováno:
24.03. 2025 - 09:59 Narazil jsem na toto vlákno při řešení podobného problému. Udělal jsem to trochu jinak, tak se podělím. Třeba to někomu pomůže.
Požadavek byl řídit předvoleným vstupním parametrem typu String (Varianta A, Varianta B, Varianta C,......) několik rozměrových hodnot. 1) Vytvořil jsem si řídící parametr typu String.1 a do něj předvolil jednotlivé varianty (Varianta A/Varianta B/Varianta C). Pro následující příklad uvádím tyto 3 varianty. 2) Do dalšího parametru String.2 jsem si vyextrahoval variantní písmeno na 10 pozici `String.1` ->Extract(9,1) 3) Vytvořil jsem si tolik parametrů typu Integer, kolik mám variant a do každého z nich provedl ověření dané písmenné varianty pomocí funkce Search. Každý z výsledků jsem vynásobil o řád se zvyšujícím číslem. Tedy první Integer.1 bude mít funkci `String.2` ->Search("A")*1 (to krát 1 je jen pro úplnost) Pokud se tedy v extractu String.2 nachází písmeno A je na výstupu 0 / pokud ne, je tam -1 Pak druhý Integer.2 bude mít funkci `String.2` ->Search("B") *10 Pokud se tedy v extractu String.2 nachází písmeno B je na výstupu 0 / pokud ne, je tam -10 No a třetí Integer.3 bude mít funkci `String.2` ->Search("C") *100 Pokud se tedy v extractu String.2 nachází písmeno C je na výstupu 0 / pokud ne, je tam -100 Nakonec jsem vytvořil finální součtový Ineger.4 do kterého jsem sečetl všechny předchozí a abych se zbavil záporného znaménka, tak jsem vše vynásobil -1 (`Integer.1` +`Integer.2` +`Integer.3` )*-1 V závislosti na dané variantě se tedy tento finální Ineger.4 mění následovně Varianta A => 110 Varianta B => 101 Varianta C => 11 Není potřeba nad tím složitě přemýšlet a něco počítat, prostě postupně vyberu každou z variant a opíšu si výsledný kontrolní součet. Tento konečný parametr typu Integer už lze použít pro funkci Law a řídit s ní například délkové rozměry. |
Ing Jan Cinert ![]() ![]() Poslat zprávu | Profil |
[#7244]
| Publikováno:
01.04. 2025 - 15:56 Uživatel odpovídá na příspěvek #7243:
Pořád vidím jistou nevýhodu, že při přidávání variant budete muset přidávat i parametr na vyhledání konkrétní varianty, pak parametr součtu, a nakonec i samotný Law. V předchozím řešení stačí upravit jen Law, a navíc víte přesně jaké číslo do Law použít (extract z názvu varianty), a nemusíte přepnou na konkrétní variantu, abyste viděl daný součet ;-) Ale fungovat to bude tak jako tak. |
Uživatel nepřihlášen
Pro zobrazení obsahu stránky / provedení akce (vytvoření nového téma, napsání odpovědi do diskuse apod.) musíte být přihlášeni.