- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hello @A.Acheson ,
in this script, how would we identify more than one view in our script if they are in the drawing. I have three views and their names are view1, view2 and view3. I want to update these all view at every stage of the loop since they all have different ipart factory parts. I got the script for excel and here it is, I am still trying to construct the code, so it will follow this workflow.
1. go to row 1 in excel
2. update the view1 ipart partmember to Cell A1
3. update the view2 ipart partmember to Cell B1
4. update the view3 ipart partmember to Cell C1
5. update the drawing and arrange the dimensions on those views.
6. save it as a pdf and the name of the file is in the excel so cell D1 value has to match with the file name for that loop.
7. jump to the next row
here i want to assign the cell values to the different views and their active partmember, if you can help me out a bit here! I would really appreciate this. thanks in advance. The first script is the one that i modified a bit and the second script is the one that you gave me as a solution of my questions before.
owbook = "C:" owSheet = "MASTER" GoExcel.Open(owbook,owSheet) 'start row to use Dim oStartRow As Integer oStartRow = 1 'number of rows to use Dim oRowlastcount As Long oRowlastcount = 25 '--------------------------------------------------------------------------------------------------------------------------------' Dim oCrossSecdoc As DrawingDocument = ThisApplication.ActiveDocument oCrossSecdoc = ThisApplication.ActiveDocument Dim oFactory As iPartFactory Dim oView1Member As String Dim oView2Member As String Dim oView3Member As String '--------------------------------------------------------------------------------------------------------------------------------' Dim i As Integer For i = oStartRow To oRowlastcount Dim strx As String, stry As String strx = GoExcel.CellValue(owbook,owSheet, "A" & i) stry = GoExcel.CellValue(owbook,owSheet, "B" & i) Next
Sub Main Dim oDrawing As DrawingDocument = ThisApplication.ActiveDocument Dim oPath As String = "C:\" 'Folder to save the drawings Dim oFactory As iPartFactory For Each oView As DrawingView In oDrawing.ActiveSheet.DrawingViews Dim oDoc As Document = oView.ReferencedDocumentDescriptor.ReferencedDocument oFactory = oDoc.ComponentDefinition.ipartMember.ParentFactory Exit For Next Dim memberName As String = InputBox("Enter the Membername you wish to Start the Loop", "iLogic", "abcd") If oFactory Is Nothing = False Then For Each oRow As iPartTableRow In oFactory.TableRows If Not oRow.MemberName = memberName AndAlso Not memberName Is Nothing Then Continue For memberName = Nothing For Each oView In oDrawing.ActiveSheet.DrawingViews If oView.ActiveMemberName <> oRow.MemberName Then oView.ActiveMemberName = oRow.MemberName oDrawing.Update ' Get the DXF translator Add-In. Dim DXFAddIn As TranslatorAddIn 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 'Set the destination file name Dim dxfFileName As String = oPath & "\DXF\" & oRow.MemberName & ".dxf" oDataMedium.FileName = dxfFileName iLogicVb.RunRule("FIXED SCALE") iLogicVb.RunRule("POSITION") 'Publish document. oDrawing.Update DXFAddIn.SaveCopyAs(oDocument, oContext, oOptions, oDataMedium) Do While oView.IsUpdateComplete = False Call ThisApplication.UserInterfaceManager.DoEvents Loop Next 'oDrawing.SaveAs(oPath & "\" & oRow.MemberName & ".idw", True) 'oDrawing.SaveAs(oPath & "\PDF\" & oRow.MemberName & ".pdf", True) Next End If End Sub