Zobrazit plnou verzi příspěvku: Popis súčiastky

CADCAPONE
23.09.2013, 16:19
Dobrý den.Chcem sa spýtať či sa nedá automaticky za pomoci iLogic rozložiť názov súčiastky.Napr. SW_34_05_02_Grundplatte toto celé sa mi zapisuje do čísla součásti. Ja by som to potreboval rozložiť na SW_34_05_02 to by bolo číslo součásti a Grundplatte aby zapísalo do popis (musí to byť velkým písmom).Ale povodný názov ktorý vidím v zložke je SW_34_05_02_Grundplatte.ILogic moc neovládam skôr vôbec.Ďakujem za radu

Vladimír Michl
23.09.2013, 17:07

Princip najdete v tipu:http://www.cadforum.cz/cadforum/pouziti-ilogic-na-rozklad-jmena-ipt-souboru-naplneni-ivlastnosti-tip9341Je potřeba přesně popsat vzor názvu - oddělovače nebo pevné délky podřetězců.

CADCAPONE
24.09.2013, 05:51
Tomu vôbec nerozumiem ako by som to mal prepísať. Dalo by sa mi pomôcť prosím.Ďakujem

Vladimír Michl
24.09.2013, 07:11

Rádi pomůžeme, ale právě že potřebujeme přesněji popsat ten vzor - dochází k oddělení vždy po 4. podtržítku? Nebo po posledním podtržítku? Nebo vždy po 12. znaku? Nebo po poslední numerické skupině?

CADCAPONE
24.09.2013, 07:29
Dochádza tomu vždy po poslednom podtržníku aby sa oddelil názov a zapísal do iVlastností "POPIS"SW_17_00_02_GrundkorperDFM_W_05_03_SchneidplatteSW_27_01_10_07_ZwischenstuckUviedol som tu aj príklady. Počet podtržníkov sa môže meniť.Velmi pekne ďakujem

Vladimír Michl
24.09.2013, 08:08

Mělo by fungovat toto (netestováno): [CODE]docname=ThisDoc.FileName(False)Dim matches As System.Text.RegularExpressions.MatchCollectionDim match As System.Text.RegularExpressions.MatchDim groups As System.Text.RegularExpressions.GroupCollectionmatches = System.Text.RegularExpressions.Regex.Matches(docname, "\b.+_(.+)$\b")If matches.count>0 Then For Each match In matches  groups = match.Groups  iProperties.Value("Project", "Description") = groups.item(1).Value  MsgBox("iProperties set to " & groups.item(1).Value) Next Else MsgBox("No match!")End If[/CODE]

CADCAPONE
24.09.2013, 08:25
Ďakujem velmi pekne funguje to.Rozdeleni funguje ale ak by som mohol mať dotaz.SW_34_07_00_AdapterRozdelí to pekne "Adapter zapíše do popisu" ale celý názov mi zostáva v čísle súčiastke SW_34_07_00_Adapter a to červeným by som potreboval vymazať preč s čísla součásti aby som to nemusel mazať ručne.A nedalo by sa náhodou urobiť že vytiahne číslo "SW_34_07_00" a zapíše ho do čísla součásti a zasa názov "Adapter" by sa zapísal do popisu. Tým by sa mi vyriešilo všetko.Ak sa to tak ovšem dá tak urobiť.

Vladimír Michl
24.09.2013, 08:32

Ano, to je jen drobná úprava: [CODE]docname=ThisDoc.FileName(False)Dim matches As System.Text.RegularExpressions.MatchCollectionDim match As System.Text.RegularExpressions.MatchDim groups As System.Text.RegularExpressions.GroupCollectionmatches = System.Text.RegularExpressions.Regex.Matches(docname, "\b(.+)_(.+)$\b")If matches.count>0 Then For Each match In matches  groups = match.Groups ' parenthesis 1 and 2  iProperties.Value("Project", "Description") = groups.item(1).Value  iProperties.Value("Project", "Part Number") = groups.item(2).Value  MsgBox("iProperties set to " & groups.item(1).Value & " and " & groups.item(2).Value) Next Else MsgBox("No match!")End If[/CODE]

CADCAPONE
24.09.2013, 08:38
Ďakujem velmi pekne.Funguje to ako má.ulahčili ste mi robotu

CADCAPONE
27.11.2013, 08:43
Dobrý den. funguje to fajn ale narazil som na problém:Pri tvare SW_17_00_02_Grundkorper_SPI......mi to rozdelí na číslo súčiastky SW_17_00_02_Grundkorper a do popisu dá SPI (to znamená zrkadlové).Dá sa to prosím nejak ošetriť?Další problém mám s tým že by som to potreboval to rozdelenie zvoliť len raz. Ak na súčiastke niečo zmením a dám to uložiť sa tam vyhadzuje stále tá tabulka. Dá sa to nejak urobiť aby to rozpísalo len raz a ked znovu uložím dokument že to nebude chcieť znova rozpisovať. Pri zostave 500 súčiastkach je to na dlho.Ďakujem za odpoveď

Vladimír Michl
27.11.2013, 09:36

To makro je navržené podle logiky "odděl za posledním podtržítkem". Pokud v některých případech tato logika neplatí, je potřeba stanovit jinou. Z toho příkladu mi nějaká jiná snadná logika nevyplývá - nebo je to vždy "5. skupina oddělená podtržítky"? nebo snad "první nečíselná skupina za čistě číselnými"? To už je na regulární výrazy trochu složitější. To, kdy se dané pravidlo má spouštět, určujete pomocí událostí. Pokud se má spouštění nějak automatizovat podmíněně, upravili bychom makro jako zakázkový vývoj.

CADCAPONE
27.11.2013, 10:09
Tu prvú ulohu som vyriešil : SW_17_00_02_Grundkorper_SPI som nahradil SW_17_00_02_Grundkorper-SPI takže už to rozdeluje tak ako má SW_17_00_02 a na popis Grundkorper-SPI.ta druha otázka by sa nadala spustiť caz spoušteč udalosti. Mám to nastavené na "po uložení dokumentu" či by sa to dalo zmeniť, lebo ked dávam uložiť po každej konštrukčnej zmene stále ten názov vyhadzuje a rozdeluje čo už ale nepotrebujem ked sa to  rozdelilo na začiatku.

CADCAPONE
28.01.2014, 14:25
Prosím Vás dalo by sa to zordeliť za poslednou číselnou radou? ako by vyzeral ten kód. Nemožem nato prísť.Ďakujem

Vladimír Michl
28.01.2014, 15:18

Regulární výraz by pak měl vypadat takto: [CODE]\b(.+)_(\D+)$\b[/CODE] ale nezkoušeno.

CADCAPONE
28.01.2014, 21:15
Dobrý večer.Ďakujem za výraz ale nefungu je to.docname=ThisDoc.FileName(False)Dim matches As System.Text.RegularExpressions.MatchCollectionDim match As System.Text.RegularExpressions.MatchDim groups As System.Text.RegularExpressions.GroupCollectionmatches = System.Text.RegularExpressions.Regex.Matches(docname, "\b(.+)_(\D+)$\b")If matches.count>0 Then For Each match In matches  groups = match.Groups ' parenthesis 1 and 2  iProperties.Value("Project", "Description") = groups.item(2).Value  iProperties.Value("Project", "Part Number") = groups.item(1).Value  MsgBox("iProperties set to " & groups.item(1).Value & " and " & groups.item(2).Value) Next Else MsgBox("No match!")End Iftoto je už s tým novým výrazom.Skúšal som to na GRM_W_02_20_12_PLATTE_LINKSPotrebujem to rozdeliť o poslednom čísle.Ďakujem veľmi pekne.

Vladimír Michl
28.01.2014, 21:27

Tento název se ale strukturou liší od předchozích případů. Pokud se to dále nezkomplikuje dalším případem, tak aktuální regulární výraz je tento (koncové skupině/skupinám ale teď musí předcházet alespoň jedna numerická skupina a v poslední skupině nesmí být číslice): [CODE]\b(.+\d+)_(\D+)$\b[/CODE]

CADCAPONE
28.01.2014, 21:37
Ďakujem veľmi pekne.Snád sa to už neskomplikuje.To by mal byť výsledný názov súšiastky.Ešte raz vám ďakujem