Vytisknout stránku | Zavřít okno

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 Snippet
Dim 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?Thumbs Up

-------------
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é... 





Vytisknout stránku | Zavřít okno