Importazione file in SolidWork

Jonny123

Utente Junior
Professione: Studente universitario laureando magistrale Ing.Aeronautica
Software: SolidWorks
Regione: Lazio
#1
Buongiorno a tutti!
Ho un problemino, pur avendo effettuato la ricerca, e avendo navigato per trovare soluzioni, alla fine non ho ancora risolto nulla.
Dunque il problema è questo, per la mia tesi devo fare e imparare a fare disegni 3d, per farli devo poter sfruttare alcuni files generati da matlab con solidworks (ho il premium 2009).
Per esser precisi, ho una serie di files .pts in una cartella che devo importare in SW per poterne creare un modello....come si fa?

Grazie davvero per ogni aiuto
 

michele81

Utente Standard
Professione: Progettista - Disegnatore
Software: Solidworks 2011 - Pro-E WF4 - Autocad LT09 - Cosmos - FEMM
Regione: Piemonte
#2
Premetto che non so se SW possa interfacciarsi con Matlab...presumo di si ma non saprei dirti come!
In generale è molto semplice interfacciare SW con una tabella dati di excel, che comunque deve essere formattata in modo corretto e venire legata alla parte/assieme.
Il tuo file .pts che genere di output è?Cosa contiene?Coordinate di punti o altro?
 

Jonny123

Utente Junior
Professione: Studente universitario laureando magistrale Ing.Aeronautica
Software: SolidWorks
Regione: Lazio
#3
ciao michele,
prima di tutto grazie!
dunque,aprendo il file con estensione pts dentro ci sono una serie di coordinate x,y,z di un profilo alare.
Considera che ho qualcosa come 200 files pts,uno per ogni sezione, con all'interno di ognuno una serie di valori incolonnati relativi ognuno al proprio asse..
ora si tratta di trasformare quei punti in un disegno 3d...pur avendo fatto i tutorials non ho trovato nulla a riguardo
 

Onda

Moderatore
Staff Forum
Professione: Ingegnere Meccanico settore Navale
Software: SolidWorks 2015, Rhino v5, Autocad 2008, Patran 2014, Nastran 2014
Regione: Italia
#4
ciao

Devi rinominare i tuoi file .pts in .txt, poi da Solidworks devi creare delle curve attraverso punti XYZ (icona accanto geometrie di riferimento).
In questo modo crei delle curve nello spazio che poi puoi utilizzare per fare dei loft.
Il formato dei dei files dei punti deve essere di tipo:
X1,Y1,Z1
X2,Y2,Z2
X3,Y3,Z3
e così via

Onda
 

Jonny123

Utente Junior
Professione: Studente universitario laureando magistrale Ing.Aeronautica
Software: SolidWorks
Regione: Lazio
#5
ok grazie....credo di aver capito,anche se ho solo un dubbio
come dicevo ho 200 sezioni,quindi 200 files pts da rinominare...dentro ognuno dei quali ci sono 3 colonne con ognuna un numero X di elementi.
devo prendere ogni colonna per ognuno dei pts e incollarla in excel
oppure
creare una curva con ognuno dei pts?
grazie

cmq farò delle prove e farò sapere
 

Onda

Moderatore
Staff Forum
Professione: Ingegnere Meccanico settore Navale
Software: SolidWorks 2015, Rhino v5, Autocad 2008, Patran 2014, Nastran 2014
Regione: Italia
#6
Devi fare un file per ogni curva, importare singolarmente ogni file per creare 200! curve e poi giuntare in un loft. non hai bisogno di Excel!
Se devi cambiare il formato perchè non è adatto a Solid works ti consiglio di usare un editor di testo.
Per rinominare i file, premesso che questi siano in ordine di nome, li puoi rinominare globalmente con windows.
se li selezioni tutti e fai tasto destro >rinomina, chiami il primo ad esempio sezione(1).txt tutti gli altri vengono chiamati in automatico sezione(2).txt, sezione(3).txt e così via.
Ho il dubbio che 200 sezioni siano troppe e che il loft che viene fuori presenterà delle bozze. Ma questo lo devi vedere tu. Normalmente, meno sezioni ha un loft è più è morbido, perchè non è forzato a passare per dei punti
 

Jonny123

Utente Junior
Professione: Studente universitario laureando magistrale Ing.Aeronautica
Software: SolidWorks
Regione: Lazio
#7
onda grazie mille!
essendo un novellino di solidwork per capire al 100% ho bisogno di fare delle prove e vedere fisicamente cosa sto facendo.
cmq la spiegazione è molto chiara e non credo di aver problemi.
in ogni caso mi riservo di fare delle verifiche,vedo come va con le 200 e in caso scalerò per altre prove!
a presto allora e ancora grazie
 

bagaroz

Utente Junior
Professione: utensiliere??
Software: CAD affilatrici
Regione: piemonte
#8
Quelloche ti hanno detto è perfetto, ricordati solo di usare come marcatore di separazione "." e non ","
non mi ricordo cosa usi Matlab, nel caso sostituiscili
 

Jonny123

Utente Junior
Professione: Studente universitario laureando magistrale Ing.Aeronautica
Software: SolidWorks
Regione: Lazio
#9
dunque ragazzi
ho creato questi famosi file txt e smanettando col SW son riuscito a tira fuori un disegno bello e pulito del mio profilo.
Pee Onda: ho usato 4 sezioni,anche perchè 200 eran troppe :) domani proverò con un numero di sezioni crescenti fino ad una 50ina e vediamo se il disegno migliora.

grazie a tutti!
 

Onda

Moderatore
Staff Forum
Professione: Ingegnere Meccanico settore Navale
Software: SolidWorks 2015, Rhino v5, Autocad 2008, Patran 2014, Nastran 2014
Regione: Italia
#10
Per quanto riguarda i delimitatori, per rispondere al post di bagaroz, dipende da come si impostano le impostazioni internazionali di windows.
Le standard italiane utilizzano la "," per il decimale e quindi occorre utilizzare il "." per separare i campi. Io e credo anche la maggior parte delle persone che utilizzano spesso files di testo, output da FEM e cose di questo tipo, imposto come separatore decimale il punto "." al pari della convenzione inglese. Questo per poter importare in excel e in altri programmi output direttamente creati da Nastran. Ve lo consiglio caldamente, perchè vi interfacciate meglio con tutti quei programmi stranieri che utilizzano questa convenzione.

Onda
 

bagaroz

Utente Junior
Professione: utensiliere??
Software: CAD affilatrici
Regione: piemonte
#11
Per quanto riguarda i delimitatori, per rispondere al post di bagaroz, dipende da come si impostano le impostazioni internazionali di windows.
Le standard italiane utilizzano la "," per il decimale e quindi occorre utilizzare il "." per separare i campi. Io e credo anche la maggior parte delle persone che utilizzano spesso files di testo, output da FEM e cose di questo tipo, imposto come separatore decimale il punto "." al pari della convenzione inglese. Questo per poter importare in excel e in altri programmi output direttamente creati da Nastran. Ve lo consiglio caldamente, perchè vi interfacciate meglio con tutti quei programmi stranieri che utilizzano questa convenzione.

Onda
grazie, non ero a conoscenza che si potesse variare la convenzione e che a quel punto i software la utilizzassero. Io ho sempre esportato in blocco note e poi usato la funzione sostituisci.....
 

Furlo

Utente poco attivo
Professione: Studente universitario Ing.Aerospaziale
Software: SolidWorks
Regione: Veneto
#12
Salve a tutti, rispolvero questo thread per evitare di aprirne uno nuovo troppo simile.
Per la mia tesi mi trovo a dover fare un lavoro del tutto simile a quello di Jhonny123. Leggendo qui ho trovato come importare i miei dati matlab in SolidWorks e di questo ringrazio tutti coloro che hanno risposto, essendo però per ora abbastanza ingnorante riguardo a questo software mi chiedo se esista una scorciatoia per importare molte curve da altrettanti files in un sol colpo, senza dover eseguire l'operazione una per volta.
Ho provato a selezionare più files dallo strumento di importazione ma sembra non funzionare, infatti è possibile aprire un file per volta.
Se qualcuno ha una soluzione alternativa e fosse così gentile da spiegarla nel dettaglio gli sare molto grato :redface:
 

Onda

Moderatore
Staff Forum
Professione: Ingegnere Meccanico settore Navale
Software: SolidWorks 2015, Rhino v5, Autocad 2008, Patran 2014, Nastran 2014
Regione: Italia
#13
Puoi creare una macro di solidworks che importa i file.
se chiami i file ad esempio xxx1.txt; xxx2.txt xxx3.txt ecc e poi fai una macro con un ciclo da 1 a n che importa i file ti risparmi lavoro.
Purtroppo non ti posso aiutare nella creazione della macro perché non ne ho mai fatte in solid works però non dovrebbe essere molto diverse dal farle in excel. ti consiglio di registrare la macro e fare una importazione di un file, poi la vai ad editare e ci infili un ciclo di for -next.
 

Furlo

Utente poco attivo
Professione: Studente universitario Ing.Aerospaziale
Software: SolidWorks
Regione: Veneto
#14
Puoi creare una macro di solidworks che importa i file.
se chiami i file ad esempio xxx1.txt; xxx2.txt xxx3.txt ecc e poi fai una macro con un ciclo da 1 a n che importa i file ti risparmi lavoro.
Purtroppo non ti posso aiutare nella creazione della macro perché non ne ho mai fatte in solid works però non dovrebbe essere molto diverse dal farle in excel. ti consiglio di registrare la macro e fare una importazione di un file, poi la vai ad editare e ci infili un ciclo di for -next.
Grazie per la tempestiva risposta, proverò a capire come funzionano le macro in SolidWorks
 

Furlo

Utente poco attivo
Professione: Studente universitario Ing.Aerospaziale
Software: SolidWorks
Regione: Veneto
#15
Ho provato a registrare la macro, ma purtroppo all'interno del codice poi compaiono già le coordinate e non la procedura per la loro importazione (spero che si capisca cosa intendo) qualcuno saprebbe aiutarmi nella creazione di questa macro o magari indicandomi dove reperire le informazioni necessarie
 

Onda

Moderatore
Staff Forum
Professione: Ingegnere Meccanico settore Navale
Software: SolidWorks 2015, Rhino v5, Autocad 2008, Patran 2014, Nastran 2014
Regione: Italia
#16
Devi far leggere i file alla macro, assegnare ogni valore ad una variabile e poi far scrivere il punto, es:

' ******************************************************************************
' R:\TEMP\swx7900\Macro1.swb - macro recorded on 03/05/10 by user
' ******************************************************************************
Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim x As Single
Dim y As Single
Dim z As Single
Dim longstatus As Long, longwarnings As Long

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc
Dim myModelView As Object
Set myModelView = Part.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized
Part.InsertCurveFileBegin
Open "c:\txt.txt" For Input As #1 ' Apre il file per l'input.
Do While Not EOF(1) ' Ripete fino alla fine del file.
Input #1, x, y, z ' Legge i dati nelle variabili.
boolstatus = Part.InsertCurveFilePoint(x, y, z)
Loop
Close #1 ' Chiude il file.
boolstatus = Part.InsertCurveFileEnd()

End Sub
' Fine della macro!!!!


questa macro legge un file che si chiama txt.txt composto da valori espressi in metri separati da una virgola.
se fa un loop sopra il loop per il numero di file che ti serve sei a posto
 

Onda

Moderatore
Staff Forum
Professione: Ingegnere Meccanico settore Navale
Software: SolidWorks 2015, Rhino v5, Autocad 2008, Patran 2014, Nastran 2014
Regione: Italia
#17
' ************************************************** ****************************
' R:\TEMP\swx7900\Macro1.swb - macro recorded on 03/05/10 by user
' ************************************************** ****************************
Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim x As Double
Dim y As Double
Dim z As Double
Dim n As Integer
Dim N_file As Integer ' numero di file da importare
Dim Nome As String ' nome del file da combinare col numero
Dim NomeFile As String ' nome del file combinato
Dim longstatus As Long
Dim longwarnings As Long

Sub main()

Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
Dim myModelView As Object
Set myModelView = Part.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized
'
'
N_file = 5 ' Numero di file da importare da modificare per importarne + o -
Nome = "c:\punti" ' Nome iniziale completo di percorso del file da importare
' qui faccio gli sketch 3d
For n = 1 To N_file
NomeFile = Nome & " (" & n & ").txt" ' il nome del file finale appare come "c:\punti (1).txt"
'
Open NomeFile For Input As #1 ' Apre il file per l'input.
'
Part.SketchManager.Insert3DSketch True
Dim skPoint As Object
Do While Not EOF(1) ' Ripete fino alla fine del file.
Input #1, x, y, z ' Legge i dati nelle variabili.
Set skPoint = Part.SketchManager.CreatePoint(x, y, z)
Part.SketchAddConstraints "sgFIXED"
Loop
Part.ClearSelection2 True
Part.SketchManager.InsertSketch True
boolstatus = Part.Extension.SelectByID2("Point1@Origine", "EXTSKETCHPOINT", 0, 0, 0, False, 0, Nothing, 0)
Close #1 ' Chiude il file.
Next n
'
' Ora creo le curve
For n = 1 To N_file
NomeFile = Nome & " (" & n & ").txt" ' modificare questa riga per cambiare il nome dei file da importare
'
Part.InsertCurveFileBegin
Open NomeFile For Input As #1 ' Apre il file per l'input.
Do While Not EOF(1) ' Ripete fino alla fine del file.
Input #1, x, y, z ' Legge i dati nelle variabili.
boolstatus = Part.InsertCurveFilePoint(x, y, z)
Loop
Close #1 ' Chiude il file.
boolstatus = Part.InsertCurveFileEnd()
Next n
End Sub


L'ho un poco modificata per le tue esigenze. (in verità faceva comodo anche a me e ci ho perso un po di tempo).
Ora legge un certo numero di file a seconda del valore immesso alla variabile 'N_file'
i file si devono chiamare 'Punti (1).txt'; 'Punti (2).txt'
Li ho chiamati in questo modo perchè se selezioni tutti i tuoi file e li rinomini tutti assieme windows li rinomina in questa maniera.
La macro crea degli schizzi3D con all'interno i punti e poi crea le curve.
Le curve e gli schizzi 3D sono completamente slegati tra loro, alla fine dell'esecuzione se non ti serve di vedere dove sono i punti puoi buttare gli schizzi 3d.
In verità si potrebbero anche fare le curve attraverso gli schizzi 3d, però non sono così a fondo nelle macro di SolidWorks e faccio più fatica a farle.
Ciao

Onda
 

Furlo

Utente poco attivo
Professione: Studente universitario Ing.Aerospaziale
Software: SolidWorks
Regione: Veneto
#18
Ti ringrazio moltissimo Onda, davvero gentile. Ho un unico problema eseguendo il tuo script, modificando opportunamente i percorsi file inizia ad importare i punti, ma ad un certo punto da Errore di Run-Time '62' (input oltre la fine del file) ed eseguendo il debug mi evidenzia questa riga -> Input #1, x, y, z ' Legge i dati nelle variabili.
Credo che il problema sia nel formato in cui sono scritte le coordinate nel file di testo. Andando ad aprirlo con il text editor e non con matlab mi accorgo che le coordinate di ogni punto non hanno spaziatori tra di loro (aprendo il file in matlab ogni punto stava in una riga a se).
Volevo fare un copia incolla di uno dei files qui, ma come per magia se lo faccio i punti tornano ad essere ognuno sulla sua riga, quindi allego il file. Hai per caso idea se possa essere questo il problema? in caso potresti allegare un esempio di file di testo nel corretto formato così provo a modificare l'output del mio programma matlab?
Ti ringrazio ancora e spero di non risultare inopportuno o fastidioso
 

Allegati

Onda

Moderatore
Staff Forum
Professione: Ingegnere Meccanico settore Navale
Software: SolidWorks 2015, Rhino v5, Autocad 2008, Patran 2014, Nastran 2014
Regione: Italia
#19
Dipende dal fatto che il tuo file non presenta il fine riga nel modo corretto.
Normalmente per effettuare un fine riga si devono inserire due caratteri invisibili che sono il Carriage return (codice ascii 13) e il line feed (codice ascii 10).
Se apri il tuo documento con notepad, mancando il carriage return, il programma non comprende il fine riga e mette un quadratino per al posto del line feed, segnando tutti i valori di seguito.
Allo stesso modo, il mio codice cerca dopo ogni set di coordinate la coppia di caratteri ASCII 13,10; Trovando soltanto il carattere ASCII 10 non funziona e da l'errore.
Detto questo non ti so dire perchè da Matlab salvi le coordinate in questo modo, devi vedere che tipo di codifica utilizzi per il file di testo, oppure scrivere una routine in VB o in altro per inserire un codice ASCII 13 antecedente ad ogni codice ASCII 10.
Per visualizzare il problema ti consiglio di aprire il file con Notepad++ (programma gratuito scaricabile da Internet) e attivare l'opzione sotto visualizza : mostra fine riga.
Onda
 

Onda

Moderatore
Staff Forum
Professione: Ingegnere Meccanico settore Navale
Software: SolidWorks 2015, Rhino v5, Autocad 2008, Patran 2014, Nastran 2014
Regione: Italia
#20
Il tuo file è in formato unix e va convertito in formato windows.
Notepad++ può fare questo (se non riesci a salvare da Matlab nel formato corretto).

Sotto modifica> converti carattere fine linea>Formato windows

in questo modo ti trasforma tutti i file con i dovuti caratteri finali.

Ciao

Onda