Newsgroup: it.comp.software.cad
Titolo: Lispettino che sposta ucs e specchia

Ciao a tutti.
Spero che qualcuno di voi mi possa aiutare a creare un lispettino, perche'
non ne sono capace...:-(
Vi spiego cosa dovrebbe fare. Nel dwg ho 2 line verticali AC e BD(proprio
lungo l'asse z) ed esse non sono (in generale nello stesso piano). Dovrei
mettere l'ucs nel piano determinato dalle 2 rette (lo posso fare con ucs
per 3 punti selezionando CDA) e poi specchiare la linea AB rispetto a CD.
A_______B
 |     |
 |     |
C|     |D
Si puo' fare? Spero di si, perche' altrimenti ci invecchio...
Grazie a chiunque voglia aiutarmi?
-- 
Ciao,
Ste.
______________________________________________
*Visita il mio sito*: 
http://www.feonast.tk
Per rispondere in privato togli l'inutile! ;-)

In data mar, 21.dicembre.2004 11.04.20, *$tefano* ha scritto:
[CUT]
Il disegno e' venuto sballato. Da qui si vede meglio:
http://feonast.altervista.org/dis.jpg


Brutale, senza controlli:
;;;-----------------------------
;;; assumo che inizialmente siamo sull'UCS globale...
(defun c:mir ()
(setq p1(getpoint "\n Seleziona il primo punto dell'asse mirror: "))
(setq p2(getpoint "\n Seleziona il secondo punto dell'asse mirror: "))
(setq L(entsel "\n Seleziona la linea da specchiare: "))
(setq px(cdr(assoc 10 (entget (car L)))))
(command "_ucs" "3p" p1 p2 px "")
(command "_mirror" (car L) "" (trans p1 0 1) (trans p2 0 1) "_n")
(command "_ucs" "" "")
)
;;;-----------------------------
Ciao Claudio
-- 
--
"$tefano" <geoste...@SPAZZATURAdespammed.com.invalid> ha scritto nel
messaggio news:coc0ote1eikn$.dlg@news.573f4n0.it.invalid...


 ;;;-----------------------------
Sarebbe perfetta, solo che non mi specchia la linea rispetto l'asse
selezionato, ma ci aggiunge una (1) unita' di disegno. Si puo' modificare?
Grazie per l'aiuto...


Basta cambiare la risposta finale al comando mirror, cioè quando viene
richiesto all'utente di cancellare o meno l'entità di partenza.
Ti allego il lisp corretto (sostituito "_n" con "_y"):
;;;-----------------------------
;;; assumo che inizialmente siamo sull'UCS globale...
(defun c:mir ()
(setq p1(getpoint "\n Seleziona il primo punto dell'asse mirror: "))
(setq p2(getpoint "\n Seleziona il secondo punto dell'asse mirror: "))
(setq L(entsel "\n Seleziona la linea da specchiare: "))
(setq px(cdr(assoc 10 (entget (car L)))))
(command "_ucs" "3p" p1 p2 px "")
(command "_mirror" (car L) "" (trans p1 0 1) (trans p2 0 1) "_y")
(command "_ucs" "" "")
)
;;;-----------------------------
Ciao Claudio
-- 
--
"$tefano" <geoste...@SPAZZATURAdespammed.com.invalid> ha scritto nel
messaggio news:7obj1szs...@news.573f4n0.it.invalid...


 Ti allego il lisp corretto (sostituito "_n" con "_y"):
mmm..mi sa che non ci siamo capiti...il problema non e' che mi lascia la
copia dell'oggetto originale (che deve restare), ma il fatto che non
specchia come deve.
Esempio:
la riga da specchiare e' in x=0, i punti che generano l'asse del mirror
sono in x=50. L'oggetto specchiato adesso viene posto in x=150, mentre
dovrebbe essere in x=100.
Grazie!


Il lisp fa quello che faresti manualmente, te lo spiego brevemente:
1) siccome ha bisogno dei 3 punti per posizionare l'UCS chiede all'utente il
primo punto dell'asse mirror (che diventerà l'origine del nuovo UCS), il
secondo punto (che sarà il punto sull'asse X positivo) ed infine estrae
dalla linea che si vuole specchiare il punto iniziale (che diventerà il
punto sull'asse Y positivo);
2) questi 3 punti memorizzati, hanno delle coordinate che si riferiscono
all'UCS attivo prima del movimento (che ho supposto essere quello globale),
per cui quando vado ad eseguire il mirror questi punti vanno traslati nel
nuovo UCS (funzione trans).
Ho provato ad eseguire il lisp con la linea e i punti tutti sul piano xy
(linea: <0,0,0> <0,33,0>) (p1: <50,0,0>) (p2: <50,33,0>) e mi crea una nuova
linea <100,0,0> <100,33,0>, cioè in modo corretto.
Se vuoi spediscimi la tua situazione in email.
Ciao Claudio
-- 
--
"$tefano" <geoste...@SPAZZATURAdespammed.com.invalid> ha scritto nel
messaggio news:e9v8d4h9...@news.573f4n0.it.invalid...


 nuovo UCS (funzione trans).
Ho risolto. Il problema forse non era nel lisp. Infatti selezionando i
punti p1 e p2 con lo snap end funziona correttamente, mentre selezionandoli
con lo snap mid non funzia...bho...
Grazie per l'aiuto e Buon Natale!


un'altra cosa...
Dove hai studiato per imparare il lisp?


L'ho appreso sulle guide ufficiali di Autodesk (quelle allegate al
software).
Negli anni ho imparato che non è necessario sapere utilizzare tutte le
funzioni ma sapere che esistono.
Buon Natale anche a te e a tutto il ng.
Ciao Claudio
-- 
--
"$tefano" <geoste...@SPAZZATURAdespammed.com.invalid> ha scritto nel
messaggio news:12ljwxxq...@news.573f4n0.it.invalid...
