Sommare le lunghezze delle polilinee selezionate e conteggio blocchi

Professione: Impiegato tecnico
Software: Autocad 2010
Regione: Lombardia
#1
Ciao ragazzi..sto cercando cortesemente un'utility lisp che mi permetta di compiere la somma delle lunghezze delle polilinee selezionate. Ho cercato ma ho trovato solo funzioni per conteggiare la somma della lunghezza delle linee, non POLILINEE.
In secondo luogo sto cercando una funzione che avviata, mi possa fornire un report con il numero complessivo dei blocchi presenti nel disegno divisi per nome.

Qualcuno saprebbe aiutarmi?

Grazie..e buon lavoro a tutti! :finger:
ciao
 

x11start

Utente Standard
Professione: Disegnatore prefabbricati
Software: Autocad
Regione: Piemonte
#2
In effetti ho fatto un lisp per conteggiare le linee e non le polilinee (si chiama SOMMALINE.LSP). Per il conteggio delle plinee ci sono 2 strade: esploderle oppure modificare il lisp per fare in modo che prenda anche le plinee.

Per la seconda domanda, mi pare che ci sia un comando negli express che fa al caso tuo. Se invece ti serve solo contare tutti i blocchi con un certo nome nel disegno e vedere dove si trovano, puoi usare il mio CONBLOK.LSP.
 

Allegati

Lifle81

Utente poco attivo
Professione: Progettazione impianti elettrici
Software: Autocad 2010
Regione: Veneto
#3
cavoli, nn mi riesce di sommare + polilinee, qualche magnanimo che mi spiega per filo e per segno come si fa? sommaline funziona perfettamente ma ho necessita' di misurare polilinee...uffff...grazieeeee
 

Joseph

Utente Standard
Professione: studio e sperimento
Software: autocad 2012
Regione: lombardia
#4
Prova questo; parte con PLLEN.
Ce ne sono altri in rete.
Se non funziona, alla riga di comando inserisci, prima di lanciarlo:
(vl-load-com) Invio
 

Allegati

x11start

Utente Standard
Professione: Disegnatore prefabbricati
Software: Autocad
Regione: Piemonte
#5
cavoli, nn mi riesce di sommare + polilinee, qualche magnanimo che mi spiega per filo e per segno come si fa? sommaline funziona perfettamente ma ho necessita' di misurare polilinee...uffff...grazieeeee
Il comando SOMMALINE.LSP effettivamente somma solo le linee: quindi basta esplodere le polilinee prima di lanciare il comando, oppure (come ho già detto) occorre modificare il lisp per fargli prendere anche le polilinee.
La strada più semplice è quella in cui è il lisp che esplode la plinea, la somma e poi la ricostruisce; la strada più "elegante" è trattare la polilinea come "entità complessa". Il problema in questo caso è che viene restituito un nome esadecimale che rappresenta un punto; ma questo punto non è l'inizio della polilinea, bensì il vertice più vicino al punto di selezione. Quindi occorre scorrere tutti i vertici, fino ad arrivare al fondo ove si trova un nome esadecimale che rappresenta il primo vertice (Finalmente!). A quel punto si è certi di prendere la polilinea nella sua interezza e quindi si può trovare la lunghezza o fare qualunque altra operazione sulla polilinea.

Questo per dire che non si tratta di una modifica banale del lisp ....

Probabilmente ci sono altre strade più semplici e se qualcuno le sa, sarò lieto di avere il suo aiuto .....
 

Lifle81

Utente poco attivo
Professione: Progettazione impianti elettrici
Software: Autocad 2010
Regione: Veneto
#6
mitiici....grazie... pllen funziona alla perfezione. ora, per via del conteggio blocchi sono un po' "bloccato"...heheheheh.... conblok nn mi funziona o forse nn lo so usare bene...qualche delucidazione?
 

x11start

Utente Standard
Professione: Disegnatore prefabbricati
Software: Autocad
Regione: Piemonte
#7
mitiici....grazie... pllen funziona alla perfezione. ora, per via del conteggio blocchi sono un po' "bloccato"...heheheheh.... conblok nn mi funziona o forse nn lo so usare bene...qualche delucidazione?
CONBLOK funziona così:

- Lo carichi -> (load"conblok")
- Lo lanci -> CONBLOK
- Ti chiede il nome del blocco da cercare (attenzione alle maiuscole)
- Se invece rispondi con un INVIO ....
- Ti chiede di cliccare su un blocco (è più semplice che ricordarsi esattamente il nome!)
- Ti dice quanti blocchi ci sono con quel nome ....
- A questo punto se dai un'altro INVIO, concludi il programma (Fine)....
- .... se invece clicchi in una zona vuota del disegno, vengono tracciate tutte linee che partono da quel punto e vanno al punto di inserimento dei blocchi.
In questo modo è facile trovarli.

I blocchi vengono messi in un set di selezione: questo vuol dire che a programma ultimato, se desideri selezionare (per es. per spostare o per cancellare) tutti i blocchi trovati, non devi far altro che dare il comando di selezione "P" (Precedente).

Es. Ha trovato tutti i blocchi "sedia" presenti nel disegno. Poi dai il comando "Sposta" "P" (Invio) e questo ti permette di selezionare e spostare tutte le sedie insieme.
 

angisbregolius

Utente poco attivo
Professione: studente
Software: Autocad 2011
Regione: Sicilia
#8
Ragazzi si per contare il numero delle polilinee ci siamo con pllen, ma per sommare le lunghezze di molte polilinee come si fa?
 

zintonio

Utente Junior
Professione: Ingegnere elettrico
Software: AutoCAD 2008, VB
Regione: Abruzzo
#9
salve ho visto questo argomento che mi interessa, Volevo chiedere a tutti voi se è possibile contare dei blocchi su una porzione del disegno selezionabile e implementarlo nella lisp conblock.

In pratica utilizzare conblok però aggiungendo una funzione che ti permette di selezionare la porzione di disegno dove poter contare i blocchi

GRazie
 

zintonio

Utente Junior
Professione: Ingegnere elettrico
Software: AutoCAD 2008, VB
Regione: Abruzzo
#11
Grazie GP. Chiedevo ciò xchè mi interessava conoscere e approfondire il codice LISP per la selezione di porzioni di disegno magari per essere implementa anche su altre funzioni (non solo il conteggio blocchi).
Mi sto studiando la guida e ho visto che c'è SSGET per effettuare le selezioni. Volevo semplicemente un esempio LISP per capire come fare le selezioni di porzioni di disegno per usarle anche in altre funzioni.
Grazie
 

x11start

Utente Standard
Professione: Disegnatore prefabbricati
Software: Autocad
Regione: Piemonte
#12
Il comando SOMMALINE.LSP effettivamente somma solo le linee: quindi basta esplodere le polilinee prima di lanciare il comando, oppure (come ho già detto) occorre modificare il lisp per fargli prendere anche le polilinee.
La strada più semplice è quella in cui è il lisp che esplode la plinea, la somma e poi la ricostruisce; la strada più "elegante" è trattare la polilinea come "entità complessa". Il problema in questo caso è che viene restituito un nome esadecimale che rappresenta un punto; ma questo punto non è l'inizio della polilinea, bensì il vertice più vicino al punto di selezione. Quindi occorre scorrere tutti i vertici, fino ad arrivare al fondo ove si trova un nome esadecimale che rappresenta il primo vertice (Finalmente!). A quel punto si è certi di prendere la polilinea nella sua interezza e quindi si può trovare la lunghezza o fare qualunque altra operazione sulla polilinea.

Questo per dire che non si tratta di una modifica banale del lisp ....

Probabilmente ci sono altre strade più semplici e se qualcuno le sa, sarò lieto di avere il suo aiuto .....
Ho scoperto da un vecchio lisp che è possibile ottenere la lunghezza di un oggetto (linea - plinea - arco ecc.) dando il comando ALLUNGA (_lengthen in inglese) e selezionando l'oggetto senza ovviamente variarne la lunghezza. Il valore trovato va a finire nella variabile di sistema PERIMETER. Questo mi apre un mondo!!! Il lisp sopracitato diventerebbe molto più semplice da migliorare: non occorre scomodare le entità complesse!!
E' proprio vero che non si smette mai di imparare!

Cercherò di migliorare SOMMALINE.LSP e poi vi farò sapere!
 

GP.

Utente Senior
Professione: Nientologo
Software: uozapp
Regione: Vercelli
#13
Ho scoperto da un vecchio lisp che è possibile ottenere la lunghezza di un oggetto....
....non occorre scomodare le entità complesse!!
Per ottenere la lunghezza di qualsiasi entità:

(vl-load-com)
(setq e1 (vlax-ename->vla-object (car (entsel))))
(setq L:e1 (vlax-curve-getDistAtParam e1 (vlax-curve-getEndParam e1)))

:smile:
 

x11start

Utente Standard
Professione: Disegnatore prefabbricati
Software: Autocad
Regione: Piemonte
#14
Ora SOMMALINE.LSP accetta:

LINEE
POLILINEE
POLILINEE 3D
SPLINE
ARCHI
ELLISSI (o archi ellittici)
 

Allegati

Professione: Impiegato
Software: Microsoft Office
Regione: Lazio
#15
Ciao a tutti.
Ma per il conteggio di blocchi contenuti nel disegno non è più utile usare le tabelle o i campi?
In questo modo rimane tutto sotto il controllo di Autocad.
 

dervit

Utente Junior
Professione: Dipendente
Software: Autocad 2010
Regione: Campania
#16
Per ottenere la lunghezza di qualsiasi entità:

(vl-load-com)
(setq e1 (vlax-ename->vla-object (car (entsel))))
(setq L:e1 (vlax-curve-getDistAtParam e1 (vlax-curve-getEndParam e1)))

:smile:
Ciao. Ho provato a lanciare il comando pl-len ma dopo aver selezionato la polilinea mi da il seguente errore:
; errore: no function definition: VLAX-ENAME->VLA-OBJECT

Dove posso correggere?
 

x11start

Utente Standard
Professione: Disegnatore prefabbricati
Software: Autocad
Regione: Piemonte
#19
(load "sommaline") INVIO (per caricarlo)

SOMMALINE INVIO (Per lanciarlo)

Clicchi sulle entità (linee - polilinee ecc) una ad una ... e concludi con INVIO

Ti da a video il risultato, se invece vuoi che lo scriva in un testo, clicchi nel punto in cui vuoi il testo e gli dai l'altezza (o accetti con invio quella proposta).
 

dariom2000

Utente poco attivo
Professione: Ingegnere civile
Software: Autocad 2014
Regione: Sicilia
#20
(load "sommaline") INVIO (per caricarlo)

SOMMALINE INVIO (Per lanciarlo)

Clicchi sulle entità (linee - polilinee ecc) una ad una ... e concludi con INVIO

Ti da a video il risultato, se invece vuoi che lo scriva in un testo, clicchi nel punto in cui vuoi il testo e gli dai l'altezza (o accetti con invio quella proposta).
ho l'impressione che non riesca a caricarlo correttamente. Eppure carico correttamente la lisp con il comando _appload