Vai al contenuto
Treddi Krueger

Creare comando personalizzato "Ruota asse X +90"

Recommended Posts

Ciao a tutti,
siccome nella modellazione in Autocad mi capita molto spesso di ripetere un determinato comando, vi chiedo gentilmente, cosa inserire alla voce MACRO.

Vorrei fare una icona che cliccandola mi desse direttamente la rotazione di 90° su uno specifico asse, esempio "ruota +90° su asse X".
Qualcosa tipo "^C^C_rotate3d ????"
Grazie e scusate la difficoltà nella descrizione.

 

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
Inviata (modificato)

Questa macro dovrebbe funzionare

^C^C^P(rotate3d (ssget) "x" (getpoint "Specificare un punto sull'asse X") 90) ^P

 

Avresti però problemi con gli undo, come macro del pulsante ti consiglio di richiamare un lisp tipo questo:

 

(defun c:r3x ( / sel )
    (vl-load-com)
    (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
    (if (and
            (princ "\nSELEZIONARE GLI OGGETTI DA RUOTARE")
            (setq sel (ssget))
        )
        (rotate3d sel "x" (getpoint "Specificare un punto sull'asse X") 90)
    )
    (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
    (princ)
)

 

 


Modificato da GP

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Ho notato questa cosa usando il lisp:
se inizio da un file vuoto, creo un parallelepipedo,
carico il lisp
richiamo il lisp, mi da errore sopo la selezione.
Se invece, prima scrivo "rotate3d"  lo avvio e lo annullo 

poi richiamo il lisp col comando, allora ruota senza problemi.
E' come se non conoscesse il comando rotate3d (la mia versione è in italiano)
Allego screenshot
Grazie

problema comando.jpg

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
3 ore fa, Treddi Krueger ha scritto:

Grazie GP, non sapevo che dal pulsante potessi richiamare un lisp... intanto che cerco come fare, posso chiederti di indicarmi il metodo che ritieni corretto?
Grazie  ancora!

 

 

Dopo che hai salvato il codice sopra con nome r3x.LSP puoi impostare la macro di menu in base a dove posizioni il file:

 

se posizioni il file in una cartella letta dal percorso di AutoCAD (Opzioni\File\Percorso di ricerca dei file di supporto)

^C^C(load "r3x") r3x

 

se posizioni il file in una cartella qualunque, ad es. D:\pippo

^C^C(load "D:/pippo/r3x") r3x

 

se aggiungi il file al gruppo di avvio (Appload -> Contenuto)

^C^Cr3x

 

nota: nel caricamento l'estensione del file (LSP) può essere omessa.

 

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
3 ore fa, Treddi Krueger ha scritto:

Ho notato questa cosa usando il lisp:
se inizio da un file vuoto, creo un parallelepipedo,
carico il lisp
richiamo il lisp, mi da errore sopo la selezione.
Se invece, prima scrivo "rotate3d"  lo avvio e lo annullo 

poi richiamo il lisp col comando, allora ruota senza problemi.
E' come se non conoscesse il comando rotate3d (la mia versione è in italiano)

 

 

ROTATE3D non è un comando AutoCAD, ma una funzione contenuta, tra le altre, in GEOM3D.ARX

Per questo motivo se la richiami dalla riga di comando funziona, in quanto viene caricata la funzione, che poi "gira" anche al successivo lancio del lisp.

Per ovviare puoi inserire questa stringa nella seconda riga di codice:

(or rotate3d (arxload "geom3d"))

😎

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora

  • Navigazione recente   0 utenti

    Non ci sono utenti registrati da visualizzare in questa pagina.

×