Chuyển đến nội dung
Diễn đàn CADViet
Nguyen Hoanh

Nối các line, arc, lwpolyline không chạm nhau

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

:D :D :D

Bác Bình thông cảm, hàng tối mật không up lên đây được.

:D :D :D

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

:D :D :D

Bác Bình thông cảm, hàng tối mật không up lên đây được.

:D :D :D

 

 

Anh Hai Lúa chuyên sản xuất và gia công hàng ...chợ à???? :) :) :)

 

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

Trước khi dùng:
pedit_Truoc.gif

Sau khi dùng:
pedit_Sau.gif

có thể dùng Lisp nào dùng để nối nó được không anh

Cái này có thể dùng lisp này giải quyết đơn giản hơn không cần quan tâm đến không cách xa hay gần.

(defun c:mcha ( / *error* mid AssocOn ss i ent p1 p2 lin linn lins flins ptlst1 pt1 pt11 ptlst2 pt2 pt22 chpts chamfers )
  (vl-load-com)  
  (defun *error* ( msg )
    (if chma (setvar 'chamfera chma))
    (if chmb (setvar 'chamferb chmb))
    (if chmm (setvar 'chammode chmm))
    (vla-endundomark (vla-get-activedocument (vlax-get-acad-object))))
  (defun mid ( p1 p2 )
    (mapcar '(lambda ( a b ) (/ (+ a b) 2.0)) p1 p2))
  (defun AssocOn ( SearchTerm Lst func fuzz )
    (car (vl-member-if (function
          (lambda (pair) (equal SearchTerm (apply func (list pair)) fuzz))) lst)))
  (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
  (mapcar 'set '(chma chmb chmm) (mapcar 'getvar '(chamfera chamferb chammode)))
  (mapcar 'setvar '(chamfera chamferb chammode) '(0 0 0))
  (prompt "\nSelect line entities")
  (while (not (setq ss (ssget "_:L" '((0 . "LINE"))))))
  (setq i -1)
  (while (setq ent (ssname ss (setq i (1+ i))))
    (setq p1 (trans (vlax-curve-getstartpoint ent) 0 1))
    (setq p2 (trans (vlax-curve-getendpoint ent) 0 1))
    (setq lin (list p1 p2))
    (setq lins (cons lin lins)))
  (setq flins (apply 'append lins))
  (foreach lin lins
    (setq ptlst1 (vl-sort flins '(lambda ( a b ) (< (distance (car lin) a) (distance (car lin) b)))))
    (if (equal (cadr ptlst1) (cadr lin) 1e-8) (setq pt1 (caddr ptlst1)) (setq pt1 (cadr ptlst1)))
    (if (setq linn (assocon pt1 lins 'car 1e-8)) (setq pt11 (mid (car linn) (cadr linn))))
    (if (setq linn (assocon pt1 lins 'cadr 1e-8)) (setq pt11 (mid (car linn) (cadr linn))))
    (setq ptlst2 (vl-sort flins '(lambda ( a b ) (< (distance (cadr lin) a) (distance (cadr lin) b)))))
    (if (equal (cadr ptlst2) (car lin) 1e-8) (setq pt2 (caddr ptlst2)) (setq pt2 (cadr ptlst2)))
    (if (setq linn (assocon pt2 lins 'car 1e-8)) (setq pt22 (mid (car linn) (cadr linn))))
    (if (setq linn (assocon pt2 lins 'cadr 1e-8)) (setq pt22 (mid (car linn) (cadr linn))))
    (setq chpts (list pt11 (mid (car lin) (cadr lin))) chamfers (cons chpts chamfers) chpts (list pt22 (mid (car lin) (cadr lin))) chamfers (cons chpts chamfers)))
  (foreach chpts chamfers
    (command "_.chamfer" (car chpts) (cadr chpts)))
  (*error* nil) (princ))

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

:D :D :D

Rã 2 đường polyline đó ra, chỉnh 2 thông số như hình minh họa về 0 (zero) rồi nối bình thường.

File đã xử lý: http://www.cadviet.com/upfiles/3/110802_123341_g7917i_d7877n_273àn.dwg

:D :D :D

110802_screenshot_25.png

  • 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

Nhờ các bạn chỉ giúp với

Kèm theo bản vẽhttp://www.cadviet.com/upfiles/3/123341_g7917i_d7877n_273àn.dwg

Hề hề hề,

Lý do không nối được bởi hai polyline có mút không trùng nhau. Điểm trên bản vẽ tưởng trùng nhau nhưng chúng có tọa độ khác nhau đáng kể.

Bạn hãy dùng thử lisp dưới đây và  nhớ nhập giá trị sai lệch khá lớn (khoảng 10) xem sao nhé.

Chúc bạn vui và nhớ tuân thủ đúng quy định của diễn đàn

.http://www.cadviet.com/upfiles/3/5194_jointpl2lwpl.lsp

  • 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

Đâu có bị gì nhẻ???? Mình làm bình thường mà bạn. Chắc bạn thao tác còn thiếu tại dòng nhắc lệnh.

Bạn gõ Pe -> gõ M -> chọn tất cả -> chọn Join -> Jointyle -> chọn Both (bao gồm cả Extend và Add) -> gõ 1 hoặc 2 rùi enter là OK

Mình làm trên file bạn thấy nối line Ok cả

Cảm ơn bạn rất nhiều.Cũng cảm ơn bác hoành đã mở topic này.

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ác bác cho em hỏi chút với ah.

Em đang dùng cad 2013 khi vẽ xong em đi lấy kích thước của bản vẽ thì bị lỗi 

Nó chỉ hiển thị 1 ô vuông nhỏ ở giữa dòng kích thước thay vì hiển thị kích thước của chi tiết.

Có bác nào biết cách sửa lỗi đó làm ơn chỉ giáo em với, em sắp phải nộp bài rồi ;(```

 

Thank's

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

×