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

Nota: Devi essere registrato per poter inserire un messaggio.
Per registrarti, clicca qui. La Registrazione è semplice e gratuita!

Larghezza finestra:
Nome Utente:
Password:
Modo:
Formato: GrassettoCorsivoSottolineatoBarrato Aggiungi Spoiler Allinea a  SinistraCentraAllinea a Destra Riga Orizzontale Inserisci linkInserisci EmailInserisci FlashInserisci Immagine Inserisci CodiceInserisci CitazioneInserisci Lista
   
Icona Messaggio:              
             
Messaggio:

  * Il codice HTML è OFF
* Il Codice Forum è ON

Faccine
Felice [:)] Davvero Felice [:D] Caldo [8D] Imbarazzato [:I]
Goloso [:P] Diavoletto [):] Occhiolino [;)] Clown [:o)]
Occhio Nero [B)] Palla Otto [8] Infelice [:(] Compiaciuto [8)]
Scioccato [:0] Arrabbiato [:(!] Morto [xx(] Assonnato [|)]
Bacio [:X] Approvazione [^] Disapprovazione [V] Domanda [?]
Seleziona altre faccine

    
 
   

V I S U A L I Z Z A    D I S C U S S I O N E
blubossa Inserito il - 26 novembre 2010 : 13:07:50
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
11   U L T I M E    R I S P O S T E    (in alto le più recenti)
blubossa Inserito il - 29 novembre 2010 : 12:25:52
è buona?? No! è Ottima...........

ciao
bb
Terminator Inserito il - 27 novembre 2010 : 17:14:01
Sarà la volta buona?

Scarica allegato:

ciaomondo.zip
1,52 KB
Terminator Inserito il - 27 novembre 2010 : 16:04:43
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
blubossa Inserito il - 27 novembre 2010 : 12:18:07
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
Terminator Inserito il - 26 novembre 2010 : 23:12:52
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
blubossa Inserito il - 26 novembre 2010 : 22:58:30
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
Terminator Inserito il - 26 novembre 2010 : 19:06:26
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
blubossa Inserito il - 26 novembre 2010 : 17:43:11
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...
blubossa Inserito il - 26 novembre 2010 : 17:30:03
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




Terminator Inserito il - 26 novembre 2010 : 16:11:59
Così va meglio:

Scarica allegato:

ciaomondo.zip
1,23 KB
Terminator Inserito il - 26 novembre 2010 : 15:10:29
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))
;;; )

)

TuttoCAD Forum © 2001-2010 CADLandia Torna all'inizio della Pagina
Pagina generata in 0,36 secondi.