Newsgroup: it.comp.software.cad
Titolo: triangolo e altro (grazie)

buon giorno
e buon lavoro/studio
su quanto consigliato sul n.g. ho reperito il file lsp sottoriportato, ho 
provato a inserire
i dati richiesti, ma del triangolo niente  dove sbaglio?  (C'č DA SETTARE 
QUALCOSA PRIMA?)
GRAZIE  anche per i precedenti aiuti
maurizio
(Prompt "Caricamento utility TRIANGOLO ......")
(defun C:TRIANGOLO (/ p0 la lb lc sp sp1 sp2 sp3 sp4 area alt ax x0 y0 x1 x2 
y2 p1 p2)
       (setvar "CMDECHO" 0)
       (setq  p0 (getpoint "\nPunto iniziale sinistro :")
              la (getdist "\nLunghezza lato a :")
              lb (getdist "\nLunghezza lato b :")
              lc (getdist "\nLunghezza lato c :")
        );fine inserimento dati
        (setq sp   (/ (+ la (+ lb lc)) 2)
              sp1  (- sp la)
              sp2  (- sp lb)
              sp3  (- sp lc)
              sp4  (* sp (* sp1 (* sp2 sp3)))
              area (sqrt sp4) ; area triangolo
              alt  (/ (* area 2) la) ; altezza rispetto al lato a
              ax   (sqrt (- (expt lc 2) (expt alt 2))) ; distanza 
dell'altezza da p0
              ); fine calcolo altezza e sua distanza da p0
        (setq x0   (car p0)   ; estrae la coordinata x
              y0   (cadr p0)  ; estrae la coordinata y
              x1   (+ x0 la)
              x2   (+ x0 ax)
              y2   (+ y0 alt)
              p1   (polar p0 0 la)
              p2   (list x2 y2)
        ); fine calcolo coordinate punto p3
        (COMMAND "PLINEA" P0 "LA" "0" "0" P1 P2 "CH")
        (setvar "CMDECHO" 1)
        (gc) (princ)
        ); defun
scusate se approfitto del vostro sapere e della vostra pazienza, ma in 
questi giorni
ho scoperto l'esistenza dei file .dlc  (abbinati ai .lsp)   potete 
illuminarmi  in tal senso?
GRAZIE   GRAZIE
maurizio

 
Prego Prego
Maci

(autocad 14 (dimenticavo))
vedo nella barra degli strumenti due righe:
unknow command "0" press F1 for help
unknow command "CH"  press F1 for help
ciao
grazie
"Maci" <maci...@pippo.pip> ha scritto nel messaggio 
news:31_Pf.1201$nz4...@tornado.fastwebnet.it...


 e buon lavoro/studio



http://xoomer.virgilio.it/lwcon/autolisp/autolisp.htm
http://xoomer.virgilio.it/lwcon/autolisp/triang.zip
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 e buon lavoro/studio



http://www.jefferypsanders.com/autolisp_DCL.html


Aggiungo anch'io un link interessante:
http://wiki.news.nic.it/QuotarBene
:-)))
Ciao
Maci

 unknow command "CH"  press F1 for help
Hai AutoCAD in inglese mentre il lisp è in italiano
sostituisci la riga:
 (COMMAND "PLINEA" P0 "LA" "0" "0" P1 P2 "CH")
con:
 (COMMAND "_PLINE" P0 "_W" "0" "0" P1 P2 "_C")
scritta in linguaggio internazionale
-- 
Massimo Ghio
un 9 al posto di un 8 per rispondermi

 
Ma l'errore ti compare al caricamento della funzione o dopo aver 
lanciato il comando TRIANGOLO?
La versione è italiana?
Prova a sostituire la quart'ultima riga con questa:
         (COMMAND "PLINEA" P0 P1 P2 "CH")
Ciao
Maci

 La versione è italiana?
oooops! Domanda stupida. Se ti risponde "unknown command" evidentemente 
non lo è. :-((((
Mi stupiva il fatto che non ti restituisce
"unknown command" anche per "PLINEA"; ma forse non lo vedi alla riga di 
comando; prova a fare un F2 e ti evidenzierà anche quell'errore.
Ovviamente la soluzione è quella di Massimo Ghio.
Ciao
Maci

Prova questo, c'è qualche controllo di errore in più.
(defun C:Ale_Triang3Sides ( / Pnt001 Pnt002 SidLn1 SidLn2
                              SidLn3 HlfPer AngRd1 AngRdt)
  (and
    (not (initget 9))
    (setq Pnt001 (getpoint "\nPrimo punto del primo lato: "))
    (not (initget 47))
    (setq SidLn1 (getdist "\nLunghezza del primo lato: " Pnt001))
    (not (initget 41))
    (setq
      AngRd1 (getorient "\nAngolo del primo lato: " Pnt001)
      Pnt002 (polar Pnt001 AngRd1 SidLn1)
    )
    (not (grdraw Pnt001 Pnt002 -1 1))
    (not (initget 47))
    (setq SidLn2 (getdist "\nLunghezza del secondo lato: " Pnt001))
    (not
      (while
        (not
          (and
            (< SidLn3 (+ SidLn1 SidLn2 ))
            (> SidLn3 (abs (- SidLn1 SidLn2)))
          )
        )
        (initget 47)
        (setq SidLn3 (getdist "\nLunghezza del terzo lato: " Pnt002))
        (if
          (or
            (> SidLn3 (+ SidLn1 SidLn2 ))
            (< SidLn3 (abs (- SidLn1 SidLn2)))
          )
          (alert "Non esiste un triangolo con questo lato.")
        )
      )
    )
    (setq
       HlfPer (/ (+ SidLn3 SidLn1 SidLn2) 2.0)
       AngRdt (sqrt
                (/
                  (* (- HlfPer SidLn1 ) (- HlfPer SidLn2))
                  (* HlfPer (- HlfPer SidLn3))
                )
              )
    )
    (not
      (command
        "_.PLINE" Pnt001 Pnt002
        (polar Pnt001 (+ AngRd1 (* 2.0 (atan AngRdt))) SidLn2) "_C"
      )
    )
    (grdraw Pnt001 Pnt002 -1 1)
  )
  (princ)
)
-- 
----------------------------------------------------------
Marc'Antonio Alessi - 
http://xoomer.virgilio.it/alessi
Per AutoCAD:
- Travi 2D: disegno automatico travi e pilastri in C.A.,
  relativi ferri e staffe, report peso ferri e C.A.
  su Excel
- Calcolo automatico aree su planimetrie: report su Excel
  per locale altezza, piano con descrizioni locali e piani
- Elaborazione dati from/to Excel
- Librerie manufatti in assonometria
- Autolayers: gestione automatica dei layers
- Elaborazioni e stampe multiple e automatiche
- Parametrico 2D, Viterie 2D/3D, Esplosi 2D/3D
- AutoGroups: gestione automatica gruppi di layers
- SetUp del disegno con gestione automatica DimStyles
- Conversione automatica files Inventor a DWG e viceversa
  anche senza avere Inventor installato
- ...
----------------------------------------------------------

Questa è un po' "meglio":
; Marc'Antonio Alessi, Italy - 
http://xoomer.virgilio.it/alessi
;
; Function: C:ALE_Triang3Sides
;
; Version 1.00 - 10/03/2006
;
(defun C:ALE_Triang3Sides ( / Pnt001 Pnt002 SidLn1 SidLn2 SidLn3
                              HlfPer AngRd1 AngRdt FlgLen)
  (and
    (not (initget 9))
    (setq Pnt001 (getpoint "\nPrimo punto del primo lato: "))
    (not (initget 47))
    (setq SidLn1 (getdist "\nLunghezza del primo lato: " Pnt001))
    (not (initget 41))
    (setq
      AngRd1 (getorient "\nAngolo del primo lato: " Pnt001)
      Pnt002 (polar Pnt001 AngRd1 SidLn1)
      FlgLen T
    )
    (not (grdraw Pnt001 Pnt002 -1 1))
    (not (initget 47))
    (setq SidLn2 (getdist "\nLunghezza del secondo lato: " Pnt001))
    (not
      (while FlgLen
        (initget 47)
        (setq SidLn3 (getdist "\nLunghezza del terzo lato: " Pnt002))
        (if
          (or
            (> SidLn3 (+ SidLn1 SidLn2 ))
            (< SidLn3 (abs (- SidLn1 SidLn2)))
          )
          (alert "Non esiste un triangolo con questo lato! ")
          (setq FlgLen nil)


 Maci 

>
tempo fa ho realizzato degli appunti per mio uso personale sull'argomento.
Se ti interessano te li posso inviare.
Saluti
G.B.Francesconi