Importazione file in SolidWork

Furlo

Utente poco attivo
Professione: Studente universitario Ing.Aerospaziale
Software: SolidWorks
Regione: Veneto
#21
Grazie davvero per la pazienza e l'esauriente risposta, ora provo a smanettare in matlab per cercare se è possibile modificare la codifica. :wink:
 

Furlo

Utente poco attivo
Professione: Studente universitario Ing.Aerospaziale
Software: SolidWorks
Regione: Veneto
#22
Ho modificato il file matlab aggiungendo il carattere mancante (un semplice "\r" per chi dovesse in futuro avere il medesimo problema e capitasse qui a leggere) e ora funziona tutto perfettamente.
Ti ringrazio moltissimo Onda per l'aiuto datomi.
 

Onda

Moderatore
Staff Forum
Professione: Ingegnere Meccanico settore Navale
Software: SolidWorks 2015, Rhino v5, Autocad 2008, Patran 2014, Nastran 2014
Regione: Italia
#23
E' un piacere. comunque datti una occhiata a Notepad++ che è utilissimo.

ciao
Onda
 

Furlo

Utente poco attivo
Professione: Studente universitario Ing.Aerospaziale
Software: SolidWorks
Regione: Veneto
#24
Ciao, torno a disturbare per un problema che spero essere di facile soluzione.
Volevo rendere del tutto automatica la creazione della mia pala eolica quindi volevo inserire alla fine del codice una parte che eseguisse in automatico il loft attraverso le curve create.
Non avendo conoscenze in visual-basic ho provato la strada consigliata da Onda cioè di provare a registrare la macro e questo è il risultato:
Codice:
Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("Curva1", "REFERENCECURVES", -0.02323359137137, 0.03775347155462, -0.0991954136307, True, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Curva2", "REFERENCECURVES", -0.03043460642334, 0.03647471592106, 0.1153862564531, True, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Curva3", "REFERENCECURVES", -0.03975940136365, 0.02775955938299, 0.328980067293, True, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Curva4", "REFERENCECURVES", -0.03790190566718, 0.02741851668293, 0.5426116588759, True, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Curva5", "REFERENCECURVES", -0.03634063539187, 0.02937658495665, 0.7590427872709, True, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Curva6", "REFERENCECURVES", -0.03145504216354, 0.04102568127064, 0.8217471614732, True, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Curva7", "REFERENCECURVES", 0.01818298740508, 0.0587712077068, 0.8801247619941, True, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Curva8", "REFERENCECURVES", 0.008409694106348, 0.09480712101444, 0.9310866166167, True, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Curva9", "REFERENCECURVES", 0.00517330947045, 0.1456794356446, 0.9730442037058, True, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Curva10", "REFERENCECURVES", -0.004999411595776, 0.1624820827024, 0.9838479288466, True, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Curva11", "REFERENCECURVES", -0.002520055017214, 0.1819917853722, 0.9968353253767, True, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Curva12", "REFERENCECURVES", -0.007886847900238, 0.1979063394773, 1.007474443403, True, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Curva13", "REFERENCECURVES", -0.01295489593969, 0.2159733107233, 1.019614528264, True, 0, Nothing, 0)
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("Curva1", "REFERENCECURVES", 0, 0, 0, False, 1, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Curva2", "REFERENCECURVES", 0, 0, 0.2145, True, 1, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Curva3", "REFERENCECURVES", 0, 0, 0.429, True, 1, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Curva4", "REFERENCECURVES", 0, 0, 0.6435, True, 1, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Curva5", "REFERENCECURVES", 0.005148, 0, 0.858, True, 1, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Curva6", "REFERENCECURVES", 0.006435, 0.00800194, 0.921682, True, 1, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Curva7", "REFERENCECURVES", 0.007722, 0.0315102, 0.981404, True, 1, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Curva8", "REFERENCECURVES", 0.009009, 0.0690633, 1.03345, True, 1, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Curva9", "REFERENCECURVES", 0.010296, 0.118326, 1.07459, True, 1, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Curva10", "REFERENCECURVES", 0.012012, 0.136376, 1.08618, True, 1, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Curva11", "REFERENCECURVES", 0.01287, 0.154425, 1.09777, True, 1, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Curva12", "REFERENCECURVES", 0.014586, 0.172475, 1.10936, True, 1, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Curva13", "REFERENCECURVES", 0.015444, 0.190524, 1.12095, True, 1, Nothing, 0)
Part.InsertLoftRefSurface2 False, True, False, 1, 6, 6
End Sub
mi ha spiazzato molto la variabilità numerica negli argomenti delle funzioni e non riesco a ricavarne una funzione generale con cui effettuare per esempio un ciclo for. Ho cercato attraverso google possibili soluzioni pre-fabbricate, ma i risultati in mezzora abbondante non sono ancora arrivati. Se qualcuno ha idea di quale sia il codice per eseguire un loft tra N curve con nome crescente (Curva1,Curva2,...,CurvaN) e potesse suggerirmelo mi semplificherebbe notevolmete il lavoro di implementazione dei modelli (ahimè sono solo all'inizio mancandomi ancora mesi di elaborazione aerodinamica)
 

Onda

Moderatore
Staff Forum
Professione: Ingegnere Meccanico settore Navale
Software: SolidWorks 2015, Rhino v5, Autocad 2008, Patran 2014, Nastran 2014
Regione: Italia
#25
mi mandi le curve (o i punti) se vuoi anche in MP e ci do un'occhiata. ciao

Onda
 

Furlo

Utente poco attivo
Professione: Studente universitario Ing.Aerospaziale
Software: SolidWorks
Regione: Veneto
#26
Grazie Onda del supporto, hai un messaggio privato :smile:
 
Professione: Studente
Software: SolidWorks 2009
Regione: Piemonte
#27
Ciao a tutti.
Anch'io per la mia tesi ho bisogno di importare alcuni punti per creare delle curve.
In pratica devo creare una simulazione di movimento su SolidWorks di un veicolo molto semplice.
Il mio relatore ha creato un programma per descrivere il movimento del mezzo su matlab in 3D, e la soluzione che ho individuato è vincolare cinematicamente l'assemblato, e poi creare tante curve quante sono necessarie per i vincoli, e nell'animazione costringere ogni punto/vincolo a muoversi seguendo una determinata curva.
Mi sembrava la soluzione più semplice, se avete altre idee ditemelo!
Il problema è che il prof mi da le coordinate di questi 8 punti (tanti ne bastano), insieme all'informazione del tempo, in una matrice di matlab.
Dovrò quindi essere io a creare una macro che importi i punti come li vuole messi solidworks...il problema è che non ho minimamente idea di come si crei una macro del genere!che linguaggio si usa?
soprattutto, in che formato devo chiedere i dati/matrice in uscita da matlab al mio prof?
grazie in anticipo a tutti per l'eventuale aiuto!
purtroppo nei precedenti post ho visto che si usavano file .pts o .txt...
per matlab come si può esportare una matrice, e qual'è il formato migliore per configurarlo con solidworks?
secondo voi poi nell'animazione come posso correlare l'informazione del tempo al percorso dei vari punti tracciati (cioè, come si può dire "tutti i vincoli, al tempo 1, vanno al punto 1"?)?
grazie mille!
 

Onda

Moderatore
Staff Forum
Professione: Ingegnere Meccanico settore Navale
Software: SolidWorks 2015, Rhino v5, Autocad 2008, Patran 2014, Nastran 2014
Regione: Italia
#28
Se sono otto punti basta che ti fai dare una stampata e li inserisci a mano, senza dover fare una macro!!
altrimenti fai un foglio di testo dove i punti sono messi nel seguente schema:

x1,y1,z1
x2,y2,z2
....
....
....

e poi lo apri con la funzione Curve attraverso punti x,y,z e SW ti crea direttamente la curva.
Per la tua domanda seguente riguardo il cinematismo, non ti saprei dare una risposta. Dovrei vedere il cinematismo.
però penso che se fai una scanalatura in una parte utilizzando come profilo guida la tua curva sei a posto.
Poi, nella simulazione, mi sembra che tu possa inserire una tabella tempo/posizione per gestire il movimento.
 
Professione: Studente
Software: SolidWorks 2009
Regione: Piemonte
#29
ciao, allora per il cinematismo proverò quello!
mi devo essere spiegato male...i punti di riferimento sono 8 SUL MODELLO, però ho altrettante curve/traiettorie da tracciare, e le coordinate sono racchiuse in un'unica matrice matlab (24 colonne per x,y,z di ogni traiettoria di ogni punto, più una per il tempo).
C'è la possibilità di esportare da matlab a excel direttamente in modo semplice una matrice?
oppure in che formato mi conviene esportare da matlab?
grazie!
 

Onda

Moderatore
Staff Forum
Professione: Ingegnere Meccanico settore Navale
Software: SolidWorks 2015, Rhino v5, Autocad 2008, Patran 2014, Nastran 2014
Regione: Italia
#30
Premesso che non uso matlab da moltissimo, hai la possibilità di esportare una matrice in foglio di testo e poi leggerla con excel.
oppure la elabori con un editor di testo e fai tanti file quante curve devi leggere.
Non ti conviene usare una macro a meno che questo lavoro non lo devi ripetere tante volte.
Devi quindi creare 8 files, uno per ogni traiettoria e leggergli da Solidworks con il comando che ti ho segnato prima.
fai 8 curve e da quelle, proiettandole su uno schizzo, crei la geometria per la tua parte.
 

Albertazzi88

Utente Junior
Professione: Studente
Software: SolidWorks 2009
Regione: Piemonte
#31
ok, grazie per la dritta su excel, col comando xlswrite sono riuscito a prendere
i dati e a metterli in matrice su excel, e poi da lì li ho formattati correttamente per metterli su un file .txt che ho importato su solidworks.
Pra devo creare il terreno su cui si muoverà, ho la curva, ma non posso fare l'estrusione di una curva, ho provato a fare uno sweep con 3 curve uguali solo traslate m mi da errore...
come si fa, su sw 2010, a convertire una curva in schizzo su cui poter lavorare?
 

sampom

Moderatore SWX, Navale
Staff Forum
Professione: Progettazione/Costruzione macchine e impianti
Software: SolidWorks 2015 SP5/2016 SP2, AutoCAD (poco)
Regione: Piemonte (CN)
#33
come si fa, su sw 2010, a convertire una curva in schizzo su cui poter lavorare?
Apri uno schizzo 3D e Converti Entità di quella curva.
Ma se è un percorso su un terreno probabilmente sarà su un piano e puoi farlo tranquillamente anche con uno schizzo 2D.

Saluti
Marco