export do dwg (dxf) pouze v případě rozvinu
Vytištěno z: CAD Fórum
Kategorie: Autodesk - stavebnictví, strojírenství, CAD/GIS
Název fóra: Inventor
Popis fóra: Otázky k programům Autodesk Inventor Professional, Product Design & Manufacturing Collection, Factory Design; digitální prototypy
URL: https://www.cadforum.cz/forum/forum_posts.asp?TID=19009
Datum vytištění: 25.čvc.2026 v 21:15
Téma: export do dwg (dxf) pouze v případě rozvinu
Odeslal: leos.svoboda
Předmět: export do dwg (dxf) pouze v případě rozvinu
Datum odeslání: 24.bře.2014 v 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 Inventoru
dejme 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)
|
Odpovědi:
Odeslal: Navara
Datum odeslání: 24.bře.2014 v 19:53
|
Řešitelné je oboje. Snad vám to pomůže:
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)
|
|
Odeslal: leos.svoboda
Datum odeslání: 25.bře.2014 v 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 name oDataMedium.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 :-/
|
Odeslal: Navara
Datum odeslání: 25.bře.2014 v 14:59
Například nějak takhle
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
|
|
Odeslal: leos.svoboda
Datum odeslání: 25.bře.2014 v 16:15
|
bohužel chyba...
IsNullOrWhiteSpace není členem String.
|
Odeslal: Navara
Datum odeslání: 25.bře.2014 v 17:52
|
Tak to máte starý Inventor Lze použít starší metodu
String.IsNullOrEmpty(index)
|
|
Odeslal: leos.svoboda
Datum odeslání: 03.dub.2014 v 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.
Dim oSheets As Sheets Dim oSheet As Sheet Dim oViews As DrawingViews Dim oView As DrawingView
oSheets = ThisDoc.Document.Sheets
i = 0 For 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 Next Next
If i > 0 Then 'run additional rule iLogicVb.RunRule("dxf") End If
|
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.
|
Odeslal: Navara
Datum odeslání: 03.dub.2014 v 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.
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 If Catch ex As Exception 'Pohled neodkazuje dokument, dokument neni dostupny, atd... End Try
|
|
Odeslal: EuroTec
Datum odeslání: 03.dub.2014 v 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.
------------- Milan Denk
EuroTec JKR
|
Odeslal: kosulic
Datum odeslání: 04.dub.2014 v 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.
|
Odeslal: EuroTec
Datum odeslání: 04.dub.2014 v 09:21
Pane kosulic nepoužíváte naši šablonu?
------------- Milan Denk
EuroTec JKR
|
Odeslal: leos.svoboda
Datum odeslání: 08.dub.2014 v 15:15
|
díky za ohlasy, ale rozměry výpalku v razítku pro nás nejsou prvořadé...
|
|