Trovare la lunghezza di una linea

joe

Utente Standard
Professione: Disegnatore strutture reticolari spaziali
Software: autocad 2015
Regione: campania
Buongiorno, avrei bisogno per favore, per accelerare il lavoro, di un lisp che mi selezioni tutte le linee di una determinata lunghezza che io inserirei nella riga di comando.
Se può essere utile, ho impostato i decimali a "0" perché mi serve la lunghezza senza decimali, ma naturalmente tutte le linee nel disegno hanno dei decimali.
Grazie
 

GP.

Utente Senior
Professione: Nientologo
Software: uozapp
Regione: Vercelli
Cambia il valore in base all'approssimazione decimale voluta qui:
....Ls "length") L 0.1)

Codice:
(defun c:SL ( / elenco LIN n)
    (setq elenco (ssadd))
    (setq L (cond
                ( (getdist (strcat "\nLunghezza delle linee" (if L (strcat " <" (rtos L 2 0) ">: ")": "))) )
                ( L )
    )       )
    (setq LIN (ssget "_X" '((0 . "LINE"))))
    (repeat (setq n (sslength LIN))
        (setq Ls (ssname LIN (setq n (1- n))))
        (if (equal (getpropertyvalue Ls "length") L 0.1)
            (setq elenco (ssadd Ls elenco))
        )
    )
    (if elenco (sssetfirst nil elenco))
    (princ)
)
 

x11start

Utente Standard
Professione: Disegnatore prefabbricati
Software: Autocad
Regione: Piemonte
Tempo fa, feci questo listato in grado di "catalogare" le linee di varia lunghezza: sostanzialmente chiede di dargli una serie di numeri in 2 modi

1) digitandoli in un unica volta ed usando la virgola come separatore es. 100,120.5,200.93,300

2) Oppure Cliccando su altrettanti testi che indicano le lunghezze

Poi viene chiesto di selezionare le linee (è un po' "rozzo" e non filtra solo le linee... ma accetta solo quelle e non polilinee archi ecc)

Infine viene chiesto di posizionare la tabella (previa indicazione dell'altezza del testo)

La tabella che ne viene fuori indicherà che ci sono (usando l'esempio di prima):

10 Linee minori o uguali a 100
2 fra minori o uguali 120,5 ....
ecc
fino a quelle maggiori di 300.
 

Allegati

joe

Utente Standard
Professione: Disegnatore strutture reticolari spaziali
Software: autocad 2015
Regione: campania
Grazie GP
SELERAPID va bene, ma cercavo di accelerare il lavoro
Comunque ho provato SL, continuando a cambiare il valore da 0.0 a 0.8 perché non funziona molto bene nel mio caso: la mia impostazione è "unità :precisione 0" e tutte le linee, nello spazio 3D, hanno lunghezze diverse in mm; es. 2502.155 diventa 2502; 3457.875 diventa 3458.
Quando inserisco 2502 la linea viene selezionata, nell'altro caso invece no. Ma le probabilità con cui si verifica questa condizione sono al 70% e non mi assicurano un lavoro senza errori
 

GP.

Utente Senior
Professione: Nientologo
Software: uozapp
Regione: Vercelli
Arrotondamento automatico.
Codice:
(defun c:SL ( / elenco LIN n)
    (setq elenco (ssadd))
    (setq L (cond
                ( (getdist (strcat "\nLunghezza delle linee" (if L (strcat " <" (rtos L 2 0) ">: ")": "))) )
                ( L )
    )       )
    (setq LIN (ssget "_X" '((0 . "LINE"))))
    (repeat (setq n (sslength LIN))
        (setq Ls (ssname LIN (setq n (1- n))))
        (if (equal (fix (+ (getpropertyvalue Ls "length") 0.5)) L)
            (setq elenco (ssadd Ls elenco))
        )
    )
    (if elenco (sssetfirst nil elenco))
    (princ)
)