Diskuzní fórum a databáze tipů a utilit pro AutoCAD, Inventor, Revit a další produkty Autodesk - od firmy Arkance Systems [www.cadforum.cz]
CZ | SK | EN | DE
Přihlášení
či registrace
   právě nás čte: 13990 
RSS kanál - CAD tipy RSS tipy
RSS diskuze

Diskuze Diskuzní fórum, poradna

 

NápovědaCAD diskuze, rady, výměna zkušeností

 
CAD Fórum - Homepage Veřejné diskuzní fórum k CAD aplikacím - ptejte se na libovolné otázky týkající se oboru CAx, podělte se o vaše znalosti a zkušenosti s programy AutoCAD, Inventor, Revit, Fusion 360, 3ds Max a s dalšími CAD aplikacemi. Zaregistrujte se nebo se přihlašte a zašlete váš příspěvek do odpovídajícího fóra. Viz další informace o CAD Fóru. Nechcete se registrovat? Zeptejte se v naší Facebook poradně.
Fórum nenahrazuje technický support firmy Arkance Systems (CAD Studio) - přímá podpora pro zákazníky funguje na helpdesk.cadstudio.cz
  FAQ FAQ  Prohledat fórum   Události   Registrovat Registrovat  Přihlásit Přihlásit

Téma uzavřenorozdělení čísla součásti

 Odpovědět Odpovědět Stránka  12> archiv
Autor
simunek Zobrazit panel
TOP uživatel
TOP uživatel
Avatar

Přihlášen: 03.bře.2014
Lokalita: ČR (ÚL)
Používám:
Inventor 2021 Professional
Stav: Offline
Bodů: 481
Přímý odkaz na tuto zprávu Téma: rozdělení čísla součásti
    Zasláno: 08.pro.2017 v 14:08
Zdravím,
 
potřeboval bych prosím nějak "nakopnout" jakým stylem by šlo provést aby se mi Číslo součásti rozdělilo do dvou uživatelských iVlastností které by se mi vytvořili (např. DrawingNumber a DrawingTitle)
 
Tyto iVlastnosti bych pak použil v razítku výkresu (v šabloně)
 
Číslo součásti mám ve formátu R123456r0_xxx_yyyyy.
R123456r0 by byla jedna iVlastnost (tato část je vždy 9 znaků)
text za prvním podtržítkem by byla druhá iVlastnost. 
 
Předpokládám nějak přes iLogic? Nebo by to šlo pomocí Xtools? Co jsem si pročítal Příručku tak jsem toto nenašel.
 
Poradí prosím někdo?
 
Předem díky
Pavel Šimůnek
Zpět nahoru
masa1 Zobrazit panel
TOP uživatel
TOP uživatel
Avatar

Přihlášen: 25.led.2006
Lokalita: ČR (PL)
Používám:
Abaqus, NX, Inventor, AutoCAD 2018
Stav: Offline
Bodů: 387
Přímý odkaz na tuto zprávu Zasláno: 08.pro.2017 v 14:11
Mašek
Zpět nahoru
simunek Zobrazit panel
TOP uživatel
TOP uživatel
Avatar

Přihlášen: 03.bře.2014
Lokalita: ČR (ÚL)
Používám:
Inventor 2021 Professional
Stav: Offline
Bodů: 481
Přímý odkaz na tuto zprávu Zasláno: 08.pro.2017 v 14:18
Jo, toto jsem našel.
Je to něco podobného, rozděluje se název souboru.
Jen jsem popravdě nezachytil jak by to mělo vypadat pokud to chci rozdělit po prvním podtržítku. Také jak vytvořit uživatelské iVlastnosti do kterých to pak zapíše.
 
V iLogicu nejsem vůbec zběhlý....bohužel :-(
Pavel Šimůnek
Zpět nahoru
Vladimír Michl Zobrazit panel
Moderátor
Moderátor
Avatar
Arkance Systems

Přihlášen: 09.zář.2004
Lokalita: ČR (JČ)
Používám:
Dodáváme produkty Autodesk
Stav: Offline
Bodů: 21434
Přímý odkaz na tuto zprávu Zasláno: 08.pro.2017 v 14:56
Tady je to spíš "kouzlení" s regulárními výrazy - asi bude stačit formálně upravit řetězec v příkladu na podtržítka (nezkoušeno):
 
"\b([^-]+)-*([^-]+).*\b"
-->
"\b([^_]+)_*([^_]+).*\b"
Vladimír Michl (moderátor)
Arkance Systems s.r.o. - www.arkance-systems.cz
(podpora viz hd.cads.cz)
Zpět nahoru
EuroTec Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 06.říj.2004
Lokalita: Czech Republic
Používám:
Inventor 2016
Stav: Offline
Bodů: 299
Přímý odkaz na tuto zprávu Zasláno: 08.pro.2017 v 16:08
Nebilo by lepší na to jít obráceně? Vyplnit nezávisle ty dvě (nebo tři, nebo deset) iVlastosti a ty potom sloučit do Čísla součásti . V rozpisce to jde docela dobře.
Milan Denk

EuroTec JKR
Zpět nahoru
Navara Zobrazit panel
Arkance Systems support
Arkance Systems support
Avatar
Arkance Systems

Přihlášen: 08.zář.2008
Lokalita: ČR (Pha)
Používám:
Inventor
Stav: Offline
Bodů: 1636
Přímý odkaz na tuto zprávu Zasláno: 11.pro.2017 v 00:06
Vždycky je jednodušší slučovat, než rozdělovat. Ale pokud už je to takhle, tak co třeba tohle?
 
Dim partNumber As String = "R123456r0_xxx_yyyyy"
Dim strings = partNumber.Split("_".ToCharArray(), 2)
MsgBox(String.Format("Original: {0}{3}1. cast: {1}{3}2. cast: {2}", partNumber, strings(0), strings(1), vbCrLf))
 
Zpět nahoru
simunek Zobrazit panel
TOP uživatel
TOP uživatel
Avatar

Přihlášen: 03.bře.2014
Lokalita: ČR (ÚL)
Používám:
Inventor 2021 Professional
Stav: Offline
Bodů: 481
Přímý odkaz na tuto zprávu Zasláno: 11.pro.2017 v 09:56
Původně odeslal(a) Vladimír Michl Vladimír Michl napsal(a):

Tady je to spíš "kouzlení" s regulárními výrazy - asi bude stačit formálně upravit řetězec v příkladu na podtržítka (nezkoušeno):
 
"\b([^-]+)-*([^-]+).*\b"
-->
"\b([^_]+)_*([^_]+).*\b"
 
No je to tedy bojEmbarrassed
 
Mám to zatím takto:
v šabloně výkresu jsem si vytvořil uživ. vlastnosti DrawingTitle a DrawingNumber.
Tyto vlastnosti pak používám v tom makru.
 
Narazil jsem ale na chybu že když je název např. R171234r0_nazev_dilu : Tak mi to rozdělí na R171234r0 a nazev tzn. že to skončí u dalšího podtržítka. Zkoušel jsem smazat různé části z této podmínky "\b([^_]+)_*([^_]+).*\b" ale bez úspěchu. Bohužel nemám vůbec představu jak je tato pobmínka tvořena.
 
Věděl by někdo jak to upravit aby to prostě rozdělilo na před prvním podtržítkem a zbytek po prvním podtržítku i když tam dále budou další podtržítka???
 
Také jsem laboroval kdy toto pravidlo spouštět. Mám to nastaveno na "změna iVlastnosti" a "Před uložením" je to správně prosím?
 
Předem díky za pomoc
 
Pavel Šimůnek
Zpět nahoru
Radek001 Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 10.dub.2007
Lokalita: ČR (JM)
Používám:
Inventor 2017 / Autocad 2017
Stav: Offline
Bodů: 511
Přímý odkaz na tuto zprávu Zasláno: 11.pro.2017 v 10:08
Možná nesmysl, ale co místo podtržítka použít definovaný počet znaků? Neřešit jestli 1., 2., nebo páté podtržítko. Prostě vzít prvních x znaků = jedna vlastnost, zbytek = druhá vlastnost. Podobně to lze v excelu.
Radek Štěpánek
OTIS, mechanical engineer
Zpět nahoru
simunek Zobrazit panel
TOP uživatel
TOP uživatel
Avatar

Přihlášen: 03.bře.2014
Lokalita: ČR (ÚL)
Používám:
Inventor 2021 Professional
Stav: Offline
Bodů: 481
Přímý odkaz na tuto zprávu Zasláno: 11.pro.2017 v 10:10
Původně odeslal(a) Radek001 Radek001 napsal(a):

Možná nesmysl, ale co místo podtržítka použít definovaný počet znaků? Neřešit jestli 1., 2., nebo páté podtržítko. Prostě vzít prvních x znaků = jedna vlastnost, zbytek = druhá vlastnost. Podobně to lze v excelu.
 
Jo to by taky šlo, ten kód před podtržítkem je stále stejně dlouhý.
 
Víte jak na to?
Pavel Šimůnek
Zpět nahoru
Radek001 Zobrazit panel
TOP uživatel
TOP uživatel

Přihlášen: 10.dub.2007
Lokalita: ČR (JM)
Používám:
Inventor 2017 / Autocad 2017
Stav: Offline
Bodů: 511
Přímý odkaz na tuto zprávu Zasláno: 11.pro.2017 v 10:14
V excelu ano, v Inventoru bohužel ne. Ještě jsem to nepotřeboval.
Ale myslím, že pokud to v Inventoru jde, tak pánové Michl a Navara jsou ti správní :-)
Radek Štěpánek
OTIS, mechanical engineer
Zpět nahoru
Navara Zobrazit panel
Arkance Systems support
Arkance Systems support
Avatar
Arkance Systems

Přihlášen: 08.zář.2008
Lokalita: ČR (Pha)
Používám:
Inventor
Stav: Offline
Bodů: 1636
Přímý odkaz na tuto zprávu Zasláno: 11.pro.2017 v 10:23
Regulární výrazy jsou fajn, ale je potřeba je umět napsat a odladit. Na internetu je spousta nástrojů pro testování RegExů.
Například:
Základy psaní jsou popsány třeba tady
 
EDIT:
Ten regulární výraz by měl vypadat podle mě takhle
\b([^_]+)+_(.*)\b
 
Jinak ten můj kód by potom vypadal takhle
 
Dim partNumber As String = iProperties.Value("Project", "Part Number")
 
'For debug only
partNumber = "R123456r0_xxx_yyyyy"
 
Dim strings = partNumber.Split("_".ToCharArray(), 2)
Dim DrawingTitle As String = strings(1)
Dim DrawingNumber As String = strings(0)
 
'TODO: Vytvořit uživatelské iVlastnosti'
 
'Nastavit hodnoty iVlastností'
iProperties.Value("Custom", "DrawingTitle") = DrawingTitle
iProperties.Value("Custom", "DrawingNumber") = DrawingNumber
 
'For debug only
MsgBox(String.Format("Original: {0}{3}DrawingTitle: {1}{3}DrawingNumber: {2}", partNumber, DrawingTitle, DrawingNumber, vbCrLf))
 
 
 
Připojené náhledyPřihlaste se pro zobrazení plné verze - 9996/11-12-2017_10-24-56.png

 
 
 
 


Upravil Navara - 11.pro.2017 v 10:36
Zpět nahoru
simunek Zobrazit panel
TOP uživatel
TOP uživatel
Avatar

Přihlášen: 03.bře.2014
Lokalita: ČR (ÚL)
Používám:
Inventor 2021 Professional
Stav: Offline
Bodů: 481
Přímý odkaz na tuto zprávu Zasláno: 11.pro.2017 v 10:42
Původně odeslal(a) Navara Navara napsal(a):

Regulární výrazy jsou fajn, ale je potřeba je umět napsat a odladit. Na internetu je spousta nástrojů pro testování RegExů.
Například:
Základy psaní jsou popsány třeba tady
 
EDIT:
Ten regulární výraz by měl vypadat podle mě takhle
\b([^_]+)+_(.*)\b
 
Jinak ten můj kód by potom vypadal takhle
 
Dim partNumber As String = iProperties.Value("Project", "Part Number")
 
'For debug only
partNumber = "R123456r0_xxx_yyyyy"
 
Dim strings = partNumber.Split("_".ToCharArray(), 2)
Dim DrawingTitle As String = strings(1)
Dim DrawingNumber As String = strings(0)
 
'TODO: Vytvořit uživatelské iVlastnosti'
 
'Nastavit hodnoty iVlastností'
iProperties.Value("Custom", "DrawingTitle") = DrawingTitle
iProperties.Value("Custom", "DrawingNumber") = DrawingNumber
 
'For debug only
MsgBox(String.Format("Original: {0}{3}DrawingTitle: {1}{3}DrawingNumber: {2}", partNumber, DrawingTitle, DrawingNumber, vbCrLf))
 
 
 
Připojené náhledyPřihlaste se pro zobrazení plné verze - 9996/11-12-2017_10-24-56.png

 
 
 
 
 
 
Díky moc, v tomto Vašem zápisu mám i zhruba představu na co který řádek je Big smile
 
Už to i chodí jak má jen když nastavim spouštění pravidla "před uložením" tak mi to při prvním uložení vyhodí tuto hlášku

Připojené náhledyPřihlaste se pro zobrazení plné verze - 55100/iLogic_chyba.JPG

 
Poté při dalším uložení už to chybu nehodí a změny v razítku se provedou jak mají.
Pavel Šimůnek
Zpět nahoru
Navara Zobrazit panel
Arkance Systems support
Arkance Systems support
Avatar
Arkance Systems

Přihlášen: 08.zář.2008
Lokalita: ČR (Pha)
Používám:
Inventor
Stav: Offline
Bodů: 1636
Přímý odkaz na tuto zprávu Zasláno: 11.pro.2017 v 11:11
Protože tam chybí kontrola na úspěšné rozdělení
Tady je pokus o finální kód, jak s použitím funkce Split, tak s použitím RegEx. Každý si může vybrat co mu sedí víc Smile
 
Dim partNumber As String = iProperties.Value("Project", "Part Number")
'FOR DEBUG ONLY
partNumber = "R123456r0_xxx_yyyyy"
Dim drawingTitle As String = ""
Dim drawingNumber As String = ""
'----------------------------------------------------
'Split function
Dim strings = partNumber.Split("_".ToCharArray(), 2)
If strings.Length > 1 Then
    drawingTitle = strings(1)
    drawingNumber = strings(0)
   
    'FOR DEBUG ONLY
    MsgBox(String.Format("Original: {0}{3}DrawingTitle: {1}{3}DrawingNumber: {2}", partNumber, drawingTitle, drawingNumber, vbCrLf), Title:="Split function")
Else
    MsgBox("Rozdeleni se nezdarilo", Title:="Split function", Buttons:=MsgBoxStyle.Exclamation)
End If
'----------------------------------------------------
'----------------------------------------------------
'RegEx
Dim pattern As String = "^([^_]+)+_(.*)$"
Dim matchCollection = System.Text.RegularExpressions.Regex.Matches(partNumber, pattern)
Dim groupCollection = matchCollection(0).Groups
If groupCollection.Count > 2 Then
    drawingNumber = groupCollection(1).Value
    drawingTitle = groupCollection(2).Value
    'FOR DEBUG ONLY
    MsgBox(String.Format("Original: {0}{3}DrawingTitle: {1}{3}DrawingNumber: {2}", partNumber, drawingTitle, drawingNumber, vbCrLf), Title:="RegEx")
Else
    MsgBox("Rozdeleni se nezdarilo", Title:="RegEx", Buttons:=MsgBoxStyle.Exclamation)
End If
'----------------------------------------------------
iProperties.Value("Custom", "DrawingTitle") = drawingTitle
iProperties.Value("Custom", "DrawingNumber") = drawingNumber
 
Zpět nahoru
simunek Zobrazit panel
TOP uživatel
TOP uživatel
Avatar

Přihlášen: 03.bře.2014
Lokalita: ČR (ÚL)
Používám:
Inventor 2021 Professional
Stav: Offline
Bodů: 481
Přímý odkaz na tuto zprávu Zasláno: 11.pro.2017 v 12:43
Díky moc,
 
bohužel nyní to po prvním uložení vyhodí tu hlášku "Rozdělení se nezdařilo".
 
Když jsem si to procházel tak je to zřejmě tím že před prvním uložením je číslo součásti prázdné.
Zřejmě iLogic pravidlo spouštěné před uložením se spouští dříve než Inventor zapisuje do čísla součásti název souboru.
 
Pak by to dávalo smysl.
 
S tím asi moc nesvedeme že?
 
I v tomto stavu mi to samozřejmě dost ulehčí práci. Jde v podstatě jen o odkliknutí hlášky. Při dalším uložení už to chodí jak má.
 
 
Pavel Šimůnek
Zpět nahoru
Navara Zobrazit panel
Arkance Systems support
Arkance Systems support
Avatar
Arkance Systems

Přihlášen: 08.zář.2008
Lokalita: ČR (Pha)
Používám:
Inventor
Stav: Offline
Bodů: 1636
Přímý odkaz na tuto zprávu Zasláno: 11.pro.2017 v 12:58
Tady se dá udělat jediná věc a to je kontrola na začátku, jestli partNumber je prázdné. Pokud ano, tak ukončit pravidlo.
Jinak ta hláška se dá samozřejmě vypnout.
 
 
Složitější varianta je nastavit to pravidlo jak před uložením tak po uložení a v případě prvního uložení spouštět to pravidlo PO u dalších uložení PŘED. Ale to už je dost komplikované hlavně na údržbu.
S tím souvisí i to, že tahle pravidla by měla být VŽDY externí a měla by se spouštět třeba pomocí XTools, protože to zjednoduší pozdější údržbu. Řešení pomocí spouštěčů iLogic nedoporučuju, protože jsou vždy zapsány v dokumentu a do starších souborů je dostanete velmi obtížně.
Zpět nahoru
simunek Zobrazit panel
TOP uživatel
TOP uživatel
Avatar

Přihlášen: 03.bře.2014
Lokalita: ČR (ÚL)
Používám:
Inventor 2021 Professional
Stav: Offline
Bodů: 481
Přímý odkaz na tuto zprávu Zasláno: 11.pro.2017 v 14:22
pane Navara mohl bych Vás tedy požádat ještě o doplnění té kontroly a ukončení v případě že partNumber je prázdný??
 
Nějak jsem to zkoušel ale nedaří se.
 
Jinak ohledně externích pravidel a Xtoolsů souhlasím, nicméně u starších souborů mě chybějící makro trápit moc nebude a upřímně, jsem rád že dám dohromady iLogic natož to ještě "komplikovat" s xtoolsy :-)
Pavel Šimůnek
Zpět nahoru
Navara Zobrazit panel
Arkance Systems support
Arkance Systems support
Avatar
Arkance Systems

Přihlášen: 08.zář.2008
Lokalita: ČR (Pha)
Používám:
Inventor
Stav: Offline
Bodů: 1636
Přímý odkaz na tuto zprávu Zasláno: 11.pro.2017 v 15:05
Psal jsem to bez testu
If partNumber = "" Then
   Return
End If
 
XTools a externí pravidla je dobrá rada, ale dělejte jak myslíte.
 
Zpět nahoru
simunek Zobrazit panel
TOP uživatel
TOP uživatel
Avatar

Přihlášen: 03.bře.2014
Lokalita: ČR (ÚL)
Používám:
Inventor 2021 Professional
Stav: Offline
Bodů: 481
Přímý odkaz na tuto zprávu Zasláno: 11.pro.2017 v 15:14
Původně odeslal(a) Navara Navara napsal(a):

Psal jsem to bez testu
If partNumber = "" Then
   Return
End If
 
XTools a externí pravidla je dobrá rada, ale dělejte jak myslíte.
 
 
Jo tak ten Return mi tam chyběl Embarrassed
 
Už to chodí krásně.
 
Mockrát díky
Pavel Šimůnek
Zpět nahoru

Pro technickou podporu CAD
kontaktujte Helpdesk

Příbuzné CAD tipy:
Tip 10851:iLogic - jak ve výkresu zpracovat materiál a cestu součásti?
Tip 9476:Ukládání DWG kopie IDW výkresu pojmenované podle revize.
Tip 8631:Mluvící iLogic pravidlo pro kontrolu materiálu součásti Inventoru (výchozí materiál).
Tip 8717:Jak ve výkresu zobrazit těžiště podsestavy?
Tip 11550:iLogic: Spuštění externího procesu s parametry
Tip 9341:Použití iLogic na rozklad jména IPT souboru a naplnění iVlastností.


 Odpovědět Odpovědět Stránka  12> archiv

Přejít na fórum Oprávnění fóra Zobrazit panel



Stránka byla vygenerována za 1,234 sekund.