Topograf Online

Software => LISP, AutoLISP => Subiect creat de: monge din Feb 25, 2008, 09:56 PM

Titlu: lisp
Scris de: monge din Feb 25, 2008, 09:56 PM
As vrea sa aflu daca se poate face animatie cu AutoCAD si AutoLISP si daca da, cam ce ar trebui sa caut. Va multumesc!
Titlu: Re: lisp
Scris de: catalinutz din Mar 04, 2008, 08:30 PM
Da se poate, mai rudimentara dar se poate. Cat despre AutoLISP prima carte despre Lispuri te va invata cum  :D
Titlu: Re: lisp
Scris de: catalinutz din Mar 18, 2008, 10:45 AM
monge uite poate o sa te ajute asta
este o rutina de lisp mai rudimentara dar este un inceput.

(DEFUN C:ANIM2()
  (SETQ FI 0)
  (WHILE (<= FI (* 2.0 PI))
    (COMMAND"CIRCLE"
       (LIST (* 10.0 (COS FI)) (* 10.0 (SIN FI)))
             (+ 10.0 (* 8.0 (SIN FI)))
    )
    (SETQ FI (+ FI (/ PI 180.0)))
    (COMMAND"ERASE" "L" "";)
  )
;  (COMMAND"COLOR" 5)
;  (COMMAND"CIRCLE" "" "";)
;       (LIST (* 10.0 (COS FI)) (* 10.0 (SIN FI)))
;             (+ 10.0 (* 8.0 (SIN FI)))
)


boon asa, dupa ce ai scris rutina asta dai in commandline appload ANIM2 si iata o animatie rudimentara dar daca vrei sa faci ceva mai complex trebuie sa iti bati capul cu lispul  :nod:
Titlu: Re: lisp
Scris de: dtoni din Mar 18, 2008, 08:53 PM
pentru cei care cunosc autolisp
 de ce  unele lispuri nu imi ruleaza pe versiunile mai noi de autocad?
si cum se poate rezolva acesta problema
Titlu: Re: lisp
Scris de: Kaleh din Mar 19, 2008, 04:14 PM
Se poate intimpla ca un lisp sa dea de setari care nu-i plac (ortho = on, units = grad, etc.). Multe sunt facute pe standard, cu orientare East, counter clockwise, etc. Daca tu ai setat X pe nord, nu va lucra...
Titlu: Re: lisp
Scris de: Kaleh din Mar 19, 2008, 04:16 PM
Poti sa deschizi AutoLisp, sa incarci lispul respectiv, si sa il executi pe pasi, sa vezi unde se opreste (si de ce...)
Titlu: Re: lisp
Scris de: set4 din Mar 19, 2008, 04:34 PM
s-ar putea ca in textul sursa sa fie introduse comenzi de AutoCad

Ex (command "line" .....) iar acestea sa difere ca parametri de la o versiune la alta
Titlu: Re: lisp
Scris de: dtoni din Mar 20, 2008, 09:53 AM
multumesc pentru raspunsuri
Titlu: Re: lisp
Scris de: John Doe din Oct 09, 2008, 03:11 PM
Sau, daca nu e criptat, deschide lispul si vezi ce variabile de sistem iti modifica. Daca nu stii ce e vreuna, da-i comanda normal si vezi ce scrie la cmdline.
Consulta si helpul, gasesti multe pe-acolo. Sau, cel putin, asa fac eu daca nu stiu ceva.

Spor !
Titlu: Re: lisp
Scris de: John Doe din Oct 11, 2008, 01:36 PM
set4:
De acord, parametrii sau tipul de datele de care are are nevoie un LISP pot sa difere mult, functie de versiunea AutoCAD si versiunea de interpretor LISP pe care o are implementata. S-ar putea lucra direct cu VBA, VBX, ADS, etc. da' asta presupune niste cunostinte de limbaj C. Si nu e prea simplu.

Mi s-a intâmplat ca un LISP sa aiba inclusa o comanda obisnuita, gen (command "line .....";), iar o versiune de LISP sa aiba nevoie de de punctul de start si cel de final sub forma de liste, alta sub forma de sir cu space între X si Y, iar la alta versiune a mers cam asa:
(command "line" (command pct1) (command pct2))

In orice caz, multe poti face cu LISP-ul si limbajul DCL (ala e simplu).
Parerea mea.

Modificat de John Doe (11-10-2008 10:37:11)
Titlu: Re: lisp
Scris de: vespasy din Iul 08, 2009, 03:34 AM
ma puteti ajuta si pe mine sa pot invata sa fac un LISP?
unde pot gasi ceva sa pot invata?
Titlu: Re: lisp
Scris de: John Doe din Iul 08, 2009, 11:18 AM
Te-as ajuta, dar nu e prea simplu la distanta.
Eu am invatat cel mai mult din cartea "AutoLISP - manual de programare" , de prof. univ. dr. Constantin Stancescu, editura FAST 2000, Bucuresti 1996. Nu stiu daca o mai poti gasi. Dar numai cine cauta gaseste.

Incearca la http://www.noitopografii.ro/
Titlu: Re: lisp
Scris de: John Doe din Iul 10, 2009, 11:22 AM
Intrebasem mai demult daca nu are cineva o carte sau manual despre limbajul DCL (Dialog Control Language) pentru LISP. Nu avea nimeni, dar acum am gasit eu - in lb. engleza. Daca are cineva nevoie sa-mi spuna.
Pentru cine nu e la curent - la ce se foloseste DCL:

(http://topograf.3xforum.ro/img/pics/topograf.3xforum.ro/ok_8948.jpg)
533/337px 45.7KB
Titlu: Re: lisp
Scris de: DAN.ARBA din Oct 31, 2010, 05:05 PM
Ai dreptate,John Doe, e simplu DCL-ul ,insa dialogul dintre DCL si autolisp e complicat    :dinti:

Modificat de DAN.ARBA (31-10-2010 15:06:10)
Titlu: Re: lisp
Scris de: John Doe din Oct 31, 2010, 05:53 PM
Nu e chiar asa de greu...
Prima data ii spui ce vrei: ia incarca bre caseta aia... (load_dialog)
Pe urma, zici asa: vezi ca daca o sa apas aici in caseta vreau sa faci asa, daca apas aici vreau asa (action_tile)
Si acuma porneste frate caseta, eu apas pe ce am nevoie si tu fa cum ti-am zis... (start_dialog).

E greu? nu mi se pare. Chestia e ca calculatorul face nu ce vrei tu, ci ceea ce-i spui sa faca, si asta al dracului de exact... cel putin eu asa asa am vazut la al meu.
Titlu: Re: lisp
Scris de: Corvinus din Dec 08, 2010, 01:55 PM
Ce simplu ar fi fost daca era dcl-u si lispu in limbaj de cartier:
(incarca_frate_fialog)
(actioneaza_frate_asta)
(porneste_frate_dialog)
 :zzz:
Dar e simplu in principiu vb ta ii zici ce sa faca si face e pe principiul GIGO (garbage in garbage out) deci daca ii dai gunoi gunoi iti scoate nu poate scoate aur.

Modificat de Corvinus (08-12-2010 11:55:59)
Titlu: Re: lisp
Scris de: John Doe din Dec 09, 2010, 10:31 AM
Ca tot am trecut pe-aici... va spun ce am patit ieri, poate o fi de folos si altora:
Voiam sa scriu un multiline text din LISP, cu o anumita marime, aliniere, si spatiat la 1.5 randuri. Deci îi scriu linia:

(command "mtext" '(10 20) "J" "TL" "L" "A" "1.5x" "H" 2.5 '(20 30) textline "")

Si observ ca nu-mi spatiaza liniile nici de-al dracului... tot la un rând scrie. Am incercat si cu "Exactly", cu tot felul de valori absurde, nimic. Dupa vreo ora, imi dau seama ca daca îi declar prima data spatierea si pe urma inaltimea textului nu-si calculeaza spatiile dintre randuri, care sunt functie de inaltimea literelor. Dar daca la linia de comanda scriu prima data inaltimea textului si dupa aia spatierea merge:

(command "mtext" '(10 20) "J" "TL"  "H" 2.5 "L" "A" "1.5x" '(20 30) textline "")
Titlu: Re: lisp
Scris de: advex din Dec 20, 2010, 03:02 PM
Referitor la intrebarea initiala privind animatia in Autocad cu autolisp va semnalez codul pentru o astfel de aplicatie.

(http://img151.imageshack.us/img151/946/4ball.gif)
sursa: http://www.theswamp.org

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; by [email protected] South China University of Technology            ;;;
;; Ball collide Test V0.1  2010.12.20                                  ;;;
;; Base on momentum theorem and theorem of kinetic energy              ;;;
;; Bug: sometimes the balls are sticky                                 ;;;
;; Will be modify in the next version                                  ;;;
;; Before test, please open a new dwg                                  ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun c:test( / a b clst clst1 i j leng mlst newcenter res rlst ss velo velolst x)
  (setq velo 20 a 2000 b 1500)
  (makerecandcircle a b)
  (setq ss (std-sslist (ssget)) leng (length ss)) 
  (foreach x ss
    (setq x (entget x)
          clst (append clst (list (cdr (assoc 10 x))))
          rlst (append rlst(list (cdr (assoc 40 x))))
          mlst (append mlst (list (* (cdr (assoc 40 x)) (cdr (assoc 40 x)))))
          velolst (append velolst (list (list (- (random-n velo) (/ velo 2.0)) (- (random-n 10) (/ velo 2.0)))))
    )
  )
  (repeat 1500
    (setq i 0)
    (foreach x ss
      (reflect-change i 0 a 0 b)
      (setq j (1+ i))
      ; the next step will change all the veolist
      (repeat (- leng i 1)
(if
  (< (distance (nth i clst) (nth j clst)) (+ (nth i rlst)(nth j rlst)))
  (setq res (updatevelolst (nth i clst) (nth j clst) (nth i velolst) (nth j velolst) (nth i mlst) (nth j mlst))
velolst (SubstNth (car res) i velolst)
velolst (SubstNth (cadr res) j velolst)
  )
)
(setq j (1+ j))
      )
      (setq i (1+ i))
    )
   ; the next step will change all the clist 
    (setq clst1 nil i 0)   
    (foreach x ss
(setq newcenter (polar (nth i clst) 0 (car (nth i velolst)))
      newcenter (polar newcenter (/ pi 2) (cadr (nth i velolst)))
      clst1 (append clst1 (list newcenter))
      i (1+ i)
)
    )
    (setq clst clst1)
   ; this step will update all the
   ; centerlist
    (setq i 0)
    (foreach x ss
      (setq x (entget x))
      (setq x (subst (cons 10 (nth i clst)) (assoc 10 x) x))
      (entmod x)
      (setq i (1+ i))
    )
    (command "delay" "30")
  )
  (princ)
)

;;; Selection Set => ordered list of entities
(defun STD-SSLIST (ss / n lst)
  (if (eq 'PICKSET (type ss))
    (repeat (setq n (fix (sslength ss))) ; fixed
      (setq lst (cons (ssname ss (setq n (1- n))) lst))
    )
  )
)

;;; vovka
;;; http://www.theswamp.org/index.php?topic=30563.0
(defun SubstNth (NewItem Position InList /)
  (if InList
    (if (zerop Position)
      (cons NewItem (cdr InList))
      (cons (car InList) (SubstNth NewItem (1- Position) (cdr InList)))
    )
  )
)

;;; substitute the 2 dimension list's i and j element(i and j start from 0
(defun qj-setnmth (new i j lst)
  (SubstNth (SubstNth new j (nth i lst)) i lst)
)

;;;coordinate transform
(defun vxy->v12 (vx vy alpha)
  (list (+ (* vx (cos alpha)) (* vy (sin alpha))) (- (* vy (cos alpha))(* vx (sin alpha))))
)
(defun v12->vxy (v1 v2 alpha)
  (list (- (* v1 (cos alpha)) (* v2 (sin alpha))) (+ (* v2 (cos alpha))(* v1 (sin alpha))))
)
;;; from internet
(defun random ()
  (setq seed (if seed (rem (+ (* seed 15625.7) 0.21137152) 1) 0.3171943))
)
(defun random-n (n)
  (* n (random))
)

;;;;; According to the momentum theorem and theorem of kinetic energy
;;;;; change the velocity
(defun updatevelolst (center0 center1 veo1l veo2l m0 m1 / alpha v01 v01new v0xy12 v11 v11new v1xy12)
  (setq alpha (angle center0 center1))
  (setq v0xy12 (vxy->v12 (car veo1l) (cadr veo1l) alpha))
  (setq v01 (car v0xy12))
  (setq v1xy12 (vxy->v12 (car veo2l) (cadr veo2l) alpha))
  (setq v11 (car v1xy12))
  (setq v01new (/ (+ (* v01 (- m0 m1)) (* 2 m1 v11)) (+ m0 m1)))
  (setq v11new (/ (+ (* v11 (- m1 m0)) (* 2 m0 v01)) (+ m0 m1)))
  (list (v12->vxy v01new (cadr veo2l) alpha) (v12->vxy v11new (cadr v1xy12) alpha))
)
;;;;reflect the ball on the edge
(defun reflect-change (i x1 x2 y1 y2)
  (if (or
(< (- (car (nth i clst)) (nth i rlst)) x1)
(> (+ (car (nth i clst)) (nth i rlst)) x2)
      )
    (setq velolst (qj-setnmth (* -1 (car (nth i velolst))) i 0 velolst))
  )
  (if (or
(< (- (cadr (nth i clst)) (nth i rlst)) y1)
(> (+ (cadr (nth i clst)) (nth i rlst)) y2)
      )
    (setq velolst (qj-setnmth (* -1 (cadr (nth i velolst))) i 1 velolst))
  )
)
;;;;;ini
(defun makerecandcircle(a b)
  (command "rectangle" (list 0 0) (list a b))
  (q:entmake:circle (list 200 300) 150 "0" 1)
  (q:entmake:circle (list 800 600) 250 "0" 2)
  (q:entmake:circle (list 1200 500) 100 "0" 3)
  (q:entmake:circle (list 1400 300) 125 "0" 4)
  (command "ZOOM" "E" "" "zoom" ".9x")
)

(defun q:entmake:circle (center rad layer color)
  (entmake (list (cons 0 "CIRCLE") ;***
(cons 6 "BYLAYER") (cons 8 layer) (cons 10 center) ;***
(cons 40 rad) ;***
(cons 39 0.0) (cons 62 color) (cons 210 (list 0.0 0.0 1.0))
   )
  )
)

(princ "\n by [email protected], command is test")

Modificat de advex (20-12-2010 15:04:55)
Titlu: Re: lisp
Scris de: DAN.ARBA din Dec 20, 2010, 10:16 PM
Super tare programul celui de la South China University of Technology. Daca sunteti atenti, veti observa ca (aproape) respecta legea conservarii impulsului (bine-nteles, masa e proportionala cu diamentrul cercului aici).

Modificat de DAN.ARBA (20-12-2010 20:54:11)
Titlu: Re: lisp
Scris de: advex din Dec 20, 2010, 10:59 PM
CitatSuper tare programul celui de la South China University of Technology. Daca sunteti atenti, veti observa ca respecta legea conservarii impulsului (bine-nteles, masa e proportionala cu diamentrul cercului aici).

Stiinta de carte... :)

ARTIFICII cu autolisp

(http://img204.imageshack.us/img204/1577/fireworkslsp.gif)

[attach name=FireWorks.lsp.txt type=text/x-lisp]4[/attach]
Titlu: Re: lisp
Scris de: DAN.ARBA din Dec 21, 2010, 12:38 AM
Advex, de ce mi-ai copiat comentariul?  :rolleyes:
Titlu: Re: lisp
Scris de: advex din Dec 21, 2010, 12:14 PM
CitatAdvex, de ce mi-ai copiat comentariul?  :rolleyes:

Dupa regulile generale ale unui forum, cand dai un raspuns sau faci un comentariu aceasta operatiune se incadreaza la categoria "citat", copierea este cu totul altceva!    :(  :(

Promit ca nu se va mai repeta...

(http://www.millan.net/anims/giffar/smiles.gif)

Modificat de advex (21-12-2010 12:15:21)
Titlu: Re: lisp
Scris de: Mit din Dec 21, 2010, 10:06 PM
Sau poate ca a fost postarea 666 a lui Advex; si-o fi bagat cineva coada.  ;)  :rotfl:
Titlu: Re: lisp
Scris de: sacoracad din Dec 22, 2010, 12:45 AM
Stop joc! De unde s-a pornit subiectul? Hai sa-i lasam pe procesatorii de imagine video sau jucarele sa foloseasca alte programe gen 3Dmax, etc. Aici e vorba de CAD-uri, Lisp-uri si chesti serioase, nu cerculete si artificii. :hi:
Titlu: Re: lisp
Scris de: granicub din Mar 14, 2012, 10:33 PM
:cool:   :hi: ma simt bine aici

(http://topograf.3xforum.ro/img/pics/topograf.3xforum.ro/ok_29188.jpg)
423/580px 11.9KB
Titlu: Re: lisp
Scris de: granicub din Mar 14, 2012, 10:56 PM

                  poate unii dintre voi stiti ,alti,poate ca nu  am un ARX  de pe net care ma  ajuta mult la deschidera de fisiere AUTOCAD IN thumbnails si doresc sa-l fac cunoscut celor ce nu il au.Se incarca cu Load applications .Salvati in notepad ci denumirea de // MdiTab18.arx 

                           http://www.fileshare.ro/50634625460.4



               
Titlu: Re: lisp
Scris de: andreistiop din Mar 26, 2013, 01:10 AM

                  salutare!
as vrea sa stiu cum se poate exporta din acad map 6, din dwg si dxf, in pdf

bineinteles as vrea o varianta free daca se poate

multumesc



               
Titlu: Re: lisp
Scris de: adrianc din Mar 26, 2013, 10:01 AM

                  Ti-am raspuns aici

_______________________________________
La muncă! nu la întins mâna.


               
Titlu: Re: lisp
Scris de: andreistiop din Mar 26, 2013, 10:33 AM

                  
adrianc a scris:

Ti-am raspuns aici



multumesc