Zobrazit plnou verzi příspěvku: srxTEXT

bobous007
23.09.2008, 14:03
Dobrý den vespolek,mám následující problém:Při použití utilitky srxTEXT v makru (CUI) nevím, jak nahradit zpětná lomítka v regulárním výrazu. Při použití z příkazové řádky vše funguje bezvadně, ale v makru se ACAD2008 vždy zastaví na zpětném lomítku a čeká, co uživatel. Poradíte prosím ?Díky Radek

PepaR
23.09.2008, 14:12
Příkaz:  SRXTEXTPopis:  Najde a nahradí hledaný řetězec v textech, kótách a atributech bloků. Funkce zahrnuje pokročilé funkce pro vyhledávání a nahrazení jako využití regulárních výrazů, přidání řetězců na začátek nebo konec textů, jednotlivých slov, nahrazení pouze jednoho/prvního výskyt podřetězce, apod. srxTEXT lze využít i pro dávkové nahrazení textů ve více výkresech (pomocí skriptů).
 
Více informací o regulárních výrazech naleznete na webu www.regularnivyrazy.info.
Legenda pro instrukce funkce:Search - Regular expression/Exact string/<Substring>: Hledat – Regulární výrazy/Přesný řetězec/<Podřetězec>:
 
Enter the searched text:Zadejte hledaný text:
 
Enter the replace text:(no replacements will be done)Zadejte text pro nahrazení:(pokud nic nezadáte, bude funkce pouze vyhledávat)
 
Search Layer/<All>:Hledat v hladině/<Ve všech hladinách>:
 
Search Selected/<All>:Hledat ve výběru/<V celém výkresu>:
 
Number of searched entities: ??Počet nalezených objektů: ??
 
Příkaz:  SRXTEXTCSVPopis:  Najde a nahradí hledaný řetězec v textech, kótách a atributech bloků podle definicí v souboru CSV. Funkce zahrnuje pokročilé funkce pro vyhledávání a nahrazení jako využití regulárních výrazů, přidání řetězců na začátek nebo konec textů, jednotlivých slov, nahrazení pouze jednoho/prvního výskyt podřetězce, apod. Text bude nahrazen podle tabulky v souboru srxtext.csv. Soubor CSV lze upravovat např. pomocí programu Microsoft Excel. srxTEXT lze využít i pro dávkové nahrazení textů ve více výkresech (pomocí skriptů).
 
Formát zápisu v souboru CSV:bolt,"nut" … řetězec bolt bude nahrazen řetězcem nutmale,"female" … řetězec male bude nahrazen řetězcem female
 
Zdroj: Nápověda pro jednu nejmenovanou firmu a textový soubor přiložený k nástroji SRXTEXT.PepaR2008-09-23 14:21:08

PepaR
23.09.2008, 14:20
Jinak zpětné lomítko znamená, že AutoCAD čeká na výzvu nebo něco podobného (z hlavy nevím, promiňte). Řešil bych to raději jako příkaz SRXTXTCSV. Nebudete si tak zbytečně komplikovat CUI.

bobous007
23.09.2008, 14:22

Díky, návod mám, jde mi pouze o ty zpětná lomítka při použití srxTEXTu z makra v CUI. Něčím by měla jít nahradit, aby acad nečekal na zadání uživatele, ale předal celý parametr jako řetezec této funkci.bobous0072008-09-23 14:25:06

PepaR
23.09.2008, 14:30
Nepomohlo by "" nebo znak ; ? Nutno vyzkoušet, je mi líto, ale já nemám tu možnost.

bobous007
23.09.2008, 14:32
To právě nevím, zkouším to už od rána, středníky, dvoje lomítka, uvozovky, normální lomítka.................. plus google, ale jaksi bez výsledků ....

PepaR
23.09.2008, 14:34
Vyvěste zde prosím jak to máte v CUI zapsáno, až se vrátím k PC, zkusím se podívat na tu syntaxi ... pokud mě pan Michl nebo nějaký jiný šikula nepředběhne :D

Vladimír Michl
23.09.2008, 15:05
srxText pracuje s lomítky normálně - tedy pokud je potřebujete zadávat formou regulárního výrazu, musíte je zdvojit. Pokud potřebujete hledat dvojici lomítek, musí být tedy celkem 4.
 
Se zpětnými lomítky ale může být problém v menu makrech. Dá se to ale obejít, např. takto:
[CODE]
(srxtext "Regular" (strcat(chr 92)(chr 92)(chr 92)(chr 92)) "|" "All")
[/CODE]

bobous007
23.09.2008, 15:05
Hledám řetezec začínající na YP a nahrazuji ho celý pěti pomlčkami (např. YP-2255-GH-2333 chci nahradit -----)Zápis pro příkazovou řádku (funguje OK):(srxtext "Regular" "\\YP\\(.*\\)" "-----" "All"V CUI mám vytvořené tlačítko, v tlačítku makro a v makru tento příkaz. Máčknu na tlačítko a na prvním zpětném lomítku se vykonávání makra přeruší a čeká se na vstup uživatele. Já ale potřebuji, aby se parametr druhý parametr předal celý funkci srxTEXT, tak, jak je v uvozovkách.

bobous007
23.09.2008, 15:16
Děkuji mnohokrát za pomoc. Funguje to. Paráda :-)Jen pro info správný tvar pro makro:(srxtext "Regular" (strcat(chr 92)"YP"(chr 92)"(.*"(chr 92)")") "-----" "All")Hezký denRadek

Vladimír Michl
23.09.2008, 15:21
Pro tento typ nahrazení (nepotřebujete "capture match") ale ani nepotřebujete ta zpětná lomítka - stačí:
[CODE]
(srxtext "Regular" "^YP.*" "-----" "All")
[/CODE]