Newsgroup: it.comp.software.cad
Titolo: aiuto per LISP (selezioni complesse ed esport in txt)

dunque....forse il lisp in cui voglio essere aiutato è un pò troppo
complesso per discuterlo sul ng, ma ci provo.
Ho poca esperienza nel lisp e questo non so proprio come iniziarlo, magari
se qualcuno di voi mi potesse scrivere qualche riga di codice come
input......
Ecco in cosa consiste il lisp:
- nel mio dwg ci sono numero x polilinee rettangolari (il fatto che siano
rettangolari dovrebbe agevolare le funzioni di selezione successivamente
richieste) di colore blu poste sul layer "layer1". Queste polilinee blu sono
poste in serie da sx a dx, ma non credo questo agevoli i lisp, comunque
potrebbero anche essere tutte della stessa dimensione ed alla stessa
distanza fra loro, questo non è un problema, diciamo che sono dei
"contenitori" che posso posizionare ovunque.
- all'interno di ognuna di queste polilinee blu ci sono numero z polilinee
gialle, numero y polilinee rosse, numero k polilinee verdi e una sola
stringa di testo, il tutto potrebbe anche essere posto sullo stesso layer
"layer1" , ma non credo questo agevoli il lisp
- il lisp deve selezionare la prima polinea blu ed esportare in un file di
testo: la stringa di testo in essa contenuta, la somma delle aree delle
polilinee gialle in essa contenuta, la somma delle aree della polilinee
rosse in essa contenuta e la somma delle aree delle polilinee verdi in essa
contenuta
- deve fare la stessa cosa con tutte le altre polinee blu , una per una.
qualcuno sa darmi qualche riga di codice di input per andare avanti?
--
Studio geometra MIRANO Dario
www.studiomirano.it
Progettazione - Direzione lavori - Catasto terreni e fabbricati -
Cartellonistica - Grafica 2D e 3D

Devi fare una cosa di questo tipo?
Piano    Alt.    Locale    Area
Piano 1° H = 275 BAGNO     5,12
Piano 1° H = 275 Scale     3,86
Piano 1° H = 275 STUDIO   16,14
Piano 1° H = 275 CUCININO  8,22
Piano 1° H = 275 PRANZO    8,83
Piano 1° H = 275 DISIMP.   5,38
Piano 1° H = 275 INGRESSO  6,80
Piano 1° H = 275 CAMERA   14,25
Piano 1° H = 275 CAMERA   16,48
  Area totale            107,65
Piano 1° H = 270 GREZZO    4,97
Piano 1° H = 270 GREZZO    5,59
  Area totale             48,26
  Area piano             155,91
Piano T. H = 195 SGOMBERO 20,75
...
  Area generale          353,40
(l'esportazione viene fatta direttamente in Excel)
-- 
Non è semplice farlo senza un po' di conoscenza del Lisp (o VB).
----------------------------------------------------------
Marc'Antonio Alessi - 
http://xoomer.virgilio.it/alessi
Per AutoCAD:
- Elaborazione dati from/to Excel
- Librerie manufatti in assonometria
- Travi 2D: disegno automatico travi in C.A.
- 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
- ...
----------------------------------------------------------

 ha scritto nel messaggio
news:439b500f$0$16210$4faf...@reader3.news.tin.it...



per ogni polilinea blu devi creare un lista con le coordinate dei vertici e
poi usare  (ssget "_WP" (ListaVertici) (ListaFiltri)) per selezionare le
polilinee al suo interno...

> per ogni polilinea blu devi creare un lista con le coordinate dei vertici
e proprio questo che non riesco a fare...........
 >poi usare  (ssget "_WP" (ListaVertici) (ListaFiltri))
questo più o meno avevo già pensato di farlo, però pensavo di farlo per ogni
singola polilinea blu, facendo un loop con un istruzione for.....

 e proprio questo che non riesco a fare...........
ti consiglio di usare:
(command "_.CONVERT" "_P" "")
per trasformare tutte le "vecchie" Polyline in LwPolyline
poi, ad esempio, con:
(while (setq EntNm1 (ssname SelSt1 0))
  (setq PtsLst (ALE_MASSOC 10 (entget EntNm1)))
  ...
)
passi ogni polilinea nella selezione e memorizzi i suoi vertici
che andranno usati nella successiva selezione con
(ssget "_WP" (PtsLst) (ListaFiltri)).
--
(defun ALE_MAssoc (DxfKey ImpLst / TmpLst OutLst)
  (while (setq TmpLst (assoc DxfKey ImpLst))
    (setq OutLst (cons (cdr TmpLst) OutLst)
          ImpLst (cdr (member TmpLst ImpLst))
    )
  )
  (reverse OutLst)
)
Marco

alla fine sono riuscito a fare tutto il lisp, non pensavo di fare così in
fretta!Ti ringrazio per il tuo input, anche se a dire la verità ho
utilizzato un codice diverso, infatto quello che tu hai fatto in 4 o 5 righe
io l'ho fatto in qualche decina....hehe....si vede che devo ancora imparare
qualcosa :)))