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  
beba

[Đã xong] Lisp bẻ và nối đối tượng

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

Nhờ mấy anh viết dùm em cái Lisp bẻ và nối đối tượng :

Em có đường Line hoặc Polyline muốn tạo nhiều Đỉnh nhưng vẫn liền nhau

Bình thường em vẫn phải làm : dùng lệnh “BR” Break bẻ đối tượng các vi trí cần dùng sau đó dùng “PE” Pedit để nối lại các điểm đó ( vì làm Nova nên phải làm trên Cad 14)

Hoặc dùng “PE” Pedit -> Edit vertex -> Insert chọn vị trí cần tạo Đỉnh và chèn nút

Làm như vậy mất công và nhiều thao tác quá

Nên Nhờ anh viết giúp cái Lisp làm cho nhanh.

Cảm ơ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

Nhờ mấy anh viết dùm em cái Lisp bẻ và nối đối tượng :

Em có đường Line hoặc Polyline muốn tạo nhiều Đỉnh nhưng vẫn liền nhau

Bình thường em vẫn phải làm : dùng lệnh “BR” Break bẻ đối tượng các vi trí cần dùng sau đó dùng “PE” Pedit để nối lại các điểm đó ( vì làm Nova nên phải làm trên Cad 14)

Hoặc dùng “PE” Pedit -> Edit vertex -> Insert chọn vị trí cần tạo Đỉnh và chèn nút

Làm như vậy mất công và nhiều thao tác quá

Nên Nhờ anh viết giúp cái Lisp làm cho nhanh.

Cảm ơn

Bạn dùng tạm, mình lấy trên mạng :

(defun c:ins(/ obj obj1 po str)
(setq obj (entsel "\n Select entity to insert vertex"))
(setq obj1 (car obj))
(setq po (cadr obj))
(if (/= (cdr (assoc 0 (entget (car obj)))) "LWPOLYLINE")
(progn
(alert "The selected line is not polyline")
(setq str (getstring "\n Do u want to continue: <y / n>"))
(cond
((= str "y")
(progn
(command "pedit" obj "")
(setq obj1 (entlast))
));cond
);cond
));if
(if (= (cdr (assoc 0 (entget obj1))) "LWPOLYLINE")
(progn
(command "break" obj1 po po)
(command "pedit" obj1 "j" (entlast) "" "")
))
)

Hoặc theo link này lấy vài cái khác futher hơn

AddVertex

  • 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

Cám ơn anh Ketxu đã giúp cái lisp "INS" em dùng nó không được

Em có lượm lặt rồi sửa lại sơ qua cái lisp này ( không biết có đúng không nữa)

(Defun C:nut()

(setq c-cmd (getvar "cmdecho"))

(setvar "cmdecho" 0)

(princ)

(setq ss (ssget))

(setvar "cmdecho" c-cmd)

(if (/= ss nil)

(command "pedit" ss "" "e" "i")

)

)

 

Nhưng sao nó chỉ cho tạo đỉnh trên Line còn khi đã chuyển sang PLine thì nó lại không cho

Có gì sai nhờ anh Ketxu chỉnh sửa lại giúp.

Cảm ơ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

 

 

Nhưng sao nó chỉ cho tạo đỉnh trên Line còn khi đã chuyển sang PLine thì nó lại không cho

Có gì sai nhờ anh Ketxu chỉnh sửa lại giúp.

Cảm ơn

Mình chưa rõ cái lisp của bạn cop nó mần chi, lẽ nào Pedit cả tập chọn ss ^^.

Mình sửa lại như thế này, làm mỗi lần 1 điểm, nếu bạn thích giống CAD thì bỏ phần pause "x" "" đi.

(defun C:nut()
(setq ent (car(entsel "\n Chon doi tuong")))
(cond ((=(cdadr (entget ent)) "LINE")(command "pedit" ent "" "E" "I" pause "x" ""))
  ((=(cdadr (entget ent)) "*POLYLINE")(command "pedit" ent "E" "I" pause "x" ""))
)
)

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ảm ơn anh Ketxu cái lisp Nut. Mục đích của lisp là đúng rồi, làm trên Line thì tốt.

Nhưng sao "chọn đối tượng" là PLine thì không được

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

Ket đã tính ^^ vì thế vẫn giữ lisp cũ ở trên ^^ muốn chèn vào vị trí bất kỳ thì bài đầu tiên trả lời beba đã có lisp, kể cả lisp yêu cầu beba bỏ chữ pause đ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

Em dùng thấy ngon rồi, đỡ bớt nhiều thao tác trong khi lam Cad

Cảm ơn anh Ketxu nhiều, cảm ơn các anh đã góp ý

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

Bạn dùng tạm, mình lấy trên mạng :

AddVertex

 

chào bạn, mình cũng đang tìm kiếm một lisp tương tự như bạn babe như yêu cầu của mình nó có khác một tí, ví dụ 2 đường polyline cắt nhau mình muốn tạo thành 4 đường polyline giao nhau tại vị trí giao nhau của 2 đường polyline ban đầu. thông thường mình hay dùng lệnh BR để cắt rời nó ra rồi mình dùng lệnh EX để cho nó giao nhau. mục đích mình làm như vậy để thiết kế nút giao thông, đối với đồ án lớn thì có rất nhiều nút, nên việc thao tác như vậy sẽ tốn rất nhiều thời gian. xin được giúp đỡ (nếu áp dụng được cho line và đường cog thì rất hay, còn phứt tạp quá mình chỉ cần áp dụng cho polyline). cảm ơn ban

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

Break 2 đường tại vị trí giao nhau

(defun c:test ( / ss ent1 ent2 inter)

(setq ss (ssget))

(setq ent1  (ssname ss 0)

      ent2  (ssname ss 1))

(setq inter  (vla-intersectwith

      (vlax-ename->vla-object ent1)

      (vlax-ename->vla-object ent2) acExtendBoth)

      inter (safearray-value (variant-value inter)))

(command "break" ent1  inter inter)

(command "break" ent2 inter inter)

)

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

chào bạn, mình cũng đang tìm kiếm một lisp tương tự như bạn babe như yêu cầu của mình nó có khác một tí, ví dụ 2 đường polyline cắt nhau mình muốn tạo thành 4 đường polyline giao nhau tại vị trí giao nhau của 2 đường polyline ban đầu. thông thường mình hay dùng lệnh BR để cắt rời nó ra rồi mình dùng lệnh EX để cho nó giao nhau. mục đích mình làm như vậy để thiết kế nút giao thông, đối với đồ án lớn thì có rất nhiều nút, nên việc thao tác như vậy sẽ tốn rất nhiều thời gian. xin được giúp đỡ (nếu áp dụng được cho line và đường cog thì rất hay, còn phứt tạp quá mình chỉ cần áp dụng cho polyline). cảm ơn ban

 

Bạn nên sử dụng tính năng tìm kiếm của diễn đàn:

Một số bài viết phù hợp với nội dung của bạn ,bạn có thể xem ở đây.

http://www.cadviet.com/forum/topic/51839-yeu-cau-lisp-cat-doi-tuong/

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

Break 2 đường tại vị trí giao nhau

(defun c:test ( / ss ent1 ent2 inter)

(setq ss (ssget))

(setq ent1  (ssname ss 0)

      ent2  (ssname ss 1))

(setq inter  (vla-intersectwith

      (vlax-ename->vla-object ent1)

      (vlax-ename->vla-object ent2) acExtendBoth)

      inter (safearray-value (variant-value inter)))

(command "break" ent1  inter inter)

(command "break" ent2 inter inter)

)

SAO LOAD RỒI BẤM LỆNH TEST HOK ĐƯỢC XIN CHỈ GIÁO

  • 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

Từ cad 2010 trở về sau có tính năng add điểm add cung cho PLine ngon lành mà các bác :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

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  

×