Discussione:
[LISP] dividere testi
(troppo vecchio per rispondere)
frank
2006-11-22 13:58:38 UTC
Permalink
Salve a tutti.

Autocad 2004 full.

Mi trovo di fronte a questa situazione:
Ho inserito alcune centinaia di righe di testo da un software di calcolo. Le
righe sono intere di ben oltre 256 caratteri e hanno questa sintassi:

A101 12 / / 12 -120 6 +150 -85
B103 210 / / 123 -4 465 2 /
B105 2 13 1 / 5 / 2 1

Vorrei sapere se esiste un automatismo che mi consenta di spezzare queste
lunghe stringhe di testo in tanti testi singoli considerando che gli spazi
dividono sempre 2 testi da spezzare e che la posizione finale di un testo
dovrebbe essere la stessa posizione nel foglio nella quale appare anche
quando è parte della stringa totale. In pratica, visivamente, i testi non
dovrebbero spostarsi.

Qualcuno conosce qualche lisp che possa aiutarmi?

Saluti e grazie
frank
arri
2006-11-22 17:48:30 UTC
Permalink
Post by frank
Salve a tutti.
Autocad 2004 full.
Ho inserito alcune centinaia di righe di testo da un software di calcolo. Le
A101 12 / / 12 -120 6 +150 -85
B103 210 / / 123 -4 465 2 /
B105 2 13 1 / 5 / 2 1
Vorrei sapere se esiste un automatismo che mi consenta di spezzare queste
lunghe stringhe di testo in tanti testi singoli considerando che gli spazi
dividono sempre 2 testi da spezzare e che la posizione finale di un testo
dovrebbe essere la stessa posizione nel foglio nella quale appare anche
quando è parte della stringa totale. In pratica, visivamente, i testi non
dovrebbero spostarsi.
Qualcuno conosce qualche lisp che possa aiutarmi?
Saluti e grazie
frank
secondo me chi è in grado di risolverti il problema è Marco_AA

oppure rpor66 che trovi qui

http://www.cad3d.it/forum1/showthread.php?t=18271
--
questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ***@newsland.it
Marco_AA
2006-11-22 21:15:22 UTC
Permalink
Post by arri
secondo me chi è in grado di risolverti il problema è Marco_AA
Grazie ancora arri per la fiducia, certo è che ci vuole un po'
di tempo per rispondere a queste domande.


Ciao.
--
----------------------------------------------------------
Marc'Antonio Alessi - http://xoomer.virgilio.it/alessi

Per AutoCAD:

- Travi 2D: disegno automatico travi e pilastri in C.A.,
relativi ferri e staffe, report peso ferri e C.A.
su Excel
- Calcolo automatico aree su planimetrie: report su Excel
per locale altezza, piano con descrizioni locali e piani
- Elaborazione dati from/to Excel
- Librerie manufatti in assonometria
- Autolayers: gestione automatica dei layers
- Elaborazioni e stampe multiple e automatiche
- Parametrico 2D, Viterie 2D/3D, Esplosi 2D/3D
- AutoGroups: gestione automatica gruppi di layers
- SetUp del disegno con gestione automatica DimStyles
- Conversione automatica files Inventor a DWG e viceversa
anche senza avere Inventor installato
- ...
----------------------------------------------------------
arri
2006-11-22 23:38:27 UTC
Permalink
Post by Marco_AA
Post by arri
secondo me chi è in grado di risolverti il problema è Marco_AA
Grazie ancora arri per la fiducia,
prego,
la meriti ampiamente ;)
Post by Marco_AA
certo è che ci vuole un po' di tempo per rispondere a queste domande.
certo, ma credo che hai una collezione di lisp che copre al 99,9 % le
esigenze più disparate

(P.S. quello per cancellare gli xdata lo uso quotidianamente, grazie)

ciao
--
questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ***@newsland.it
Marco_AA
2006-11-22 21:29:48 UTC
Permalink
Post by frank
Autocad 2004 full.
Ho inserito alcune centinaia di righe di testo da un software di calcolo. Le
A101 12 / / 12 -120 6 +150 -85
B103 210 / / 123 -4 465 2 /
B105 2 13 1 / 5 / 2 1
Vorrei sapere se esiste un automatismo che mi consenta di spezzare queste
lunghe stringhe di testo in tanti testi singoli considerando che gli spazi
dividono sempre 2 testi da spezzare e che la posizione finale di un testo
dovrebbe essere la stessa posizione nel foglio nella quale appare anche quando
è parte della stringa totale. In pratica, visivamente, i testi non dovrebbero
spostarsi.
Ciao Frank,

non ho capito bene la domanda, ti serve una cosa di questo tipo?

(ALE_Test
"A101 12 / / 12 -120 6 +150 -85"
)
==> ("A101" "12" "/" "/" "12" "-120" "6" "150" "-85") >>> [150 non +150]


(ALE_Test
"B103 210 / / 123 -4 465 2 /"
)
==> ("B103" "210" "/" "/" "123" "-4" "465" "2" "/")


(ALE_Test
"B105 2 13 1 / 5 / 2 1"
)
==> ("B105" "2" "13" "1" "/" "5" "/" "2" "1")

o così?

(ALE_Test2
"A101 12 / / 12 -120 6 +150 -85"
)
==> (
"A101" "" "" "" "" "" "12" "" "" "" "" "" "/" "" "" "" "" "" "/" ""
"" "" "" "12" "" "" "" "" "-120" "" "" "" "6" "" "" "" "+150" ""
"" "-85"
)


sarebbe utile sapere cosa devi fare con i testi singoli...

--
M.
frank
2006-11-23 08:11:53 UTC
Permalink
Marco_AA
Post by Marco_AA
non ho capito bene la domanda, ti serve una cosa di questo tipo?
Ciao Marco e grazie della disponibilità.

Cercherò di essere più chiaro.

Il software di calcolo che utilizzo esporta un file puro di excel,
formattato e finito di qualche centinaio di righe e una cinquantina di
colonne. A questo punto, sempre in excel, aggiungo ed elaboro i dati in modo
da ottenere una tabella finita e completa che voglio inserire in autocad.
Non è la soluzione definitiva ma al momento faccio in questo modo:

Seleziono da excel la tabella completa o parte di essa.
La Copio/Incollo in un editor di testo come Wordpad per eliminare dagli
appunti la formattazione
La Copio/Incollo nuovamente in un testo multilinea di Autocad in modo da
ottenere tutti i testi sequenziali.
Durante tutti i passaggi devo conservare tutti i segni dei valori.
Attribuisco al corpo del testo un carattere non proporzionale (tipo isocp)
in modo che i testi siano incolonnati correttamente
Esplodo il testo multilinea in testi di righe singole poichè riesco a
gestirle meglio per la fase successiva.

Queste stringhe hanno lunghezza anche elevata.
La successiva elaborazione è l'applicazione ad alcuni di questi numeri del
%%P davanti al valore o addirittura la revisione di alcuni valori.

Se avessi dei testi singoli potrei cliccare esattamente il testo che voglio
editare senza doverlo andare a cercare nella stringa di 250 caratteri o
senza il timore che un +4 diventando -251 non mi trasli in avanti tutto il
resto.

Spero di essere stato chiaro.

Ciao e grazie
frank
Marco_AA
2006-11-23 14:21:23 UTC
Permalink
"frank" Se avessi dei testi singoli potrei cliccare esattamente il testo che
voglio editare senza doverlo andare a cercare nella stringa di 250 caratteri o
senza il timore che un +4 diventando -251 non mi trasli in avanti tutto il
resto.
Al momento non ho niente di espressamente valido per il tuo utilizzo,
prova se questa funzione di può dare un aiuto:

; Marc'Antonio Alessi, Italy - http://xoomer.virgilio.it/alessi
;
; Function: ALE_String2List
;
; Version 1.00 - November 2001
;
; Description:
; convert a string into a list
;
; Arguments:
; InpStr = string [STR]
; CarDlm = delimiter [STR] 1 character
;
(defun ALE_String2List (InpStr CarDlm / SttPos EndPos TmpLst)
(setq
CarDlm (ascii CarDlm) SttPos 0
EndPos (vl-string-position CarDlm InpStr)
)
(while EndPos
(setq
TmpLst (cons (substr InpStr (1+ SttPos) (- EndPos SttPos)) TmpLst)
SttPos (1+ EndPos) EndPos (vl-string-position CarDlm InpStr SttPos)
)
)
(reverse (cons (substr InpStr (1+ SttPos)) TmpLst))
)

Comando: (ALE_String2List "A101 / 12 -120 6 +150 -85" " ")
("A101" "" "/" "" "" "12" "" "" "-120" "" "6" "" "" "+150" "" "" "-85")

%%

La cosa migliore sarebbe leggere direttamente ogni cella di Excel e
creare memorizzare testi da inserire poi in AutoCAD.

Oppure, meglio ancora, importare da Excel a AutoCAD i dati direttamente
in una "Tabella" (_Table) anche con copia/incolla.
L'unico inconveniente è che, mi pare, 2004 non abbia ancora le "Tabelle".

Sarebbe un buon motivo per un upgrade.

--
Marco
frank
2006-11-23 15:04:03 UTC
Permalink
Marco_AA
Post by Marco_AA
Al momento non ho niente di espressamente valido per il tuo utilizzo,
Grazie.

Lo proverò e ti farò sicuramente sapere.

Saluti
frank
frank
2006-11-29 09:16:20 UTC
Permalink
Marco_AA
Post by Marco_AA
Al momento non ho niente di espressamente valido per il tuo utilizzo,
Ciao Marco.

Ho provato il lisp. La funzione restituisce i testi separati partendo dalla
stringa completa. Andrebbe bene ma dovrei metterci un po' le mani per
applicarla al mio caso con centinaia di righe. Sto valutando l'alternativa
di acquistare qualcosa di preconfezionato che converte intere tabelle di
excel a tabelle di autocad, linee, formattazione e colori compresi. In modo
da prendere la questione direttamente alla radice.

Grazie per il tempo che mi hai dedicato.

A presto.
frank
Marco_AA
2006-11-29 14:46:49 UTC
Permalink
Post by frank
Ho provato il lisp. La funzione restituisce i testi separati partendo dalla
stringa completa. Andrebbe bene ma dovrei metterci un po' le mani per
applicarla al mio caso con centinaia di righe. Sto valutando l'alternativa di
acquistare qualcosa di preconfezionato che converte intere tabelle di excel a
tabelle di autocad, linee, formattazione e colori compresi. In modo da
prendere la questione direttamente alla radice.
Grazie per il tempo che mi hai dedicato.
Prego,

ho scritto in VBA, un paio di anni fa, qualcosa che fa quello che chiedi:

- da Excel selezioni le celle che vuoi esportare
- AutoCAD viene aperto se non lo è già
- la tabella viene importata in un punto richiesto

- le seguenti impostazioni:
Nomi dei Layers Descrizione Colore SpessoreLinea
Nomi degli Stili di Testo Descrizione
Crea Retini da Riempimenti di Celle? (Si o No)
Trasforma le Tabelle in Blocchi? (Si o No)
Fattore di Scala
Altezza Righe
Larghezza Colonne
Font da usare in AutoCAD

vengono configurate in apposito "sheet" di configurazione


Il programma non è stato poi perfezionato (ci sono alcuni piccoli problemi)
per mancanza di richieste.

Aggiungo: su tabelle molto grosse è un po' lento.


Ciao.

Marco
frank
2006-11-29 14:58:20 UTC
Permalink
Marco_AA
Post by Marco_AA
- da Excel selezioni le celle che vuoi esportare
- AutoCAD viene aperto se non lo è già
- la tabella viene importata in un punto richiesto
Nomi dei Layers Descrizione Colore SpessoreLinea
Nomi degli Stili di Testo Descrizione
Crea Retini da Riempimenti di Celle? (Si o No)
Trasforma le Tabelle in Blocchi? (Si o No)
Fattore di Scala
Altezza Righe
Larghezza Colonne
Font da usare in AutoCAD
vengono configurate in apposito "sheet" di configurazione
Ciao

Sembra proprio la descrizione della demo che ho scaricato:

http://www.cadtool.net/tut_symbology.htm

ciao
frank
Marco_AA
2006-11-29 17:38:46 UTC
Permalink
Post by frank
http://www.cadtool.net/tut_symbology.htm
Il mio è simile ma non così "professionale".

arri
2006-11-23 18:28:55 UTC
Permalink
Post by frank
Il software di calcolo che utilizzo esporta un file puro di excel,
formattato e finito di qualche centinaio di righe e una cinquantina di
colonne.
se in AutoCAD incolli speciale come Entità PRODUCT i testi ti rimangono
separati


(In AutoCAD 2004 incolla speciale selezionando Entità AutoCAD)
--
questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ***@newsland.it
Marco_AA
2006-11-23 22:02:02 UTC
Permalink
Post by arri
se in AutoCAD incolli speciale come Entità PRODUCT i testi ti rimangono
separati
(In AutoCAD 2004 incolla speciale selezionando Entità AutoCAD)
Infatti, io pensavo che questa possibilità partisse dalla 2005,
(in 2002 non c'è).


C'è un'altra "cosetta" che ricordo di aver notato:

- se copi/incolli da Excel precedente alla versione Xp ci sono
alcuni problemi riguardanti la formattazione dei testi
(se non ricordo male).

--
Marco
arri
2006-11-24 00:03:55 UTC
Permalink
Post by Marco_AA
Post by arri
se in AutoCAD incolli speciale come Entità PRODUCT i testi ti rimangono
separati
(In AutoCAD 2004 incolla speciale selezionando Entità AutoCAD)
Infatti, io pensavo che questa possibilità partisse dalla 2005,
(in 2002 non c'è).
- se copi/incolli da Excel precedente alla versione Xp ci sono
alcuni problemi riguardanti la formattazione dei testi
(se non ricordo male).
--
Marco
ricordi bene

Microsoft Excel spreadsheet is truncated when pasted into drawing

Issue

You paste a Microsoft Excel spreadsheet into a drawing, but the
spreadsheet is truncated.

Solution

When an Excel spreadsheet is pasted, the Picture (metafile) format is
used, which can result in the spreadsheet being truncated. This problem
can occur when the column width and row height in Excel are set to the
default (default width is 8.43, and default height is 12.75), and the
pasted object exceeds 18 columns by 70 rows.



Use one or both of these methods to resolve the problem:

Method #1

In Excel, reduce the column width and row height. You can paste more of
the spreadsheet if you reduce the column width and row height.

Method #2

Paste the spreadsheet in separate parts. By pasting the spreadsheet in
separate parts you can break it down into several smaller OLE objects.
--
questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ***@newsland.it
Loading...