Macro interessanti per SolidWorks

Sp4rk0

Utente Standard
Professione: Progettista Meccanico/Disegnatore Tecnico
Software: Solidworks, Solid Edge, Inventor, Autocad, Allplan
Regione: Veneto

GDavideVR

Utente poco attivo
Professione: PhD Student
Software: SolidWorks 2018
Regione: veneto
Buonasera a tutti gli utenti del forum!

Mi trovo a scrivere per chiedere il vostro aiuto in ambito macro di SW, leggendo i consigli che sono stati dati ad altri utenti prima di me, credo di essere nel posto giusto!

Per prima cosa vorrei chiedere se siete a conoscenza dell'esistenza di una macro in grado di esportare le coordinate dei punti di uno schizzo in un file Excel in modo ordinato. Mi spiego meglio, sul web ho trovato delle macro in grado di esportare le coordinate ma non danno la possibilità di ordinare i punti, per esempio di un contorno, in senso orario o antiorario. Tale necessità deriva dal fatto che devo poi inserire questi punti in Matlab e plottare il contorno. Qualcuno ha info a riguardo?

In secondo luogo, conoscete qualche guida online di buona qualità che consenta di imparare almeno i rudimenti di visual basic per la programmazione delle macro per solidworks?

Ringrazio in anticipo chi mi saprà aiutare.
Ciao!
 

jenuary

Utente Standard
Professione: Progettista e Programmatore VB.Net
Software: Solidworks
Regione: Veneto
Ciao GDavideVR,
per i manuali potrei consigliarti questi link, sono tutti libri che ho anche io, ma li ho presi dopo aver imparato, ho fatto la cosa al rovescio.
Per uno che vuole imparare è un buon inizio, però c'è sempre da dire che richiedono un'infarinatura di programmazione alle spalle.
Se fossi in tè li acquisterei uno alla volta,una volta assimilato il primo passerei al livello successivo, l'ordine che ti scrivo sotto è per grado di difficoltà.

https://www.amazon.it/Automating-SOLIDWORKS-2019-Using-Macros/dp/1630572136
https://www.amazon.com/SolidWorks-API-1-Programming-Automation-ebook/dp/B00HSSJKOY
https://www.amazon.it/SolidWorks-API-Advanced-Product-Development-ebook/dp/B00HSSRU3C

Per la questione dei punti la questione è assai vasta, credo avrò delle difficoltà nello spiegarmi per via che i dati ricavati sono diversi in base alle entità che andiamo ad assorbire.
- Prima di tutto potremmo avere uno schizzo formato da entità punto e da profili, tanti o pochi o uno soltanto. In questo caso dovremmo ciclare tutte le entità, ricavarne le coordinate dei punti iniziali e finali, ricavare le coordinate delle entità punto, eliminare i doppioni (inizio di una entità corrisponde alla fine di un'altra, nel caso di una catena).
Da questa nuvola di punti bisognerebbe studiare un algoritmo che li ordina in senso orario o antiorario, verificando i punti più esterni e man mano spostarsi
- Le casistiche potrebbero essere tante, bisognerebbe definire degli standard di partenza.

Nel web non ho guardato, bisognerebbe cercare.
 

GDavideVR

Utente poco attivo
Professione: PhD Student
Software: SolidWorks 2018
Regione: veneto
Ciao GDavideVR,
per i manuali potrei consigliarti questi link, sono tutti libri che ho anche io, ma li ho presi dopo aver imparato, ho fatto la cosa al rovescio.
Per uno che vuole imparare è un buon inizio, però c'è sempre da dire che richiedono un'infarinatura di programmazione alle spalle.
Se fossi in tè li acquisterei uno alla volta,una volta assimilato il primo passerei al livello successivo, l'ordine che ti scrivo sotto è per grado di difficoltà.

https://www.amazon.it/Automating-SOLIDWORKS-2019-Using-Macros/dp/1630572136
https://www.amazon.com/SolidWorks-API-1-Programming-Automation-ebook/dp/B00HSSJKOY
https://www.amazon.it/SolidWorks-API-Advanced-Product-Development-ebook/dp/B00HSSRU3C

Per la questione dei punti la questione è assai vasta, credo avrò delle difficoltà nello spiegarmi per via che i dati ricavati sono diversi in base alle entità che andiamo ad assorbire.
- Prima di tutto potremmo avere uno schizzo formato da entità punto e da profili, tanti o pochi o uno soltanto. In questo caso dovremmo ciclare tutte le entità, ricavarne le coordinate dei punti iniziali e finali, ricavare le coordinate delle entità punto, eliminare i doppioni (inizio di una entità corrisponde alla fine di un'altra, nel caso di una catena).
Da questa nuvola di punti bisognerebbe studiare un algoritmo che li ordina in senso orario o antiorario, verificando i punti più esterni e man mano spostarsi
- Le casistiche potrebbero essere tante, bisognerebbe definire degli standard di partenza.

Nel web non ho guardato, bisognerebbe cercare.
Grazie Jenuary per la rapida risposta.

Provo ad approfondire la “questione punti”, se non ti dispiace, perché dovrei cercare di uscirne nell’immediato.
I tipi di schizzo che andrei ad importare sarebbero sempre dei contorni discretizzati da circa un migliaio di punti, pertanto, la nuvola di punti che menzionavi non avrebbe punti interni, ma solo contorni. Inoltre, non genero doppioni durante la discretizzazione quindi anche quello sarebbe un problema superato.
La macro che importa i dati in Excel ce l’ho già, si tratterebbe solo di modificarla inserendo l'ordinamento dei punti.

Dato che sei stato così gentile da suggerirmi quei manuali (farò prima una capatina in biblioteca 😉) , sapresti indicarmi anche qualche sito o blog in cui provare a cercare?

Grazie Mille!
 

jenuary

Utente Standard
Professione: Progettista e Programmatore VB.Net
Software: Solidworks
Regione: Veneto
Parlavi di profili pertanto pensavo avessi profili di schizzo.
La nuvola di punti è nel piano immagino.
Nel web si dovrebbe trovare qualche algoritmo da integrare, va adattato ovviamente all'esigenza, per farlo non è ovviamente un copia incolla, bisogna lavorarci su e testare il risultato.
Come macro già pronte nel web per SolidWorks dando una guardata veloce non ho trovato nulla.
Prova a cercare, magari qualcosa trovi, magari così si può recuperare parte del codice.
 

Marco.M

Utente poco attivo
Professione: progettista
Software: Inventor 2020 - Solidworks 2020
Regione: veneto
Ciao
Ho modificato leggermente la macro perchè da una parte non salvava nelle directory corrette e dall’altra, se non esisteva
la sottocartella predefinita per i pdf, i files non venivano salvati.
Spero fosse questo l’errore che segnalavi. Testato con Win7 64bit e Solidworks 2016 sp.3

Ciao
Gabriele
Ciao utilizzando questa macro in Solidworks 2020 mi dà il seguente errore:

1583759329220.png

facendo il dedug mi viene evidenziata la seguente riga:

1583759370622.png

pdf e dwg funzionano ma non viene creato il file .stp

Qualcuno può aiutarmi?

grazie

Marco
 

jenuary

Utente Standard
Professione: Progettista e Programmatore VB.Net
Software: Solidworks
Regione: Veneto
Probabilmente swModel2 non è dichiatata.
Inserisci questa riga prima dell'apertura del file

Dim swModel2 as Sldworks.Modeldoc2

1583845483519.png
 

Marco.M

Utente poco attivo
Professione: progettista
Software: Inventor 2020 - Solidworks 2020
Regione: veneto

jenuary

Utente Standard
Professione: Progettista e Programmatore VB.Net
Software: Solidworks
Regione: Veneto
Anche inserendo la dichiarazione della variabile rimane tutto invariato, lo stesso errore, la stessa linea.

Per completezza di informazione di attacco anche lo screenshoot della parte iniziale della macro


Vedi l'allegato 56589

Vedi l'allegato 56590
Prova ad andare sulla tendina Strumenti-> Riferimenti
vedi se manca una spunta, potrebbe essere che fosse attiva una spunta di un riferimento che nella versione 2020 non c'è più.
Nel caso non dipendesse da quello, prova ad allegare la macro oppure mandamela in privato.

Ciao
 

CLY75

Utente Junior
Professione: Progettista
Software: SolidWorks, AutoCad
Regione: Torino
Salve a tutti,
esiste una macro che genera i DXF delle appiattite delle solo parti in lamiera e che simultaneamente compili una tabella in EXCEL con nome particolare , Materiale , Quantità e se questa lamiera ha la piegatura o no (basterebbe un flag)
 

Pitaro

Utente poco attivo
Professione: progettista/disegnatore
Software: Vari
Regione: Trentino
Salve a tutti, volevo portare il mio piccolissimo contributo a questa discussione che mi ha aiutato tanto anche se ho partecipato poco.

La macro funziona così:
- Salva la tavola in formato Solidworks (deve essere già stata salvata con nome una prima volta, in pratica il file .slddrw deve già esistere)
- crea una cartella "Per Carpenteria" all'interno della cartella che contiene il .slddrw
- salva all'interno della cartella "per carpenteria" la tavola nei tre formati .pdf .dwg .dxf
- se trova già un file con lo stesso nome lo sovrascrive direttamente senza fare domande
- chiude la tavola (si presume che l'esportazione in formati universali sia l'ultima cosa che si fa ad una tavola prima di chiuderla)

Spero che possa servire anche ad altri come è servita a me


Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long
Dim longwarnings As Long
Dim NomeCompleto As String
Dim NomeFile
Dim Percorso As String
Dim NuovaCartella As String


Sub main()

Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
NomeCompleto = Part.GetPathName

If NomeCompleto = "" Then

MsgBox "Prima salva il disegno, poi riprova", vbCritical
End

End If

longstatus = Part.Save

Percorso = Left(NomeCompleto, InStrRev(NomeCompleto, "\"))
NomeFile = Right(NomeCompleto, Len(NomeCompleto) - Len(Percorso))
NuovaCartella = "Per Carpenteria"

If Dir(Percorso & NuovaCartella, vbDirectory) = "" Then
MkDir (Percorso & NuovaCartella)
End If

NomeCompleto = Percorso & NuovaCartella & "\" & NomeFile
NomeCompleto = Strings.Left(NomeCompleto, Len(NomeCompleto) - 7)
longstatus = Part.SaveAs3(NomeCompleto & ".pdf", 0, 0)
longstatus = Part.SaveAs3(NomeCompleto & ".dwg", 0, 0)
longstatus = Part.SaveAs3(NomeCompleto & ".dxf", 0, 0)

MyTitle = Part.GetTitle
swApp.QuitDoc MyTitle

End Sub