Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

calcolo e scrittura automatizzata di aree

204 views
Skip to first unread message

Giancarlo Paolini

unread,
Dec 18, 2000, 3:38:10 AM12/18/00
to
Ho necessità di automatizzare il processo di calcolo dell'area di una
polilinea chiusa e di scrivere al suo interno, o in un punto
specificato, il valore. Ho provato a realizzare un file LISP ma il
comando "AREA" interrompe il programma. Inoltre per la scrittura non ho
trovato di meglio che usare il comando "MTEXT" perchè "DTEST"
interrompeva il programma.

--
Posted from mta09-acc.tin.it [212.216.176.40]
via Mailgate.ORG Server - http://www.Mailgate.ORG

Mario Scavroni

unread,
Dec 18, 2000, 4:07:04 AM12/18/00
to
Per quanto riguarda il testo prova semplicemente TEXT.
Ciao Mario Scavroni

>

Gg

unread,
Dec 18, 2000, 12:22:30 PM12/18/00
to

"Giancarlo Paolini" <gpao...@unich.it> ha scritto nel messaggio
news:3A3E4C...@unich.it...

> Ho necessità di automatizzare il processo di calcolo dell'area di una
> polilinea chiusa e di scrivere al suo interno, o in un punto
> specificato, il valore. Ho provato a realizzare un file LISP ma il
> comando "AREA" interrompe il programma. Inoltre per la scrittura non ho
> trovato di meglio che usare il comando "MTEXT" perchè "DTEST"
> interrompeva il programma.

Mi sembra pèroprio strano che l'utilizzo di funzioni command provochi
l'interruzione del programma.
Se utilizzi il Visual lisp puoi utilizzare la funzione vla-get-area per
ottenere il valore dell'area.
Per inserire il testo da lisp puoi utilizzare la funzione entnmake o la
corrispondente in AcriveX.
Ti suggerirei comunque di utilizzare un blocco con attributi al posto del
testo, in modo da poter immagazzinare più informazioni (individuazione
dell'area, numero progressivo, destinazione o tipo dell'area, ecc.), nonché
di estrarre tutti ivalori delle aree e gli altri valori connessi in un file
di testo facilmente esportabile in un foglio di calcolo od in database.
Dal lontano 1989 ho realizzato dozzine di programmini di "etichettura" con i
valori dell'area, e se specifichi meglio cosa ti serve posso darti qualche
dritta o del codice già pronto.

Gigi


Domenico IEVA

unread,
Dec 18, 2000, 5:11:04 PM12/18/00
to Giancarlo Paolini
Utilizza il comando AREA con l'opzione object (oggetto) . Il risultato del
calcolo va prelevato dalla variabile di setvar AREA, cioè (getvar"area")
che memorizza l'ultima area calcolata.
Per quanto riguarda la creazione del testo utilizza TEXT (command "_.text"
ecc...)
Saluti
;;;
;;; Domenico IEVA
;;; e-mail di...@lycosmail.com
;;; http://web.tiscalinet.it/ieva ***NOVITA': Barbette 1.0***

Biagio

unread,
Dec 18, 2000, 5:18:10 PM12/18/00
to
Se sei interessato veramente interessato contattami in privato.
Ciao.
 
 

Alessandro Trebbi

unread,
Dec 21, 2000, 2:34:00 AM12/21/00
to
In article <3A3E4C...@unich.it>,

gpao...@unich.it (Giancarlo Paolini) wrote:
> Ho necessità di automatizzare il processo di calcolo dell'area di una
> polilinea chiusa e di scrivere al suo interno, o in un punto
> specificato, il valore. Ho provato a realizzare un file LISP ma il
> comando "AREA" interrompe il programma. Inoltre per la scrittura non
ho
> trovato di meglio che usare il comando "MTEXT" perchè "DTEST"
> interrompeva il programma.

e' una classica operazione da GIS ; prima di effettuare il calcolo puo'
essere necessario "ripulire" le linee di costruzione (eliminare gaps,
dangles, duplicati); poi si procede creando i centroidi e quindi le
aree. Prova con Microstation Geographics che tutte queste operazioni
consente di farle in automatico (probabilmente lo potrai fare anche con
Autocad Map, ma non lo conosco).


--
Greetings, Alessandro
http://www.b3soft.com
Pesaro, Italy


Sent via Deja.com
http://www.deja.com/

stace

unread,
Dec 21, 2000, 4:42:42 PM12/21/00
to
Ho scritto un programma lisp che fa quello che chiedi sei disposto a
spendere 100.000 ?

Giancarlo Paolini ha scritto:

pippi

unread,
Dec 22, 2000, 12:18:54 PM12/22/00
to
che abbuffino!
Con 100.000 acquisti un ottimo manuale di autolisp e magari, in allegato,
trovi anche degli esempi per imparare.

Fai così:
(defun c:aa (/ cancella ent pt1)
(setq cancella (ssadd))
(while (setq pt1 (getpoint "\npunto d'inserimento: "))
(setq ent (bpoly pt1))
(command "_area" "_e" ent \r)
(redraw ent 3)
(setq cancella (ssadd ent cancella))
(command "_text" "_m" pt1 "0" (strcat "mq " (rtos (getvar "area") 2 2)))
(command "_text" "" (strcat "ml " (rtos (getvar "perimeter") 2 2)))
)
(command "_erase" cancella "" "_redraw")
)

P.s. Questa routine crea una poliliea nel perimetro (che deve essere chiuso)
e, dopo aver "catturato" le informazioni che servono, la cancella.
Ricordati di impostare uno stile di testo con altezza predefinita.
ciao

"stace" <st...@iol.it> ha scritto nel messaggio
news:3A427953...@iol.it...

0 new messages