Zobrazit plnou verzi příspěvku: export do dwg (dxf) pouze v případě rozvinu

leos.svoboda
24.03.2014, 18:15
Zdravím,nyní převádím veškeré výkresy automaticky na dwg/dxf  při uložení idw.Nyní bych potřeboval upravit makro, aby se exportoval výkres pouze v případě, když je na výkrese rozvin...A další představa, nebo spíš touha.... Pokud by bylo možné dwg ukládat do složky která bude shodná s uživatelem Inventorudejme tomu výkresy budu chtít ukládat na síťový disk:Uživateli "Uziv_A" se dwg vyexportuje do Síťový-disk:\DWG\Uziv_A\ a uživateli "Uziv_B" do Síťový-disk:\DWG\Uziv_B\Prvotní je převod pouze v případě rozvinu... uživatelská složka by byla jen třešnička na dortu.Děkuji,Leoš' Get the DXF translator Add-In.
Dim DXFAddIn As TranslatorAddIn

'
oPath = ThisDoc.Path
oFileName = ThisDoc.FileName(False) 'without extension
oRevNum = iProperties.Value("Project", "Description")
'


DXFAddIn = ThisApplication.ApplicationAddIns.ItemById("{C24E3AC4-122E-11D5-8E91-0010B541CD80}")
'Set a reference to the active document (the document to be published).
Dim oDocument As Document


oDocument = ThisApplication.ActiveDocument
Dim oContext As TranslationContext
oContext = ThisApplication.TransientObjects.CreateTranslationContext
oContext.Type = IOMechanismEnum.kFileBrowseIOMechanism
' Create a NameValueMap object
Dim oOptions As NameValueMap
oOptions = ThisApplication.TransientObjects.CreateNameValueMap
' Create a DataMedium object
Dim oDataMedium As DataMedium
oDataMedium = ThisApplication.TransientObjects.CreateDataMedium
' Check whether the translator has 'SaveCopyAs' options
If DXFAddIn.HasSaveCopyAsOptions(oDocument, oContext, oOptions) Then
Dim strIniFile As String
strIniFile = "C:\temp\dxfout.ini"
' Create the name-value that specifies the ini file to use.
oOptions.Value("Export_Acad_IniFile") = strIniFile
End If




'
'get PDF target folder path
oFolder = Left(oPath, InStrRev(oPath, "\")) & "DXF"


'Check for the PDF folder and create it if it does not exist
If Not System.IO.Directory.Exists(oFolder) Then
System.IO.Directory.CreateDirectory(oFolder)
End If

'Set the PDF target file name
oDataMedium.FileName = oFolder & "\" & oFileName & _
"_" & oRevNum & ".dxf"





'Publish document.
DXFAddIn.SaveCopyAs(oDocument, oContext, oOptions, oDataMedium)

Navara
24.03.2014, 19:53


Řešitelné je oboje. Snad vám to pomůže:[code]
SyntaxEditor Code Snippet'Kontrola, zda aktivni list obsahuje alespon jeden pohled rozvinu
Dim containsFlatpattern As Boolean = False
For Each oView As DrawingView In ThisDrawing.ActiveSheet.Sheet.DrawingViews
If oView.IsFlatPatternView Then
containsFlatpattern = True
Exit For
End If
Next

'Adresar zavisly na uzivateli
Dim DxfRoot As String = "C:\Temp\DXF\"
Dim user As String = ThisApplication.UserName
Dim oFolder As String = String.Format("{0}{1}\", DxfRoot, user)[/code]

leos.svoboda
25.03.2014, 14:30
tak adresář uživatele funguje na výbornou :-)nakonec by pro mě bylo vhodnější, pokud by se dxf vytvářelo v případě plechového dílu - pokud totiž nemám ohýbaný plech ale pouze výpalek, tak je nesmysl vytvářet rozvin...a když chci k vyexportovaným výkresům přiřadit index změny, jak ošetřit aby se přidával pouze poslední index? 'Set the PDF target file nameoDataMedium.FileName = oFolder & "\" & oFileName & _"" & iProperties.Value("Custom", "07 Index1") & iProperties.Value("Custom", "12 Index2") & ".pdf"Bohužel se mi nepodařilo, aby příkaz fungoval s podmínkou If Else :-/

Navara
25.03.2014, 14:59

Například nějak takhle[code]
SyntaxEditor Code SnippetDim lastIndex As String = ""

Dim indexList As String() = New String() { _
iProperties.Value("Custom", "07 Index1"), _
iProperties.Value("Custom", "12 Index2")}

For Each index In indexList
If Not String.IsNullOrWhiteSpace(index) Then
lastIndex = index
Else
Exit For
End If
Next[/code] 

leos.svoboda
25.03.2014, 16:15
bohužel chyba...IsNullOrWhiteSpace není členem String.

Navara
25.03.2014, 17:52

Tak to máte starý InventorLze použít starší metodu [code]String.IsNullOrEmpty(index)[/code]

leos.svoboda
03.04.2014, 10:49
Mohl byste mi ještě poradit, jak rozpoznat zda se jedná o plechový díl?Nyní mám pravidlo, které kontroluji přítomnost rozvinu a na základě toho vytvoří dxf.[CODE]Dim oSheets As SheetsDim oSheet As SheetDim oViews As DrawingViewsDim oView As DrawingViewoSheets = ThisDoc.Document.Sheetsi = 0For Each oSheet In oSheets oViews = oSheet.DrawingViews For Each oView In oViews If oView.IsFlatPatternView = True Then 'count the view i = i +1 Else End If NextNextIf i > 0 Then'run additional ruleiLogicVb.RunRule("dxf")End If[/CODE]jenže je problém s obyčejnými výpalky - nemají rozvin, a vytvářet rozvin pro rovinný plech je zbytečné.Ideální by bylo, kdyby se DXF vytvářelo pro každý díl, který bude vytvořen v šabloně plechu.

Navara
03.04.2014, 14:04

Jestli je zobrazený dokument plech sice poznat jde, ale zdaleka to už není tak přímočaré, jako rozpoznání rozvinu. Jestli je to možné, přiklonil bych se k tomu, že metodika práce bude určovat, že každý plechový díl bude mít rozvin. Následující kód sice určí, jestli je odkazovaný model plech, ale není v něm ošetřena řada možných chybových stavů. Například že se jedná o načrtnutý pohled, že odkazovaný dokument není dostupný, atd. [code]Dim oView As DrawingView'Set oView...Try    Dim oModelDoc As Document = oView.ReferencedDocumentDescriptor.ReferencedDocument    If oModelDoc.DocumentSubType.DocumentSubTypeID = "{9C464203-9BAE-11D3-8BAD-0060B0CE6BB4}" Then        'Is sheetmetal document        Try            '<Sheetmeatal code here...>        Catch ex As Exception            'Chyba ve zpracovani plechoveho dilu.        End Try    End IfCatch ex As Exception    'Pohled neodkazuje dokument, dokument neni dostupny, atd...End Try[/code]

EuroTec
03.04.2014, 14:41

Má-li plechový díl (i rovný) rozvin, má to tu výhodu, že s x-tools můžete rovnou tahat rozměr plechu.

kosulic
04.04.2014, 06:37
Nevím, proč by byl rozvin u plechu bez ohybů zbytečný. Právě kvůli těm rozměrům do razítka máme rozvin u všeho. A samozřejmě jdou ty rozměry dávat do razítka i bez x-tools (akorát je potřeba mít v šabloně zaškrtlé exportovat tloušťku mat.)Dokonce máme rozvin i v šabloně plechu, kde není žádný náčrt (máme i předdefinované šablony s obdélníkovým plechem např.) Samotný díl (šablony) je pak vlastně s chybou (rozvin nemá co rozvinout). Ale po namodelování něčeho je vše s již hotovým rozvinem.

EuroTec
04.04.2014, 09:21

Pane kosulic nepoužíváte naši šablonu?

leos.svoboda
08.04.2014, 15:15
díky za ohlasy, ale rozměry výpalku v razítku pro nás nejsou prvořadé...