Tratteggio definito dall'Utente

Angelo2449

Utente Junior
Professione: Pensionato
Software: Autocad
Regione: Lombardia
Salve a tutti,
ho scritto un programmino per tratteggiare un'area definita da una figura.
Vorrei che il tratteggio fosse inclinato di 50g e spaziato di 0.1 mt., il mio comando non funziona così!
Aiuto!
Grazie.
Codice:
(defun C:ROSSOTRATT (/ PuntoIns CtrlLayer)

    (setq PuntoIns (getpoint "\nClicca il Punto interno"))

    (if PuntoIns
        (progn
            (setq CtrlLayer (tblsearch "LAYER" "Rosso"))
            (if (= CtrlLayer nil)
                    (command "_layer" "_new" "Rosso" "_color" "_red" "Rosso" "")   
            );;if 

        (command "_bhatch" "_pr" "ansi31" 0.1 100 PuntoIns "")  ;;<<<<<<<<!!!!!!!!!!
        (command "_change" "_last" "" "_p" "_layer" "Rosso" "")
        );;progn
    );;if

    );;defun fine ROSSOTRATT
 

rpor66

Utente Standard
Professione: Programmatore
Software: AutoCad, CadWorx, Lisp, VBA. YouTube: roberto portuese
Regione: Sicilia
Per avere la spaziatura dell'ansi31 pari a 1, moltiplica la scala per 0.31496
L'angolo, essendo inclinato di 45°, sarà 50-45=5, hatch inclinato di 50° in senso antiorario.
 

Angelo2449

Utente Junior
Professione: Pensionato
Software: Autocad
Regione: Lombardia
Grazie rpor66,
avevo notato che, inserendo un valore di scala, si ottiene un risultato pari circa a un terzo, il tuo post me lo conferma.
Per quanto riguarda l'angolo, eseguo la lettura della variabile "DIMAUNIT" e calcolo l'angolo corrispondente al formato trovato.
C'è un'altra cosa che ti vorrei chiedere :
vorrei realizzare delle icone che si comportino, in Autocad, come dei tasti di una tastiera che scrive nella riga di comando.
In una vecchissima versione di Autocad, avevo già realizzato questi tasti, eravamo ancora nell'era del DOS, non mi ricordo come c'ero riuscito.
Grazie.
 

rpor66

Utente Standard
Professione: Programmatore
Software: AutoCad, CadWorx, Lisp, VBA. YouTube: roberto portuese
Regione: Sicilia
tasto A: devi crearti i file .bmp della lettera, avviato il comando cui, crea il nuovo comando, magari lo chiami TastoA, a cui assegnerai la bmp e inserisci A come comando
 

Angelo2449

Utente Junior
Professione: Pensionato
Software: Autocad
Regione: Lombardia
I tasti .bmp li ho già creati ma come dico al programma di scrivere nella riga di comando?
 

rpor66

Utente Standard
Professione: Programmatore
Software: AutoCad, CadWorx, Lisp, VBA. YouTube: roberto portuese
Regione: Sicilia

Angelo2449

Utente Junior
Professione: Pensionato
Software: Autocad
Regione: Lombardia
Grazie rpor66,
come ti già detto, il mio problema non sta nella realizzazione delle icone (vedi immagine allegata) ma nel programmino .lsp che dovrebbe scrivere nella riga di comando.
Ho provato con l'istruzione >prompt < ma non ottengo il risultato sperato :
Codice:
     (defun C:C1 (/)
        (prompt "1")
    );;defun
Grazie.Cattura.JPG
 

rpor66

Utente Standard
Professione: Programmatore
Software: AutoCad, CadWorx, Lisp, VBA. YouTube: roberto portuese
Regione: Sicilia
(command "1")
 

Angelo2449

Utente Junior
Professione: Pensionato
Software: Autocad
Regione: Lombardia
Usando il codice :
Codice:
    defun C:C1 (/)
        (command "1")
    );;defun
ottengo "1 comando sconosciuto"
 

rpor66

Utente Standard
Professione: Programmatore
Software: AutoCad, CadWorx, Lisp, VBA. YouTube: roberto portuese
Regione: Sicilia
usa il metodo nella risposta n° 6, l'ho provata e funziona
 

Angelo2449

Utente Junior
Professione: Pensionato
Software: Autocad
Regione: Lombardia
Scusa ma ho provato ad applicare il metodo n. 6 ma ottengo sempre comando sconosciuto.
Il manuale di Autolisp riporta che il comando che scrive sulla linea di comando è > prompt < ma il carattere stampato non rimane nella riga ma passa subito nella finestra attivabile col tasto > F2 <.
Il fine del comando che vorrei realizzare consiste nell'immissione di valori numerici a fronte di tale richiesta (da programma) o di, per esempio, una "S" a fronte delle richiesta di > Seleziona < nel comando > Ritaglia Immagine < o di una > R < nel comando > Scala <.

Cattura.JPG
 

Angelo2449

Utente Junior
Professione: Pensionato
Software: Autocad
Regione: Lombardia
Ok ho capito come funziona!
Ho riprovato il metodo n. 6 e funziona, faccio un esempio :
Attivo il comando > Scala <, seleziono l'oggetto da scalare, per inserire il fattore di scala, clicco il pulsante > 2 < creato col metodo n. 6 e l'oggetto raddoppia di dimensioni.
La cosa non funziona nel caso io voglia inserire il valore, per esempio, > 2.456 < in quanto viene preso in considerazione solo il primo valore (2).
 

rpor66

Utente Standard
Professione: Programmatore
Software: AutoCad, CadWorx, Lisp, VBA. YouTube: roberto portuese
Regione: Sicilia
non 2.456 ma 2,456
 

Angelo2449

Utente Junior
Professione: Pensionato
Software: Autocad
Regione: Lombardia
Il comando > Scala < accetta sia il punto che la virgola come separatore decimale.
Cosa inserisco per ottenere l'effetto > Enter < ?
 

rpor66

Utente Standard
Professione: Programmatore
Software: AutoCad, CadWorx, Lisp, VBA. YouTube: roberto portuese
Regione: Sicilia
il punto e virgola ;
 

Angelo2449

Utente Junior
Professione: Pensionato
Software: Autocad
Regione: Lombardia
Grazie rpor66,
le icone relative a "S" "N" "R" "Enter" funzionano perfettamente, rimane il problema dell'input di numeri complessi (23.456).
Grazie.