Đến nội dung


Hình ảnh
- - - - -

Đề nghị giúp đỡ giải bài toán này


  • Please log in to reply
5 replies to this topic

#1 vuxuanhuynh

vuxuanhuynh

    biết zoom

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

Đã gửi 31 October 2012 - 09:17 PM

Đề nghị mọi người giúp mình ý tưởng, thuật toán để giải bài toán sau:
Bài toán: Cho tập hợp điểm P trên bản vẽ( đối tượng dạng Block), viết hàm để xóa Block(i) nếu khoảng cách từ Block(i) đến Block xung quanh có khoảng cách nhỏ hơn khoảng cách D cho trước. Thank you very much!
  • 0

#2 hochoaivandot

hochoaivandot

    biết dimradius

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

Đã gửi 01 November 2012 - 08:24 AM

Theo hochoaivandot, bạn thử Lồng lệnh While

Bạn thực hiện 1 vòng lặp qua tập hợp điểm. Trong vòng lặp ấy:
- Khi lặp qua điểm Pi chẳng hạn. Bạn thực hiện tiếp 1vòng lặp (vòng lặp con) với n-1 điểm còn lại.
- Tính khoảng cách Di từ Pi đến n-1 điểm kia,
- Khi xuất hiện Di<D thì dừng vòng lặp con để xóa Pi.
- Khi dừng vòng lặp con thì bỏ luôn đối tượng Pi đã xét khỏi tập hơp điểm.
  • 0

Dương Bá Diệp

 

www.cadonline.duyxuyen.vn 

 

Thành viên nhóm CADMAGIC

 


#3 hochoaivandot

hochoaivandot

    biết dimradius

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

Đã gửi 01 November 2012 - 10:34 AM


(defun LM:ss->ent ( ss / i l )
(if ss
(repeat (setq i (sslength ss))
(setq l (cons (ssname ss (setq i (1- i))) l))
)
)
)
(defun dxf (code e) (cdr (assoc code (entget e))))
(defun ss<dis(ss dis_iso / lst ss_sel e pt num con i ei pt_i dis)
(setq lst (LM:ss->ent ss))
(setq ss_sel (ssadd))
(while (setq e (car lst))
(setq
pt (dxf 10 e)
lst (cdr lst)
)
(foreach ei lst
(setq pt_i (dxf 10 ei))
(setq dis (distance pt pt_i))
(if (< dis dis_iso) (setq ss_sel (ssadd ei ss_sel) lst (vl-remove ei lst)))
)
)
ss_sel
)
(defun C:xoa(/ dis_iso ss)
(setq dis_iso (getdist "\nNhap khoang cach"))
(setq ss (ssget '((0 . "INSERT"))))
(command "erase" (ss<dis ss dis_iso) "")
)

  • 0

Dương Bá Diệp

 

www.cadonline.duyxuyen.vn 

 

Thành viên nhóm CADMAGIC

 


#4 ThuyLinh313

ThuyLinh313

    biết lệnh mtext

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

Đã gửi 01 November 2012 - 10:39 AM

Hình như bạn này đang viết lisp làm thưa block text cao độ trên bình đồ cho dễ đọc thì phải. trước đây mình có viết hộ đồng nghiệp 1 cái như thế. thuật toán thì y chang bạn Học Dốt viết bên trên :D
  • 0

#5 aliosa

aliosa

    biết vẽ polygon

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

Đã gửi 01 November 2012 - 11:20 PM

Đây là dạng bài toán xóa bớt điểm mia trên bình đồ mà. Chỉ khách điểm mia giờ không phải là text mà là block (một số phần mềm xuất ra dạng block, một số khác xuất dạng Point, Text, Proxy...). Mình đã gặp trường hợp này và làm như sau: Phá vỡ Block -> Text -> dùng lisp có sẵn trên diễn đàn để xóa bớt Text theo một khoảng cách cho trước. Hi vọng bạn có thể tham khảo chút chút!
  • 0

#6 vuxuanhuynh

vuxuanhuynh

    biết zoom

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

Đã gửi 02 November 2012 - 10:36 AM

Cảm ơn mọi người giúp đỡ. Mình sẽ tham khảo áp dụng vào bài toán của mình.
  • 0