• This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Leggi altro.

Gestione lunghezza cornice di un mobile in stile

elbaha

Utente poco attivo
Professione: Disegnatore
Software: autocad 2014
Regione: veneto
#1
Buongiorno a tutti, mi chiamo Fabio e disegno mobili in stile
Qualche anno fa, aiutato anche dalla vostra professionalità, ho cercato di automatizzare l'estrazione della lunghezza di una cornice attraverso degli attributi, leggendo la lunghezza di una polilinea e trasferendola su un attributo vuoto

La sintassi è questa:
(defun c:corniceu1 (/ ss lis idx obj)
(vl-load-com)
(SETVAR "cmdecho" 0)
(SETQ A_tot 0)
(COMMAND "_area" "_o" "_l")
(SETQ ac (RTOS (/ (GETVAR "perimeter") 1) 2 2))
(SETQ acc (vl-string-subst "," "." ac))
(setq LARGHEZZA (getint "Inserisci la larghezza :"))
(setq SPESSORE (getint "Inserisci lo spessore :"))
(SETQ ins_p (GETPOINT "\n Inizio cornice :"))
(COMMAND "-inser" "CORNICE.DWG" ins_p "" "" "" SPESSORE LARGHEZZA acc "")
(princ))

Funziona tutto alla perfezione ma, se nello stesso disegno seleziono il punto iniziale di un'altra polilinea per determinarne la lunghezza, questa è la risposta:

Inizio cornice :
*Selezione non valida*
Richiede un punto o Ultimo
; errore: Funzione annullata

Potete cortesemente darmi una mano?

Grazie anticipatamente

Fabio
 

Cristallo

Utente Standard
Professione: Leggo e confronto
Software: Lettura critica
Regione: Fuori dalla cerchia
#2
Il problema risiede qui
(COMMAND "_area" "_o" "_l") cioè LAST.
Stai dicendo ad autocad di calcolare l'area (e quindi il perimetro) dell'oggetto ULTIMO che ha disegnato

Purtroppo non ho tempo per modificarti il listato, ma sedi sostituire il LAST con una selezione di un oggetto qualsiasi del disegno - e questo comporta che devi fare anche un controllo sul tipo di entità selezionato, perche se selezioni qualcosa tipo linea, quota, non avendo area il programma va in crash.
 

elbaha

Utente poco attivo
Professione: Disegnatore
Software: autocad 2014
Regione: veneto
#3
Il problema risiede qui
(COMMAND "_area" "_o" "_l") cioè LAST.
Stai dicendo ad autocad di calcolare l'area (e quindi il perimetro) dell'oggetto ULTIMO che ha disegnato

Purtroppo non ho tempo per modificarti il listato, ma sedi sostituire il LAST con una selezione di un oggetto qualsiasi del disegno - e questo comporta che devi fare anche un controllo sul tipo di entità selezionato, perche se selezioni qualcosa tipo linea, quota, non avendo area il programma va in crash.
Ti ringrazio, vedo di aggiustare il codice.
Buona serata
Fabio