TuttoCAD Forum

TuttoCAD Forum
[ Home | Registrati | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Album Fotografico | Download | | Cerca | FAQ ]
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 1 - TuttoCAD Software
 AutoLISP
 aiuto su esportazione polilinea

Nota: Devi essere registrato per poter inserire un messaggio.
Per registrarti, clicca qui. La Registrazione è semplice e gratuita!

Larghezza finestra:
Nome Utente:
Password:
Modo:
Formato: GrassettoCorsivoSottolineatoBarrato Aggiungi Spoiler Allinea a  SinistraCentraAllinea a Destra Riga Orizzontale Inserisci linkInserisci EmailInserisci FlashInserisci Immagine Inserisci CodiceInserisci CitazioneInserisci Lista
   
Icona Messaggio:              
             
Messaggio:

  * Il codice HTML è OFF
* Il Codice Forum è ON

Faccine
Felice [:)] Davvero Felice [:D] Caldo [8D] Imbarazzato [:I]
Goloso [:P] Diavoletto [):] Occhiolino [;)] Clown [:o)]
Occhio Nero [B)] Palla Otto [8] Infelice [:(] Compiaciuto [8)]
Scioccato [:0] Arrabbiato [:(!] Morto [xx(] Assonnato [|)]
Bacio [:X] Approvazione [^] Disapprovazione [V] Domanda [?]
Seleziona altre faccine

    
 
   

V I S U A L I Z Z A    D I S C U S S I O N E
blubossa Inserito il - 22 novembre 2010 : 16:14:04
ciao a tutti,
sto cercando di risolvere un problema relativo all'esportazione dei vertici della polilinea e dei raggi, in allegato posto sia il lisp che dcl che ho cercato di correggere senza riuscirci, inoltre ho allegato il file di testo errato e quello corretto.

spero che qualcuno possa aiutarmi a risolvere.
grazie

BB

Scarica allegato:

test.rar
56,52 KB

Scarica allegato:

TEST5.dwg
46,82 KB
20   U L T I M E    R I S P O S T E    (in alto le più recenti)
Terminator Inserito il - 25 novembre 2010 : 15:56:40
Messaggio inserito da blubossa

cambiando l'ordine dei progn all'interno dell'if il programma sembra funzionare correttamente....testato sia sulla 2005 che sulla 2008


Bene! Tu comunque usa l'ultima versione che ti ho inviato, la versione 2008 usava ancora la vecchia codifica, non vorrei che ci siano problemi con versioni successive.
blubossa Inserito il - 25 novembre 2010 : 15:20:43
cambiando l'ordine dei progn all'interno dell'if il programma sembra funzionare correttamente....testato sia sulla 2005 che sulla 2008

ciao


Messaggio inserito da Terminator

Butta via tutto e usa questo:

Scarica allegato:

test.zip
4,28 KB
Terminator Inserito il - 25 novembre 2010 : 14:56:13
Butta via tutto e usa questo:

Scarica allegato:

test.zip
4,28 KB
blubossa Inserito il - 25 novembre 2010 : 14:51:07
scusa, ma io il test sulla versione 2008 l'ho fatto proprio con la routine in cui hai inserito la parte del codice riferita alla versione ed è proprio questa che non funziona, ma da quello che ho capito dovrei inserire nel codice 2009, per fare il test sulla 2008??
spero di essere stato chiaro tutte queste versioni mi stanno rinc....

ciao e grazie
bb


Messaggio inserito da Terminator

Ho avuto la possibilità di verificare il programma pure sulla versione 2008 e ho visto che in effetti esiste ancora la vecchia codifica delle polilinee senza il famigerato codice 91, quindi il programma funziona, però bisogna effettuare la modifica indicata nel mio post precedente (sostituire 2008 con 2009). Un'altra possibilità potrebbe essere quella di sfruttare le funzioni vlax-curve..., per farla in barba alle varie versioni di AutoCAD, ma questo comporterebbe la riscrittura di parte del programma.
Più di questo non so proprio cosa fare...
Terminator Inserito il - 25 novembre 2010 : 14:05:26
Ho avuto la possibilità di verificare il programma pure sulla versione 2008 e ho visto che in effetti esiste ancora la vecchia codifica delle polilinee senza il famigerato codice 91, quindi il programma funziona, però bisogna effettuare la modifica indicata nel mio post precedente (sostituire 2008 con 2009). Un'altra possibilità potrebbe essere quella di sfruttare le funzioni vlax-curve..., per farla in barba alle varie versioni di AutoCAD, ma questo comporterebbe la riscrittura di parte del programma.
Più di questo non so proprio cosa fare...
Terminator Inserito il - 25 novembre 2010 : 13:09:33
Io sto provando il programma sia sulla 2011 che sulla 2007, tutto a posto. Mi sembra così strano che ancora ti dà qualche problema...
blubossa Inserito il - 25 novembre 2010 : 13:08:14
ciao Terminator,
ho fatto il test sulla versione 2008 dell'ultima versione che hai fatto del programma e non funziona, oggi proverò sulla versione 2005 di autocad.

blubossa Inserito il - 25 novembre 2010 : 12:23:08
ciao Terminator,
grazie della tua tempestività e della tua disponibilità, appena posso faccio la prova sia con la 2008 che con la 2005.

ho provato a fare il test di quello indicato da joseph ma con la polilinea continua a non funzionare nonostante l'abbia provato sulla 2005 di AutoCad.

Era giusto per completezza di informazione.

ciao
bb
Terminator Inserito il - 24 novembre 2010 : 09:06:27
Non vorrei sbagliarmi ma mi sembra che la codifica nuova sia stata introdotta con la 2008, infatti il programma non gira sulla 2007. Ad ogni modo se mi dai un po' di tempo posso fare in modo che il programma sia gestibile su tutte le versioni di AutoCAD, basta inserire un if a seconda delle versioni e il codice sarà cambiato da 4 a 5.

Per esempio si potrebbe usare una piccola routine di questo tipo:
(defun codpoli (/ numvertice)
 (if (>= (atoi (substr (ver) 13 4)) 2008)
  (setq numvertice 5)
  (setq numvertice 4)
 )
)


Ad ogni modo ho preparato l'ultima release del programma che funziona su tutte le versioni di AutoCAD:

Scarica allegato:

test.zip
4,29 KB

Dato che non ho la possibilità di verificare se la versione 2008 ha la nuova codifica delle polilinee basta modificare il numero scritto in rosso:

(if (>= (atoi (substr (ver) 13 4)) 2008) <-- dalla versione scritta parte la nuova codifica
  (progn
   (setq intervallovertici
			    5
	 intervallocodice42 2
   )
  )
  (progn
   (setq intervallovertici
			    4
	 intervallocodice42 1
   )
  )
 )


Queste righe di programma si trovano proprio in cima.
blubossa Inserito il - 24 novembre 2010 : 08:41:40
scusami terminator,
ma sulla versione 2008 di autocad funzionerà il programma?? siccome parli del fatto che autodesk abbia cambiato la codifica della polilinea nelle ultime versioni.....spero proprio di si.

ciao
bb

Messaggio inserito da Terminator

Lo puoi vedere se usi altri editor tipo Ultraedit e SciTE tanto per citare due.
Terminator Inserito il - 24 novembre 2010 : 08:30:23
Lo puoi vedere se usi altri editor tipo Ultraedit e SciTE tanto per citare due.
Comunque ti faccio una sintesi sperando di essere un po' più chiaro (le modifiche che vedi in rosso sono sul nuovo file che ti ho inviato):

Righe 155-160:
(if (or (= b70 1) (= b70 129))
      (setq b90	(1+ b90)
	    pl	(reverse (cdr (reverse pl)))
	    pl	(append pl (list (car pl) (cadr pl) (caddr pl) (cadddr pl)))
      )
)


Righe 181-189:

(setq vi 1)
  (while (> b90 vi)
   (setq p1  (trans (trans (cdr (nth (* vi 5) pl)) en 0) 0 1)
	 b42 (cdr (nth (- (* vi 5) 2) pl))
	 fb  (if (or (not b42) (zerop b42))
	      (setq b42 nil)
	      b42
	     )
   )


Invece di:
(SETQ vi 0)
    (while (> b90 vi)
      (setq p1	(trans (trans (cdr (nth (* vi 4) pl)) en 0) 0 1)
	    b42	(cdr (nth (+ (* vi 4) 3) pl))
	    fb	(if (or (not b42) (zerop b42))
		  (setq b42 nil)
		  b42
		)
      )


Righe 190-219:

(if fb
    (progn
     (setq a  (distance pp p1)
	   ra (+ (/ a 4 fb) (* 0.25 a fb))
     )
     (if (minusp fb)
      (setq cc " G03")
      (setq cc " G02")
     )
     (gm_w (strcat "\nN" (itoa n) cc))
     (if (not (equal p1 pp 0.000001))
      (gm_w (strcat " X" (rtos (car p1) 2 4)))
     )
     (if (not (equal p1 pp 0.000001))
      (gm_w (strcat " Y" (rtos (cadr p1) 2 4)))
     )
     (gm_w " R")
     (gm_w (rtos (abs ra) 2 4))
    )
    (progn
     (setq cc " G01")
     (gm_w (strcat "\nN" (itoa n) cc))
     (if (not (equal p1 pp 0.000001))
      (gm_w (strcat " X" (rtos (car p1) 2 4)))
     )
     (if (not (equal p1 pp 0.000001))
      (gm_w (strcat " Y" (rtos (cadr p1) 2 4)))
     )
    )
   )

Invece di:

(if fb
	(progn
	  (setq	a  (distance pp p1)
		ra (+ (/ a 4 fb) (* 0.25 a fb))
	  )
	  (if (minusp fb)
	    (setq cc " G03")
	    (setq cc " G02")
	  )
	  ;;;(if (= cp cc)           <-- riga eliminata
	  ;;;  (setq cc "")          <-- riga eliminata
	  ;;;)                       <-- riga eliminata
	  (gm_w (strcat "\nN" (itoa n) cc))
	  (gm_w " R")
	  (gm_w (rtos (abs ra) 2 4))
	)
	(progn
	  (setq cc " G01")
	  ;;;(if (= cp cc)           <-- riga eliminata
	  ;;;  (setq cc "")          <-- riga eliminata
	  ;;;)                       <-- riga eliminata
	  (gm_w (strcat "\nN" (itoa n) cc))
	  (if (not (equal (car p1) (car pp) 0.000001))
	    (gm_w (strcat " X" (rtos (car p1) 2 4)))
	  )
	  (if (not (equal (cadr p1) (cadr pp) 0.000001))
	    (gm_w (strcat " Y" (rtos (cadr p1) 2 4)))
	  )
	)
      )


Dato che abbiamo pure un ex-docente, vale a dire Joseph (una persona che sa il fatto suo tra l'altro, da quel poco che ho potuto capire causa la mia recente "entrata" nel forum), gli chiedo consiglio se questa spiegazione possa andare bene oppure, se fosse possibile, essere più sintetici.
blubossa Inserito il - 24 novembre 2010 : 08:24:11
è proprio quel numero, forse sarebbe più comodo vederlo direttamente nell'editor all'inizio di ogni riga, ma credo che non sia possibile....
ciao

Messaggio inserito da Terminator

Credo che blu per "intestazione di riga" intendesse riferirsi al numero di riga visibile in basso a destra
Terminator Inserito il - 24 novembre 2010 : 08:16:49
Credo che blu per "intestazione di riga" intendesse riferirsi al numero di riga visibile in basso a destra
GM_FEMMINIELLO_*OSO Inserito il - 24 novembre 2010 : 07:30:43
OT x Mauro geom.Giuseppe

Sparcime,
per mancanza di tempo, mi tocca limitare a 1-2 al giorno il numero di secchiate di letame da buttarti in faccia, e che ti donano tanto.

Siccome sei chiuso in un angolo come uno scarrafone coleroso, ti tendo una mano, per l'ennesima volta.

Molla la poltrona di Moderatore, e ti giuro che all'istante verranno rimossi i "complimenti" che hai ricevuto da ieri dall'Araba Fenice...

joseph Inserito il - 23 novembre 2010 : 23:34:29
Messaggio inserito da blubossa

beh proprio chiaro non è ma domani me lo studio meglio......
scusa, visto che ci sono molte righe da controllare, è possibilè visualizzare le intestazioni di riga nell'editor di visual lisp?

grazie di tutto
bb


Cosa intendi di preciso con "intestazioni di riga"?
Terminator Inserito il - 23 novembre 2010 : 23:19:32
Meno male che funziona, perché se fosse per la spiegazione...ahi ahi
blubossa Inserito il - 23 novembre 2010 : 22:30:52
beh proprio chiaro non è ma domani me lo studio meglio......
scusa, visto che ci sono molte righe da controllare, è possibilè visualizzare le intestazioni di riga nell'editor di visual lisp?

grazie di tutto
bb
Terminator Inserito il - 23 novembre 2010 : 18:25:36
Messaggio inserito da blubossa

...pare proprio che l'orso sia morto...


Scarica allegato:

test.zip
4,23 KB]

Intanto inoltro l'ultima versione del programma dato che se la polilinea è chiusa io posso avere non solo un valore 1 della variabile PLINEGEN, ma anche 129. Avevo il problema che mancava l'ultima riga di testo nel file .nc, quando devo far coincidere il primo vertice con l'ultimo

Come da help in linea:
PLINEGEN - Imposta la modalità di generazione dei modelli di tipo di linea attorno ai vertici di una polilinea 2D.
In parole povere se ho una linea tratteggiata i vertici possono essere non visibili dato che lo "spazio" del tratteggio cade su uno di loro.

Le righe dalla 155 alla 160 riguardano la modifica che dicevo prima (PLINEGEN)

Ma il cuore del programma è tutto nelle righe 181-232.
Intanto bisognava partire dalla variabile vi=1 e non dallo 0 (riga 181). Le righe 183-184 sono state modificate tenendo conto della codifica polilinee cambiata nelle ultime versioni AutoCAD (il famoso codice 91) e quindi aumentando il valore da 4 a 5.
Caso strano, quando c'era il raggio, non venivano considerate le coordinate x e y e quindi il programma stampava solo il raggio (righe 199-207).

In ultimo c'erano queste righe secondo me anomale:
(equal (car p1) (car pp) 0.000001)
(equal (cadr p1) (cadr pp) 0.000001)

invece delle più logiche:
(equal p1 pp 0.000001)
(equal p1 pp 0.000001)

Dato che bisognava confrontare le coordinate dei vertici e non solo le x e le y singole dei vertici.

Spero di essere stato chiaro e mi scuso fin d'ora se la spiegazione è stata un po' farraginosa. Anche in ufficio mi dicono che non so spiegare bene le cose su AutoCAD.



blubossa Inserito il - 23 novembre 2010 : 16:30:29
ciao Terminator,
ho continuato a fare diverse prove e pare proprio che l'orso sia morto...........



Messaggio inserito da Terminator

Aspetto che tu finisca le prove e dopo ti spiego tutto, non vorrei vendere la pelle dell'orso prima che sia ucciso...
Terminator Inserito il - 23 novembre 2010 : 15:55:35
Aspetto che tu finisca le prove e dopo ti spiego tutto, non vorrei vendere la pelle dell'orso prima che sia ucciso...

TuttoCAD Forum © 2001-2010 CADLandia Torna all'inizio della Pagina
Pagina generata in 0,34 secondi.