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.
Đăng nhập để thực hiện theo  
Polyline

Chia Polyline kín thành các Polyline kín

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

Polyline    18

118851_divideclosepolyline.pngMình muốn chia một PLine kín thành các Pline kín nhỏ hơn (Xem ảnh).

Có thể chia bằng đường chéo hoặc đường bất kỳ, có thể chia thành 2 mảnh hoặc nhiều hơn.

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
Doan Van Ha    2.680

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
Polyline    18

Cám ơn bác HA!

Cách chia thế này bác ạ, trước hết chọn PLine kín cần chia.

Sau đó chia bằng cách pick 2 điểm cắt ngang qua PLine đó. Có thể làm nhiều lần như vậy để chia.

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
Tue_NV    3.841

Cám ơn bác HA!

Cách chia thế này bác ạ, trước hết chọn PLine kín cần chia.

Sau đó chia bằng cách pick 2 điểm cắt ngang qua PLine đó. Có thể làm nhiều lần như vậy để chia.

 

Cái này đơn giản, đâu cần Lisp, chỉ cần BOUNDARY 2 vùng kín lại và xóa cái Pline cần chia là xong.

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
Doan Van Ha    2.680

Cái này đơn giản, đâu cần Lisp, chỉ cần BOUNDARY 2 vùng kín lại và xóa cái Pline cần chia là xong.

Giải pháp này chỉ khả thi khi Pline kín không chứa/cắt các đối tượng khác.

  • 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
Polyline    18

Đây cũng là một ý tưởng. Tuy nhiên khi bản vẽ phức tạp và có nhiều đối tượng chồng chéo lên nhau thì lệnh Boundary -> Pick sẽ không còn đơn giản nữa!

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
Tue_NV    3.841

Đây cũng là một ý tưởng. Tuy nhiên khi bản vẽ phức tạp và có nhiều đối tượng chồng chéo lên nhau thì lệnh Boundary -> Pick sẽ không còn đơn giản nữa!

 

Bạn up hình đơn giản không có đối tượng chồng chéo thì câu trả lời đơn gian là thế. Nếu đối tượng chống chéo thì câu trả lời cũng đơn giản, sử dụng CAD giải quyết ngon lành:

Bạn xem video :

 

 

  • 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
Polyline    18

Bạn có ... bài nhạc hay quá, rất hợp gu mình! :)

Câu trả lời của bạn rất công phu, có cả clip đi kèm, nếu có nhiều người như bạn thì chất lượng của diễn đàn sẽ tăng lên rất nhiều.

Việc dùng một hình đơn giản để thể hiện là phù hợp bạn ạ - trong tính kết cấu, nó giống như việc chuyển từ sơ đồ thực về sơ đồ tính vậy! Hơn nữa, việc dùng một hình đơn giản nhằm giúp người xem loại bỏ những thông tin gây nhiễu không cần thiết khác.

Nếu bạn chia PLine thành 2 phần, cách làm của bạn hoàn toàn hợp lý. Nhưng nếu bạn chia thành ... 20 phần, nó sẽ phát sinh những vấn đề mới:

- 2 phần ngoài mép có thể làm theo cách của bạn (chọn thuộc tính Close trong Properties).

- Đối với các phần bên trong bạn phải vẽ các Line nối các điểm mới bị ngắt, sau đó nối chúng lại với nhau. Sau khi nối xong bạn sẽ mất Line đó đi, và phải vẽ thêm một Line nữa (trùng với Line bị mất) và tiếp tục nối cho để tạo ra Pline kín mới.

 

Hơn nữa, đây là công việc đơn điệu, chậm và nhàm chán, đó là lý do mình cần có một Lisp để làm việc này bạn ạ!

Sau khi các vấn đề trên được giải quyết, mình dự định sẽ mở rộng ra cho Pline có ARC và Pline đã bị "SPLINE hóa" nữa.

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
Doan Van Ha    2.680

Lisp chia đôi nhiều lần 1 Pline kín không chứa Arc. Vòng lặp cho đến khi Enter thì ngừng chia.

 

;; Chia Pline kin khong chua Arc thanh 2 Pline kin. Vong lap den khi Enter thi dung.
;; Doan Van Ha - CadViet.com - 16/7/2013
(defun C:HA( / #List:Subtract1 #List:SubList LM:Collinear-p1 #List:InsertNth LWPoly ent p1 p2 lst i lst1 n1 n2)
 (defun #List:Subtract1(lst1 lst2)
  (foreach n (reverse (cdr (reverse (cdr lst2))))
   (setq lst1 (vl-remove n lst1))))
 (defun #List:SubList(lst start len / i tmp)
  (setq len (if len (min len (- (length lst) start)) (- (length lst) start)) i (+ start len))
  (repeat len
   (setq tmp (cons (nth (setq i (1- i)) lst) tmp))))
 (defun #List:InsertNth(x n lst)
  ((lambda(i) (apply 'append (mapcar '(lambda(a) (if (= n (setq i (1+ i))) (list x a) (list a))) lst))) -1))
 (defun LWPoly (lst cls)
  (entmakex (append (list (cons 0 "LWPOLYLINE") (cons 100 "AcDbEntity") (cons 100 "AcDbPolyline") (cons 90 (length lst)) (cons 70 cls)) (mapcar (function (lambda (p) (cons 10 p))) lst))))
 (defun LM:Collinear-p1 (p1 pg p2)
  (equal (+ (distance p1 pg) (distance p2 pg)) (distance p1 p2) 1E-8))
;; main function
 (command "undo" "be")
 (while
  (and
   (setq ent (car (entsel "\nChon Pline kin: ")))
   (setq p1 (getpoint "\nPick diem thu 1 tren Pline: "))
   (setq p2 (getpoint p1 "\nPick diem thu 2 tren Pline: ")))
  (setq lst (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget ent))))
  (setq i -1 lst1 lst)
  (repeat (1- (length lst1))
   (if (LM:Collinear-p1 (nth (setq i (1+ i)) lst1) p1 (nth (1+ i) lst1))
    (setq lst (#List:InsertNth p1 (1+ i) lst1))))
  (setq i -1 lst1 lst)
  (repeat (1- (length lst1))
   (if (LM:Collinear-p1 (nth (setq i (1+ i)) lst1) p2 (nth (1+ i) lst1))
    (setq lst (#List:InsertNth p2 (1+ i) lst1))))
  (setq n1 (min (vl-position p1 lst) (vl-position p2 lst)))
  (setq n2 (max (vl-position p1 lst) (vl-position p2 lst)))
  (LWPoly (setq lst1 (#List:SubList lst n1 (- n2 n1 -1))) 1)
  (LWPoly (#List:Subtract1 lst lst1) 1)
  (entdel ent))
 (command "undo" "e"))
 
  • 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

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

Đăng nhập để thực hiện theo  

×