Autore |
Discussione |
admin
Amministratore
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.
|
|
admin
Amministratore
Regione: Veneto
Prov.: TV
Città: Treviso
188 Messaggi |
|
zenobio
Nuovo Utente
Prov.: Venezia
Città: 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 |
|
|
admin
Amministratore
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.
|
|
|
admin
Amministratore
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? |
|
|
admin
Amministratore
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. |
|
|
zenobio
Nuovo Utente
Prov.: Venezia
Città: 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 |
|
|
admin
Amministratore
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" |
|
|
zenobio
Nuovo Utente
Prov.: Venezia
Città: 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 |
|
|
admin
Amministratore
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? |
|
|
admin
Amministratore
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. |
|
|
zenobio
Nuovo Utente
Prov.: Venezia
Città: 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 |
|
|
admin
Amministratore
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. |
|
|
zenobio
Nuovo Utente
Prov.: Venezia
Città: 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 |
|
|
admin
Amministratore
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.
|
|
|
zenobio
Nuovo Utente
Prov.: Venezia
Città: 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 |
|