Đến nội dung


Hình ảnh
* * * - - 3 Bình chọn

Hướng dẫn lập trình Lisp


  • Please log in to reply
497 replies to this topic

#441 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 02 December 2012 - 12:47 PM

e thử thực hành với 1 cái lisp đơn giản là vẽ hình vuông cấu trúc như lisp vẽ nhà mà cad toàn báo thiếu đối số error: too few arguments


(defun C:vhv(/a b p1 p2 p3 p4 )
;;;Nhap so lieu
(setq
a(getreal"\nchieu dai a=")
b(getreal"\nchieu rong b=")
p1(getpoint"\ndiem chuan: ")
;;;Tinh toa do
p2(polar p1 0.0 a)
p3(polar p2 (/pi 2) b )
p4(polar p3 pi a)
)
;;;ve hinh vuong
(comand "line" p1 p2 p3 p4"c")
)

vậy chỗ này e thiếu chỗ nào ạ ?

Lỗi bị "thiếu" chổ này :

(defun C:vhv(/a b p1 p2 p3 p4 )

giữa / và a phải có khoảng trắng
Bạn viết /a liền nhau thì Lisp xem như /a là biến số
=> thành ra báo thiếu đối số error: too few arguments là vì thế
  • 2

#442 hmt

hmt

    biết lệnh scale

  • Members
  • PipPipPip
  • 146 Bài viết
Điểm đánh giá: -11 (hơi kém)

Đã gửi 02 December 2012 - 02:29 PM

thank bác Tue , e đã sửa nhưng nó lai báo tiếp error: no function definition: /PI
  • 0

#443 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 02 December 2012 - 02:32 PM

Thì cũng thêm dấu cách ở giữa /pi thành / pi
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#444 hmt

hmt

    biết lệnh scale

  • Members
  • PipPipPip
  • 146 Bài viết
Điểm đánh giá: -11 (hơi kém)

Đã gửi 02 December 2012 - 02:54 PM

thank bác Van Ha và bac Tue tiếc quá e đã đạt giới hạn kick like trong ngày hn chứ ko thì e kick tẹt bô :D thank 2 bác nhiều :D
  • 0

#445 hmt

hmt

    biết lệnh scale

  • Members
  • PipPipPip
  • 146 Bài viết
Điểm đánh giá: -11 (hơi kém)

Đã gửi 03 December 2012 - 11:11 AM

em đang thử với cách vẽ MC đơn giản như sau ạ :
(defun C:VMC(/ a b c p1 p2 p3 p4 p5 p6 p7 p8 p9 )
;;;Nhap so lieu
(setq
a(getreal"\nBE RONG MAT DUONG a=")
b(getreal"\nBE RONG HE b=")
c(getreal"\nCHENH CAO BO VIA c=")
p1(getpoint"\nPICK CHON DIEM DAT: ")
;;;Tinh toa do
p2(polar p1 0.0 (+(* 2 a) (* 2 b )))
p3(polar p2 (/ pi 2) 0.5)
p4(polar p3 (+(atan 0.02) (pi)) b )
p5(polar p4 (/ pi 2) c)
p6(polar p5 (- pi (atan 0.02)) a)
p7(polar p6 (+ pi (atan 0.02)) a)
p8(polar p7 (/ pi 2) c)
p9(polar p8 (- pi (atan 0.02)) b )
)
;;;ve mat cat
(command "pline" p1 p2 p3 p4 p5 p6 p7 p8 p9 "c")
)
nhưng khi load lisp thì nó báo bad funcition : 3,14159
chỗ này e ko hiểu sao lại báo lỗi ở số pi ??
  • 0

#446 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 03 December 2012 - 11:16 AM

(pi) => pi
  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#447 hmt

hmt

    biết lệnh scale

  • Members
  • PipPipPip
  • 146 Bài viết
Điểm đánh giá: -11 (hơi kém)

Đã gửi 03 December 2012 - 01:32 PM

Các a cho e hỏi chút ạ. e code lại là ntn :

(defun C:VMC(/ a b c p1 p2 p3 p4 p5 p6 p7 p8 p9 )
;;;Nhap so lieu
(setq
a(getreal"\nBE RONG MAT DUONG a=")
b(getreal"\nBE RONG HE b=")
c(getreal"\nCHENH CAO BO VIA c=")
p1(getpoint"\nCHON DIEM DAT: ")
;;;Tinh toa do
p2(polar p1 0.0 (+(* 2 a) (* 2 B)))
p3(polar p2 (/ pi 2) 1)
p4(polar p3 (+(atan 0.02) pi) (/ b (cos(atan 0.02))))
p5(polar p4 (+ pi (/ pi 2)) c)
p6(polar p5 (- pi (atan 0.02)) (/ a (cos(atan 0.02))))
p7(polar p6 (+ pi (atan 0.02)) (/ a (cos(atan 0.02))))
p8(polar p7 (/ pi 2) c)
p9(polar p8 (- pi (atan 0.02)) (/ b (cos(atan 0.02))))
)
;;;ve mat cat
(command "pline" p1 p2 p3 p4 p5 p6 p7 p8 p9 "c")
)
xong khi load lisp và chạy thì có lúc lisp vẽ đúng có lúc vẽ không đúng , cụ thể như 3 th như ảnh e post ạ, vậy đây là lỗi gì ạ và các khắc phục ntn ạ? thank các a :D


Hình đã gửi
  • 0

#448 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 03 December 2012 - 01:39 PM

Nhiều khả năng là bạn chưa tắt chế độ osnap trong lúc vẽ nên nó bắt điểm sai.
  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#449 hmt

hmt

    biết lệnh scale

  • Members
  • PipPipPip
  • 146 Bài viết
Điểm đánh giá: -11 (hơi kém)

Đã gửi 03 December 2012 - 02:01 PM

thank bác e đã thêm dòng tắt osnap và đã vẽ đc chuẩn như sau:
(defun C:VMC(/ a b c p1 p2 p3 p4 p5 p6 p7 p8 p9 )
;;;Nhap so lieu
(setq
a(getreal"\nBE RONG MAT DUONG a=")
b(getreal"\nBE RONG HE b=")
c(getreal"\nCHENH CAO BO VIA c=")
p1(getpoint"\nCHON DIEM DAT: ")
;;;Tinh toa do
p2(polar p1 0.0 (+(* 2 a) (* 2 B)))
p3(polar p2 (/ pi 2) 1)
p4(polar p3 (+(atan 0.02) pi) (/ b (cos(atan 0.02))))
p5(polar p4 (+ pi (/ pi 2)) c)
p6(polar p5 (- pi (atan 0.02)) (/ a (cos(atan 0.02))))
p7(polar p6 (+ pi (atan 0.02)) (/ a (cos(atan 0.02))))
p8(polar p7 (/ pi 2) c)
p9(polar p8 (- pi (atan 0.02)) (/ b (cos(atan 0.02))))
)
;;;Set object snap OFF
(setvar "osmode" 0)
;;;ve mat cat
(command "pline" p1 p2 p3 p4 p5 p6 p7 p8 p9 "c")
)
sau khi load lisp và nhập thông số xong thì lisp vẫn vẽ ra đc mặt cắt nhưng lại báo: too few arguments cho e hỏi thế là sao ạ
  • 0

#450 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6007 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 03 December 2012 - 02:06 PM

thank bác e đã thêm dòng tắt osnap và đã vẽ đc chuẩn như sau:
(defun C:VMC(/ a b c p1 p2 p3 p4 p5 p6 p7 p8 p9 )
;;;Nhap so lieu
(setq
a(getreal"\nBE RONG MAT DUONG a=")
b(getreal"\nBE RONG HE b=")
c(getreal"\nCHENH CAO BO VIA c=")
p1(getpoint"\nCHON DIEM DAT: ")
;;;Tinh toa do
p2(polar p1 0.0 (+(* 2 a) (* 2 B)))
p3(polar p2 (/ pi 2) 1)
p4(polar p3 (+(atan 0.02) pi) (/ b (cos(atan 0.02))))
p5(polar p4 (+ pi (/ pi 2)) c)
p6(polar p5 (- pi (atan 0.02)) (/ a (cos(atan 0.02))))
p7(polar p6 (+ pi (atan 0.02)) (/ a (cos(atan 0.02))))
p8(polar p7 (/ pi 2) c)
p9(polar p8 (- pi (atan 0.02)) (/ b (cos(atan 0.02))))
)
;;;Set object snap OFF
(setvar "osmode" 0)
;;;ve mat cat
(command "pline" p1 p2 p3 p4 p5 p6 p7 p8 p9 "c")
)
sau khi load lisp và nhập thông số xong thì lisp vẫn vẽ ra đc mặt cắt nhưng lại báo: too few arguments cho e hỏi thế là sao ạ

Hề hề hề,
Có nhẽ tại lisp nó không đọc được cái mặt cười trong code của bạn....
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#451 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 03 December 2012 - 02:16 PM

thank bác e đã thêm dòng tắt osnap và đã vẽ đc chuẩn như sau:
sau khi load lisp và nhập thông số xong thì lisp vẫn vẽ ra đc mặt cắt nhưng lại báo: too few arguments cho e hỏi thế là sao ạ

Tôi test OK. Bạn down về thử lại nhé. Tôi thêm cho bạn 2 dòng code để khỏi bận tâm osnap.

(defun C:VMC(/ a b c p1 p2 p3 p4 p5 p6 p7 p8 p9 osm)
(setq osm (getvar "osmode"))
;;;Nhap so lieu
(setq
a(getreal"\nBE RONG MAT DUONG a=")
b(getreal"\nBE RONG HE b=")
c(getreal"\nCHENH CAO BO VIA c=")
p1(getpoint"\nCHON DIEM DAT: ")
;;;Tinh toa do
p2(polar p1 0.0 (+(* 2 a) (* 2 B)))
p3(polar p2 (/ pi 2) 1)
p4(polar p3 (+(atan 0.02) pi) (/ b (cos(atan 0.02))))
p5(polar p4 (+ pi (/ pi 2)) c)
p6(polar p5 (- pi (atan 0.02)) (/ a (cos(atan 0.02))))
p7(polar p6 (+ pi (atan 0.02)) (/ a (cos(atan 0.02))))
p8(polar p7 (/ pi 2) c)
p9(polar p8 (- pi (atan 0.02)) (/ b (cos(atan 0.02))))
)
;;;Set object snap OFF
(setvar "osmode" 0)
;;;ve mat cat
(command "pline" p1 p2 p3 p4 p5 p6 p7 p8 p9 "c")
(setvar "osmode" osm))

  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#452 hmt

hmt

    biết lệnh scale

  • Members
  • PipPipPip
  • 146 Bài viết
Điểm đánh giá: -11 (hơi kém)

Đã gửi 03 December 2012 - 03:12 PM

thank bác Bình và bac Ha, cho e hỏi thêm 1 chút. Bây h e muốn vẽ 1 đoạn pline có độ dày mặc định là 0.1 chẳng hạn qua các điểm p3 p4 p5 p6 p7 p8 p9 thì phải thêm dòng ntn ạ?
  • 0

#453 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 03 December 2012 - 03:20 PM

Thay dòng vẽ pline bằng dòng dưới đây. Bạn cũng nên tự ngâm cứu từ command pline để suy ra được mà, chứ tôi e là nếu cái gì cũng hỏi sẽ lâu tiến bộ đó nghen.
(command "pline" p1 p2 p3 "w" 0.1 0.1 p4 p5 p6 p7 p8 p9 "w" 0 0 "c")
  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#454 hmt

hmt

    biết lệnh scale

  • Members
  • PipPipPip
  • 146 Bài viết
Điểm đánh giá: -11 (hơi kém)

Đã gửi 03 December 2012 - 03:23 PM

:D hi trước khi hỏi e cũng đã ngâm dòng command rồi và có thay giống như thế này ko hiểu sao . nó cứ ra cả loạt tất cả các nét là 0.1 nên e mới hỏi ạ
  • 0

#455 hmt

hmt

    biết lệnh scale

  • Members
  • PipPipPip
  • 146 Bài viết
Điểm đánh giá: -11 (hơi kém)

Đã gửi 03 December 2012 - 04:05 PM

thank bác e thay đoạn của bác vào thì ổn, do e ko hiểu đc trình tự của dòng command khi vẽ 1 lệnh pline thay đổi độ dày nên e thay sai hết cả :D
  • 0

#456 tientracdia

tientracdia

    biết lệnh scale

  • Members
  • PipPipPip
  • 147 Bài viết
Điểm đánh giá: -11 (hơi kém)

Đã gửi 03 December 2012 - 08:53 PM

Trước đây mình cũng có viết một hàm vẽ HCN với yêu cầu khác của bạn một chút.
Bạn có thể tham khảo để thấy được kết quả trong khi chọn điểm thứ ba.

(defun RectangPts (p1 p2 rp3 rp4 / a )
(setq a (angle p1 p2))
(set rp4 (inters p1 (polar p1 (+ a (/ pi 2)) 100) (eval rp3) (polar (eval rp3) a 100) nil))
(set rp3 (polar (eval rp4) a (distance p1 p2)))
)

(defun C:RotateRectang (/ n p1 p2 p3 p4 a grdat om)
(setq p1 (getpoint "\nPoint 1:") p2 (getpoint p1 "\nPoint 2:") a (angle p1 p2))
(while (/= 3 n)
(setq grdat (grread t 7 0) n (car grdat) p3 (cadr grdat))
(if (eq 5 n)
(progn
(redraw)(RectangPts p1 p2 'p3 'p4 )
(grvecs (list -7 p1 p2 p2 p3 p3 p4 p4 p1) )
) )
)
(setq om (getvar "osmode"))
(setvar "osmode" 0)
(redraw)(RectangPts p1 p2 'p3 'p4 )
(command "PLINE" p1 p2 p3 p4 "c" )
(setvar "osmode" om)
)

Nhờ Bạn chỉnh lisp vẽ kiễu nhà dựa trên lisp vẽ hình chữ nhật trên, mong duoc giup do
Cám ơn
http://www.cadviet.c..._nha_ngoi_1.dwg
  • 0

#457 romeodeath

romeodeath

    Chưa sử dụng CAD

  • Members
  • Pip
  • 2 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 25 June 2014 - 10:15 PM

bác nào cho em xin lại cái link hướng dẫn cái. e vào thì bị die mất link oy


  • 0

#458 Trần Kuly

Trần Kuly

    Chưa sử dụng CAD

  • Members
  • Pip
  • 4 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 28 July 2014 - 01:31 PM

Tự tay mình lập một chương trình Lisp có gì khác so với nhờ ai đó làm? Chưa cần xét kết quả, điểm khác nhau rất cơ bản là bạn sẽ có được cái cảm giác rất là khoái chí (không thể diễn tả) khi chạy thử chương trình.
Ssg lập topic này không ngoài mục đích tạo điều kiện cho các bạn tự mình tìm hiểu và khám phá cái cảm giác "khoái chí không thể diễn tả" nói trên.
Với tinh thần "Share is Receive", ssg cũng mong các bạn đã thành thạo Lisp quan tâm giúp đỡ các bạn mới để cộng đồng Lisp của CadViet ngày càng đông vui và tạo được nhiều chương trình hữu ích.
Để bắt đầu, ssg post lại một bài viết cũ, nhưng có lẽ vẫn còn mới đối với một số bạn. Hy vọng sẽ giúp được chút gì đó cho các bạn mới tiếp cận với Lisp:

http://www.cadviet.c...les/Relax_1.zip

Download, giải nén rồi đọc file *.doc

Link die rùi Bác ui! Bác up lại hoặc cho em xin file qua mail: tranthien.int@gmail.com dc ko ạ? Thank bác nhiều!


  • 0

#459 Trần Kuly

Trần Kuly

    Chưa sử dụng CAD

  • Members
  • Pip
  • 4 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 05 August 2014 - 11:36 AM

Tự tay mình lập một chương trình Lisp có gì khác so với nhờ ai đó làm? Chưa cần xét kết quả, điểm khác nhau rất cơ bản là bạn sẽ có được cái cảm giác rất là khoái chí (không thể diễn tả) khi chạy thử chương trình.
Ssg lập topic này không ngoài mục đích tạo điều kiện cho các bạn tự mình tìm hiểu và khám phá cái cảm giác "khoái chí không thể diễn tả" nói trên.
Với tinh thần "Share is Receive", ssg cũng mong các bạn đã thành thạo Lisp quan tâm giúp đỡ các bạn mới để cộng đồng Lisp của CadViet ngày càng đông vui và tạo được nhiều chương trình hữu ích.
Để bắt đầu, ssg post lại một bài viết cũ, nhưng có lẽ vẫn còn mới đối với một số bạn. Hy vọng sẽ giúp được chút gì đó cho các bạn mới tiếp cận với Lisp:

http://www.cadviet.c...les/Relax_1.zip

Download, giải nén rồi đọc file *.doc

LINK DIE RÙI BÁC SSG ƠI! NHỜ BÁC ÚP LẠI ANH EM NGHIÊN CỨU VỚI! THANKS BÁC NHIỀU!


  • 0

#460 cunipro

cunipro

    biết zoom

  • Members
  • Pip
  • 12 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 27 September 2014 - 12:09 AM

bác SSQ ơi . . .sao em dow cái http://www.cadviet.c...les/Relax_1.zip của bác mà chưa được. . . mong bác sớm up để e được mò theo . . . .  :ph34r:  :ph34r:  :ph34r:  :ph34r:


  • 0