Autore |
Discussione  |
liber
Utente Master
1278 Messaggi |
Inserito il - 02 febbraio 2010 : 11:49:57
|
è da sistemare, funziona, bisogna sostituire le ??? in rosso, e qualcos'altro, per poter essere davvero utile
------------------------------------------------------- ;;by snoopychen ,Guangzhou ;;???????????????????????
;;main program (defun c:test () (setvar "osmode" 0) (command "_undo" "_BE") (setq pa (getpoint "????")) (setq dis (getdist "????????????")) ; (setq lstarea nil) (setq areaall (mj pa)) (setq n 16 te nil) (setq lstres (rep 0.0 360.000000000)) (while (= te nil) (setq ang_s (caddr lstres)) (setq ang_all (cadddr lstres)) (setq lstres (rep ang_s ang_all)) (if (< (cadr lstres) 0.01) (progn (setq te 1) (command "_xline" "a" (caddr lstres) pa "") ) ) ) (command "_undo" "_E") )
;;??16???n??????????????????????? (defun rep (ang-s ang-all / i ang-i ssxl pa90) (setq lstarea nil i 0) (repeat n (setq ang-i (+ (- ang-s (/ ang-all 2)) (* (/ ang-all n) i))) (command "_xline" "a" ang-i pa "") (setq ssxl (ssget "_l")) (setq pa90 (polar pa (+ (DTR ang-i) (* pi 0.5)) (/ dis 3))) (grdraw (list 0 0 0) pa90 1) (setq mj1 (mj pa90)) (setq lstarea (append lstarea (list mj1) ) ) (command "_erase" ssxl "") (grdraw (list 0 0 0) pa90 0) (setq i (1+ i)) ) (setq lstarea1 (mapcar '(lambda (x) (abs (- (/ areaall 2) x)) ) lstarea ) ) (setq index (min-index-list lstarea1)) (setq indexarea (nth index lstarea1)) (setq indexangle (+ (- ang-s (/ ang-all 2)) (* (/ ang-all n) index))) (setq allangle (* (/ ang-all n) 2)) (list index indexarea indexangle allangle) )
;;????? (defun mj (_point / a) (command "_bpoly" _point "" "_y") (command "_region" "_l" "") (command "area" "o" "_l") (command "_erase" "_l" "") (prompt "\n the area is ") (setq a (getvar "area")) a )
;;??????????? (defun min-index-list (lst / a b flag i) (setq a (nth 0 lst) i 0 flag 0 ) (while (< i (length lst)) (setq b (nth i lst)) (if (< b a) (setq a b flag i ) ) (setq i (1+ i)) ) flag )
;????? (defun DTR (d) (* pi (/ d 180.0)) ) -------------------------------------------- scegliere un punto interno e poi primo punto e secondo punto
 porobabilmente
(setq pa (getpoint "????"))
selezionare punto interno
(setq dis (getdist "????????????")) inserire 2 punti interni o simile
|
|
arri
Utente Master
Regione: Lombardia
14951 Messaggi |
Inserito il - 02 febbraio 2010 : 11:55:55
|
Citazione: Messaggio inserito da liber
porobabilmente
(setq pa (getpoint "????"))
selezionare punto interno
(setq dis (getdist "????????????")) inserire 2 punti interni o simile
giusto |
 |
|
liber
Utente Master
1278 Messaggi |
Inserito il - 02 febbraio 2010 : 13:01:06
|
modificato il listato comando divarea ultimo problema è un messaggio di errore
Creazione eseguita di 1 regione.
the area is Comando sconosciuto "Y". Premere F1 per la Guida.
Scarica allegato:
divarea.zip 1,26 KB |
 |
|
arri
Utente Master
Regione: Lombardia
14951 Messaggi |
Inserito il - 02 febbraio 2010 : 13:07:08
|
Citazione: Messaggio inserito da liber
modificato il listato comando divarea ultimo problema è un messaggio di errore
questo lisp a cosa potrebbe servire ? |
 |
|
liber
Utente Master
1278 Messaggi |
Inserito il - 02 febbraio 2010 : 13:13:59
|
a dividere in 2 un superfice e le aree risultanti sono uguali |
 |
|
n/a
deleted
Prov.: Estero
Città: Sieradz (PL)
5926 Messaggi |
Inserito il - 02 febbraio 2010 : 13:25:51
|
Citazione: Messaggio inserito da liber
a dividere in 2 un superfice e le aree risultanti sono uguali
Detto in siciliano: non serve a una minq...
 |
 |
|
MEM
Utente Master
Regione: Puglia
Prov.: Lecce
Città: Galatone
2235 Messaggi |
Inserito il - 02 febbraio 2010 : 13:30:00
|
Ottimo per divisioni patrimoniali.  |
 |
|
liber
Utente Master
1278 Messaggi |
Inserito il - 02 febbraio 2010 : 13:31:20
|
si scrive minc... con la C e non la Q per dare più corpo si pronuncia quasi come la K
prova a dividere un area in 2 parti uguali e dimmi quale procedimento usi.
ho scritto appunto da sistemare, perchè sarebbe comodo avere un punto di ancoraggio e una direzione certa o presunta, allora si che diventa utile per suddividere aree. Infatti Mem ha già compreso un utilizzo utile |
Modificato da - liber in data 02 febbraio 2010 13:34:59 |
 |
|
n/a
deleted
Prov.: Estero
Città: Sieradz (PL)
5926 Messaggi |
Inserito il - 02 febbraio 2010 : 13:38:00
|
Citazione: Messaggio inserito da liber si scrive minc... con la C e non la Q
"Minc" non e' politically correct, per questo va scritto MINQ o MINK (niente volgarita' in Cadlandia).
Per quanto riguarda le divisioni di parcelle catastali fra eredi, in effetti ha ragione Mem, chiedo venia.
 |
 |
|
arri
Utente Master
Regione: Lombardia
14951 Messaggi |
Inserito il - 02 febbraio 2010 : 13:40:16
|
Citazione: Messaggio inserito da liber perchè sarebbe comodo avere un punto di ancoraggio e una direzione certa o presunta, allora si che diventa utile per suddividere aree. Infatti Mem ha già compreso un utilizzo utile
così ha senso |
 |
|
liber
Utente Master
1278 Messaggi |
Inserito il - 02 febbraio 2010 : 13:48:20
|
Citazione: Messaggio inserito da arri
Citazione: Messaggio inserito da liber perchè sarebbe comodo avere un punto di ancoraggio e una direzione certa o presunta, allora si che diventa utile per suddividere aree. Infatti Mem ha già compreso un utilizzo utile
così ha senso
ma visto che a quanto sembra per me il cinese è più semplice del lisp chiedo aiuto a chi può, perchè questa è una gran bella funzione se si riesce a portare nella giusta direzione |
 |
|
n/a
deleted
Prov.: Estero
Città: Sieradz (PL)
5926 Messaggi |
|
liber
Utente Master
1278 Messaggi |
Inserito il - 02 febbraio 2010 : 15:33:17
|
partiamo dall'errore che mi mi dava e che hai sitemato!! cos'era?? adesso per come il listato era concepito dai cinesi va bene, caruccio il messaggio con riportata l'area divisa, anche se non ne merito la paternità nel messaggio. adesso per il reale utilizzo di questa lisp è 1) dividere un area e lasciare alla casualità cosi' come ora 2) dividere un area avendo un punto di ancoraggio e decidere la direzione della divisione, se deve essere in orizzontale, a desta, a sinistra etc etc. ed il secondo punto è quello che in effetti giova, altrimenti va bene solo nella casualità e devo darti ragione al post di cui sopra che non serve ad una minq |
 |
|
n/a
deleted
Prov.: Estero
Città: Sieradz (PL)
5926 Messaggi |
Inserito il - 02 febbraio 2010 : 15:36:29
|
Citazione: Messaggio inserito da liber cos'era??
Ho messo BOUNDARY al posto di BPOLY - davvero vuoi che tolga "by Liber"..?

|
 |
|
arri
Utente Master
Regione: Lombardia
14951 Messaggi |
Inserito il - 02 febbraio 2010 : 15:40:42
|
Citazione: Messaggio inserito da liber
partiamo dall'errore che mi mi dava e che hai sitemato!! cos'era??
nel 2008 italiano funzionano e non funzionano entrambi
Basta mettere il punto interno decentrato e s'ingrippa subito, provate su un rettangolo |
 |
|
joseph
Utente Master

Regione: Lombardia
Prov.: Cremona
Città: Casalmaggiore
1884 Messaggi |
Inserito il - 24 febbraio 2010 : 23:48:35
|
Riprendo l'argomento, perchè aveva sollecitato la mia curiosità, intravedendone anche un'utilità pratica, se pur minima, soprattutto nel caso di frazionamenti.
Tagliando, elaborando e incollando parti di codice provenienti da diversi autori (Evgeniy Elpanov, Bill kramer, Fuccaro, John F.Uhden) che qui ringrazio, e mettendo anche un po' del mio, ho provato a risolvere il problema, restringendo l'applicazione a casi limitati. Il codice funziona, per ora, su polilinee chiuse (anche con parti curve), tracciate in senso orario, ad angoli convessi (o leggermente concavi). La precisione (inversamente proporzionale alla velocità d'esecuzione) dipende da un parametro interno K=20000, che si può diminuire a piacere. Il punto base della dividente è vincolato a uno dei vertici della polilinea. Il file parte con DVA (Invio).
Prendetelo come una personale (e istruttiva) esercitazione sull'uso di VisualLisp (non sono e non aspiro ad essere un programmatore), con difetti nascosti che verranno sicuramente alla luce dopo essere stato dato in pasto a più utenti, passibile di sostanziali miglioramenti. Tempo permettendo mi riprometto di scrivere il codice anche per il caso di una dividente orizzontale o parallela a un lato della poligonale.
Scarica allegato:
div-area.zip 1,77 KB |
 |
|
Giuseppe Mauro
Amministratore

Regione: Campania
Prov.: Napoli
2707 Messaggi |
Inserito il - 25 febbraio 2010 : 09:26:57
|
A me non divide l'area a meta'  |
 |
|
joseph
Utente Master

Regione: Lombardia
Prov.: Cremona
Città: Casalmaggiore
1884 Messaggi |
Inserito il - 26 febbraio 2010 : 15:13:19
|
Si blocca? Dà un qualche messaggio di errore? L'errore è grossolano? Che forma ha l'area testata? Quando hai tempo, puoi allegare un caso (fra i molti?) in cui il procedimento non offre i risultati che promette, citando la versione usata? Grazie.
|
Modificato da - joseph in data 28 febbraio 2010 10:49:51 |
 |
|
arri
Utente Master
Regione: Lombardia
14951 Messaggi |
Inserito il - 28 febbraio 2010 : 11:09:34
|
joseph, come mai hai cancellato il tuo ultimo post che conteneva divisione-areeOK-1-bis.lsp   |
 |
|
joseph
Utente Master

Regione: Lombardia
Prov.: Cremona
Città: Casalmaggiore
1884 Messaggi |
Inserito il - 28 febbraio 2010 : 14:33:25
|
Perchè ho scoperto, durante una verifica, che non risolveva ancora alcuni errori interni.
Ricarico il file, dopo alcuni alleggerimenti: è sparita la dividente che scorre, ho ridotto il numero di cicli (fattore K da 20000 a 5000) Scarica allegato: Non mi offendo se qualcuno mi dovesse dire che non è il mio mestiere o che questo lavoro non serve a niente: da ex-docente ho già fatto il callo.
divisione-aree-def.zip 1,94 KB
|
Modificato da - joseph in data 28 febbraio 2010 15:34:18 |
 |
|
arri
Utente Master
Regione: Lombardia
14951 Messaggi |
Inserito il - 28 febbraio 2010 : 15:17:26
|
Citazione: Messaggio inserito da joseph
Perchè ho scoperto, durante una verifica, che non risolveva ancora alcuni errori interni.
ok, ma potevi lasciarla in modo d'apprezzare i successivi miglioramenti |
 |
|
Discussione  |
|