Zobrazit plnou verzi příspěvku: Pomoc s Makrem

Albeda
25.07.2013, 12:58
Zdravím,dělám v práci databázi šroubů a je to velká otročina v klikání.Chtěl bych si práci ulehčit a hlavně ji zrychlit pomocí makra na určitou činnost, ale potřeboval bych kousek kódu pomoc vytvořit, abych se ve VB opět zorientoval.Jestli je to tedy vůbec možné, chtěl bych, aby mě makro dělalo následující věc: - nazev souboru SROUB DIN 933 - M10  x 12 - z toho vybere do proměnné vždy vše za řetězcem " - " (čili "M10x12"). - Tento řetězec bych potřeboval dosadit do iVlastností -> karta Sourn -> Klíčová slova - do iVlastností -> karta Projekt -> Číslo součásti bych potřeboval dosadit název souboru.Kdyby někdo věděl jak na to, byl bych Vám opravdu vděčný. Jinak tuto činnost budu muset dělat ručně cca pro 300+ položek.S pozdravemMartin

Boleslav
25.07.2013, 14:08
Můžu se zeptat co je cílem? Databáze šroubů přece v Inventoru už je.

dusek
25.07.2013, 14:19
teda úplně to nechápu, ale proč si nepřidáte požadované vlastnosti rodiny v obsahovém centru a pak nedáte obnovit součásti z obsahového centra? Vlastnost se vám vyplní pro celou rodinu.

Boleslav
25.07.2013, 14:42
Kdybyste to potřeboval na něco jiného než na knihovny, tak nedávno sem dávali pánové z CAD Studia podobné makro - http://www.cadforum.cz/cadforum/pouziti-ilogic-na-rozklad-jmena-ipt-souboru-naplneni-ivlastnosti-tip9341

Navara
25.07.2013, 15:42

Přiklonil bych se k názoru pana Duška. Projděte si možnosti práce s obsahovým centrem. Tam je možné pomocí výrazů skládat textové řetězce a mapovat je na libovolné vlastnosti výsledných modelů. Pokud byste toto měl dělat pro 300+ rodin (norem) tak se můžeme na nějakém makru dohodnout, ale pokud je těch norem cca 10-20, tak se to nevyplatí.

Albeda
26.07.2013, 10:44
Děkuji vám za odpovědi. Když jsem se díval na toto makro, tak by mě vystačilo, jen bych ho musel poupravit. Bohužel jsem zjistil, že moje znalosti VB jsou až moc základní na tyto věci a proměnná typu string mi zde asi stačit nebude.Názvy souborů budou všechny stejné př. "DIN 933 - M4  x 40" (mezi "4  x" jsou dvě mezery nevím proč). Já bych potřeboval následující:A = "DIN 933"B = "M4x40" (bez mezer)Proměnné dosadit do kolonek tímto způsobem:iProperties -> Summary -> Keywords = BiProperties -> Project -> Part Number = A & " " & BToto by mě bohatě stačilo a ušetřilo by mi to hodiny a hodiny práce. Potřebuji to kvůli kusovníku a náš kusovník je "zvláštně" udělaný např. číslo revize je hmotnost součásti v kg.Děkuji za jakékoliv odpovědi.StudentMartinAlbeda2013-07-26 10:51:41

Cheff
31.07.2013, 08:02
Tím jsem si prošel nedávno... Jak radí víše opravdu je nejlepší upravit si (resp. vytvořit vlastní knihovnu OC) - TV mém případě se rovnala dle dodavatele = téměř celá znovu... Nehledě na výhodu, že po definování vlastní knihovny (která bude výrazně menší než originál ISO) se práce po odpojení původních knihoven OC celkem zrychlí. Je to práce sice protivná, ale člověk si může pomoci excelem (externí soubor, kde si s texty můžete dělat co chcete...) - nejjendodušší bylo otevřít upravovanou rodinu a zkopírovat všechny sloupce do nového souboru excelu a tam odtud zpět. Pokud budete data upravovat přímo otevřením Excelu z OC, tak po přijmutí změn přijdete o funkční vzorce - proto ta klička do nezávyslého souboru...

Vladimír Michl
31.07.2013, 10:14
[QUOTE=Albeda]Názvy souborů budou všechny stejné př. "DIN 933 - M4  x 40" (mezi "4  x" jsou dvě mezery nevím proč). Já bych potřeboval následující: A = "DIN 933"B = "M4x40" (bez mezer)Proměnné dosadit do kolonek tímto způsobem:iProperties -> Summary -> Keywords = BiProperties -> Project -> Part Number = A & " " & B[/QUOTE] V onom makru zkuste nahradit regulární výraz:[CODE]\b([^-]+)-*([^-]+).*\b[/CODE]výrazem (nezkoušeno):[CODE]\b(.+) - (.+)\b[/CODE] to vyhazování mezer je složitější, musel bych vidět jak vypadají ostatní názvy.

Navara
31.07.2013, 12:16


Pokud používáte VBA, tak zkuste tohle:[CODE]    Dim filename As String    filename = "DIN 933 - M4  x 40"        Dim s() As String    s = Split(filename, "-", 2)        Dim A As String    A = s(0)        Dim B As String    B = Replace(s(1), " ", "")        Debug.Print A    Debug.Print B[/CODE]