Macro per convertire .stp in dwg

Solid User

Utente Junior
Professione: Disegnatore
Software: Solid Edge 2020
Regione: Veneto
grazie @MassiVonWeizen ! La funzione del comando l'avevo cercata in rete e sull'help on line di Autocad, io mi riferivo a cosa servisse nel mio caso specifico, cioè nell'importazione di un file 3D .stp che non ha blocchi o altre entità Autocad (mi ero espresso male e non avevo specificato bene la domanda, chiedo venia).
Ok per la copia n volte della sequenza di comandi. Ma come faccio a far "Inizia disegno" in automatico?
Adesso per lanciare lo script devo aprire "a mano" un nuovo disegno e poi lanciare la macro. vedi immagini seguenti per i vari passi

passo 1.JPG passo 2.JPG

Dalla pagina inziale, in Gestisci, se non ho iniziato un nuovo disegno non ho il tasto Esegui script abilitato.

ciao
 

MassiVonWeizen

Utente Senior
Professione: disegnatore
Software: SolidEdge
Regione: Friuli Venezia Giulia
Dopo aver importato il file manualmente hai controllato che non ci sia nulla da eliminare perché dipende anche dal template usato per l'importazione.
Ma come faccio a far "Inizia disegno" in automatico?
prova anteponendo ad import il comando nuovo file; in pratica crei un nuovo file e lo usi per importare lo step
 

Solid User

Utente Junior
Professione: Disegnatore
Software: Solid Edge 2020
Regione: Veneto
😁 FUNZIONA!!!
Grazie @MassiVonWeizen !!!

Fin qui ho già portato a casa un gran risultato. Dato che l'appetito vien mangiando ora sto provando ad inserire n°2 diversi Layer:
  • uno in cui tracciare una retta che rappresenti l'asse del mio oggetto
  • l'altro dove inserire un testo (forse un blocco?) con il codice del pezzo importato
nei prossimi giorni ti aggiorno.

grazie ancora, ciao!
 

MassiVonWeizen

Utente Senior
Professione: disegnatore
Software: SolidEdge
Regione: Friuli Venezia Giulia
uno in cui tracciare una retta che rappresenti l'asse del mio oggetto
questo è banale
linea
punto di partenza
punto di arrivo
l'altro dove inserire un testo (forse un blocco?) con il codice del pezzo importato
se è solo una stringa inserire un blocco con attributo è complicarsi la vita inutilmente, quindi:
testo
"varie istruzioni richieste dalle opzioni di comando"
stringa che puoi recuperare in automatico con excel
 

Solid User

Utente Junior
Professione: Disegnatore
Software: Solid Edge 2020
Regione: Veneto
ciao @MassiVonWeizen , torno a chiedere aiuto.
Son riuscito a far disegnare la retta e mettere la scritta, però me le mette sempre sul Layer 0.
Io vorrei avere il modello 3D sul layer 0 (come effettivamente è), l'asse sul layer Axis e la scritta sul layer Code.
Facendolo a mano vedo che Autocad usa il comando _CLAYER, ma poi nello script questo comando non viene riconosciuto.

Sai suggerirmi come selezionare il Layer su cui lavorare?
Sto usando questa serie d comandi

Crea nuovo disegnoNUOVO
gestisce i Layer e le loro proprietà_-LAYER
crea nuovo LayerN
nome del LayerAxis
gestisce i Layer e le loro proprietà_-LAYER
crea nuovo LayerN
nome del LayerCode
gestisce i Layer e le loro proprietà_CLAYER
nome del layer su cui lavorareAxis
disegna lineaLINEA
punto inziale della linea-500,0,0
punto finale della linea500,0,0
gestisce i Layer e le loro proprietà_CLAYER
nome del layer su cui lavorareCode
disegna testoTESTO
punto inziale del testo-500,0,0
altezza del testo30
angolo di rotazione del testo0
testocodice elemento

grazie, ciao
 

MassiVonWeizen

Utente Senior
Professione: disegnatore
Software: SolidEdge
Regione: Friuli Venezia Giulia
Hai invece di usare clayer usa semplicemente layer e poi metti l'opzione corrente.
Quindi crei il layer, lo rendi corrente e fai la linea e poi crei l'altro layer, lo rendi corrente e fai il testo.
 

Solid User

Utente Junior
Professione: Disegnatore
Software: Solid Edge 2020
Regione: Veneto
Ciao @MassiVonWeizen . non riesco a trovare il problema

Crea nuovo disegnoNUOVO
gestisce i Layer e le loro proprietà_-LAYER
crea nuovo LayerN
nome del LayerAxis
gestisce i Layer e le loro proprietà_-LAYER
rendi coRrente il layerR
layer da rendere coRrenteAxis
crea lineaLINEA
punto inziale-500,0,0
punto finale500,0,0

con questi comandi mi esce il seguente errore

img.JPG

...
 

Solid User

Utente Junior
Professione: Disegnatore
Software: Solid Edge 2020
Regione: Veneto
Ciao @MassiVonWeizen . non riesco a trovare il problema

Crea nuovo disegnoNUOVO
gestisce i Layer e le loro proprietà_-LAYER
crea nuovo LayerN
nome del LayerAxis
gestisce i Layer e le loro proprietà_-LAYER
rendi coRrente il layerR
layer da rendere coRrenteAxis
crea lineaLINEA
punto inziale-500,0,0
punto finale500,0,0

con questi comandi mi esce il seguente errore

Visualizza allegato 64251

...

HO RISOLTO, ora sembra funzionare tutto.
sbagliavo con la digitazione di "invio".

grazie ancora, ciao!
 

Solid User

Utente Junior
Professione: Disegnatore
Software: Solid Edge 2020
Regione: Veneto
...rieccomi...
altro quesito.
Lo script funziona MA solo sul primo file, non reitera l'operazione sui file successivi.
Prima della chiusura mi chiede quanto segue:

richiesta.JPG

Affinché mi salvi il file creato devo dirgli N.
Inoltre mi crea anche un file con estensione .bak. Qualcuno sa come mai e come non farglielo creare?
Allego un'immagine con la sequenza dei comandi.
Le coordinate del punto iniziale del testo, e del punto iniziale e finale della linea, le estrapolo dal nome del codice tramite una formula.

sequenza comandi.JPG

ciao
 

MassiVonWeizen

Utente Senior
Professione: disegnatore
Software: SolidEdge
Regione: Friuli Venezia Giulia
Quando fai crea file script dovrebbe scriverti il codice prr entrambi i file Il file bak è un file che viene creato al momento del salvataggio, ci dovrebbe essere un opzione per inibire questa creazione.
La richiesta finale c'è perché tu non hai salvato il file e quindi giustamente lui ti chiede se quando lo chiudi vuoi anche salvarlo oppure no; anteponi un save e dovresti essere a posto

Devi sempre tenere a mente che autocad considera anche un semplice zoom una modifica e ti chiede la conferma di salvataggio
 
Ultima modifica:

Solid User

Utente Junior
Professione: Disegnatore
Software: Solid Edge 2020
Regione: Veneto
Per il momento mi fermo qui.
Alla fine ho dovuto riarrangiare a mano il file Excel secondo le mei specifiche altrimenti mi entrava in dei loop.
gli input allo script sono

Crea nuovo disegnonuovo
attiva comando Imortazione_import
File da Importare (lista Excel)"percorso file"
imposta lo Zoom a_zoom
estensioni_e
imposta la vista corrente a_vscurrent
ombreggiata_shaded
salva con nome_qsave
nome del salvataggio (con Estrazione da percorso file)nome del file che voglio salvare
gestisci i Layer e le relative proprietà_-LAYER
NuovoN
Nome del nuovo LayerAxis
gestisci i Layer e le relative proprietà_-LAYER
NuovoN
Nome del nuovo LayerCode
gestisci i Layer e le relative proprietà_-LAYER
imposta il Layer correteR
nome del Lyaer da rendere correnteCode
imposta funzione testoTESTO
punto iniziale del testo-500,0,0
altezza del testo30
anolo di inclinazione dle testo0
Testo da far comparire=nome del file
gestisci i Layer e le relative proprietà_-LAYER
imposta il Layer correteR
nome del Lyaer da rendere correnteAxis
imposta unziona LineaLINEA
punto inziale della linea-500,0,0
punto finale della linea500,0,0
salvataggio_qsave
chiudi il file_Close

grazie a tutti, ma soprattutto a @MassiVonWeizen per l'aiuto e la pazienza!
 

MassiVonWeizen

Utente Senior
Professione: disegnatore
Software: SolidEdge
Regione: Friuli Venezia Giulia
Quello che devi fare per far andare lo script su più file e solo copiare tutta la lista per quanti file devi processare.
Quindi se hai un codice di 15 righe le copia dalla 16° in poi.
Questo procedimento lo devi fare perché hai istruzioni che si modificano (il nome del file) quindi non puoi vincolarti alla lista dei file che carichi nella colonna "nome file".
Quello che ti consiglio di fare è quindi:
compilare solo la prima riga della colonna "nome file" (puoi scrivere anche un testo a caso perché solo alla macro di excel per funzionare)
inserire tutti i file da processare su una colonna di riferimento dalla E in poi (tutti quei codici di esempio puoi ovviamente cancellarli)
scrivere il tuo codice e poi copiarlo.

Siccome quando copi tante righe i riferimenti si spostano di conseguenza per non dover scrivere a mano o modificare la formula per ogni nome file puoi sfruttare la modalità elenco per velocizzare la procedura; a memoria c'è un sistema per fare in modo che i riferimenti si spostino differentemente da quanto si sposta la cella della formula, ma le mie capacità con excel sono limitate); di quest'ultimo passaggi ti allego un esempio

Comunque facendo le prove sull'excel mi sono accorto che hai eliminato (giustamente) il comando FILE della seconda riga con import; giusto per tua conoscenza il comando FILE è quello che permette alla macro di creare lo script di più file inserendo automaticamente il nome preso dall'elenco della colonna "nome file"
 

Allegati

  • esempio script.xls
    99.5 KB · Views : 3

Solid User

Utente Junior
Professione: Disegnatore
Software: Solid Edge 2020
Regione: Veneto
Quello che devi fare per far andare lo script su più file e solo copiare tutta la lista per quanti file devi processare.
Quindi se hai un codice di 15 righe le copia dalla 16° in poi.
Questo procedimento lo devi fare perché hai istruzioni che si modificano (il nome del file) quindi non puoi vincolarti alla lista dei file che carichi nella colonna "nome file".
Quello che ti consiglio di fare è quindi:
compilare solo la prima riga della colonna "nome file" (puoi scrivere anche un testo a caso perché solo alla macro di excel per funzionare)
inserire tutti i file da processare su una colonna di riferimento dalla E in poi (tutti quei codici di esempio puoi ovviamente cancellarli)
scrivere il tuo codice e poi copiarlo.
È proprio quello che ho fatto. Felice di aver conferma da parte tua del procedimento!

Il comando FILE non l’ho sostituito con Import ma con “posizione file“ altrimenti mi entrava in dei loop strani e non arrivavo al risultato voluto.
posizione file è esattamente il percorso dove si trova il file da importare, uguale a quello che si trova nella prima colonna ma messo tra virgolette.

Ho lasciato inalterata la prima colonna, trovo molto comoda la macro di selezione dei file e Come detto sopra mi serve anche per trovare la posizione dei file da importare.
In Excel con il comando stringa.estrai, dal percorso del file -quindi dalla prima colonna- lavorando sul codice (che è un codice parlante) riesco ad estrapolare tutte le informazioni di compilazione degli attributi di linea e di testo.
Il foglio Excel non è ancora automatizzato al meglio, perché rispetto alla lunghezza del nome del percorso del file devo aggiustare la funzione stringa.estrai a mano ma è già un ottimo risultato.

ciao!
 

MassiVonWeizen

Utente Senior
Professione: disegnatore
Software: SolidEdge
Regione: Friuli Venezia Giulia
Il comando FILE non l’ho sostituito con Import ma con “posizione file“ altrimenti mi entrava in dei loop strani e non arrivavo al risultato voluto.
non mi sono spiegato, il comando FILE permette alla macro di excel di creare uno script ripetendo il listato per ogni riga presente nella prima colonna.
se ad esempio nella prima colonna hai 3 righe file A, B, C, e il tuo listato è:
apri
FILE
salva
premendo su crea script ti verrà restituito il file (apribile con blocco note)
apri
A
salva
apri
B
salva
apri
C
salva
col tuo codice invece, se non sbaglio, devi fare uno script per file perché devi aggiornare ogni volta il riferimento per catturare il percorso corretto.
Hai visto il mio allegato?

per la funzione stringa.estrai se i codici hanno una logica puoi inserire una o più funzioni SE
 

Solid User

Utente Junior
Professione: Disegnatore
Software: Solid Edge 2020
Regione: Veneto
Siccome quando copi tante righe i riferimenti si spostano di conseguenza per non dover scrivere a mano o modificare la formula per ogni nome file puoi sfruttare la modalità elenco per velocizzare la procedura; a memoria c'è un sistema per fare in modo che i riferimenti si spostino differentemente da quanto si sposta la cella della formula, ma le mie capacità con excel sono limitate); di quest'ultimo passaggi ti allego un esempio
Ciao @MassiVonWeizen e buon anno a tutti!
Ho provato il tuo consiglio e funziona molto bene!
In effetti facendo così, una volta impostata la prima sequenza di comandi, basta fare copia incolla e non serve più manipolare i riferimenti nelle formule ma solo scegliere il percorso del file dal menù a tendina.

Davvero un ottimo consiglio, grazie!

ciao
 

Utenti online

Statistiche forum

Discussioni
55,432
Messaggi
473,929
Utenti registrati
95,503
Ultimo utente registrato
Camille

Top