faccio progettazione meccanica e uso una macro in vba per automatizzare un processo del programma di progettazione. Spero di riuscire a spiegarmi bene.
Tale macro da in automatico un comando per creare alcuni componenti ad uno ad uno(migliaia),tali componenti poi vengono inseriti in un file che ha estensione *.iam e poi grazie a questo vengono convertiti sempre automaticamente in un ormato cad di interscambio, *.stp . il mio problema è che funziona perfettamente ma attualmente la macro si blocca al momento della creazione del file *.iam , mi chiede posizione e nome per il salvataggio, poi riparte . volevo chiedervi se riuscite a far sì che la macro la salvi con un nome in una certa posizione in automatico (tanto poi una volta finito questo processo non serve più questo file *.iam, serve appunto solamente alla macro per poter convertire tutti i file creati, di solito poi lo cancello). In questo modo potrei fare partire la macro e il pc farebbe tutto in automatico dall'inizio alla fine.
Posto il codice ed evidenzio il punto di salvataggio in cui vorrei che il file *.iam venisse nominato e salvato in automatico.
Vi ringrazio in anticipo
- Codice: Seleziona tutto
Public Sub AddiPartOccurrence2()
' Open the factory document invisible.
Dim oFactoryDoc As PartDocument
Set oFactoryDoc = ThisApplication.Documents.Open("D:\chiavetta 21-12\disegni inventor\2\000progetto\parti\tra.ipt", False)
' Set a reference to the component definition.
Dim oCompDef As PartComponentDefinition
Set oCompDef = oFactoryDoc.ComponentDefinition
' Make sure we have an iPart factory.
If oCompDef.IsiPartFactory = False Then
MsgBox "Chosen document is not a factory.", vbExclamation
Exit Sub
End If
' Set a reference to the factory.
Dim oiPartFactory As iPartFactory
Set oiPartFactory = oCompDef.iPartFactory
' Get the number of rows in the factory.
Dim iNumRows As Integer
iNumRows = oiPartFactory.TableRows.Count
' Create a new assembly document
Dim oDoc As AssemblyDocument
Set oDoc = ThisApplication.Documents.Add(kAssemblyDocumentObject, , True)
Dim oOccs As ComponentOccurrences
Set oOccs = oDoc.ComponentDefinition.Occurrences
Dim oPos As Matrix
Set oPos = ThisApplication.TransientGeometry.CreateMatrix
Dim oStep As Double
oStep = 0#
Dim iRow As Long
' Add an occurrence for each member in the factory.
For iRow = 1 To iNumRows
oStep = oStep + 10
' Add a translation along X axis
oPos.SetTranslation ThisApplication.TransientGeometry.CreateVector(oStep, oStep, 0)
Dim oOcc As ComponentOccurrence
Set oOcc = oOccs.AddiPartMember("D:\chiavetta 21-12\disegni inventor\2\000progetto\parti\tra.ipt", oPos, iRow)
Next
oDoc.Save '----------------E' questo il passo dove mi chiede di nominare e salvare il file *.iam!!!
Dim oRefDoc As Document
For Each oRefDoc In oDoc.ReferencedDocuments
Call ExportToSTEP2(oRefDoc)
Next
End Sub
Public Sub ExportToSTEP2(oDoc As Document)
Dim exportPath As String
exportPath = "D:\chiavetta 21-12\disegni inventor\"
' Get the STEP translator Add-In.
Dim oSTEPTranslator As TranslatorAddIn
Set oSTEPTranslator = ThisApplication.ApplicationAddIns.ItemById("{90AF7F40-0C01-11D5-8E83-0010B541CD80}")
If oSTEPTranslator Is Nothing Then
MsgBox "Could not access STEP translator."
Exit Sub
End If
Dim oContext As TranslationContext
Set oContext = ThisApplication.TransientObjects.CreateTranslationContext
Dim oOptions As NameValueMap
Set oOptions = ThisApplication.TransientObjects.CreateNameValueMap
If oSTEPTranslator.HasSaveCopyAsOptions(ThisApplication.ActiveDocument, oContext, oOptions) Then
' Set application protocol.
' 2 = AP 203 - Configuration Controlled Design
' 3 = AP 214 - Automotive Design
oOptions.Value("ApplicationProtocolType") = 3
' Other options...
'oOptions.Value("Author") = ""
'oOptions.Value("Authorization") = ""
'oOptions.Value("Description") = ""
oOptions.Value("Organization") = "Boeing SPA"
oContext.Type = kFileBrowseIOMechanism
Dim oData As DataMedium
Set oData = ThisApplication.TransientObjects.CreateDataMedium
'format file name
Dim FNamePos As Long
'postion of last back slash
FNamePos = InStrRev(oDoc.FullFileName, "\", -1)
Dim docFName As String
'file name with extension
docFName = Strings.Right(oDoc.FullFileName, Len(oDoc.FullFileName) - FNamePos)
'file name without extension
Dim shortName As String
shortName = Strings.Left(docFName, Len(docFName) - 4)
oData.FileName = exportPath & shortName & ".stp"
Call oSTEPTranslator.SaveCopyAs(oDoc, oContext, oOptions, oData)
End If
End Sub