| Autore |  Discussione  | 
              
                | adminAmministratore
 
   
 
 
 Regione: Veneto
 Prov.: TV
 Città: Treviso
 
 
   188 Messaggi
 | 
                    
                      |  Inserito il - 05/01/2010 :  18:42:31         
 |  
           	| A breve verrà pubblicata una funzione in Autolisp che crea un menù ad icona, quelli per le librerie dei simboli. E' valida per chi ha già delle slide ed i blocchi DWG come me per esempio.
 Vengono memorizzati in un file TXT le slide ed i nomi dei blocchi dove il programma legge il tutto per visualizzare tale librerie.
 Spiegherò meglio in una pagina del sito e se per caso qualcuno ha bisogno di alcuni approfondimenti rimango a disposizione.
 Grazie.
 |  | 
              
                | adminAmministratore
 
   
 
 
 
                Regione: Veneto
 Prov.: TV
 Città: Treviso
 
 
   188 Messaggi
 |  | 
              
                | zenobioNuovo Utente
 
 
 
                 
                Prov.: VeneziaCittà: San Michele al Tagliamento
 
 
   10 Messaggi
 | 
                    
                      |  Inserito il - 17/01/2011 :  17:23:29       
 |  
                      | ciao ho trovato molto interessante questa tua lisp ed ho cercato di modificarla purtroppo ho dei dubbi e delle lacune di competenza non riuscendo a caricare il file con le problematiche te lo invio per mail mi potresti aiutare per cortesia
 |  
                      |  |  | 
              
                | adminAmministratore
 
   
 
 
 
                Regione: Veneto
 Prov.: TV
 Città: Treviso
 
 
   188 Messaggi
 | 
                    
                      |  Inserito il - 17/01/2011 :  22:17:07         
 |  
                      | ciao, intanto fai subito questo e poi riprova:
 
 ((= (nht 3 variabili) "70A.sld") (setq mostra "70A.sld"))
 ((= (nht 3 variabili) "120A.sld") (setq mostra "120A"))
 ((= (nht 3 variabili) "150A.sld") (setq mostra "150A"))
 ((= (nht 3 variabili) "200A.sld") (setq mostra "200A"))
 
 su queste righe invece di scrivere "nth" hai scritto "nht" :)))
 ci ho messo anch'io qualche minuto per rendermene conto :))
 
 Intanto ti do questa risposta, poi semmai ci risentiamo.
 
 Ma usi Zwcad??
 
 Io al momento ho dovuto verificare il codice con Autocad che ha l'applicativo del Visual Lisp.
 Comunque la mia che è un pò più complessa nella parte di gestione inserimenti funziona con ZWcad... l'ho fatta apposta per Zwcad.
 
 Ciao.
 
 
 |  
                      |  |  | 
              
                | adminAmministratore
 
   
 
 
 
                Regione: Veneto
 Prov.: TV
 Città: Treviso
 
 
   188 Messaggi
 | 
                    
                      |  Inserito il - 17/01/2011 :  22:22:47         
 |  
                      | poi è meglio mettere così: (cond
 ((= (strcase (nth 3 variabili)) (strcase "70A.sld")) (setq mostra "70A.sld"))
 ((= (strcase (nth 3 variabili)) (strcase "120A.sld")) (setq mostra "120A"))
 ((= (strcase (nth 3 variabili)) (strcase "150A.sld")) (setq mostra "150A"))
 ((= (strcase (nth 3 variabili)) (strcase "200A.sld")) (setq mostra "200A"))
 )
 
 Ma sei sicuro che funziona il delay all'interno del comando vslide?
 |  
                      |  |  | 
              
                | adminAmministratore
 
   
 
 
 
                Regione: Veneto
 Prov.: TV
 Città: Treviso
 
 
   188 Messaggi
 | 
                    
                      |  Inserito il - 17/01/2011 :  22:29:56         
 |  
                      | e ancora... su
 (command "_vslide" mostra "delay" 200000 "") oppure
 (command "_vslide" (strcat dir "\\" mostra) "delay" 200000 "")
 
 o "mostra" è completo di tutta la directory o setti il percorso sui percorsi di ricerca di Autocad/Zwcad
 Ciao e chiudo.
 |  
                      |  |  | 
              
                | zenobioNuovo Utente
 
 
 
                 
                Prov.: VeneziaCittà: San Michele al Tagliamento
 
 
   10 Messaggi
 | 
                    
                      |  Inserito il - 18/01/2011 :  08:58:18       
 |  
                      | grazie ai tuoi consigli per il momento sono riuscito a vedere le slide, ho modificato così: (progn
 (if (= (nth 2 variabili) (strcase "VSLIDE"))
 (progn
 (cond
 ((= (strcase (nth 3 variabili)) (strcase "70A.sld")) (setq mostra "70A.sld"))
 ((= (strcase (nth 3 variabili)) (strcase "120A.sld")) (setq mostra "120A.sld"))
 ((= (strcase (nth 3 variabili)) (strcase "150A.sld")) (setq mostra "150A.sld"))
 ((= (strcase (nth 3 variabili)) (strcase "200A.sld")) (setq mostra "200A.sld"))
 ); Fine COND
 (command "_vslide" mostra "delay" 3000 "regen")
 ) ; Fine condizione
 ) ; Fine IF
 ) ; Fine progn
 ) ; Fine IF principale
 
 
 e funziona
 ho omesso di indicare "dir" visto che per riuscire a far leggere la *.slb ho impostato il percorso in Zwcad.
 
 è proprio per il fatto che anche tu usi Zwcad che mi sono permesso di importunarti, io non è molto che lo uso ma ho già notato che ci sono alcune diversità rispetto ad autocad soprattutto nella gestione di inserimento dei blocchi ma di questo eventualmente ne discuteremo + avanti se non ti disturba.
 
 una cosa vorrei chiederti subito si riesce a far partire il comando anche selezionandolo dalla box-list?
 per il momento a me funziona solo se selezionando l'icona
 
 ora cerco di vedere se riesco ad andare avanti con questo lisp-patchwork che sto componendo spero che non ti spiaccia aiutarmi
 
 |  
                      | Modificato da - zenobio in data 18/01/2011  09:17:16
 |  
                      |  |  | 
              
                | adminAmministratore
 
   
 
 
 
                Regione: Veneto
 Prov.: TV
 Città: Treviso
 
 
   188 Messaggi
 | 
                    
                      |  Inserito il - 18/01/2011 :  13:31:46         
 |  
                      | Bene, dalla list-box al momento selezioni e poi clicchi "ok" |  
                      |  |  | 
              
                | zenobioNuovo Utente
 
 
 
                 
                Prov.: VeneziaCittà: San Michele al Tagliamento
 
 
   10 Messaggi
 | 
                    
                      |  Inserito il - 20/01/2011 :  19:49:00       
 |  
                      | ciao sono riuscito ad impostare la lisp in modo che mi legga la variabile che non sia "vslide" ma sembra che la tratti come testo e
 non come comando infatti me la scrive nella riga di comando ma non reindirizza alla subroutine che ho aggiunto.
 
 Comando: "D:\\LZ\\Lsp\\Prove\\2"
 Comando: fin0
 Comando: _undo
 Impostazioni Correnti: Auto = ON, Control = TUTTO
 Annulla:  Contrassegno/inDietro al contrassegno/iniZia impostazione/Fine impostazione/COntrollo/Auto/: _end
 
 ti invio il file a mezzo mail non riesco a caricarlo mi da sempre errore
 
 il comando da list-box non so perchè non va non ho modificato nulla all'inizio della lisp e nel dcl solo la grandezza delle slide
 |  
                      | Modificato da - zenobio in data 20/01/2011  19:54:18
 |  
                      |  |  | 
              
                | adminAmministratore
 
   
 
 
 
                Regione: Veneto
 Prov.: TV
 Città: Treviso
 
 
   188 Messaggi
 | 
                    
                      |  Inserito il - 24/01/2011 :  15:42:01         
 |  
                      | Ciao, intanto
 (setq funz (getstring (nth 2 variabili)))
 (funz)
 richiama la funzione "funz" che non vedo, se "funz" è all'interno di un altro file lisp devi fare in modo che siano caricati tutti i file ".lsp"
 La funzione Fin0 deve essere chiamata dalla libreria?
 |  
                      |  |  | 
              
                | adminAmministratore
 
   
 
 
 
                Regione: Veneto
 Prov.: TV
 Città: Treviso
 
 
   188 Messaggi
 | 
                    
                      |  Inserito il - 24/01/2011 :  21:34:53         
 |  
                      | Ciao, ho provato ma si blocca... va in errore, perchè non trova la funzione "funz"
 hai detto che non riesci a caricarlo, ma subito quando avvii la funzione o dopo aver selezionato l'icona?
 
 Hai ragione sul dire che selezionando sull'elenco e poi cliccare su "Ok" non funziona... controllo su quello che ho al lavoro e poi ti dico.
 Ciao.
 |  
                      |  |  | 
              
                | zenobioNuovo Utente
 
 
 
                 
                Prov.: VeneziaCittà: San Michele al Tagliamento
 
 
   10 Messaggi
 | 
                    
                      |  Inserito il - 25/01/2011 :  07:56:53       
 |  
                      | Ciao spero di riuscire a spiegarmi:
 
 -"funz" non è una ruotine specifica ma quello che imposto con
 (= (nth 2 variabili) (strcase (getstring (nth 2 variabili))))
 (setq funz (getstring (nth 2 variabili)))
 e che viene definito nella terza colonna del file *.txt (es. fin0, Quofi, elinf ecc.) ossia delle sotto lisp
 che per amor di brevità ho, per il momento, omesso di inserire nella lisp modificata dove ho copiato solo fin0 per  vedere se funziona;
 
 -per riuscire a caricarlo lo carico solo che il caricamento avviene in due fasi
 la prima caricare la lisp (load "D:\\miadir\\apriicon.LSP") o inserirlo nel caricamento automatico dell'avvio e
 poi ^C^C(setq dir "D:\\miadir");apriicon;
 ho provato a fare un "bottone" con un comando unico ^c^c(load "D:\\miadir\\apriicon.LSP");(setq dir "D:\\miadir");apriicon;
 per caricare la lisp solo quando serve ma non sembra funzionare.
 
 
 |  
                      | Modificato da - zenobio in data 25/01/2011  07:57:15
 |  
                      |  |  | 
              
                | adminAmministratore
 
   
 
 
 
                Regione: Veneto
 Prov.: TV
 Città: Treviso
 
 
   188 Messaggi
 | 
                    
                      |  Inserito il - 25/01/2011 :  09:04:46         
 |  
                      | Ciao, allora.... funz scritta (funz) richiama una funzione che si chiama funz, quindi se non è una funzione devi togliere quella riga.
 
 Ho provato a modificare la macro assegnata ad un mio pulsante esistente e ha funzionato, nel mio caso è così:
 (load "t:\\libsimazw\\autolisp\\caricalibrerie.lsp");(setq dir "t:/libsimaZW/sld/Morsetti1");apriicon;
 
 Ho guardato per quanto riguarda la selezione dalla lista-box più tasto ok ed effettivamente manca una riga...
 dove ci sono tutte le righe con (action_tile "....."), nella parte finale dovresti avere queste righe,
 
 (action_tile "list" "(rigasel_ok)")
 (action_tile "next" "(next_ok)")
 (action_tile "prev" "(prev_ok)")
 (action_tile "cancel" "(cancel)")
 
 diventano:
 
 (action_tile "list" "(rigasel_ok)")
 (action_tile "next" "(next_ok)")
 (action_tile "prev" "(prev_ok)")
 (action_tile "accept" "(progn (leggisett_ok sld))")
 (action_tile "cancel" "(cancel)")
 
 mancava la riga relativa all'accept che riguarda il pulsante ok.
 
 chiedo perdono della mancanza, appena posso devo cambiare il file scaricabile dal sito.
 Ciao.
 |  
                      |  |  | 
              
                | zenobioNuovo Utente
 
 
 
                 
                Prov.: VeneziaCittà: San Michele al Tagliamento
 
 
   10 Messaggi
 | 
                    
                      |  Inserito il - 25/01/2011 :  19:31:09       
 |  
                      | Ciao grazie per i consigli e la pazienza
 il primo ha funzionato alla grande
 il secondo purtroppo no
 non capisco di cosa tu ti scusi quando dopo aver messo a disposizione
 di tutti una lisp così utile sei anche disponibile a dare consigli ed aiuto
 a quelli come me che si permettono con scarse conoscenze di modificare una cosa che
 di suo funziona
 comunque come pensavo non sono riuscito a farmi capire per quanto riguarda funz proviamo
 a vedere se cambiando il nome della variabile ci riesco
 di seguito riporto le righe incriminate modificate
 
 (if ;2
 (= (nth 2 variabili) (strcase (getstring (nth 2 variabili)))) ;2 Condizione
 ;(prog
 (setq PIPPO (getstring (nth 2 variabili)))
 (PIPPO)
 ;)
 ) ;fine  If 2
 
 dove PIPPO in questo caso
 
 [nth0]Finestre(Fin0)*[nth1]Finestra Catasto*[nth2]fin0
 
 è fin0 comando che mi lancia le una lisp che aggiungo in fondo alla tua
 
 (defun C:fin0 (/ larghezza primo secondo terzo quarto...............
 
 il problema non è che non lo legga infatti a video vicino al puntatore
 mi compare il quadratino del comando con dentro scritto fin0 nella riga di comando
 però si va ad aggiungere dopo apriicon (apriiconfin0)  e non succede niente
 
 quasi quasi però visto che non abitiamo distanti ti vengo a trovare e a farmi fare
 (pagando si intende) un corso accellerato [:D][:D]
 
 alla prossima
 
 
 
 
 |  
                      | Modificato da - zenobio in data 25/01/2011  19:59:40
 |  
                      |  |  | 
              
                | adminAmministratore
 
   
 
 
 
                Regione: Veneto
 Prov.: TV
 Città: Treviso
 
 
   188 Messaggi
 | 
                    
                      |  Inserito il - 26/01/2011 :  08:48:51         
 |  
                      | Ciao, allora...
 su
 (if ;2
 (= (nth 2 variabili) (strcase (getstring (nth 2 variabili)))) ;2 Condizione
 per essere sicuri dovresti mettere strcase su tutte e 2 le stringhe di confronto e quindi.
 (if ;2
 (= (strcase (nth 2 variabili)) (strcase (getstring (nth 2 variabili)))) ;2 Condizione
 
 poi, scusa se te lo ridico... una parola scritta tra parentesi come "(pippo)" viene interpretato da lisp come eseguire la funzione (pippo), quindi devi togliere (pippo), tanto è già settata con
 (setq PIPPO (getstring (nth 2 variabili))).
 
 Per quanto riguarda il corso accellerato ci sarebbero un pò di problemi nel senso che tra a fine aprile dovrebbe (come data intendo) nascere il bimbo.
 In più sono autodidatta e potrei insegnarti con dei metodi non molto corretti/migliori... poi vedi te.
 
 |  
                      |  |  | 
              
                | zenobioNuovo Utente
 
 
 
                 
                Prov.: VeneziaCittà: San Michele al Tagliamento
 
 
   10 Messaggi
 | 
                    
                      |  Inserito il - 29/01/2011 :  19:58:07       
 |  
                      | Auguroni a te e a tua moglie per il bimbo io ormai ho già dato i miei due bambini hanno
 28 e 21 anni vado per nonno
 
 tornando alla lisp lo so che (pippo)viene interpretato come comando per eseguire la
 funzione pippo e proprio quello che cerco di fare;
 se alla tua ho intenzione di aggiungere pippo che poi mi disegna delle cose (fin0 nel file che
 ti ho inviato)
 il problema è che non lo fa nel senso che lo legge lo imposta (con setq) lo fa vedere
 a schermo ma poi finisce lì non va avanti.
 
 per esempio adesso sto modificando la versione nuova che hai gentilmente messo tra i download
 ho inserito la mia routine per visualizzare le slide tutto gira bene fin qui dopo il comando
 
 (command "_vslide" mostra "delay" 3000 "regen")
 
 ho messo
 
 (apriicon)
 
 perché mi riapra la lisp (visto che il comando mi serve solo per dare un esempio di come dovrebbero
 venire le finestre) ma la lisp non si riapre da sola il problema è lo stresso di cui ti dicevo sopra
 praticamente sembra non legga i comandi interni
 ad esempio nella lisp che mi disegna le finestre c'è una routine che disegna solo i davanzali estreni che
 ho chiamato (defun DavEs () per non riscrivere la stessa porzione di lisp per ogni tipo di finestra ad un
 certo punto metto (DavEs) e viene disegnato il davanzale esterno questo visto che i disegni delle
 finestre hanno una gran parte di linee eguali mi permette di suddividere il tutto in tanti pezzettini da usare volta per volta solo quello che mi serve.
 
 Come al sempre ti invio il file per mail
 
 
 
 |  
                      | Modificato da - zenobio in data 31/01/2011  07:44:09
 |  
                      |  |  | 
              
                
                |  Discussione  |  |