Zobrazit plnou verzi příspěvku: Vyplnění předmětu součástí při uložení v sestavě

IvoBe
09.05.2017, 08:10
Zdravím, několik let používým pomocí XTOOLS pravidlo BeforeSave pro to, aby se mi do iVlastnosti Předmět vložil název souboru ipt (pokud není vyplněn). Fungovalo jak při ukládání samostatného ipt, tak při hromadném uložení všech dílů ze sestavy. S příchodem Inventoru 2017 to ze sestavy nefunguje. Poradíte nějaké řešení?BeforeSave.iLogicVbIf iProperties.Value("Summary", "Subject") = "" Then iProperties.Value("Summary", "Subject") = UCase(ThisDoc.FileName(False))End If

Navara
09.05.2017, 11:24

Ten kód vypadá v pořádku a podle mě se všechno chová, jak má. Problém je v tom, že při prvním uložení je ThisDoc.FileName vždy prázdné Nabízí se možnost využit argumentu SaveFileName, který není prázdný při uložené pomocí spouštěče, ale je prázdný, pokud se pravidlo spustí přímo. [code]'Get file name from event argumentsDim SaveFileName = RuleArguments("SaveFileName")'****************************'Debug only'Varianta 1Dim subject1 = UCase(ThisDoc.FileName(False)) ' Tohle je prazdne pri prvnim ulozeni MsgBox("subject1 = " + subject1) 'Varianta 2Dim subject2 = UCase(System.IO.Path.GetFileNameWithoutExtension(SaveFileName)) 'Tohle je prazdne, pokud se pravidlo spusti primoMsgBox("subject2 = " + subject2)'End Debug'****************************If iProperties.Value("Summary", "Subject") = "" Then  iProperties.Value("Summary", "Subject") = subject2End If [/code] 

IvoBe
10.05.2017, 12:45
Děkuji, při ukládání samostatně otevřeného IPT to ale funguje (tak i tak).Jde mi o situaci, kdy ukládám více IPT, otevřených v sestavě.  Někdy se to spustí pro každý díl, někdy ne. Nevím, jak vynutit, aby se spouštělo.

Navara
10.05.2017, 13:09

Jedině spustit "Uložit vše". Ale spouštět by se to mělo vždy, pokud na souboru došlo ke změně.

IvoBe
10.05.2017, 13:39
Ještě jeden dotaz: jaká je rozdíl mezi spuštěním pravidla pomocí XTOOLS a pomocí spouštěče události "Před uložením dokumentu"?

Navara
10.05.2017, 15:19

Mechanismus spouštěčů iLogicu není veřejně dokumentovaný, takže jednoznačnou odpověď nemám. Ale pravděpodobně to bude podobné mechanismu v XTools s tím rozdílem, že XTools spouští jedno pravidlo vždy nad každým ukládaným dokumentem, kdežto iLogic má uvnitř dokumentu poznamenáno zda a jaká pravidla má spouštět. Inventor interně poskytuje informaci, že bude ukládat, nebo uložil dokument. Je na autorovi addinu, jak na to zareaguje.