Assieme e suoi riferimenti

jenuary

Utente Standard
Professione: Progettista e Programmatore VB.Net
Software: Solidworks
Regione: Veneto
#1
Ciao a tutti,
mi chiedevo se era possibile con solidworks spento sapere i riferimenti di un assieme.
Mi spiego meglio:
Scegliendo a priori un file di assieme con solidworks spento, vorrei sapere quali sono i componenti (o i file) che compongono l'assieme.
Cioè la stessa cosa che si vede andando dentro a solidworks explorer, e cliccando nella scheda "riferimenti".
Credo sia possibile, e mi sarebbe utile ricostruire l'albero dell'assieme dall'esterno(senza la lista delle feature naturalmente).
E' un domanda un po inusuale, però mi permetterebbe di gestire file anche in un computer dove non ho Solidworks installato.
Ciao Jenuary
 

pose63

Utente Junior
Professione: Tecnico
Software: SolidWorks 2016 OfficePro sp5.0 Win7 x64 Quadro FX580 2xSamsung SM226BW
Regione: Veneto
#3
Private Sub RiferimetiModello(lw as object)
'Set swApp = CreateObject("SldWorks.Application")
'Set Part = swApp.ActiveDoc
'If Part Is Nothing Then
'Exit Sub
'End If
'If Part.GetType() = 3 Then
'Set Draw = Part
'Set Sheet = Draw.GetCurrentSheet
'Set View = Draw.GetFirstView
'Set View = View.GetNextView
'MsgBox "Il documeto attivo e' un disegno"
'tipo_documento = Part.GetTitle()
'Do While Not View Is Nothing
'ModelName = View.ReferencedConfiguration()
'ModelName = View.Name()
'ModelName = View.GetReferencedModelName()
'MsgBox "Il file di rifemento è " & ModelName
'Set View = View.GetNextView
'Loop
'End If

Dim sDefaultName As String
Dim testo As String
Dim li As MSComctlLib.listitem
Dim ls As MSComctlLib.ListSubItem
Dim filtro As String
filtro = "Solidworks (*.sld*)|*.sld*|"

lw.ListItems.CLEAR
txtEvidenziaFile.Enabled = True

Dim swApp As SldWorks.SldWorks
'Dim swModel As SldWorks.ModelDoc2
Dim sDocName As String
Dim vDepend As Variant
Dim bret As Boolean
Dim i As Long
Set swApp = CreateObject("SldWorks.Application")
'Set swModel = swApp.ActiveDoc
'If Not swModel Is Nothing Then
' sDocName = swModel.GetPathName
'Else
If txtEvidenziaFile = "" Or IsNull(txtEvidenziaFile) Then
Dialogo Me.CommonDialog1, filtro
sDocName = filenamedialog
Else
sDocName = txtEvidenziaFile 'qui inserisci il percorso del file di assieme
End If
'se disegno senza dipendenze
'
vDepend = swApp.GetDocumentDependencies2(sDocName, Me.chkRefAll, Me.chkRefDip, False)
'Debug.Print sDocName
If IsEmpty(vDepend) Then
'Debug.Print " No dependencies."
Exit Sub
End If
For i = 0 To (UBound(vDepend) - 1)
testo = vDepend(i)
Next i
For i = 0 To (UBound(vDepend) - 1) / 2
'Debug.Print " " + vDepend(2 * i) + " --> " + vDepend(2 * i + 1)

depsplit = Split(vDepend(2 * i + 1), ":")

Set li = lw.ListItems.Add(, , "Z:" & depsplit(1)) 'aggiungo l'unità disco nel percorso
Set ls = li.ListSubItems.Add(, , vDepend(2 * i))
Next i

End Sub

Io uso questa routine per visualizzare i riferimenti dei files.
Per avere maggiori informazioni uso la libreria SwDocumentMgr.dll (quella usata da SolidworksExplorer) che ti permette di recuperare tutte le informazioni senza SolidworksExplorer e SolidWorks
 
Ultima modifica:

jenuary

Utente Standard
Professione: Progettista e Programmatore VB.Net
Software: Solidworks
Regione: Veneto
#4
Grazie Giancarlo,
mi sei SEMPRE di grande aiuto.
Ciao Jenuary
 

cubalibre00

Utente Senior
Professione: Progettazione meccanica
Software: NX3;NX6 e SW2009
Regione: Emilia Romagna
#5
SolidWorks Viewer non è più sviluppato che è stato sostituito da eDrawing, quindi non lo consiglierei neanche un pò.
Usare una macro per questi casi, mi sembra assurdo, perché deve essere compilata in un'interfaccia VB.
SolidWorks Explorer è gratuito e fa al caso tuo.

Alessandro
 

pose63

Utente Junior
Professione: Tecnico
Software: SolidWorks 2016 OfficePro sp5.0 Win7 x64 Quadro FX580 2xSamsung SM226BW
Regione: Veneto
#6
SolidWorks Viewer non è più sviluppato che è stato sostituito da eDrawing, quindi non lo consiglierei neanche un pò.
Usare una macro per questi casi, mi sembra assurdo, perché deve essere compilata in un'interfaccia VB.
SolidWorks Explorer è gratuito e fa al caso tuo.

Alessandro
Sarebbe ancora più bello se con eDrawing venissero memorizzate le proprietà o quantomeno il codice che appare in distinta di ogni componente, se non sbaglio ora c'è il nome del file e il nome della configurazione. E ancora più bello se con SolidWorks Explorer si potesse estrarre e salvare una distinta, visto che è tecnicamente possibile.