Author Topic: Problemi sa Lispom  (Read 5702 times)

Kukarnes

  • Newbie
  • *
  • Posts: 4
    • View Profile
Problemi sa Lispom
« on: January 23, 2016, 06:22:53 pm »
Najprije pohvale za super aplikaciju.
Inače koristim AutoCadLT, ali ponekad trebam pokrenuti neke lispove a AutoCadLT ne podržava lispove. Konkretno za brojanje blokova i zbrajanje dužina poli/linija.
BabaCad bi mi bila odlična alternativa.
Pokušao sam u BabaCadu pokrenuti više lispova koji rade pod Autocad-om, ali Babacadu ne rade.
U čemu bi mogao biti problem?

babadmin

  • Administrator
  • Jr. Member
  • *****
  • Posts: 97
    • View Profile
Re: Problemi sa Lispom
« Reply #1 on: January 23, 2016, 07:18:35 pm »
Lisp za BabaCAD sadrzi osnovni set Lisp funkcija (nekih 70-80% AutoLISP funkcija bez activex funkcija vl, vla, vlax). Kompletna lista podrzanih funkcija moze se naci na http://www.babacad.com/lisp/lisp_syntax.html

Ako se neki AutoLISP ne moze pokrenuti, to je najverovatnije sto lisp skripta (.lsp) sadrzi neku od funkcija koja nije trenutno podrzana. Probajte nadomjestiti tu funkciju sa nekim od vecih postojecih, ili probajte napraviti .bem modul pomocu BabaCAD c++ API podrske (mozete procitati o .bem modulima i kako se programiraju na babacad.com pa onda u meniju na Extension Modules).

Lisp ce biti nadogradjivan te je zato dat kao poseban ekstenzijski modul. U medjuvremenu, ako vas interesuje samo racunanje duzina polilinija, skinite ESRI Shape modul za babacad (idite na Extension modules na babacad.com). Ovaj modul ima jednu komadnu za racunanje ukupne duzine svih selektiranih polilinija (komanda LENSUM ili nesto slicno).

Kukarnes

  • Newbie
  • *
  • Posts: 4
    • View Profile
Re: Problemi sa Lispom
« Reply #2 on: January 25, 2016, 02:00:45 pm »
Hvala.
Kad nađem vremena ću pokušati prepraviti najjednostavniji lisp za brojanje blokova, ako to uspijem sa svojim skromnim znanjem lispa.
Ako uspijem ću ga objaviti na forumu.

babadmin

  • Administrator
  • Jr. Member
  • *****
  • Posts: 97
    • View Profile
Re: Problemi sa Lispom
« Reply #3 on: January 26, 2016, 02:50:55 pm »
Ne morate gubiti vrijeme, evo lispa za ukupan broj blokova (samo snimite dole datu funkciju u blkcount.lsp fajl i ucitajte sa appload ili ga kopirajte u \Program Files (x86)\BabaCAD\BabaCAD\Support\Lisp i dodajte u bcad.mnu fajl ispod **LISP sekcije  sljedeci red: lisp\blkcount.lsp kako bi se ucitavao automatski na startanju BabaCAD-a.

(defun c:blkcount (/ ss ind en bnum entype)
 (setq ss (ssget "X"))
 (setq ind 0)
 (setq bnum 0)
 (while (setq en (entget (ssname ss ind)))
  (setq entype (cdr (assoc 0 en)))
  (if (eq entype "INSERT")
    (setq bnum (+ bnum 1))
  )
  (setq ind (+ ind 1))
 )
 (princ (strcat "Total num of blocks: " bnum))
 (princ)
)

Kukarnes

  • Newbie
  • *
  • Posts: 4
    • View Profile
Re: Problemi sa Lispom
« Reply #4 on: February 03, 2016, 10:29:13 am »
Hvala na odgovoru, ali meni treba zbroj pojedinačnih blokova.
Najjednostavniji lisp koji sam uspio pronaći i koji to radi (u AutoCadu) je:

(defun c:bcount (/ bn flag ss c)
 (while (setq bn (tblnext "block" (not bn)))
 (setq flag (cdr (assoc 70 bn)))
 (cond ( (or (= 4 (logand 4 flag))
 (wcmatch (cdr (assoc 2 bn)) "`**")
 )
 )
 ( (setq ss (ssget "X" (list '(0 . "INSERT")(assoc 2 bn))))
 (setq c (sslength ss))
 (prompt
 (strcat
 "\n"
 (itoa c)
 "..."
 (cdr (assoc 2 bn))
 )
 )
 )
 ( t
 (prompt
 (strcat
 "\n0..." (cdr (assoc 2 bn))
 )
 )
 )
 )
 )
 (princ)
 )


Primjer ispisa:

15...Blok1
1... Blok2
22... Blok3

Bio bih zahvalan ako bi ga uspijeli konvertirati u Babacadov lisp format, naravno kad uhvatite vremena.

babadmin

  • Administrator
  • Jr. Member
  • *****
  • Posts: 97
    • View Profile
Re: Probl.sa Lisp (Nova verzija LISP Extension modula)
« Reply #5 on: February 15, 2016, 03:51:01 am »
Ovaj gore lisp koji ste nasli ce vam raditi bez problema, upravo sam ga testirao. Potrebno je samo da download-ate novu verziju LISP extension modula za babacad (v1.0.5 od 15.Feb-2016). Inace, BabaCAD lisp format je isti kao i autocad autolisp, samo sto su nedostajale neke funkcije pa onda neki lisp fajlovi nisu radili.

Nadam se da cu imati vremena da dodam i preostale lisp funkcije (ostalo ih je svega nekoliko, uglavnom vl,vla i vlx funkcije i mapcar) koje nedostaju i onda mislim da ce vecina autolisp fajlova koje nadjete na netu raditi na babacad-u isto kao i na autocad-u.

Funkcije koje su dodate u zadnjoj verziji Lisp modula bice dodate na listu u lisp syntax sekciji, a to su COND,VL-REMOVE,VL-REMOVE-IF,VL-REMOVE-NTH,LAST,REVERSE,MEMBER,TBLNEXT,LOGAND,LOGIOR,~ bitwise not operator i jos neke... Takodje se sad ssget "X" moze pozivati sa filterom. Npr. kad hocete selektirati sve ARC entitete u crtezu pozivate (SETQ ss (SSGET "X" (list '(0 . "ARC")))
« Last Edit: February 15, 2016, 09:12:42 am by babadmin »

Kukarnes

  • Newbie
  • *
  • Posts: 4
    • View Profile
Re: Problemi sa Lispom
« Reply #6 on: March 20, 2016, 11:13:26 pm »
Hvala na rješenju.
Divim se ljudima poput vas koji imaju toliko energije stvarati takve aplikacije.
Puno uspjeha u daljnjem radu.