TuttoCAD Forum

TuttoCAD Forum
[ Home | Registrati | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Album Fotografico | Download | | Cerca | FAQ ]
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 1 - TuttoCAD Software
 AutoLISP
 importare testo e creare blocco
 Nuova Discussione  Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
I seguenti utenti stanno leggendo questo Forum Qui c'è:
Autore Discussione Precedente Discussione Discussione Successiva  

blubossa
Utente Senior



102 Messaggi

Inserito il - 26 novembre 2010 : 13:07:50  Mostra Profilo Invia a blubossa un Messaggio Privato  Rispondi Quotando
ciao a tutti,
ho un file xls così strutturato:


nome_blocco A B C D
N1 CIAO MONDO 1 CIAO MONDO 5 CIAO MONDO 9 CIAO MONDO 13
N2 CIAO MONDO 2 CIAO MONDO 6 CIAO MONDO 10 CIAO MONDO 14
N3 CIAO MONDO 3 CIAO MONDO 7 CIAO MONDO 11 CIAO MONDO 15
N4 CIAO MONDO 4 CIAO MONDO 8 CIAO MONDO 12 CIAO MONDO 16

vedi file allegato.

vorrei, attraverso lisp, creare 1 File dwg per ogni riga e salvarlo nella cartella XXX.

per cui nel file N1 voglio scrivere, alla coordinata 0,0
ciao mondo 1 (sul layer A)
ciao mondo 5 (sul lauer B)
ciao mondo 9 (sul layer C)
ciao mondo 13 (sul layer D)

ovviamente A B C D altro non è che il contenuto della cella.

qualche idea?

grazie
BB


Scarica allegato:

testo_in.rar
6,11 KB

Terminator
Utente Master



725 Messaggi

Inserito il - 26 novembre 2010 : 15:10:29  Mostra Profilo Invia a Terminator un Messaggio Privato  Rispondi Quotando
Prova questa prima versione oserei dire grezza e misera che funziona solo su una riga (per ora):

(defun C:CIAOMONDO ()

 (if path
  (setq	fileexcel (getfiled "Seleziona il tuo file xls"
			    path
			    "xls"
			    4
		  )
  )
  (setq	fileexcel (getfiled "Seleziona il tuo file xls"
			    "c:\\Programmi\\"
			    "xls"
			    4
		  )
  )
 )

 (if (not fileexcel)
  (exit)
 )

 (setq path fileexcel)
 (setq foglioexcel
       (vlax-get-property
	(vlax-get-property
	 (vlax-invoke
	  (vlax-get-property
	   (vlax-get-or-create-object "Excel.Application")
	   'workbooks
	  )
	  'open
	  fileexcel
	 )
	 'worksheets
	)
	'item
	"Foglio1"
       )
 )

 (setq index 2)

 (if (not (tblsearch "LAYER" "A"))
  (command "LAYER" "_NEW" "A" "CO" 1 "A" "")
 )
 (if (not (tblsearch "LAYER" "B"))
  (command "LAYER" "_NEW" "B" "CO" 2 "B" "")
 )
 (if (not (tblsearch "LAYER" "C"))
  (command "LAYER" "_NEW" "C" "CO" 3 "C" "")
 )
 (if (not (tblsearch "LAYER" "D"))
  (command "LAYER" "_NEW" "D" "CO" 4 "D" "")
 )

;;; (repeat 5
 (setq cella	   (strcat "A" (itoa index))
       valorecella (vlax-get (vlax-get-property
			      foglioexcel
			      'Range
			      cella
			     )
			     'Value2
		   )
 )
 (if (findfile (strcat valorecella ".dwg"))
  (command "_SAVEAS" "2007" valorecella "_Y")
  (command "_SAVEAS" "2007" valorecella)
 )

 (setq cella	   (strcat "B" (itoa index))
       valorecella (vlax-get (vlax-get-property
			      foglioexcel
			      'Range
			      cella
			     )
			     'Value2
		   )
 )
 (command "LAYER" "_SET" "A" "")
 (command "_TEXT" "0,0" "" "" valorecella)

 (setq cella	   (strcat "C" (itoa index))
       valorecella (vlax-get (vlax-get-property
			      foglioexcel
			      'Range
			      cella
			     )
			     'Value2
		   )
 )
 (command "LAYER" "_SET" "B" "")
 (command "_TEXT" "0,0" "" "" valorecella)

 (setq cella	   (strcat "D" (itoa index))
       valorecella (vlax-get (vlax-get-property
			      foglioexcel
			      'Range
			      cella
			     )
			     'Value2
		   )
 )
 (command "LAYER" "_SET" "C" "")
 (command "_TEXT" "0,0" "" "" valorecella)

 (setq cella	   (strcat "E" (itoa index))
       valorecella (vlax-get (vlax-get-property
			      foglioexcel
			      'Range
			      cella
			     )
			     'Value2
		   )
 )
 (command "LAYER" "_SET" "D" "")
 (command "_TEXT" "0,0" "" "" valorecella)

;;;  (setq index (1+ index))
;;; )

)
Torna all'inizio della Pagina

Terminator
Utente Master



725 Messaggi

Inserito il - 26 novembre 2010 : 16:11:59  Mostra Profilo Invia a Terminator un Messaggio Privato  Rispondi Quotando
Così va meglio:

Scarica allegato:

ciaomondo.zip
1,23 KB
Torna all'inizio della Pagina

blubossa
Utente Senior



102 Messaggi

Inserito il - 26 novembre 2010 : 17:30:03  Mostra Profilo Invia a blubossa un Messaggio Privato  Rispondi Quotando
ciao Terminator,
penso proprio che il tuo sia davvero un acronimo che ti si addice

ho provato il test e c'è qualcosa che non va....

vorrei decidere io la directory di salvataggio.
partendo da un file aperto, PIPPO, lo stesso non deve essere chiuso.

l'ultima stringa non viene salvata N4

innanzi tutto il nome del layer devo andarlo a leggere direttamente nelle celle, questo rende il tutto più flessibile.

la tecnica di interazione con excel non la conosco molto e spero di non dire c.....

grazie
bb




Torna all'inizio della Pagina

blubossa
Utente Senior



102 Messaggi

Inserito il - 26 novembre 2010 : 17:43:11  Mostra Profilo Invia a blubossa un Messaggio Privato  Rispondi Quotando
inoltre ho notato che il programma gestisce solo fino alla riga N4,
in realtà mi sono espresso male, le righe possono essere moltissime, in realtà dovrebbe leggere sino a quando trova il nome del disegno...
Torna all'inizio della Pagina

Terminator
Utente Master



725 Messaggi

Inserito il - 26 novembre 2010 : 19:06:26  Mostra Profilo Invia a Terminator un Messaggio Privato  Rispondi Quotando
Adesso il programma si arresta solo quando trova una riga vuota
Vedi un po' di testarlo in questa fase.

Scarica allegato:

ciaomondo.zip
1,34 KB
Torna all'inizio della Pagina

blubossa
Utente Senior



102 Messaggi

Inserito il - 26 novembre 2010 : 22:58:30  Mostra Profilo Invia a blubossa un Messaggio Privato  Rispondi Quotando
il file inerenten all'ultima stringa è sempre vuoto.....
e subito dopo non riesco ad aprire il file .xls relativo.

per quanto riguarda il percorso e eof è tutto ok

grazie
bb

Messaggio inserito da Terminator

Adesso il programma si arresta solo quando trova una riga vuota
Vedi un po' di testarlo in questa fase.

Scarica allegato:

ciaomondo.zip
1,34 KB
Torna all'inizio della Pagina

Terminator
Utente Master



725 Messaggi

Inserito il - 26 novembre 2010 : 23:12:52  Mostra Profilo Invia a Terminator un Messaggio Privato  Rispondi Quotando
Ecco qua, ultimissima release (salvo altri bugs che tu probabilmente troverai...)

Righe virtualmente infinite, layers elastici, funziona anche se qualche cella è vuota. In questo caso il layer viene creato ma non viene scritto alcun testo.

Scarica allegato:

ciaomondo.zip
5,68 KB


PS: Dimenticavo: il percorso di salvataggio blocchi è lo stesso dove si trova il file excel

Modificato da - Terminator in data 26 novembre 2010 23:14:59
Torna all'inizio della Pagina

blubossa
Utente Senior



102 Messaggi

Inserito il - 27 novembre 2010 : 12:18:07  Mostra Profilo Invia a blubossa un Messaggio Privato  Rispondi Quotando
ciao Terminator,
avevo già fatto altri cambiamenti al vecchio prg............

quest'ultimo è davvero ottimo l'ho testato e ho riscontrato i seguenti problemi:

- la mancanza dei colori dei layer, che nell'altro erano ottimi.
- il processo del file .xls resta appeso, quindi non mi permette di riaprire il file .xls e sono costretto a far terminare il processo manualmente nella gestione processi.

spero di essermi spiegato in relazione a quest'ultimo punto.

grazie
bb
Torna all'inizio della Pagina

Terminator
Utente Master



725 Messaggi

Inserito il - 27 novembre 2010 : 16:04:43  Mostra Profilo Invia a Terminator un Messaggio Privato  Rispondi Quotando
Messaggio inserito da blubossa

ciao Terminator,
avevo già fatto altri cambiamenti al vecchio prg............

quest'ultimo è davvero ottimo l'ho testato e ho riscontrato i seguenti problemi:

- la mancanza dei colori dei layer, che nell'altro erano ottimi.
- il processo del file .xls resta appeso, quindi non mi permette di riaprire il file .xls e sono costretto a far terminare il processo manualmente nella gestione processi.


- L'assegnazione dei colori è stata una scelta finché potevo assegnare nomi precisi ai layers e sapere che si chiamavano A, B, C, D. Quindi al layer A il colore 1, al B il 2 e via dicendo. Nella nuova versione del programma parto dal presupposto di non sapere quanti layer ci saranno e il programma stesso dovrebbe contarli. Potrei al limite operare in questo modo:
quando incontra la casella B1 assegno in ogni caso il colore 1 anche se il layer si chiama pippo, alla C1 il colore 2, ecc...
- Per quanto riguarda il secondo problema io non ho riscontrato alcun tipo di problema, farò altri test
Torna all'inizio della Pagina

Terminator
Utente Master



725 Messaggi

Inserito il - 27 novembre 2010 : 17:14:01  Mostra Profilo Invia a Terminator un Messaggio Privato  Rispondi Quotando
Sarà la volta buona?

Scarica allegato:

ciaomondo.zip
1,52 KB
Torna all'inizio della Pagina

blubossa
Utente Senior



102 Messaggi

Inserito il - 29 novembre 2010 : 12:25:52  Mostra Profilo Invia a blubossa un Messaggio Privato  Rispondi Quotando
è buona?? No! è Ottima...........

ciao
bb
Torna all'inizio della Pagina
  Discussione Precedente Discussione Discussione Successiva  
 Nuova Discussione  Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
Vai a:
TuttoCAD Forum © 2001-2010 CADLandia Torna all'inizio della Pagina
Pagina generata in 0,64 secondi.