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

nối 2 đường polyline với nhau nhưng KHÔNG HỢP lại thành 1

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

Mình muốn hỏi làm cách nào để nối 2 đường polyline lại với nhau như lệnh fillet nhưng nó vẫn là 2 polyline chứ không phải gộp lại thành 1 .... Cảm ơn mọi người giúp đỡ

  • Vote giảm 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

Ngoại trừ lisp ra thì không có cách nào cả, nhưng dạo này trên 4rum dường như chẳng có ai hứng thú viết free cả, bạn thông cảm nhé.

Hoặc vẽ tay nếu số lượng ít.

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

Mình có ông anh trong cơ quan làm được được nhưng là Cad 2010 . nhờ ổng qua cad 2016 chỉnh giùm thì ổng không biết nên lên diễn đàn hỏi các ae có thể giúp được ko

 

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
1 giờ} trướ}c, nghia7x đã nói:

Mình có ông anh trong cơ quan làm được được nhưng là Cad 2010 . nhờ ổng qua cad 2016 chỉnh giùm thì ổng không biết nên lên diễn đàn hỏi các ae có thể giúp được ko

 

Chào nhé!

 

Bạn đưa cái file có 2 Poly nói trên cho mình xem thử.

 

  • Like 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ác nét hạ tầng trong này là polyline mình muốn là các nét hạ tầng này đều là từng đoạn riêng biệt ... Nếu ta làm nối bằng fillet thì xem như các nét hạ tầng này đều nhập thành 1 rất khó chỉnh sửa kéo dịch chuyển khi bị sai . Nên mình hỏi có cách nào cũng là nối các polyline này lại với nhau nhưng nó không hợp nhất thành 1 , có thể chỉ giúp mình .

12.TONG HOP DD- DUONG ONG CatTai2021-Vitri2.dwg

  • Vote giảm 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
17 giờ trước, DuongTrungHuy đã nói:

Ý Bạn là vậy à

image.png.23434a783a1aea5b5ec8b6b6018b6f6d.png

đúng rồi bác nhưng để mà được như "sau" thì mình phải dùng cả Trim + Extend , BR+ BF thì mới ra đc , còn dùng fillet thì nó nhập làm 1 mất tiêu ( Cad 16) . Ông trong cty dùng Cad 10 thì nối được bằng fillet nhưng ko nhập thành 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
4 giờ trước, nghia7x đã nói:

đúng rồi bác nhưng để mà được như "sau" thì mình phải dùng cả Trim + Extend , BR+ BF thì mới ra đc , còn dùng fillet thì nó nhập làm 1 mất tiêu ( Cad 16) . Ông trong cty dùng Cad 10 thì nối được bằng fillet nhưng ko nhập thành 1

Trim/Extend thì có thể chung 1 lệnh. ví dụ như Trim thì nhấn Shift là Extend và ngược lại. Bạn có thể chọn kiểu Extend edge của trim/extend để dễ sài hơn.

Còn viết lisp thì phức tạp. Mình không có cad 10 để test thử nhưng mình nghĩ nó là lisp. Nếu máy sài được thì có lisp sẳn nên lấy sài tiếp thôi. Chứ viết lisp này cũng khá phức tạp nếu viết kỹ.

Mình viết cho bạn 1 đoạn lisp ngắn là break polyline tại 1 điểm

(defun c:bb(/ p) (command "BREAK" (setq p (getpoint)) p))

Có thể dùng ngắt polyline sau fillet/chamfer.

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
4 giờ trước, nghia7x đã nói:

đúng rồi bác nhưng để mà được như "sau" thì mình phải dùng cả Trim + Extend , BR+ BF thì mới ra đc , còn dùng fillet thì nó nhập làm 1 mất tiêu ( Cad 16) . Ông trong cty dùng Cad 10 thì nối được bằng fillet nhưng ko nhập thành 1

 Chào Bạn!

Yêu cầu của Bạn là vậy à.

 

image.png.24bd0de5a245778371fdea19999a1593.png

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

8 câu trả lời mà mọi người vẫn phải đoán già đoán non, không hiểu chủ thớt muốn gì lun, ngay tên lệnh cũng nói sai, đó là chamfer chứ kp fillet nhé bác, botay.com!!

  • Like 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
12 giờ trước, alisp đã nói:

8 câu trả lời mà mọi người vẫn phải đoán già đoán non, không hiểu chủ thớt muốn gì lun, ngay tên lệnh cũng nói sai, đó là chamfer chứ kp fillet nhé bác, botay.com!!

Bạn thử lệnh fillet chưa mà bảo người ta nói nhầ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

Vậy là bạn chưa xem cái file chủ thớt đưa lên rồi. 2 lệnh đó cho kết quả giống nhau nếu R=0 hoặc D=0, nhưng trong file bạn ấy đưa lên không thấy có cái arc nào của lệnh fillet mà chỉ thấy bẻ cạnh của lệnh chamfer, hay là bạn tìm dùm chỗ nào dùng lệnh fillet đc không ?

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
14 giờ trước, alisp đã nói:

8 câu trả lời mà mọi người vẫn phải đoán già đoán non, không hiểu chủ thớt muốn gì lun, ngay tên lệnh cũng nói sai, đó là chamfer chứ kp fillet nhé bác, botay.com!!

Tôi nói như này là vì không muốn thấy bác Duongtrunghuy nản chí vi cư phải hỏi đi hỏi lại với lối trình bày mơ hồ của chủ thớt, bác Huy là 1 trong số it người còn nhiệt tình giúp đỡ người khác trong CV, bác ay mà không giúp nữa thì chẳng còn ai giúp nữa đâ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
23 giờ trước, nghia7x đã nói:

đúng rồi bác nhưng để mà được như "sau" thì mình phải dùng cả Trim + Extend , BR+ BF thì mới ra đc , còn dùng fillet thì nó nhập làm 1 mất tiêu ( Cad 16) . Ông trong cty dùng Cad 10 thì nối được bằng fillet nhưng ko nhập thành 1

Chào Bạn.

Hì có sự động viên mình viết. Các Bạn rãnh góp ý nhé!

 

 

 

(defun cChh(/ dse1 dse2 ss1 dga dgb d1a d1b d2a d2b ds1ci ds2cu e1 e2)
  (setvar "osmode" 0)(Setvar "orthomode" 0)
  (Princ "\nBao chon 2 Poly: ")
  (setq ss1 (ssget) e1 (ssname ss1 0) e2 (ssname ss1 1)
        ds1 (acet-geom-vertex-list e1) ds2 (acet-geom-vertex-list e2)
        d1a (car ds1) d1b (cadr ds1) d2a (car ds2) d2b (cadr ds2)
        dga (Inters d1a d1b d2a d2b) dgb (Inters d1a d1b d2a d2b F)
  )
  ;(print (list d1a d1b d2a d2b dga dgb))
  (If dga
  (progn
    (command "break" e1 dga dga) (command "break" e2 dga dga)
  )  
  (progn
    (setq l1 (distance d1a d1b) l2 (distance d2a d2b) dse1 (entget e1) dse2 (entget e2) d1c d1b d2c d2b
          dsmoi (list 10 (car dgb) (cadr dgb))
    )
    (If (< (distance dgb d1a) (distance dgb d1b))(setq d1c d1a))
    (If (< (distance dgb d2a) (distance dgb d2b))(setq d2c d2a))
    (If (< (+ (distance dgb d1a) (distance dgb d1b)) l1) (command "break" e1 dgb dgb)
      (setq ds1cu (list 10 (car d1c) (cadr d1c)) dse1 (subst dsmoi ds1cu dse1) oo (entmod dse1))
    )
    (If (< (+ (distance dgb d2a) (distance dgb d2b)) l2) (command "break" e2 dgb dgb)
      (setq ds2cu (list 10 (car d2c) (cadr d2c)) dse2 (subst dsmoi ds2cu dse2) oo (entmod dse2))
    )
  )
  )
)  

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
42 phút trước, DuongTrungHuy đã nói:

Chào Bạn.

Hì có sự động viên mình viết. Các Bạn rãnh góp ý nhé!

Mất dấu hai chấm trong c: rồi bác ơ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

Mục tiêu

1. Lấy list điểm của pline

2. Chọn điểm cuối pline gần với điểm lựa chọn entsel

3. Xác định giao điểm 2 pline

4. Dời điểm cuối pline sang giao điểm

 

 

(defun c:test5 ()
  (defun pl_update_point (ent p pudt)
    (entmod (subst (cons 10 pudt) (cons 10 p) (entget ent)))
    (entupd ent)
  )
  (defun pl_get_all_point (ent)
    (setq ls nil)
    (foreach n (entget ent)
      (if (= 10 (car n))
    (setq ls (append ls (list (cdr n))))
      )
    )
    ls
  )

  (defun near_point (str)
    (setq e   (entsel str)
      ent (car e)
      p1  (cadr e)
      ls  (pl_get_all_point ent)
      n   (length ls)
    )
    (if    (< (distance p1 (car ls)) (distance p1 (last ls)))
      (list (car ls) (nth 1 ls) ent)
      (list (last ls) (nth (- n 2) ls) ent)
    )
  )


  (setq    ls1 (near_point "\nChon pline 1")
    ls2 (near_point "\nChon pline 2"))
  (setq inter (INTERS (nth 0 ls1) (nth 1 ls1) (car ls2) (nth 1 ls2) nil)
  )
  (pl_update_point (nth 2 ls1) (car ls1) inter)
  (pl_update_point (nth 2 ls2) (car ls2) inter)
)
 

  • Like 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
3 giờ trước, DuongTrungHuy đã nói:

Chào Bạn.

Hì có sự động viên mình viết. Các Bạn rãnh góp ý nhé!

 

 

 

(defun cChh(/ dse1 dse2 ss1 dga dgb d1a d1b d2a d2b ds1ci ds2cu e1 e2)
  (setvar "osmode" 0)(Setvar "orthomode" 0)
  (Princ "\nBao chon 2 Poly: ")
  (setq ss1 (ssget) e1 (ssname ss1 0) e2 (ssname ss1 1)
        ds1 (acet-geom-vertex-list e1) ds2 (acet-geom-vertex-list e2)
        d1a (car ds1) d1b (cadr ds1) d2a (car ds2) d2b (cadr ds2)
        dga (Inters d1a d1b d2a d2b) dgb (Inters d1a d1b d2a d2b F)
  )
  ;(print (list d1a d1b d2a d2b dga dgb))
  (If dga
  (progn
    (command "break" e1 dga dga) (command "break" e2 dga dga)
  )  
  (progn
    (setq l1 (distance d1a d1b) l2 (distance d2a d2b) dse1 (entget e1) dse2 (entget e2) d1c d1b d2c d2b
          dsmoi (list 10 (car dgb) (cadr dgb))
    )
    (If (< (distance dgb d1a) (distance dgb d1b))(setq d1c d1a))
    (If (< (distance dgb d2a) (distance dgb d2b))(setq d2c d2a))
    (If (< (+ (distance dgb d1a) (distance dgb d1b)) l1) (command "break" e1 dgb dgb)
      (setq ds1cu (list 10 (car d1c) (cadr d1c)) dse1 (subst dsmoi ds1cu dse1) oo (entmod dse1))
    )
    (If (< (+ (distance dgb d2a) (distance dgb d2b)) l2) (command "break" e2 dgb dgb)
      (setq ds2cu (list 10 (car d2c) (cadr d2c)) dse2 (subst dsmoi ds2cu dse2) oo (entmod dse2))
    )
  )
  )
)  

em thấy lisp của bác @DuongTrungHuy viết rất hay,chọn nhanh được đối tượng,nhưng nếu mà lỡ tay chọn nhầm làm lisp bị lỗi(như chọn đối tượng không phải là polyline,chọn quá 2 đường polyline,chọn 1 đường line và 1 đường polyline ....) thì lisp sẽ xóa luôn các đối tượng được chọn,và lần sau dùng lại cũng bị xóa luôn.Bác có thể chỉnh lại chỗ này một chút để mà quét chọn nhầm thì nó vẫn không bị xóa( hoặc báo lỗi để còn biết mà sửa) chứ không xóa hẳn luôn được không ạ,nghĩa là lisp không yêu xin đừng nói lời cay đắng ý ạ

  • Like 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
3 giờ trước, Danh Cong đã nói:

Mất dấu hai chấm trong c: rồi bác ơi :)))

Chào đầu năm nhé!

Mình định viết kiểu hàm chứ không phải lệnh đó Bạn kiểu gọi là (cchh).

Cám ơn!

 

Chào nhé!

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
Vào lúc 22/2/2021 tại 09:01, nghia7x đã nói:

Mình có ông anh trong cơ quan làm được được nhưng là Cad 2010 . nhờ ổng qua cad 2016 chỉnh giùm thì ổng không biết nên lên diễn đàn hỏi các ae có thể giúp được ko

 

Ổng không biết cũng phải thôi, chẳng  phải do cad 2010 hay 2016 đâu, mà là nếu nối 2 line thì sau khi fillet nó vẫn rời, còn nếu là 1 poly 1 line hay 2 poly nò sẽ dính chùm. Chẳng qua ông anh trong công ty đã nổ poly thành line rồi đó mà. Mất công mấy bác lisper làm lisp cho vui thô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
19 giờ trước, vanlam6408 đã nói:

em thấy lisp của bác @DuongTrungHuy

Chào Bạn!

Cái mình đã đưa là phần cốt lõi của bài toán. Để trở thành chuyên nghiệp, sản phẩm thị trường hơn cần làm như Bạn nói. Thông thường nhưng chuyện đó ko phức tạp lắm, Mình sửa theo y/c của Bạn

-Chọn Poly

-Chỉ lấy 2 obj

-Có Undo.

 

Cám ơn đã ý kiến (Mình định để người yêu cầu xem xét rồi chỉnh sửa luôn).

Bạn tham khảo nhé!

 

Cad_Viet4.LSP

  • Like 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
15 giờ trước, alisp đã nói:

Ổng không biết cũng phải thôi,..... Mất công mấy bác lisper làm lisp cho vui thôi.

:)

Thì cũng coi như dịp để trau dồi kỹ năng lập trình vậy mà Bạn. Với lại hình như bạn ấy đặt ra bài toán với Polyline nên nó sẽ tự nối lại.

 

Chào nhé!

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
2 giờ trước, DuongTrungHuy đã nói:

Chào Bạn!

Cái mình đã đưa là phần cốt lõi của bài toán. Để trở thành chuyên nghiệp, sản phẩm thị trường hơn cần làm như Bạn nói. Thông thường nhưng chuyện đó ko phức tạp lắm, Mình sửa theo y/c của Bạn

-Chọn Poly

-Chỉ lấy 2 obj

-Có Undo.

 

Cám ơn đã ý kiến (Mình định để người yêu cầu xem xét rồi chỉnh sửa luôn).

Bạn tham khảo nhé!

 

Cad_Viet4.LSP

cảm ơn bác đã cân nhắc ạ,thật ngại quá bác ạ,đáng ra cái này chủ thớt báo lại với bác để nhờ bác chỉnh sửa cho diễn đàn có một lisp hoàn chỉnh nhưng chắc bạn ấy cũng chưa thực nghiệm kĩ.Em thì hay tò mò về lisp nên em thực nghiệm em thấy có một số chỗ lisp có thể còn thiếu em xin mạn phép góp ý cùng bác và bạn chủ thớt ạ

1)khi em chạy lisp thì phải đánh cả lệnh (cchh) hả bác?(khi appload xong lisp nó ra chọn đối tượng luôn,sau đó muốn dùng thì em phải đánh cả cụm (cchh) có vẻ hơi dài hơi kiểu đánh tên lệnh truyền thống bác nhỉ?)

2)chạy xong lisp nó lại mất hết bắt điểm luôn bác ạ

3)so với lệnh fillet thì fillet cắt hết các đoạn thừa luôn,còn lisp của mình thì như hình dưới nó vẫn chưa thiến luôn được đoạn AB bác ạ

Image 6.png

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
3 giờ trước, vanlam6408 đã nói:

cảm ơn bác đã cân nhắc ạ,thật ngại quá bác ạ,đáng ra cái này chủ thớt báo lại với bác để nhờ bác chỉnh sửa cho diễn đàn có một lisp hoàn chỉnh nhưng chắc bạn ấy cũng chưa thực nghiệm kĩ.Em thì hay tò mò về lisp nên em thực nghiệm em thấy có một số chỗ lisp có thể còn thiếu em xin mạn phép góp ý cùng bác và bạn chủ thớt ạ...

Chào Bạn!

 

Bạn có định dùng cái Lisp này ko. Thực tình mình viết vì thấy vấn đề cũng hay hay. Mình viết để vỡ vấn đề ra đấy thôi, còn sử dụng thì thêm thắt vài thứ như Bạn nói.

Chỗ mà Bạn "thiến" vì chưa đủ điều kiện ban đầu nên mình chưa dám xoá vì ko biết lấy đoạn nào, hơn nữa thấy người yêu cầu ko mặn mà lắm nên thôi :)

 

Nếu bạn cũng cần cái lisp này trong công việc thì mình sẽ đi tiếp.

Chào nhé.

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
6 giờ trước, DuongTrungHuy đã nói:

Chào Bạn!

 

Bạn có định dùng cái Lisp này ko. Thực tình mình viết vì thấy vấn đề cũng hay hay. Mình viết để vỡ vấn đề ra đấy thôi, còn sử dụng thì thêm thắt vài thứ như Bạn nói.

Chỗ mà Bạn "thiến" vì chưa đủ điều kiện ban đầu nên mình chưa dám xoá vì ko biết lấy đoạn nào, hơn nữa thấy người yêu cầu ko mặn mà lắm nên thôi :)

 

Nếu bạn cũng cần cái lisp này trong công việc thì mình sẽ đi tiếp.

Chào nhé.

hi,lisp này em thấy bác viết rất hay bác ạ,mong bác đừng dừng lại.Vì đây là chủ đề của bạn chủ thớt nên em cũng ngại khi lấn sân sâu quá,song cá nhân em thì thấy lisp này là hữu dụng đối với em.Nếu em mà là chủ thớt  thì em mong nó làm việc như lệnh fillet,có điều làm sao khi fillet rồi thì nó không dính hết vào nhau như lệnh fillet khi có một đối tượng là polyline trong đó.Cá nhân em mà dùng lisp này thì em mong nó cứ "thiến" hết như fillet ạ.Cảm ơn bác đã xem xét ạ!

  • Like 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
13 phút trước, vanlam6408 đã nói:

hi,lisp này em thấy bác viết rất hay bác ạ,mong bác đừng dừng lại.Vì đây là chủ đề của bạn chủ thớt nên em cũng ngại khi lấn sân sâu quá,song cá nhân em thì thấy lisp này là hữu dụng đối với em.Nếu em mà là chủ thớt  thì em mong nó làm việc như lệnh fillet,có điều làm sao khi fillet rồi thì nó không dính hết vào nhau như lệnh fillet khi có một đối tượng là polyline trong đó.Cá nhân em mà dùng lisp này thì em mong nó cứ "thiến" hết như fillet ạ.Cảm ơn bác đã xem xét ạ!

Chào!

Hì vậy nghĩa là bạn muốn 1 lệnh như fillet nhưng đừng đính lại với nhau.

 

Vậy mình sẽ tiếp tục theo hướng đó. Nó mất công thêm 1 chút.

  • Like 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

×