alxG88
Utente Junior
- Professione: Ingegnere Meccanico
- Software: SolidWorks, Solid Edge, Inventor, Autocad
- Regione: Emilia Romagna
Buongiorno a tutti,
Scrivo perchè avrei bisogno di aiuto con una macro che sto scrivendo per Solid Edge.
La macro attualmente funziona in questo modo:
1. Bisogna avere aperto un file draft (es. "pippo.dft")
2. La macro fa in modo di creare in automatico il file dxf e il pdf con lo stesso nome (es. "pippo.dxf" e "pippo.pdf") e li salva in due percorsi prestabiliti
3. Chiude il file dft aperto inizialmente
Adesso sto cercando di ampliare questa macro e fare in modo che:
1. Apra il rispettivo file par (es. "pippo.par")
2. Crei il file step relativo (es. "pippo.stp") e lo salvi un percorso prestabilito (S:\ug\step\)
3. Chiuda il file par appena aperto
Potreste darmi alcuni consigli su come scrivere questa parte di codice?
Di seguito vi allego la macro che ho scritto:
Vi ringrazio tutti in anticipo per la collaborazione.
Scrivo perchè avrei bisogno di aiuto con una macro che sto scrivendo per Solid Edge.
La macro attualmente funziona in questo modo:
1. Bisogna avere aperto un file draft (es. "pippo.dft")
2. La macro fa in modo di creare in automatico il file dxf e il pdf con lo stesso nome (es. "pippo.dxf" e "pippo.pdf") e li salva in due percorsi prestabiliti
3. Chiude il file dft aperto inizialmente
Adesso sto cercando di ampliare questa macro e fare in modo che:
1. Apra il rispettivo file par (es. "pippo.par")
2. Crei il file step relativo (es. "pippo.stp") e lo salvi un percorso prestabilito (S:\ug\step\)
3. Chiuda il file par appena aperto
Potreste darmi alcuni consigli su come scrivere questa parte di codice?
Di seguito vi allego la macro che ho scritto:
Codice:
Imports System.Runtime.InteropServices
Imports System
Imports System.Drawing
Module Module1
Dim objApp As SolidEdgeFramework.Application
Dim objDft As SolidEdgeDraft.DraftDocument
Dim ObjPrt As SolidEdgePart.PartDocument
Dim filename As String
Dim filename_PRT As String
Dim pathname_1 As String
Dim pathname_2 As String
Sub Main()
On Error Resume Next
objApp = GetObject(, "SolidEdge.Application") 'Crea un'applicazione Soli Edge con determinate caratteristiche
If objApp Is Nothing Then
MsgBox("Solid Edge non è aperto! Aprire Solid Edge.", vbCritical, "Attenzione")
Exit Sub
ElseIf objApp.ActiveDocument Is Nothing Then
MsgBox("Nessun documento aperto!", vbInformation, "Attenzione")
Exit Sub
ElseIf objApp.Document.Type <> SolidEdgeFramework.DocumentTypeConstants.igDraftDocument Then
MsgBox("Nessun documento DRAFT aperto! Aprire un DRAFT.", vbInformation, "Attenzione")
Exit Sub
End If
For Each Document In objApp.Documents 'Esegue il ciclo fintanto che ci sono DRAFT aperti
If Document.Type = SolidEdgeFramework.DocumentTypeConstants.igDraftDocument Then
objDft = Document
Call objDft.Save() 'Messo prima del nome, per i file nuovi viene correttamente chiesto di dare il nome
filename = Left(objDft.Name, Len(objDft.Name) - 4) 'Ricava solo il nome file
pathname_1 = "S:\ug\dxf\" 'percorso file dxf
pathname_2 = "S:\ug\dati\" 'percorso file pdf
objApp.DisplayAlerts = False 'Sovrascrive in automatico i file con lo stesso nome senza chiedere
Call objDft.SaveAs(pathname_1 + filename + "." + "dxf") 'salva con nome dxf
Call objDft.SaveAs(pathname_2 + filename + "." + "pdf") 'salva con nome pdf
objApp.DisplayAlerts = True 'Riattiva i messaggi di allerta di Windows
Call objDft.Close() 'Chiude il file DRAFT di cui ha appena creato pdf e dxf
End If
Next Document
objDft = Nothing
objApp = Nothing
End Sub
End Module
Vi ringrazio tutti in anticipo per la collaborazione.