Đế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
2851 replies to this topic

#1721 TRUNGNGAMY

TRUNGNGAMY

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 401 Bài viết
Điểm đánh giá: 91 (tàm tạm)

Đã gửi 02 July 2013 - 03:45 PM

Bài toán ngược này có lẽ không có đáp án chăng?

Có các objects dẫn đường thì tạo được 1 boundary. Nhưng có 1 boundary thì có thể có vô số objects dẫn đường cơ mà?

Hay do chưa hiểu ý bạn? Lâu ngày gặp lại: chức sức khỏe!

 

Cám ơn bạn. Ý mình muốn nói đến các đối tượng bị đường bao trùng lên (1 hay toàn phần) mà thôi


  • 0

#1722 sontvxd10

sontvxd10

    Chưa sử dụng CAD

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

Đã gửi 20 July 2013 - 11:04 AM

Mình muốn tìm líp tính khối lượng đào và đắp từ 4 điểm chênh cao. Cái này hinh nhu của bác boxman trên 4r mình. Nhưng link die ca. AE nào có gửi giùm mình với. Thx nhiều


  • -2

#1723 hdt4151

hdt4151

    biết vẽ pline

  • Members
  • PipPip
  • 69 Bài viết
Điểm đánh giá: -1 (bình thường)

Đã gửi 16 October 2013 - 09:36 AM

Nhờ mọi người giúp đỡ, mình cần 1lisp có chức năng như sau:

 

-Chọn đối tượng, nhóm đối tượng bất kì

- Chọn điểm chèn

- Gõ tên block

- Thực hiện copy nhóm đối tượng đã chọn lên tất cả block có trên bản vẽ tại điểm chèn của block


  • -1

#1724 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 16 October 2013 - 03:21 PM

Nhờ mọi người giúp đỡ, mình cần 1lisp có chức năng như sau:

 

-Chọn đối tượng, nhóm đối tượng bất kì

- Chọn điểm chèn

- Gõ tên block

- Thực hiện copy nhóm đối tượng đã chọn lên tất cả block có trên bản vẽ tại điểm chèn của block

Hề hề hề,

Đây là topic về thuật toán. Chả hiểu ông bác này muốn cái chi nữa????

Nếu muốn viết lisp thì xin chuyển sang topic khác.

Còn nếu muốn hỏi về thuật toán thì quá đơn giản:

1/- Chọn nhóm đối tượng nguồn bằng hàm ssget sẽ được tập nguồn

2/- chọn điểm chuẩn cho tập nguồn này để làm gốc copy.

3/- Chọn tập đối tượng đích bằng hàm ssget với bộ lọc tên block.

4/- tạo vòng lặp qua tập đích lầy điểm chèn của mỗi đối tượng và copy tập nguồn về đó.

5/- xong cái ột.....


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

#1725 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 13 December 2013 - 04:21 PM

Chuyển mã từ TCVN3 sang Unicode cho file Excel bằng Lisp:

Bằng Lisp: có cách nào để chuyển 1 file excel viết bằng tiếng Việt có dấu, bởi TCVN3, sang Unicode không các bác ơi?


  • 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.


#1726 huunhantvxdts

huunhantvxdts

    biết dimbaseline

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

Đã gửi 18 December 2013 - 01:12 AM

Không biết hỏi đây có đúng chổ không nữa, Nếu không đúng xin bỏ qua cho

Tôi có 3 tập hợp list có số phần tử như nhau bây giờ muốn tạo 1 tập hợp lớn mà trong đó 1 tập hợp con chứa 3 phần từ của 3 tập hợp ban đầu. Nói thì dài dòng khó hiểu nhưng nôm na thế này

list1 (a b a v .........)

list2 (12 12 45 45 .....)

list3 (544 658 658 647 ........)

muốn tạo thành list mới

LIST ((a 12 544) (b 12 658) (a 45 658) (v 45 647) (...) ....(...))

Mong mọi người giúp đỡ


  • 0

#1727 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 18 December 2013 - 06:55 AM

Thế này thôi:

(mapcar 'list list1 list2 list3)


  • 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.


#1728 huunhantvxdts

huunhantvxdts

    biết dimbaseline

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

Đã gửi 18 December 2013 - 08:13 AM

Thế này thôi:

(mapcar 'list list1 list2 list3)

Đơn giản vậy thôi à?? thế mà e mất cả 1 buổi tối tìm không được.

Cám ơn Bác nhiều 


  • 0

#1729 winter712

winter712

    biết vẽ polygon

  • Validating
  • PipPip
  • 75 Bài viết
Điểm đánh giá: 8 (bình thường)

Đã gửi 02 January 2014 - 03:38 PM

em đang mày mò học về lips, có cái đề baì như thế này: viết lệnh để vẽ tam giác đều ABC, cạnh dài 100. cạnh AB song song với trục OX. Điểm A do người dùng pick trên màn hình. em viết dòng code như thế này nhưng khi pick  vào các điểm bất kỳ trên màn hình, có lúc thì nó cho tam giác đều đúng yêu cầu, có lúc nó cho tam giác ko đúng yêu cầu ( các tam giác em tô mà xanh ở file kèm theo) có lúc nó lại cho ko phải tam giac, mong các bác chỉ giúp chỗ sai của em, và giải thích giúp em tại sao nó lại cho nhiều kết quả khác nhau như vậy. em xin cảm ơn 

(defun c:TGD (/ p1)

(setq p1 (getpoint "nhap diem p1:"))

(command "line" p1 "@100,0" "")

(command "line" p1 "@100,0" "@100<120" "")

(command "line" p1 "@100<60" ""))http://www.cadviet.c...0_bai_tap_5.dwg

 

 

 

(defun c:TGD (/ p1)
(setq p1 (getpoint "nhap diem p1:"))
(command "line" p1 "@100,0" "")
(command "line" p1 "@100,0" "@100<120" "")
(command "line" p1 "@100<60" ""))
(defun c:TGD (/ p1)
(setq p1 (getpoint "nhap diem p1:"))
(command "line" p1 "@100,0" "")
(command "line" p1 "@100,0" "@100<120" "")
(command "line" p1 "@100<60" ""))

  • 0
[size=3][/size]Có ai đó nói rằng tôi đang lạc bước. Nhưng họ ko biết rằng tôi đã có 1 ước mơ…!
VIT NGOC

#1730 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 January 2014 - 03:44 PM

em đang mày mò học về lips, có cái đề baì như thế này: viết lệnh để vẽ tam giác đều ABC, cạnh dài 100. cạnh AB song song với trục OX. Điểm A do người dùng pick trên màn hình. em viết dòng code như thế này nhưng khi pick  vào các điểm bất kỳ trên màn hình, có lúc thì nó cho tam giác đều đúng yêu cầu, có lúc nó cho tam giác ko đúng yêu cầu ( các tam giác em tô mà xanh ở file kèm theo) có lúc nó lại cho ko phải tam giac, mong các bác chỉ giúp chỗ sai của em, và giải thích giúp em tại sao nó lại cho nhiều kết quả khác nhau như vậy. em xin cảm ơn 

(defun c:TGD (/ p1)

(setq p1 (getpoint "nhap diem p1:"))

(command "line" p1 "@100,0" "")

(command "line" p1 "@100,0" "@100<120" "")

(command "line" p1 "@100<60" ""))http://www.cadviet.c...0_bai_tap_5.dwg

 

 

 

(defun c:TGD (/ p1)
(setq p1 (getpoint "nhap diem p1:"))
(command "line" p1 "@100,0" "")
(command "line" p1 "@100,0" "@100<120" "")
(command "line" p1 "@100<60" ""))
(defun c:TGD (/ p1)
(setq p1 (getpoint "nhap diem p1:"))
(command "line" p1 "@100,0" "")
(command "line" p1 "@100,0" "@100<120" "")
(command "line" p1 "@100<60" ""))

 

Winter chưa thêm đoạn mã tắt osnap khi vẽ bằng hàm command. Chú ý set và trả lại osnap như ban đầu nhé


  • 0

#1731 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 02 January 2014 - 04:03 PM

Tại sao lại phải 3 lần vẽ bắt đầu từ p1 như vầy hè???

Hề hề hề,

Sao không viết lại ngắn hơn

(command "line" p1 "@100,0" "@100<120" "c" )

Lưu ý: @100<60 sẽ tạo một đường line từ điểm cuối của lệnh line trước đó dài 100 và tạo với trục x góc 60 độ chứ không phải góc 300 độ đâu nhé.


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

#1732 winter712

winter712

    biết vẽ polygon

  • Validating
  • PipPip
  • 75 Bài viết
Điểm đánh giá: 8 (bình thường)

Đã gửi 02 January 2014 - 04:55 PM

Tại sao lại phải 3 lần vẽ bắt đầu từ p1 như vầy hè???

Hề hề hề,

Sao không viết lại ngắn hơn

(command "line" p1 "@100,0" "@100<120" "c" )

Lưu ý: @100<60 sẽ tạo một đường line từ điểm cuối của lệnh line trước đó dài 100 và tạo với trục x góc 60 độ chứ không phải góc 300 độ đâu nhé.

he, em biết 2 cách viết là như nhau, nhưng vì đang học nên em hơi bảo thủ, muốn làm theo trình tự cho nó khỏi loạn não, ủa  mà cái "c" ở cuối hàm command có ý nghĩa gì vậy bác bình, em chưa hiểu rõ về cấu trúc của cái lệnh command cho lắm, trong tài liệu hướng dẫn thì nói rất đơn gián, nhưng lúc dùng thì có vẻ đa dạng hơn ... :(


  • 0
[size=3][/size]Có ai đó nói rằng tôi đang lạc bước. Nhưng họ ko biết rằng tôi đã có 1 ước mơ…!
VIT NGOC

#1733 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 02 January 2014 - 11:07 PM

he, em biết 2 cách viết là như nhau, nhưng vì đang học nên em hơi bảo thủ, muốn làm theo trình tự cho nó khỏi loạn não, ủa  mà cái "c" ở cuối hàm command có ý nghĩa gì vậy bác bình, em chưa hiểu rõ về cấu trúc của cái lệnh command cho lắm, trong tài liệu hướng dẫn thì nói rất đơn gián, nhưng lúc dùng thì có vẻ đa dạng hơn ... :(

Hề hề hề,

1/- Cái "c" cuối cùng đó có nghĩa là "Close" tức là khép kín line lại. Nó là một trong các option của lệnh line, mà hình như là mọi người ít dùng option này do thường dùng pline để vẽ các đa giác thì phải.

2/- cấu truc của hàm (command ....) là cấu trúc của các lệnh có sẵn trong CAD. Tùy vào cách sử dụng của mỗi lệnh mà các tham số đi theo hàm này thay đổi tương ứng với nó..

Tỷ như lệnh line thì Cad yêu cầu sau khi nhập lệnh thì phải nhập tọa độ của các điểm và có thêm option Close để khép kín các line tạo ra một đa giác. Do vậy hàm (command "line" .....) sẽ có tham số là các tọa độ điểm và tham số "c" tương ứng với việc khép kin các line để tạo thành đa giác.

3/- Chính vì bạn đang học viết lisp nên việc học cách tạo ra lisp càng ngắn gọn càng tốt sẽ giúp bạn hiểu rõ hơn tính năng và tác dụng của các hàm được sử dụng trong lisp.

Chúc bạn học tốt.

PS: lưu ý rằng việc bảo thủ trong học tập cũng là một cách học để nắm vững vấn đề, nhưng bảo thủ trong làm việc thì sẽ có thể gây hại không nhỏ đâu.


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

#1734 huunhantvxdts

huunhantvxdts

    biết dimbaseline

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

Đã gửi 06 January 2014 - 10:25 AM

Mình đang viết lisp có 1 vướng mắc nhờ mọi người giúp đỡ. 

mình có 1 pline cắt qua các điểm chèn của block bây giờ mình muốn sort các block theo thứ tự  mà pline đi qua (theo chiều của pline) 


  • 0

#1735 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 06 January 2014 - 10:34 AM

Đây là 1 trong các giải pháp:

- Lấy điểm start hoặc end của pline.

- Sort theo chiều dài (không phải khoảng cách) từ điểm chèn của block đến start hoặc end.


  • 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.


#1736 winter712

winter712

    biết vẽ polygon

  • Validating
  • PipPip
  • 75 Bài viết
Điểm đánh giá: 8 (bình thường)

Đã gửi 06 January 2014 - 10:39 AM

Hề hề hề,

1/- Cái "c" cuối cùng đó có nghĩa là "Close" tức là khép kín line lại. Nó là một trong các option của lệnh line, mà hình như là mọi người ít dùng option này do thường dùng pline để vẽ các đa giác thì phải.

2/- cấu truc của hàm (command ....) là cấu trúc của các lệnh có sẵn trong CAD. Tùy vào cách sử dụng của mỗi lệnh mà các tham số đi theo hàm này thay đổi tương ứng với nó..

Tỷ như lệnh line thì Cad yêu cầu sau khi nhập lệnh thì phải nhập tọa độ của các điểm và có thêm option Close để khép kín các line tạo ra một đa giác. Do vậy hàm (command "line" .....) sẽ có tham số là các tọa độ điểm và tham số "c" tương ứng với việc khép kin các line để tạo thành đa giác.

3/- Chính vì bạn đang học viết lisp nên việc học cách tạo ra lisp càng ngắn gọn càng tốt sẽ giúp bạn hiểu rõ hơn tính năng và tác dụng của các hàm được sử dụng trong lisp.

Chúc bạn học tốt.

PS: lưu ý rằng việc bảo thủ trong học tập cũng là một cách học để nắm vững vấn đề, nhưng bảo thủ trong làm việc thì sẽ có thể gây hại không nhỏ đâu.

cảm ơn bác Thanh Binh và bác Tue_NV, em nhìn mãi ko thấy cái nút thank nó ở đâu nên đành phải chiếm dụng thêm chút đất đai của diễn đàn để thêm một comment nữa, bác bình nói rất đúng, em đang trong quá trình sửa cái tính bảo thủ đây bác ạ. bác có biết quyển sách nào viết về lips và có cả bài tập thực hành ko giới thiệu em với, hnay mới có thời gian mò lên Hoa Lư để tìm, mà trên đó nhiều hiệu sách nhỏ quá, ko thể đi tìm hết đc


  • 0
[size=3][/size]Có ai đó nói rằng tôi đang lạc bước. Nhưng họ ko biết rằng tôi đã có 1 ước mơ…!
VIT NGOC

#1737 huunhantvxdts

huunhantvxdts

    biết dimbaseline

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

Đã gửi 06 January 2014 - 10:49 AM

Đây là 1 trong các giải pháp:

- Lấy điểm start hoặc end của pline.

- Sort theo chiều dài (không phải khoảng cách) từ điểm chèn của block đến start hoặc end.

Ok 

Nghe qua thì cũng ok rồi đó nhưng không biết viết được đây không (dân tay ngang chủ yếu là chế lisp)???hehehhehe

Nếu được Bác viết cho mình 1 đoạn 

Cám ơn Bác nhiều


  • 0

#1738 huunhantvxdts

huunhantvxdts

    biết dimbaseline

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

Đã gửi 06 January 2014 - 04:26 PM

Đây là 1 trong các giải pháp:

- Lấy điểm start hoặc end của pline.

- Sort theo chiều dài (không phải khoảng cách) từ điểm chèn của block đến start hoặc end.

đã sort được rồi

Bác cho em hỏi có hàm nào kiểm tra block có nằm trên đường pline này không (Khoảng cách bằng 0) (cái này để công tác chọn nhanh hơn)


  • 0

#1739 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 06 January 2014 - 04:32 PM

đã sort được rồi

Bác cho em hỏi có hàm nào kiểm tra block có nằm trên đường pline này không (Khoảng cách bằng 0) (cái này để công tác chọn nhanh hơn)

 

Bạn Dùng hàm vlax-curve-getClosestPointTo để kiểm tra điểm p có nằm trên curve © hay không?.


  • 1

#1740 huunhantvxdts

huunhantvxdts

    biết dimbaseline

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

Đã gửi 06 January 2014 - 05:29 PM

Bạn Dùng hàm vlax-curve-getClosestPointTo để kiểm tra điểm p có nằm trên curve © hay không?.

Có thể lòng hàm vlax-curve-getClosestPointTo  vào hàm chọn SSget không??

cám ơn bạn đã giúp đỡ


  • 0