Sestava - export dxf
Vytištěno z: CAD Fórum
Kategorie: Autodesk - stavebnictví, strojírenství, CAD/GIS
Název fóra: iLogic a ETO
Popis fóra: Funkce a makra iLogic, Inventor Engineering to Order (ETO), automatizace a konfigurace výrobků
URL: https://www.cadforum.cz/forum/forum_posts.asp?TID=28793
Datum vytištění: 01.kvě.2026 v 11:21
Téma: Sestava - export dxf
Odeslal: michalkopriva
Předmět: Sestava - export dxf
Datum odeslání: 02.kvě.2019 v 09:52
|
Zdravím, mám vytvořenou sestavu ve které mám formulář do kterého se vkládá konfigurace podle které se následně upraví jednotlivé díly. Potřeboval bych vytvořit pravidlo v sestavě na export všech jednotlivých dílů do dxf po změně parametrů. Nevěděl by někdo jak na to? Pořád mi vyskakuje chyba :-/ Děkuji :-)
Edit: V každém dílu mám vytvořené pravidlo na export dxf, to funguje správně. Ale když v sestavě použiji v pravidle "iLogicVb.RunRule("Side_A:1", "Dxf")", tak mi vyskočí chyba: "Error in rule: Dxf, in document: 19-109157.ipt Forkert parameter. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))"
|
Odpovědi:
Odeslal: michalkopriva
Datum odeslání: 03.kvě.2019 v 10:36
Odeslal: Navara
Datum odeslání: 03.kvě.2019 v 10:54
|
Budu se opakovat, ale nepoužívejte interní pravidla na úlohy typu export. Na to použijte externí pravidlo a to potom ze sestavy zavolejte. Pokud máte chybu v tom vašem pravidle, tak ho sem dejte, ať se na to můžeme podívat.
|
Odeslal: michalkopriva
Datum odeslání: 03.kvě.2019 v 12:27
|
V iLogicu jsem amatér, učím se :-) Jaký je v tom rozdíl? :-)
Vytvořil jsem tedy externí pravidlo:
Dim fSett As String fSett = "FLAT PATTERN DXF?AcadVersion=2004&RebaseGeometry=True&OuterProfileLayer=0&OuterProfileLayerColor=0;0;0&InteriorProfilesLayer=0&InteriorProfilesLayerColor=0;0;0&InvisibleLayers=IV_ARC_CENTERS;IV_TANGENT;IV_ROLL;IV_ROLL_TANGENT;IV_ALTREP_BACK;IV_ALTREP_FRONT;IV_FEATURE_PROFILES_DOWN;IV_FEATURE_PROFILES;IV_TOOL_CENTER_DOWN;DIGI_MARKER_TOOL_1;DIGI_MARKER_TOOL_2;IV_BEND;IV_BEND_DOWN" 'Nastaveni exportu Dim fSname As String fSname = Parameter("FilesStorage") & "JSMMU-" & Parameter("type_of_connection") & "-B-" & Parameter("length_B") & ".dxf" 'Nastaveni ulozeni cesta+nazev ThisApplication.ActiveDocument.ComponentDefinition.DataIO.WriteDataToFile( fSett, fSname) 'Save s nastavenim fSett a do cesty fSname ' MessageBox.Show("DXF was save: " & fSname,"Flat Pattern", MessageBoxButtons.OK) 'Message report
Když toto externí pravidlo spustím v .ipt ručně, tak se dxf vygeneruje. Jen nevím, jak ho správně vyvolat ze sestavy...
|
Odeslal: Navara
Datum odeslání: 06.kvě.2019 v 09:52
|
Já bych to řešil tak, že si z aktivní sestavy zjistím všechny plechové součásti a na nich spustím export do DXF.
Sub Main() 'Assembly document must be active Dim oAssembly As AssemblyDocument = ThisDoc.Document 'Iteration thru all referenced douments of active assembly document For Each document As Document In oAssembly.AllReferencedDocuments 'Process only sheetmetal parts If document.DocumentType = DocumentTypeEnum.kPartDocumentObject And document.DocumentSubType.DocumentSubTypeID = "{9C464203-9BAE-11D3-8BAD-0060B0CE6BB4}" Then ExportDxf(document) End If Next MsgBox("Hotovo") End Sub 'Constant value for all exports Dim fSett As String = "FLAT PATTERN DXF?AcadVersion=2004&RebaseGeometry=True&OuterProfileLayer=0&OuterProfileLayerColor=0;0;0&InteriorProfilesLayer=0&InteriorProfilesLayerColor=0;0;0&InvisibleLayers=IV_ARC_CENTERS;IV_TANGENT;IV_ROLL;IV_ROLL_TANGENT;IV_ALTREP_BACK;IV_ALTREP_FRONT;IV_FEATURE_PROFILES_DOWN;IV_FEATURE_PROFILES;IV_TOOL_CENTER_DOWN;DIGI_MARKER_TOOL_1;DIGI_MARKER_TOOL_2;IV_BEND;IV_BEND_DOWN" 'Nastaveni exportu Sub ExportDxf(sheetmetalPart As PartDocument) Try 'Reference to part parameters Dim parameters = sheetmetalPart.ComponentDefinition.Parameters 'Get parameter values Dim fileStorage As String = GetParameterValue("FilesStorage", parameters) Dim typeOfConnection As String = GetParameterValue("type_of_connection", parameters) Dim lengthB As String = GetParameterValue("length_B", parameters) 'Build target file name Dim fSname As String = String.Format("{0}JSMMU-{1}-B-{2}.dxf", fileStorage, typeOfConnection, lengthB) 'Nastaveni ulozeni cesta+nazev 'Export flatpattern to DXF sheetmetalPart.ComponentDefinition.DataIO.WriteDataToFile(fSett, fSname) 'Save s nastavenim fSett a do cesty fSname
' MessageBox.Show("DXF was save: " & fSname,"Flat Pattern", MessageBoxButtons.OK) 'Message report Catch ex As Exception MsgBox(String.Format("Export se nezdaril.{2}FileName: {0}{2}Exception{1}", sheetmetalPart.FullFileName, ex, vbCrLf)) End Try End Sub Function GetParameterValue(paramName As String, parameters As Parameters) As String Try 'Returns parameter value as string if exists Return parameters(paramName).Value.ToString() Catch 'Parameter with given name can't be found Return "" End Try End Function
|
Co se týká použití externích pravidel, tak tam je ten důvod hlavně jednoduchá, centrální změna chování bez nutnosti aktualizovat obsah souborů.
|
Odeslal: michalkopriva
Datum odeslání: 06.kvě.2019 v 11:16
Super  Nevím, jestli jsem to udělal správně (celé jsem to vložil do pravidla sestavy), ale funguje mi to. Budu si u vás muset zařídit nějaké školení 
To mě ani nenapadlo, ale je to celkem logické 
Jen tedy v mém případě mi to teď funguje bez dalších pravidel v jednotlivých dílech... Moc tomu tedy nerozumím :-D Jak říkám, jsem amatér :-)
|
Odeslal: michalkopriva
Datum odeslání: 11.zář.2019 v 10:26
Bylo by možné upravit toto pravidlo pro export, abych mohl zvolit (určit), pro které díly se mají exportovat dxf? Některé díly (držáky pro motory, nakupované díly, atd...) se nemění a není tedy potřeba znovu a znovu generovat nová dxf...Seznam dílů pro export by byl v hlavní sestavě (buď v pravidle nebo v parametrech).
Je něco takového možné? :-) Děkuji
|
Odeslal: Navara
Datum odeslání: 15.zář.2019 v 17:33
|
Možné to samozřejmě je, ale tady už je to spíš otázka na správu dat. Obvyklý postup je, že se data zařadí do Vaultu a při schválení se vygeneruje DXF. Pokud se ten díl nezmění, nedojde k novému schválení a DXF se znova netvoří. Doporučil bych vám zaměřit se spíš tímto směrem. Pokud to z nějakého důvodu není možné, tak je potřeba doplnit ještě kontrolu na to, že daný díl je/není v nějakém seznamu dílů určených pro export. Kontrola patří podle mě sem
... For Each document As Document In oAssembly.AllReferencedDocuments 'Process only sheetmetal parts If document.DocumentType = DocumentTypeEnum.kPartDocumentObject And document.DocumentSubType.DocumentSubTypeID = "{9C464203-9BAE-11D3-8BAD-0060B0CE6BB4}" And IsDocumentForExport(document) Then ExportDxf(document) ...
|
Jak tu kontrolu provést je už ale zcela jiná otázka a souvisí s tím, jak budete definovat ten seznam. (Hodnota iVlastnosti, seznam čísel součástí, je to knihovní díl, umístění v adresáři, ...). A tohle už za vás nikdo nevyřeší.
|
Odeslal: michalkopriva
Datum odeslání: 25.zář.2019 v 13:57
|
Děkuji, Vault bychom uvítali, ale zatím to není možné.
Nejsem schopný rozchodit kontrolu souborů pro export :-/
Je možné do pravidla vypsat názvy souborů (např.: 19-109321.ipt) pro export? Z celé sestavy jich bude cca 5, tak bych to nebyl takový problém.
Děkuji
|
Odeslal: JDoubrava
Datum odeslání: 25.zář.2019 v 15:15
|
Jestli jsem to správně pochopil tak by mělo stačit vytvořit testovací funkci "IsDocumentForExport" vracející hodnotu True pokud dokument součásti splňuje nějakou podmínku, třeba že jeho jméno je uvedené v nějakém seznamu nebo se jmenuje "PlechXXXXX".
|
|