Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Jin Yong

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

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

Chào các anh/chị/em trên diễn đàn!

Em có 1 ý tưởng này không biết đã có chưa ạ!

Đó là việc thống kê các biến được khai báo trong lisp.

Nhiều khi em muốn giải phóng các biến nhưng cứ phải đi tìm “setq” để cho lên dòng đầu của defun của hàm. Công việc này rất thời gian và hoa mắt. Các anh/chị/em có mẹo gì không hoặc có lisp nào thống kê các biến có trong lisp không ạ? Cảm ơn anh/chị/em nhiều

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

Không biết bác thanhduan247 viết lisp trên vlide hay notepad, em thì hay dùng notepad++. Nó có một chức năng khá hay là bôi xanh tất cả các từ có nội dung giống nhau trong file lisp. Bác chỉ cần bôi xanh vào một từ setq, sau đó kích đúp vào từ bôi xanh, thế là các biến hiện ra hết. Tuy cách này "hoang dã" nhưng chắc cũng giúp bác đỡ mỏi mắt tìm mấy em biến trong khi chờ các bro hiến kế. :D

  • 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

Thấy bạn cũng là 1 Fan của Lee-Mac mà sao bạn không ngó tới trang này -_-

http://lee-mac.com/debugvlide.html

Bác Doan Van Ha chỉ cho em cách rồi ạ! Cái anh gửi không phải cái em hỏi anh ạ! Em làm đc rồi. ^^

Đúng là em là FAN cuồng Lee-Mac.  :wub:

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 tập tành chắp vá ít lisp vào để chủ động sửa theo ý muôn nhưng gặp một số vấn đề sau.

Các bác cho em hỏi trong trường hợp em có 1 TEXT1, TEXT2 ở giữa, xung quanh là 4 hoặc nhiều hơn thế TEXT3 làm sao để em quét chọn toàn bộ 3 loại text này (thuộc 3 layer khác nhau) và lisp sẽ tính toán tổng của "TEXT3" rồi chia cho giá trị của "TEXT2" rồi điền kết quả vào "TEXT1".

Cảm ơn các bác. em có bản vẽ kèm theo, các bác giúp em.

http://www.cadviet.com/upfiles/4/139186_file_dau_vao.dwg

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 đang luyện thì có thể tham khảo thử cách của nhoc như thể này ^^.

- quét hết các text bạn mún, sau đó lọc ra các text theo từng layer ra từng danh sách khác nhau.

- có danh sách text màu đỏ lấy dxf1 ra rùi cộng với nhau, chia cho dxf1 của text màu đất cuối cùng entmod text màu xanh

- nhoc nghĩ cái sườn  là vậy ^^, còn lại tùy bạn ứng biến

p/s: lưu ý nếu kỹ thì nên thêm đk chỉ nhận các text là dạng số ^^

  • 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

- nếu bạn đang luyện thì có thể tham khảo thử cách của nhoc như thể này ^^.

- quét hết các text bạn mún, sau đó lọc ra các text theo từng layer ra từng danh sách khác nhau.

- có danh sách text màu đỏ lấy dxf1 ra rùi cộng với nhau, chia cho dxf1 của text màu đất cuối cùng entmod text màu xanh

- nhoc nghĩ cái sườn  là vậy ^^, còn lại tùy bạn ứng biến

p/s: lưu ý nếu kỹ thì nên thêm đk chỉ nhận các text là dạng số ^^

 

 

Nhoc làm giúp mình đoạn code lọc layer rồi dùng entmod vào text màu xanh nhé. mình không đọc ko rõ lắm, bạn cho mình đoạn code để áp dụng vào nhiều bài toán khác nhé.

Cảm ơn nhoclangbat.

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

- hi nhoc cũng mới thử code nhanh theo ý tưởng của bạn, bạn tham khảo ^^

(defun C:tinhcd(/ c ename info cong chia ds_cong ds_ent num)
(setq c -1 )
(if (setq ss (ssget '((0 . "TEXT"))))
 (progn
    (while (setq ename (ssname ss (setq c (1+ c))))
      (if (setq num (distof (cdr (assoc 1 (entget ename)))))
	      
          (setq ds_ent (append ds_ent (list ename)))
      );if
	  ds_ent
	);while, vong while dùng de kiem tra cac text dang so, neu la dang so thi gom cac ename do vao 1 danh sach
;//////////////////////////////////////////////////////////////////	
(if ds_ent
(progn
(foreach k ds_ent
(if (= (cdr (assoc 8 (entget k))) "TEXT2")
   (setq info (entget k))
   ) ; if nay de loc lay elist cua text mau xanh can entmod
;///////////////////////////////////////////
(if (= (cdr (assoc 8 (entget k))) "TEXT1")
   (setq chia (distof (cdr (assoc 1 (entget k)))))
   ) ; if nay dung de loc texst mau vang dat sau do lay gia tri cua no ra
;////////////////////////////////////////////
(if (= (cdr (assoc 8 (entget k))) "TEXT3")
 (progn
   (setq cong (distof (cdr (assoc 1 (entget k)))))
   (setq ds_cong (append ds_cong (list cong)))
   )
   )
 ) ; if nay de loc cac text mau do gom cac gia tri cua no vao 1 danh sach
(entmod (subst (cons 1 (rtos (/ (apply '+ ds_cong) chia) 2 2))   (assoc 1 info) info))
)  
)
  );progn
  (alert "\nChua co doi tuong dc chon hoac ban chi chon toan text chu ^^")
);if    
(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

Cảm ơn nhoclangbat nhiều. Mình sẽ thêm thử đặt nó vào mấy cái lisp mình đang mắc đoạn này xem sao.

Hi hi, nếu bạn muốn vọc vạch, tìm hiểu kỹ hơn thì đăng ký học lớp autolisp online trên diễn đàn mình ý. Mình mới học 2 tháng mà cũng tự tạo cho mình được khối thứ hay ho rồ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

Chào các bác, em có vấn đề cần các bác tư vấn giúp:133631_hoi.jpg

 

Đầu tiên em dùng hàm ssget để chọn các toàn bộ các đường thẳng. Sau đó em lọc để tập hợp ename được sinh ra từ lệnh ssget chỉ còn ename của các đường thẳng có chiều dài lớn hơn . Làm thế nào để từ tập hợp ename mà lại highlight ngược lại được như hình ạ. Thanks các bác

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 các bác ạ, em search trên diễn đàn thấy có lệnh "Bpoly" dùng để tạo miền kín rất hay, nhưng khi dùng vào lisp thì tốc độ rất chậm do chạy bằng command. Các bác biết hàm lisp nào có chức năng tương đương như lệnh này không chỉ em với. Thanks các bác ạ

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

HỎI VỀ XỬ LÝ VÒNG LẶP VỚI DANH SÁCH

 

Chào các bác! Em đang bị vướng chưa biết cách xử lý vòng lặp với một danh sách nên nhờ các bác tư vấn giúp. (Em đang thực hiện thuật toán tạo vùng với tất cả các đường LINE khép kín, cái này thuộc ngôn ngữ chuyên ngành nên em không cần nói rõ)

Em có 1 mảng gồm 7 mảng danh sách như sau:

1 – 2 – 3

2 – 6 – 4 – 1

3 – 4 – 5 – 1

4 – 6 – 3 – 2

5 – 7 – 3

6 – 7 – 4 – 2

7 – 5 – 6

Xét từng lần lượt từ 1 đến 7

Trong file đính kèm em mô tả rất rõ. 

Em đang loay hoay xử lý vòng lặp mà chưa biết cách. Rất mong các bác chỉ giáo

http://www.cadviet.com/upfiles/4/36665_danh_sach_tao_vung.dwg

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

hì hì, sorry bác Thanh Duan em chen ngang tí, em có vấn đề này cần các pro tư vấn:

Khi viết một text nam tron vào một khung HCN, thì một cạnh của hình chữ nhật dễ dàng tính được theo text hight. Cạnh còn lại được tính theo (* độ rộng chữ chiều dài chữ), khổ nỗi độ rộng chữ lại phụ thuộc vào từng font và cả cái tỷ lệ "width factor" do người dùng chọn. Các bác cho em một vài ý tưởng được không ạ. Thanks các bác.

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

HỎI VỀ XỬ LÝ VÒNG LẶP VỚI DANH SÁCH

 

Chào các bác! Em đang bị vướng chưa biết cách xử lý vòng lặp với một danh sách nên nhờ các bác tư vấn giúp. (Em đang thực hiện thuật toán tạo vùng với tất cả các đường LINE khép kín, cái này thuộc ngôn ngữ chuyên ngành nên em không cần nói rõ)

Em có 1 mảng gồm 7 mảng danh sách như sau:

1 – 2 – 3

2 – 6 – 4 – 1

3 – 4 – 5 – 1

4 – 6 – 3 – 2

5 – 7 – 3

6 – 7 – 4 – 2

7 – 5 – 6

Xét từng lần lượt từ 1 đến 7

Trong file đính kèm em mô tả rất rõ. 

Em đang loay hoay xử lý vòng lặp mà chưa biết cách. Rất mong các bác chỉ giáo

http://www.cadviet.com/upfiles/4/36665_danh_sach_tao_vung.dwg

Thế bác cứ nói rõ mình đang làm gì, dữ liệu vào là gì, dữ liệu ra là gì có hơn kg. Nhìn bác diễn tả thật sự chưa hiểu ý lắm

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

Thế bác cứ nói rõ mình đang làm gì, dữ liệu vào là gì, dữ liệu ra là gì có hơn kg. Nhìn bác diễn tả thật sự chưa hiểu ý lắm

Em biết bác TRUNGNGAMY

P/s. Máy đơ nên cmt sai.

ý tưởng là tính diện tích từ vùng khép kín bởi LINE

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


×