Đến nội dung


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

Hỏi về Lisp (thuật toán, ý tưởng, coding,...)


  • Please log in to reply
2849 replies to this topic

#321 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 21 May 2009 - 02:28 PM

Mình có lisp tính diện tích dùng cũng khá hay, tuy nhiên sau mỗi lần dùng nó lại làm mât chế độ bắt điểm mà mình đã chọn trước đó, ai có thể sửa giúp mình với !
File lisp :
http://www.cadviet.c...en_Tich_Moi.rar

Hề hề, bác BigBill ơi,
Bác chỉ cần thêm một phát code này vào trước dòng (princ) là Ok:
(setvar "osmode" oslast )

Chúc bác vui.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#322 binharch77

binharch77

    biết dimcontinue

  • Members
  • PipPipPipPipPip
  • 372 Bài viết
Điểm đánh giá: 163 (tàm tạm)

Đã gửi 21 May 2009 - 06:59 PM

ôi, cái trên thì mình đã làm được rùi, nhưng lại gặp típ một khó khăn lơn lớn nữa :
vd : (setq list1 (list 1 2 3 4 5))
vậy có cách này không đụng đến tên list1 mà vẫn gọi được danh sách của nó hay không?
vd : (cái này chỉ là vd thui, chứ sai rùi) (princ (strcat "l" "i" "s" "t" (itoa 1)))
í là kêu danh sách nhưng kg đụng đến tên list1 í mà

??????
cái bác giúp với
  • 0

#323 q288

q288

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 209 Bài viết
Điểm đánh giá: 164 (tàm tạm)

Đã gửi 21 May 2009 - 08:06 PM

ôi, cái trên thì mình đã làm được rùi, nhưng lại gặp típ một khó khăn lơn lớn nữa :
vd : (setq list1 (list 1 2 3 4 5))
vậy có cách này không đụng đến tên list1 mà vẫn gọi được danh sách của nó hay không?
vd : (cái này chỉ là vd thui, chứ sai rùi) (princ (strcat "l" "i" "s" "t" (itoa 1)))
í là kêu danh sách nhưng kg đụng đến tên list1 í mà

??????
cái bác giúp với


có phải như vầy k?
(setq list1 (list 1 2 3 4 5))
(eval (read (strcat "l" "i" "s" "t" (itoa 1))))
  • 1

#324 binharch77

binharch77

    biết dimcontinue

  • Members
  • PipPipPipPipPip
  • 372 Bài viết
Điểm đánh giá: 163 (tàm tạm)

Đã gửi 21 May 2009 - 08:54 PM

có phải như vầy k?
(setq list1 (list 1 2 3 4 5))
(eval (read (strcat "l" "i" "s" "t" (itoa 1))))



yeah !!!!!!!!! :mellow:
đúng rùi đấy bác ơi. thế hàm eval là hàm gì vậy? bác lấy tài liệu đâu ra thế? cho xin với.
ở cái nơi khỉ ho cò gáy này chả có cuốn sách nào ra hồn cả.

ôi, nếu cadviet kg tồn tại chắc mình tiêu mất. thank cad viet
nếu nút thank còn hiệu lực 2 3 lần, chắc tui cũng thank cho bác vài cái cho sướng.

he he he.
:mellow:
  • 0

#325 q288

q288

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 209 Bài viết
Điểm đánh giá: 164 (tàm tạm)

Đã gửi 21 May 2009 - 09:28 PM

yeah !!!!!!!!! :mellow:
đúng rùi đấy bác ơi. thế hàm eval là hàm gì vậy? bác lấy tài liệu đâu ra thế? cho xin với.
ở cái nơi khỉ ho cò gáy này chả có cuốn sách nào ra hồn cả.

ôi, nếu cadviet kg tồn tại chắc mình tiêu mất. thank cad viet
nếu nút thank còn hiệu lực 2 3 lần, chắc tui cũng thank cho bác vài cái cho sướng.

he he he.
:mellow:


Mình học từ bác Hoành đấy, trước đây cũng có ng hỏi, và bác H trả lời rồi, phải chuyển lời cám ơn cho bác Hoành.
Hàm eval cho ra giá trị thực của biến đứng sau
Hàm read cho ra phần tử đầu của chuỗi đứng sau, tức là nếu chuỗi có dấu cách thì chỉ lấy 1 từ đứng trước thôi.
Tài liệu thì đọc help thôi, chỉ cần tiếng anh sơ sơ cũng đọc đc mà, tốt nhất là đọc các ví dụ.
  • 1

#326 binharch77

binharch77

    biết dimcontinue

  • Members
  • PipPipPipPipPip
  • 372 Bài viết
Điểm đánh giá: 163 (tàm tạm)

Đã gửi 21 May 2009 - 10:02 PM

Mình học từ bác Hoành đấy, trước đây cũng có ng hỏi, và bác H trả lời rồi, phải chuyển lời cám ơn cho bác Hoành.
Hàm eval cho ra giá trị thực của biến đứng sau
Hàm read cho ra phần tử đầu của chuỗi đứng sau, tức là nếu chuỗi có dấu cách thì chỉ lấy 1 từ đứng trước thôi.
Tài liệu thì đọc help thôi, chỉ cần tiếng anh sơ sơ cũng đọc đc mà, tốt nhất là đọc các ví dụ.

ôi, thế thì cho mình chuyển nhời cám ơn bác Hoành nhé.
thank nhiều nhièu
  • 0

#327 binharch77

binharch77

    biết dimcontinue

  • Members
  • PipPipPipPipPip
  • 372 Bài viết
Điểm đánh giá: 163 (tàm tạm)

Đã gửi 24 May 2009 - 06:15 PM

ccác bác xem giùm mình, tại sao máy mình lại chạy cái này bị lỗi (điểm 2 3 trùng nhau)?????

(command "pline" '(2989 3573 0) '(2989 4173 0) '(2969 4201 0) '(2969
8173 0) "")
  • 0

#328 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 24 May 2009 - 06:32 PM

ccác bác xem giùm mình, tại sao máy mình lại chạy cái này bị lỗi (điểm 2 3 trùng nhau)?????

(command "pline" '(2989 3573 0) '(2989 4173 0) '(2969 4201 0) '(2969
8173 0) "")

Bạn phải tắt osnap đi trước khi dùng hàm command.

Bạn search trên diễn đàn từ (setvar "osmode" 0) để có thêm ví dụ.
  • 1

#329 binharch77

binharch77

    biết dimcontinue

  • Members
  • PipPipPipPipPip
  • 372 Bài viết
Điểm đánh giá: 163 (tàm tạm)

Đã gửi 24 May 2009 - 07:57 PM

Bạn phải tắt osnap đi trước khi dùng hàm command.

Bạn search trên diễn đàn từ (setvar "osmode" 0) để có thêm ví dụ.

đề nghị diễn đàn cho thank nhiều hơn nữa. chứ thank có 1 lần chưa đã.
càm ơn bác Nguyễn Hòanh nhiều nhiều ..... nhá
  • 0

#330 ktsk80

ktsk80

    biết lệnh erase

  • Members
  • PipPipPip
  • 107 Bài viết
Điểm đánh giá: 27 (tàm tạm)

Đã gửi 24 May 2009 - 08:26 PM

đề nghị diễn đàn cho thank nhiều hơn nữa. chứ thank có 1 lần chưa đã.
càm ơn bác Nguyễn Hòanh nhiều nhiều ..... nhá

hì, sao bạn lại ko biết osmod nhỉ,...đây là điều căn bản trước nhất để cad chạy lip đấy.
  • 0
Tớ nẫu đây ! Khà khà

#331 binharch77

binharch77

    biết dimcontinue

  • Members
  • PipPipPipPipPip
  • 372 Bài viết
Điểm đánh giá: 163 (tàm tạm)

Đã gửi 24 May 2009 - 09:11 PM

hì, sao bạn lại ko biết osmod nhỉ,...đây là điều căn bản trước nhất để cad chạy lip đấy.

hề hề,
cái này tớ vừa học, vừa thực hiện vừa làm một cái lisp cho riêng mình. điều này sẽ gặp một số bất cập trong thực hiện, nhưng nhờ đó, việc tìm hiểu về lisp sẽ sâu hơn trong bản chất của vấn đề.
còn cái osmode này tớ có thấy ai chỉ quái gì đâu.
tuy nhiên tớ cũng thấy thắc mắc 1 điều : tại sao mình nhập tọa độ chính xác, chế độ bắt điểm vẫn thực hiện như mình vẽ bằng chuột nhỉ??????
cái này cũng đã thử rồi, khi zoom to lên thì kg bị (i chang như trường hợp bắt điểm khi dùng chuột)
  • 0

#332 binharch77

binharch77

    biết dimcontinue

  • Members
  • PipPipPipPipPip
  • 372 Bài viết
Điểm đánh giá: 163 (tàm tạm)

Đã gửi 25 May 2009 - 06:07 PM

các bác cho mình hỏi:
trong lisp có thực hiện được việc insert 1 block từ file khác vào và hiệu chỉnh được attribute của block này hay kg?
mình thấy trong cad, khi insert block có attribute nó sẽ hỏi giá trị ngay,
vậy lisp có thể không cho xuất hiện bảng nhập giá trị, chỉ nhập theo các giá trị được tính tóan trong lisp , được kg?????
  • 0

#333 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 25 May 2009 - 06:34 PM

các bác cho mình hỏi:
trong lisp có thực hiện được việc insert 1 block từ file khác vào và hiệu chỉnh được attribute của block này hay kg?
mình thấy trong cad, khi insert block có attribute nó sẽ hỏi giá trị ngay,
vậy lisp có thể không cho xuất hiện bảng nhập giá trị, chỉ nhập theo các giá trị được tính tóan trong lisp , được kg?????

Vẫn bình thường như nhập bằng tay.

Trước hết, bạn phải set biến hệ thống ATTDIA về 0 sau đó thì dùng lệnh command như bình thường.
  • 0

#334 binharch77

binharch77

    biết dimcontinue

  • Members
  • PipPipPipPipPip
  • 372 Bài viết
Điểm đánh giá: 163 (tàm tạm)

Đã gửi 25 May 2009 - 06:44 PM

Vẫn bình thường như nhập bằng tay.

Trước hết, bạn phải set biến hệ thống ATTDIA về 0 sau đó thì dùng lệnh command như bình thường.

ôi, cám ơn bác Nguyễn Hoanh nhiều. mình cứ vừa học, vừa tự làm cái lisp hơi khủng nên bối rối. nếu có gì "gà" quá, xin bỏ qua nhé
cám ơn lần nữa
  • 0

#335 tuan_thietkedien

tuan_thietkedien

    biết lệnh mirror

  • Members
  • PipPipPip
  • 153 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 28 May 2009 - 10:14 AM

Mình có cái Lisp để copy file test.lsp từ thư mục này sang thư mục khác, nhưng nếu copy vào c:\ thì được , còn copy vào c:\Program Files\AutoCAD 2004\Support thì không được. Xin mọi chỉ giúp.

(defun c:chep()
(command "SHELL" "copy d:\\test.lsp C:\\Program Files\\AutoCAD 2004\\Support")
(princ))
  • 0

#336 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 28 May 2009 - 10:26 AM

Mình có cái Lisp để copy file test.lsp từ thư mục này sang thư mục khác, nhưng nếu copy vào c:\ thì được , còn copy vào c:\Program Files\AutoCAD 2004\Support thì không được. Xin mọi chỉ giúp.

(defun c:chep()
(command "SHELL" "copy d:\\test.lsp C:\\Program Files\\AutoCAD 2004\\Support")
(princ))

Shell là cầu cứu tới dos rồi mà nó thì không chịu khoảng hở.
  • 1

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#337 q288

q288

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 209 Bài viết
Điểm đánh giá: 164 (tàm tạm)

Đã gửi 28 May 2009 - 10:37 AM

Mình có cái Lisp để copy file test.lsp từ thư mục này sang thư mục khác, nhưng nếu copy vào c:\ thì được , còn copy vào c:\Program Files\AutoCAD 2004\Support thì không được. Xin mọi chỉ giúp.

(defun c:chep()
(command "SHELL" "copy d:\\test.lsp C:\\Program Files\\AutoCAD 2004\\Support")
(princ))


Bạn dùng hàm vl-file-copy hay hơn.

(vl-load-com)
(vl-file-copy "d:/test.lsp" "C:/Program Files/AutoCAD 2004/Support/test.lsp")
  • 2

#338 tuan_thietkedien

tuan_thietkedien

    biết lệnh mirror

  • Members
  • PipPipPip
  • 153 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 28 May 2009 - 01:12 PM

Shell là cầu cứu tới dos rồi mà nó thì không chịu khoảng hở.


Em đã bỏ hết khoảng hở rồi mà cũng không copy được, em đã thử thay đổi đường dẫn ví dụ sang thư mục d:\tuan thì được. Hình như nó không chịu copy tất cả những gì vào c:\Program Files thì phải.
  • 0

#339 tuan_thietkedien

tuan_thietkedien

    biết lệnh mirror

  • Members
  • PipPipPip
  • 153 Bài viết
Điểm đánh giá: 15 (tàm tạm)

Đã gửi 28 May 2009 - 01:18 PM

Bạn dùng hàm vl-file-copy hay hơn.

(vl-load-com)
(vl-file-copy "d:/test.lsp" "C:/Program Files/AutoCAD 2004/Support/test.lsp")


Mình làm được rồi.
Cám ơn bác q288 nhiều nha.
Nếu bác biết về cách tạo file.bat thì cho mình hỏi thêm 1 chút.
Mình cũng thử copy bằng kiểu tạo file.bat dưới đây nhưng không được, không biết làm sai chỗ nào.

@echo off
copy d:\test.lsp C:\Program Files\AutoCAD 2004\Support

Nếu mình copy vào thưc mục khác C:\Program Files thì vẫn copy được.
  • 0

#340 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 28 May 2009 - 02:03 PM

Em đã bỏ hết khoảng hở rồi mà cũng không copy được, em đã thử thay đổi đường dẫn ví dụ sang thư mục d:\tuan thì được. Hình như nó không chịu copy tất cả những gì vào c:\Program Files thì phải.

Thế theo bạn giữa chử Program và chử Files không phải khoảng hở thì nó là cái gì vậy :s_big:
  • 1

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D