Chuyển đến nội dung
Diễn đàn CADViet
ssg

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

Các bài được khuyến nghị

BÁC SSG ơi em theo chân bác cũng kha kha rồi. Em xin hỏi cách nào để biết kiểm tra trương trình của minh viết sai ko nhi?

cách cho môt dòng lệnh chay thử như thế nào?

Bác giúp em với hoặc anh em nào biết giúp cái nhé!

Chào bạn Tiger99,

Bạn soạn lisp trên notepad phải không? Như vậy cách duy nhất là truy tìm thủ công thôi bạn ạ. Mình biết có một số phần mềm chuyên dùng cho lập trình có thể giúp bạn kiểm soát lỗi cú pháp khi viết. Với lisp thì bạn có thể dùng notepad++ bạn ạ. Tuy nhiên mình cũng chưa xài nó nên chưa biết rõ lắm, chỉ mới nghe như vậy. Bạn thử tìm hiểu xem.

Còn một cách khác là bạn vào diễn đàn post đoạn lisp đó trong khung

 ....

. Cách này hơi nhiêu khê mà đôi khi cũng không chuẩn lắm.

Để chạy thử một dòng code lisp bạn có hai cách như sau:

- Dùng debug

- Nhập thẳng đoạn code đó vào dònh lệnh command của cad rồi nhấn enter.

Chúc bạn vui và thành công

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
BÁC SSG ơi em theo chân bác cũng kha kha rồi. Em xin hỏi cách nào để biết kiểm tra trương trình của minh viết sai ko nhi?

cách cho môt dòng lệnh chay thử như thế nào?

Bác giúp em với hoặc anh em nào biết giúp cái nhé!

Chào bạn Tiger99,

Bạn soạn lisp trên notepad phải không? Như vậy cách duy nhất là truy tìm thủ công thôi bạn ạ. Mình biết có một số phần mềm chuyên dùng cho lập trình có thể giúp bạn kiểm soát lỗi cú pháp khi viết. Với lisp thì bạn có thể dùng notepad++ bạn ạ. Tuy nhiên mình cũng chưa xài nó nên chưa biết rõ lắm, chỉ mới nghe như vậy. Bạn thử tìm hiểu xem.

Còn một cách khác là bạn vào diễn đàn post đoạn lisp đó trong khung

 ....

bằng cách sử dụng các mã "[" code "]" ở đầu chương trình và các mã "["/code"]" ở cuối chương trình. Cách này hơi nhiêu khê mà đôi khi cũng không chuẩn lắm.

Để chạy thử một dòng code lisp bạn có hai cách như sau:

- Dùng debug

- Nhập thẳng đoạn code đó vào dònh lệnh command của cad rồi nhấn enter.

Chúc bạn vui và thành cống

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Chào bạn Tiger99,

Bạn soạn lisp trên notepad phải không? Như vậy cách duy nhất là truy tìm thủ công thôi bạn ạ. Mình biết có một số phần mềm chuyên dùng cho lập trình có thể giúp bạn kiểm soát lỗi cú pháp khi viết. Với lisp thì bạn có thể dùng notepad++ bạn ạ. Tuy nhiên mình cũng chưa xài nó nên chưa biết rõ lắm, chỉ mới nghe như vậy. Bạn thử tìm hiểu xem.

Còn một cách khác là bạn vào diễn đàn post đoạn lisp đó trong khung

 ....

bằng cách sử dụng các mã "[" code "]" ở đầu chương trình và các mã "["/code"]" ở cuối chương trình. Cách này hơi nhiêu khê mà đôi khi cũng không chuẩn lắm.

Để chạy thử một dòng code lisp bạn có hai cách như sau:

- Dùng debug

- Nhập thẳng đoạn code đó vào dònh lệnh command của cad rồi nhấn enter.

Chúc bạn vui và thành cống

Bạn đọc thêm bài viết này :

Em dùng VL editor từ khi bắt đầu học viết lisp. Và thấy nó có đầy đủ các chức năng, biên dịch, gỡ rối, check value ...và đặc biệt là cả tự động format (định dạng các funtion theo indent để dễ nhìn, dễ sửa) Em thấy dùng VL đối với coding lisp là khá hoàn thiện và đầy đủ đấy chứ (nếu biết các dùng và các phím tắt nữa). Từ việc sắp xếp các cửa sổ (khi mở VL ra lần đầu, bao giờ CAD cũng tự động sắp xếp để thuận tiện nhất cho ng lập trình) Đây là hình cửa sổ em vẫn hay dùng:

VL.jpg

Sử dụng VL thành thạo cũng giúp cho việc coding nhanh hơn.

http://www.cadviet.com/forum/index.php?sho...amp;#entry32931

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Em đang học cách viết list nên có nhiều lệnh chưa hiểu được mong các bác giúp đỡ. Nhờ các bác đọc list này rồi chỉ cho em tác dụng và cú pháp của các lệnh nay với nhé:

cons

foreach

vl-sort

lambda

(vl-load-com)

 

Luôn tiện đây cho em hỏi cách đưa nội dung list lên bài viết để mà vẫn giữ được màu các câu lệnh.

Cảm ơn nhiều!

 

;*****************************

(defun c:cdt (/ sst lstent egoc pgoc xgoc yht zgoc linespc ee tt)

(if (not tyledong)

(setq tyledong 1.5)

)

(princ "\nC¨n kho¶ng c¸ch dßng text")

(setq sst (ssget '((0 . "TEXT")))

lstent (ss2ent sst)

tmp (getreal (strcat "\nVµo tØ lÖ kho¶ng c¸ch dßng <" (rtos tyledong 2 2) ">: "))

tyledong (cond (tmp tmp) (t tyledong))

lstent (vl-sort lstent '(lambda (e1 e2) (> (cadr (cdr (assoc 10 (entget e1))))

(cadr (cdr (assoc 10 (entget e2)))))))

egoc (car lstent)

lstent (cdr lstent)

pgoc (cdr (assoc 10 (entget egoc)))

xgoc (car pgoc)

yht (cadr pgoc)

zgoc (caddr pgoc)

hgoc (cdr (assoc 40 (entget egoc)))

linespc (* hgoc (+ 1.0 tyledong))

 

)

(foreach ee lstent

(setq tt (entget ee)

tt (subst (list 10 xgoc (setq yht (- yht linespc)) zgoc) (assoc 10 tt) tt)

)

(entmod tt)

(entupd ee)

)

(princ)

)

 

;-------------------------------

 

(defun ss2ent (ss / sodt index lstent)

(setq

sodt (cond (ss (sslength ss)) (t 0))

index 0

)

(repeat sodt

(setq ent (ssname ss index)

index (1+ index)

lstent (cons ent lstent)

)

)

(reverse lstent)

)

(vl-load-com)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Em đang học cách viết list nên có nhiều lệnh chưa hiểu được mong các bác giúp đỡ. Nhờ các bác đọc list này rồi chỉ cho em tác dụng và cú pháp của các lệnh nay với nhé:

cons

foreach

vl-sort

lambda

(vl-load-com)

 

Luôn tiện đây cho em hỏi cách đưa nội dung list lên bài viết để mà vẫn giữ được màu các câu lệnh.

Cảm ơn nhiều!

 

* (vl-load-com) để load các hàm visual lisp, là các hàm có chữ đứng trước là vl- vlax- vla- vlr- .

 

* cons để ghép 1 phần tử vào đầu 1 list, kết quả trả về 1 list mới.

Td: (cons "a" (list "b" "c" "d")) -> ("a" "b" "c" "d")

hoặc nối 2 phần tử để tạo 1 list.

Td: (cons "a" "b") -> ("a" . "b") . List kiểu này gọi là dotted pairs vì có dấu chấm đứng giữa.

 

* foreach là vòng lặp ứng với từng phần tử của list.

Td: (foreach a (list 1 2 3) (print a)) -> in ra 1 2 3

Tức là ứng với mỗi ptử (đặt tên là a) thì (print a).

 

* vl-sort là để sắp xếp 1 list theo thứ tự nào đó do hàm lambda (hàm tạm) hoặc các hàm của lisp định nghĩa.

Td: (vl-sort (list 5 4 7 8 9 2 3) '<) -> (2 3 4 5 7 8 9) sắp xếp theo thứ tự tăng dần.

 

Muốn đưa nội dung list lên bài viết để mà vẫn giữ được màu các câu lệnh, thì xem phần Trợ giúp BB code ở mục code và codebox.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Truyền tham số cho hàm bằng tham chiếu (by reference)

* Mục đích: thay đổi giá trị của biến khi gọi chương trình con

Để biết cách dùng, tôi xin đưa ra 1 VD

Hàm này để người dùng nhập vào 1 số nguyên n, nếu n chưa có giá trị, sẽ lấy giá trị default.

nếu n có rồi thì lấy trị này làm trị default khi user nhấn enter.

Đây là VD để minh họa cho cách dùng tham biến, còn ưu điểm của cách dùng tham biến chỉ thể hiện rõ ràng khi truyền nhiều tham biến cho hàm, hoặc hàm này gọi thêm các hàm con khác nưã.

(vl-load-com)
(defun mygetint(isym msg def / s n1 n2)
(setq s (if msg msg (strcat "\nNhap so nguyen " (vl-symbol-name isym))))
(setq n2 (eval isym) n1 (if n2 n2 def))
;(setq n2 (eval isym) n1 (if (= (type n2) 'INT) n2 def))
(setq n2 (getint (strcat s " <" (itoa n1) ">:")))
(set isym (if n2 n2 n1))
)

 

Giải thích code:

- (vl-symbol-name isym) : trả về tên của symbol isym (uppercase)

- (eval isym) : lấy giá trị của isym

- (set isym (if n2 n2 n1)) : gán giá trị cho isym

- Khi truyền tham số bằng tham chiếu, đặt 1 dấu nhấy đơn vào trước tên biến

- Dòng code comment dùng cho ai đặt tên biến toàn cục không thống nhất, lúc dùng int, lúc dùng real ..

 

3 VD về cách dùng hàm mygetint:

(mygetint 'n nil 0) 
(mygetint 'row "\nNhap so hang" 5)
(setq col 4) (mygetint 'col "\nNhap so cot" 10)

Tương tự như vậy, các bạn có thể viết hàm mygetreal ....

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Cho mình hỏi một điều :

Ở các ngôn ngữ khác như C++, Java thường có trường hợp có nhiều hàm cùng tên nhưng có số đối số khác nhau.

Td

MyFunc ( a )

MyFunc ( a c)

MyFunc ( a b c)

 

Trong lisp thì không có chuyện đó, nhưng các hàm của lisp đều có thể nhận số đối số khác nhau.

Td:

(rtos 1.234)

(rtos 1.234 2)

(rtos 1.234 2 1)

CAD đều chấp nhận đc cả.

 

Có thể là các hàm đó đc viết bằng ngôn ngữ khác, nhưng xin hỏi có cách nào mà hàm do người dùng định nghĩa làm đc như vậy ko?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tổng kết: Bạn cần hiểu rõ và biết áp dụng tất cả các hàm đã liệt kê ở Summary.

Vậy Summary là cái gì, em muốn tìm để học từ đầu, đừng cười em vì em không biết về lập trình nên không hiểu được các câu lệnh

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Tổng kết: Bạn cần hiểu rõ và biết áp dụng tất cả các hàm đã liệt kê ở Summary.

Vậy Summary là cái gì, em muốn tìm để học từ đầu, đừng cười em vì em không biết về lập trình nên không hiểu được các câu lệnh

Summary nghĩa là "tóm lược", "tóm tắt", "toát yếu"... Ở cuối mỗi đoạn code ví dụ, ssg nêu cái "summary" để các bạn mới làm quen với lisp biết được những điều cơ bản tối thiểu cần nắm vững. Chẳng hạn, sau bài đầu tiên có đoạn:

 

;;;SUMMARY: setq, getreal, getpoint, polar, list, car, cadr, caddr, + - * /, command, comment, getvar, setvar, princ

 

Nghĩa là: bạn cần phải hiểu và biết áp dụng "setq", "getreal", "getpoint"... "princ".

Chỉ cần từng ấy thôi bạn đã có thể lập được một số chương trình ứng dụng hữu ích. Khi đã thuần thục những cái nêu trên, bạn sẽ tìm hiểu thêm những cái khác. Để hiểu được chúng, như ssg đã trình bày trong bài hướng dẫn, bạn cần phải có sách: mua ở nhà sách, ebook (trên diễn đàn cũng có vài cuốn), đọc help.... Ngoài ra, bạn có thể tham khảo thêm rất nhiều lisp đã post trên diễn đàn.

Chúc bạn thành công!

  • Vote tăng 2

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Chào mọi người,

Em muốn dùng Lísp để tác động đến Pagésetup như file đính kèm, ai biết xin chỉ giúp.

Phần windơw chọn khung bản vẽ, có cách nào để Lísp hiểu khung rectangle lớn nhất hay không?

http://www.cadviet.com/upfiles/Book1_7.xls

Xin cám ơn.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Chào diễn đán, mònh mới đang mò mẫm viết slip trên notepat nhưng khi lưu không chuyển thành flie slip được mong các bậc tiền bối chỉ giáo mình giùm với. Thank you diễn đàn!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Chào diễn đán, mònh mới đang mò mẫm viết slip trên notepat nhưng khi lưu không chuyển thành flie slip được mong các bậc tiền bối chỉ giáo mình giùm với. Thank you diễn đàn!

Bạn phải lưu file với đuôi là *.lsp (VD: Binh80.lsp). Chúc bạn thành công và đóng góp nhiều cho diễn đàn

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Cảm ơn bạn HoangSon614 nhưng mình vẫn không lưu được mà chỉ lưu được SLP file mà không được Autoslip Application source mong bạn chỉ giáo mình với.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Cảm ơn bạn HoangSon614 nhưng mình vẫn không lưu được mà chỉ lưu được SLP file mà không được Autoslip Application source mong bạn chỉ giáo mình với.

Sao không được bạn. Sau khi viết gì đó mình không biết, rồi đặt tên ( VD: Binh80.lsp, < ở đây: binh80: tên lisp và thêm .lsp là được mà>). Chúc bạn thành công

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Cảm ơn bạn HoangSon614 nhưng mình vẫn không lưu được mà chỉ lưu được SLP file mà không được Autoslip Application source mong bạn chỉ giáo mình với.

 

Chào bạn Binh80,

Khi bạn đã lưu file của bạn với đuôi .lsp có nghĩa là file đó đã có thể Load application trong CAd được rồi. Nhưng nó có chạ ngon lành hay không thì phụ thuộc vào việc bạn đã viết ra sao. Để Load application nó bạn phải vào lệnh Load Application trong menu Tool của cad sau đó chỉ đường dẫn ới thư mục mà bạn đã lưu file của bạn rồi nhấn nút Load bạn nhé.

 

Chúc bạn thành công.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Chào bạn Binh80,

Khi bạn đã lưu file của bạn với đuôi .lsp có nghĩa là file đó đã có thể Load application trong CAd được rồi. Nhưng nó có chạ ngon lành hay không thì phụ thuộc vào việc bạn đã viết ra sao. Để Load application nó bạn phải vào lệnh Load Application trong menu Tool của cad sau đó chỉ đường dẫn ới thư mục mà bạn đã lưu file của bạn rồi nhấn nút Load bạn nhé.

 

Chúc bạn thành công.

Nếu bạn viết lsp trong môi trường notebed thì hơi vất cho bạn đấy, bạn vào cad rồi đánh lệnh VLIDE nó sẽ vào môi trường lsp cho bạn. còn bạn không lưu vào file *.lsp được vì bạn không để trong dấu kép nháy vd "tkt.lsp" chẳng hạn.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

cảm ơn bác SSG nhiều em mới nhập môn đang­ loay hoay tìm tài liệu may có b­ác up bài này lên không chắc chả biết gì :bigsmile: cảm ơn bác và­ nh­ững người tâm huyết như bác mong bác :bigsmile:

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Nếu bạn viết lsp trong môi trường notebed thì hơi vất cho bạn đấy, bạn vào cad rồi đánh lệnh VLIDE nó sẽ vào môi trường lsp cho bạn. còn bạn không lưu vào file *.lsp được vì bạn không để trong dấu kép nháy vd "tkt.lsp" chẳng hạn.

 

 

Mình muốn viết 1 đoạn lisp để nó đọc các thông số như layer, linetype scale, màu của đôí tượng đó (nếu màu là by layer thì đọc màu cuả layer đó) mà không biết viết thế nào mong các bạn chỉ giáo!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Mình muốn viết 1 đoạn lisp để nó đọc các thông số như layer, linetype scale, màu của đôí tượng đó (nếu màu là by layer thì đọc màu cuả layer đó) mà không biết viết thế nào mong các bạn chỉ giáo!

1- Trước hết, bạn hãy tìm hiểu về DXF code. Để có khái niệm, mời bạn đọc bài này:

http://www.cadviet.com/cadnews/content/view/89/1/

Qua đó, bạn sẽ tự nhận biết mình còn thiếu mảng kiến thức nào và hãy tự bổ sung.

 

2- Nếu có thể, tìm hiểu về các functions dạng vla-get-xxxx. Chúng rất hiệu quả với các yêu cầu tương tự như của bạn.

 

Chúc bạn nhanh chóng làm chủ được ngôn ngữ Lisp.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Mình muốn viết 1 đoạn lisp để nó đọc các thông số như layer, linetype scale, màu của đôí tượng đó (nếu màu là by layer thì đọc màu cuả layer đó) mà không biết viết thế nào mong các bạn chỉ giáo!

Bạn xem lisp này của mình và tự rút ra cái bạn cần nhé!

;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;
(Defun c:dxem ( )  (setq metxem (getstring "\nGia tri mot met:")) (Princ))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(Defun c:xem ( )

 (if (null metxem)(setq metxem "1"))
 (setq metxemt (atof metxem)) 
(setq noidungthongbaotrong (strcat "\n"
                                  "\n---------------o Viet boi Kts: Duy o---------------"))

(princ "\nChon doi tuong muon xem thuoc tinh")
(setq doituong1 (entsel))
(while
(null doituong1)
(princ "\nChon doi tuong muon xem thuoc tinh")
(setq doituong1 (entsel))
)

(setq doituong (car doituong1))
(setq doituong (entget doituong))

(setq KIEUDOITUONG (cdr (assoc 0 doituong)))
(setq TILEDANGDUONG (cdr (assoc 48 doituong)))
(setq LAYERDOITUONG (cdr (assoc 8 doituong)))
(setq COLORDOITUONG (cdr (assoc 62 doituong)))
(setq KIEUDUONGDOITUONG (cdr (assoc 6 doituong)))

  (setq TENLOP (TBLOBJNAME "LAYER" LAYERDOITUONG))
  (setq DOCLOP (entget TENLOP))
  (setq MAULOP (cdr (assoc 62 DOCLOP)))
  (setq KIEUDUONGLOP (cdr (assoc 6 DOCLOP)))

 (Cond
 ((= KIEUDOITUONG "INSERT") 
 (setq KIEUDOITUONG "BLOCK")
 )
 ((/= KIEUDOITUONG "INSERT") 
 (setq KIEUDOITUONG KIEUDOITUONG)
 )
 )

 (Cond
 ((= COLORDOITUONG nill) 
 (setq COLORDOITUONG (strcat "BYLAYER <" (itoa MAULOP) ">"))
 )
 ((/= COLORDOITUONG nill) 
 (setq COLORDOITUONG (itoa COLORDOITUONG))
 )
 )

 (Cond
 ((= KIEUDUONGDOITUONG nill) 
 (setq KIEUDUONGDOITUONG (strcat "BYLAYER <" KIEUDUONGLOP ">"))
 )
 ((/= KIEUDUONGDOITUONG nill) 
 (setq KIEUDUONGDOITUONG KIEUDUONGDOITUONG)
 )
 )

 (Cond
 ((= TILEDANGDUONG nill) 
 (setq TILEDANGDUONG "1.0000")
 )
 ((/= TILEDANGDUONG nill) 
 (setq TILEDANGDUONG (rtos TILEDANGDUONG 2 4))
 )
 )

(setq noidungthongbao (strcat 
  "*DOI TUONG LA : " KIEUDOITUONG
  "\n -LAYER               : " LAYERDOITUONG
  "\n -COLOR              : " COLORDOITUONG))
;;;;;;;;;
 (Cond
 ((= KIEUDOITUONG "TEXT") 
   (setq KIEUTEXT (cdr (assoc 7 doituong)))
   (setq DOLONTEXT (cdr (assoc 40 doituong)))
   (setq GOCTEXT (cdr (assoc 50 doituong)))
 (setq noidungthongbaotrong (strcat 
  "\n -Style                 : " KIEUTEXT
  "\n -Height               : " (rtos DOLONTEXT 2 4)  
  "\n -Rotation angle   : " (rtos (* 180 (/ GOCTEXT pi)) 2 4)
  "\n"
  "\n-------------------o Viet boi Kts: Duy o-------------------"))
 )
 )
;;;;;;;;;
 (Cond
 ((= KIEUDOITUONG "MTEXT") 
   (setq KIEUTEXT (cdr (assoc 7 doituong)))
   (setq DOLONTEXT (cdr (assoc 40 doituong)))
   (setq GOCTEXT (cdr (assoc 50 doituong)))
 (setq noidungthongbaotrong (strcat 
  "\n -Style                 : " KIEUTEXT
  "\n -Height               : " (rtos DOLONTEXT 2 4)  
  "\n -Rotation angle   : " (rtos (* 180 (/ GOCTEXT pi)) 2 4)
  "\n"
  "\n-------------------o Viet boi Kts: Duy o-------------------"))
 )
 )
;;;;;;;;;
 (Cond
 ((= KIEUDOITUONG "BLOCK") 
   (setq TENKHOI (cdr (assoc 2 doituong)))
   (setq TYLEX (cdr (assoc 41 doituong)))
   (setq TYLEY (cdr (assoc 42 doituong)))
   (setq TYLEZ (cdr (assoc 43 doituong)))
   (setq GOCCHEN (cdr (assoc 50 doituong)))
 (setq noidungthongbaotrong (strcat 
  "\n -Block name        : " TENKHOI
  "\n -X scale factor    : " (rtos TYLEX 2 4)  
  "\n -Y scale factor    : " (rtos TYLEY 2 4)  
  "\n -Z scale factor    : " (rtos TYLEZ 2 4)  
  "\n -Rotation angle  : " (rtos (* 180 (/ GOCCHEN pi)) 2 4)
  "\n"
  "\n-------------------o Viet boi Kts: Duy o-------------------"))
 )
 )
;;;;;;;;;
 (Cond
 ((= KIEUDOITUONG "CIRCLE") 
   (setq BANKINH (cdr (assoc 40 doituong)))
(command "area" "ob" doituong1)
   (setq DIENTICH (getvar "area"))
   (setq CHUVI (getvar "Perimeter"))
 (setq noidungthongbaotrong (strcat 
  "\n -Linetype            : " KIEUDUONGDOITUONG  
  "\n -Linetype Scale   : " TILEDANGDUONG  
  "\n -Radius               : " (rtos (/ BANKINH metxemt) 2 4)
  "\n -Area                  : " (rtos (/ DIENTICH (* metxemt metxemt)) 2 4)  
  "\n -Circumference   : " (rtos (/ CHUVI metxemt) 2 4)
  "\n"
  "\n-------------------o Viet boi Kts: Duy o-------------------"
  "\n"
  "\n 1 met = <" metxem "> Go lenh DXEM de thay doi!"))
 )
 )
;;;;;;;;;
 (Cond
 ((= KIEUDOITUONG "ARC") 
   (setq BANKINH (cdr (assoc 40 doituong)))
   (setq GOCBD (cdr (assoc 50 doituong)))
   (setq GOCKT (cdr (assoc 51 doituong)))

 (setq noidungthongbaotrong (strcat 
  "\n -Linetype            : " KIEUDUONGDOITUONG  
  "\n -Linetype Scale   : " TILEDANGDUONG  
  "\n -Radius               : " (rtos (/ BANKINH metxemt) 2 4)
  "\n -Start angle        : " (rtos (* 180 (/ GOCBD pi)) 2 4)
  "\n -End angle          : " (rtos (* 180 (/ GOCKT pi)) 2 4)
  "\n"
  "\n-------------------o Viet boi Kts: Duy o-------------------"
  "\n"
  "\n 1 met = <" metxem "> Go lenh DXEM de thay doi!"))
 )
 )
;;;;;;;;;
 (Cond
 ((= KIEUDOITUONG "LWPOLYLINE") 
   (setq SODINH (cdr (assoc 90 doituong)))
   (setq CHIEURONG (cdr (assoc 43 doituong)))
(command "area" "ob" doituong1)
   (setq DIENTICH (getvar "area"))
   (setq CHUVI (getvar "Perimeter"))
 (setq noidungthongbaotrong (strcat 
  "\n -Linetype            : " KIEUDUONGDOITUONG  
  "\n -Linetype Scale   : " TILEDANGDUONG  
  "\n -Width                 : " (rtos CHIEURONG 2 4)  
  "\n -so dinh               : " (itoa SODINH)
  "\n -Area                  : " (rtos (/ DIENTICH (* metxemt metxemt)) 2 4)  
  "\n -Perimeter          : " (rtos (/ CHUVI metxemt) 2 4)
  "\n"
  "\n-------------------o Viet boi Kts: Duy o-------------------"
  "\n"
  "\n 1 met = <" metxem "> Go lenh DXEM de thay doi!"))
 )
 )
;;;;;;;;;
 (Cond
 ((= KIEUDOITUONG "POLYLINE") 
(command "area" "ob" doituong1)
   (setq DIENTICH (getvar "area"))
   (setq CHUVI (getvar "Perimeter"))
 (setq noidungthongbaotrong (strcat 
  "\n -Linetype            : " KIEUDUONGDOITUONG  
  "\n -Linetype Scale   : " TILEDANGDUONG  
  "\n -Area                  : " (rtos (/ DIENTICH (* metxemt metxemt)) 2 4)  
  "\n -Perimeter          : " (rtos (/ CHUVI metxemt) 2 4)
  "\n"
  "\n-------------------o Viet boi Kts: Duy o-------------------"
  "\n"
  "\n 1 met = <" metxem "> Go lenh DXEM de thay doi!"))
 )
 )
;;;;;;;;;
 (Cond
 ((= KIEUDOITUONG "SPLINE") 
(command "area" "ob" doituong)
   (setq DIENTICH (getvar "area"))
   (setq CHUVI (getvar "Perimeter"))
 (setq noidungthongbaotrong (strcat 
  "\n -Linetype            : " KIEUDUONGDOITUONG  
  "\n -Linetype Scale   : " TILEDANGDUONG  
  "\n -Area                  : " (rtos (/ DIENTICH (* metxemt metxemt)) 2 4)  
  "\n -Perimeter          : " (rtos (/ CHUVI metxemt) 2 4)
  "\n"
  "\n-------------------o Viet boi Kts: Duy o-------------------"
  "\n"
  "\n 1 met = <" metxem "> Go lenh DXEM de thay doi!"))
 )
 )
;;;;;;;;;
 (Cond
 ((= KIEUDOITUONG "LINE") 
 (setq DIEMDAU (cdr (assoc 10 doituong)))
 (setq DIEMCUOI (cdr (assoc 11 doituong)))
 (setq DODAI (distance DIEMDAU DIEMCUOI))  
 (setq GOCXIEN (angle DIEMDAU DIEMCUOI)) 
 (setq noidungthongbaotrong (strcat 
  "\n -Linetype            : " KIEUDUONGDOITUONG  
  "\n -Linetype Scale   : " TILEDANGDUONG  
  "\n -Length               : " (rtos (/ DODAI metxemt) 2 4)  
  "\n -Angle in XY        : " (rtos (* 180 (/ GOCXIEN pi)) 2 4)
  "\n"
  "\n-------------------o Viet boi Kts: Duy o-------------------"
  "\n"
  "\n 1 met = <" metxem "> Go lenh DXEM de thay doi!"))
 )
 )
;;;;;;;;;
 (Cond
 ((= KIEUDOITUONG "DIMENSION") 
 (setq KIEUDIM (cdr (assoc 3 doituong)))
 (setq GIATRI (cdr (assoc 1 doituong)))

 (Cond
 ((= GIATRI "") 
 (setq GIATRI "<>")
 )
 )

 (setq noidungthongbaotrong (strcat 
  "\n -Linetype            : " KIEUDUONGDOITUONG  
  "\n -Linetype Scale   : " TILEDANGDUONG  
  "\n -Dimension style  : " KIEUDIM  
  "\n -Contents           : " GIATRI
  "\n"
  "\n-------------------o Viet boi Kts: Duy o-------------------"))
 )
 )
;;;;;;;;;
 (Cond
 ((= KIEUDOITUONG "HATCH") 
 (setq KEUHATCH (cdr (assoc 2 doituong)))

 (Cond
 ((= KEUHATCH "SOLID") 
 (setq noidungthongbaotrong (strcat 
  "\n -Linetype            : " KIEUDUONGDOITUONG  
  "\n -Linetype Scale   : " TILEDANGDUONG  
  "\n -Hatch pattern    : " KEUHATCH
  "\n"
  "\n-------------------o Viet boi Kts: Duy o-------------------"))
 )
 ((/= KEUHATCH "SOLID") 
 (setq TILEHATCH (cdr (assoc 41 doituong)))
 (setq GOCHATCH (cdr (assoc 52 doituong)))
 (setq noidungthongbaotrong (strcat 
  "\n -Linetype            : " KIEUDUONGDOITUONG  
  "\n -Linetype Scale   : " TILEDANGDUONG  
  "\n -Hatch pattern    : " KEUHATCH
  "\n -Hatch scale        : " (rtos TILEHATCH 2 4)
  "\n -Hatch angle        : " (rtos (* 180 (/ GOCHATCH pi)) 2 4)
  "\n"
  "\n-------------------o Viet boi Kts: Duy o-------------------"))
 )
 )


 )
 )
;;;;;;;;;


(alert (strcat noidungthongbao noidungthongbaotrong))

(Princ))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Mình thấy các anh viết Lisp để kẻ bảng rất hay.

Nhờ các anh hướng dẫn cho việc viết lisp kẻ bảng sau:

 

ví dụ như ta có hình cần tích diện tích ra làm 3 phần : cột có

-----------------------------------------------------

stt - Dien tich 01 - Dien tich 02 - Dien tich 03

------------------------------------------------------

khi pick vào từng phần sẻ đưa vào từng hàng theo tiêu đề của cột trên theo thứ tự pick.

Xong hỏi tính nửa không ?

tính lần nửa sẻ đưa vào hàng 2.

 

Cách thể hiện kẻ bảng ra sao ?

Mong được các anh giúp.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Mình thấy các anh viết Lisp để kẻ bảng rất hay.

Nhờ các anh hướng dẫn cho việc viết lisp kẻ bảng sau:

 

ví dụ như ta có hình cần tích diện tích ra làm 3 phần : cột có

-----------------------------------------------------

stt - Dien tich 01 - Dien tich 02 - Dien tich 03

------------------------------------------------------

khi pick vào từng phần sẻ đưa vào từng hàng theo tiêu đề của cột trên theo thứ tự pick.

Xong hỏi tính nửa không ?

tính lần nửa sẻ đưa vào hàng 2.

 

Cách thể hiện kẻ bảng ra sao ?

Mong được các anh giúp.

Đã trả lời cho bạn tại đây

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

em load xong file relax, chạy ngon lành rồi, nhưng tắt đi rồi, khởi động lại mà vẫn còn chữ RELAX trên menu, nhưng không dùng được nữa, làm ơn chỉ em làm sao để xóa nó đi cái!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Sao không được bạn. Sau khi viết gì đó mình không biết, rồi đặt tên ( VD: Binh80.lsp, < ở đây: binh80: tên lisp và thêm .lsp là được mà>). Chúc bạn thành công

 

Chào bạn Binh08 và a HoangSon.Có lẽ khi save B quên chọn All file.

 

>

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

×