Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu] Lisp vẽ nhanh line nối giữa các nhóm point


  • Please log in to reply
3 replies to this topic

#1 victor85

victor85

    biết lệnh stretch

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

Đã gửi 30 November 2012 - 03:05 PM

Các bác viết dùm em lisp vẽ line nối các nhóm point với nhau với ạ. lisp cụ thể như sau:
+ chọn các point thuộc nhóm point A (đối tượng đầu vào là point)
+ chọn các point thuộc nhóm point B
-> lisp chạy ra kết quả nối được các point nhóm A với B bằng các line như hình minh họa:
Hình đã gửi
Các bác giúp em với nhé. Em thanks các bác nhiều nhiều :)
  • 1

#2 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 30 November 2012 - 03:24 PM

Lisp vẽ các line nối group point1 và group point2.

(defun C:HA( / ss1 ss2 entlst1 entlst2 p1 p2)
;Doan Van Ha - CADViet.com - Ngay 30/11/2012
;Chuc nang: Ve cac Line noi Group Point1 va Group Point2.
(command "undo" "be") (vl-load-com)
(if
(and
(princ "\nChon nhom point 1...")
(setq ss1 (ssget '((0 . "Point"))))
(princ "\nChon nhom point 2...")
(setq ss2 (ssget '((0 . "Point")))))
(progn
(setq entlst1 (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss1))))
(setq entlst2 (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss2))))
(foreach ent1 entlst1
(setq p1 (cdr (assoc 10 (entget ent1))))
(foreach ent2 entlst2
(setq p2 (cdr (assoc 10 (entget ent2))))
(entmake (list (cons 0 "LINE") (cons 10 p1) (cons 11 p2)))))))
(command "undo" "end")
(princ))

  • 3

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


#3 quansla

quansla

    biết lệnh xclip

  • Members
  • PipPipPipPipPipPipPip
  • 641 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 30 November 2012 - 03:59 PM

Lisp vẽ các line nối group point1 và group point2.

Hài, chậm chân sau bác Hà rồi, hì . Thôi chẳng lẽ viết ra lại để không úp đại vậy
lệnh là THU (thử)

(defun c:thu(/ A B e i j)
(vl-load-com)
(alert "\nchon point nhom A")(princ)
(setq a (list) b (list))
(foreach e
(acet-ss-to-list
(ssget (list (cons 0 "POINT"))))
(setq A (append A (list(cdr(assoc 10 (entget e)))))))
(alert "\nchon point nhom B")(princ)
(foreach e
(acet-ss-to-list
(ssget (list (cons 0 "POINT"))))
(setq B (append B (list(cdr(assoc 10 (entget e)))))))
(princ "\nNoi cac diem")(princ)
(foreach i A
(foreach j B
(entmakex
(list '(0 . "LINE")
(cons 10 i)
(cons 11 j)
))
)
)
)

  • 2

#4 victor85

victor85

    biết lệnh stretch

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

Đã gửi 30 November 2012 - 04:44 PM

lisp đều ổn rồi các bác ạ. Thanks các bác đã nhiệt tình giúp đỡ :)
  • 0