matty : [post n° 18604]

cercasi macro

Lo so, dovrei fare da solo..ma sono davvero inguaiato.
Mis ervirebbe una macro capace di inserire una stringa di testo nel punto in cui clicco, contenente numeri via via crescenti. Mi spiego meglio: clicco qui, inserisco 1, click là, inserisco 2,....e così via. Meglio sarebbe poter configurare da che numero iniziare.

Qualcuno può aiutarmi al più presto
magh :
raf, questo è pane per i tuoi denti...nel frattempo (perchè sono certo che raf risponderà) ti chiedo se hai pensato, al posto di fare quello che dici tu, di usare i blocchi con attributi...sarà sicuramente più scomodo, ma è un sistema comunque piuttosto veloce!!
Ciao!!
raf :
se mi lasciate l' email vi spedisco il lisp

ciao :)
raf :
con Notepad copiate il contenuto dalla prima parentesi all'ultima in un file e gli date l' estensione .LSP

una volta caricato in AutoCAD il comando è INU
---------------------------------------------------------

(defun c:inu (/ oldecho tmp numValStr rotht)
(setq oldecho (getvar "cmdecho"))
(setvar "cmdecho" 0)
(if (not numVal)
(setq numVal 1)
)
(if (not numInc)
(setq numInc 1)
)
(setq tmp (getint
(strcat "\nNumero di partenza <" (itoa numVal) ">: ")
)
)
(if tmp
(setq numVal tmp)
)
(setq tmp (getint (strcat "\nIncremento <" (itoa numInc) ">: ")))
(if tmp
(setq numInc tmp)
)
(if (= 0.0
(cdr (assoc 40 (tblsearch "style" (getvar "textstyle"))))
)
(progn
(initget (+ 1 2))
(setq numHt (getdist "\nAltezza testo : "))
(setq rotHt (getdist "\nRotazione testo : "))
)
)
(while (setq pikPnt (getpoint
(strcat
"\nPunto di inserimento numero "
(itoa numVal)
": "
)
)
)
(setq
numValStr (itoa numVal)
numVal (+ numVal numInc)
)
(command "._text" "mc" pikPnt)
(if numHt
(command numHt)
)
(command rotHt numValStr)
)
(setvar "cmdecho" oldecho)
(princ)
)
magh :
ciao raf, ormai sono senza parole....ma hai dei limiti oppure puoi tutto?? Salutoni e buon lavoro!!
PS hai notizie di Simone?? Il più assiduo è sparito da un po'....
raf :
Simone sarà impegnato ma sono sicuro che appena possibile tornerà a ravvivare il forum.
Per quanto riguarda il file lisp non l'ho fatto io. il problema è stato ricordare dove l'avevo archiviato.

Buon lavoro anche a te !
ciao :)

ciao
carmelo :
ciao, ho provato a "sganmare" ancheio il lisp del grande Faf.
(ho slavato il file conestensione lsp e caricato con appload
questo è il messaggio che appare
Command: ; error: bad argument type: numberp: nil
dove ho sbagliato???
ciao
carmelo :
....scusate gli enormi errori di battitura
Grande RAF!!!!!!
raf :
se il caricamento del lisp è regolare deve apparire la scritta C:INU
matty :
Una sola parola : UNICO.
Oltre 1800 punti di misura di "passo e contatto"....erano un incubo. La Pasqua è salva.
robbo :
...mi accorgo che pur sapendo disegnare sia in 2d 3d e renderizzare in modo sufficiente per i miei bisogni da studente mi accorgo che ci sono veri e propri meandri nascosti nel mondo del cad...ad esempio mi sapreste spiegare cosa è un .lisp e che genere di macro si possono creare...grazie!!
robbo :
scusate per il doppio"mi accorgo"....
raf :
per farsi un'idea delle le potenzialità di AutoLISP guarda in questo link

http://webspace.omniway.sm/fbattistini/indexhome.htm
MAK74 :
Questa è una mia creazione

Molto artigianale

questo numera con tre cifre quindi se inserisci 1 scrive 001

(defun c:numerazione()
(setq htex (getstring "Inserisci altesta testo: "))
(setq c (getstring "Inserisci numero di partenza: "))
(setq punto (getpoint "Seleziona un punto interno alla superficie: "))
(WHILE (/= c NIL) ;loop generale
(if (< (atoi c) 99)
(progn
(if (< (atoi c) 9)
(progn
(command "_text" punto htex "" c)
(setq c (strcat "00" (itoa (1+ (atoi c)))))
(setq punto (getpoint "Inserisci un punto ineterno alla superficie:"))
);progn
(progn
(command "_text" punto htex "" c)
(setq c (strcat "0" (itoa (1+ (atoi c)))))
(setq punto (getpoint "Inserisci un punto ineterno alla superficie:"))
);progn
);if
);progn
(progn
(command "_text" punto htex "" c)
(setq c (itoa (1+ (atoi c))))
(setq punto (getpoint "Inserisci un punto ineterno alla superficie:"))
);progn
);if
(if (= punto nil) (= VI NIL))
)
)

questo invece scrive S01

(defun c:numerazsem()
(setq htex (getstring "Inserisci altesta testo: "))
(setq c (getstring "Inserisci numero di partenza: "))
(setq punto (getpoint "Seleziona un punto interno alla superficie: "))
(WHILE (/= c NIL) ;loop generale
(if (< (atoi c) 99)
(progn
(if (< (atoi c) 9)
(progn
(command "_text" punto htex "" c)
(setq c (strcat "S" "0" (itoa (1+ (atoi (SUBSTR c 3))))))
(setq punto (getpoint "Inserisci un punto ineterno alla superficie:"))
);progn
(progn
(command "_text" punto htex "" c)
(setq c (strcat "S" (itoa (1+ (SUBSTR c 3)))))
(setq punto (getpoint "Inserisci un punto ineterno alla superficie:"))
);progn
);if
);progn
(progn
(command "_text" punto htex "" c)
(setq c (itoa (1+ (atoi c))))
(setq punto (getpoint "Inserisci un punto ineterno alla superficie:"))
);progn
);if
(if (= punto nil) (= VI NIL))
)
)


Questo invece scrive C01
(defun c:numerazcop()
(setq htex (getstring "Inserisci altesta testo: "))
(setq c (getstring "Inserisci numero di partenza: "))
(setq punto (getpoint "Seleziona un punto interno alla superficie: "))
(WHILE (/= c NIL) ;loop generale
(if (< (atoi c) 99)
(progn
(if (< (atoi c) 9)
(progn
(command "_text" punto htex "" c)
(setq c (strcat "Q" "0" (itoa (1+ (atoi (SUBSTR c 3))))))
(setq punto (getpoint "Inserisci un punto ineterno alla superficie:"))
);progn
(progn
(command "_text" punto htex "" c)
(setq c (strcat "Q" (itoa (1+ (atoi (SUBSTR c 3))))))
(setq punto (getpoint "Inserisci un punto ineterno alla superficie:"))
);progn
);if
);progn
(progn
(command "_text" punto htex "" c)
(setq c (itoa (1+ (atoi c))))
(setq punto (getpoint "Inserisci un punto ineterno alla superficie:"))
);progn
);if
(if (= punto nil) (= VI NIL))
)
)




Spero di esservi stato utile

Ciao
Avvisami quando qualcuno risponde
Non mandarmi più avvisi

Se vuoi essere avvisato quando qualcuno interviene in questa discussione, indica un nome e il tuo indirizzo e-mail.