Đến nội dung


Hình ảnh
5 stars - based on 24598 reviews
- - - - -

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


  • Please log in to reply
13 replies to this topic

#1 beba

beba

    biết zoom

  • Members
  • Pip
  • 12 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 01 June 2011 - 08:19 PM

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

#2 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5732 Bài viết
Điểm đánh giá: 2641 (tuyệt vời)

Đã gửi 02 June 2011 - 05:29 PM

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

#3 beba

beba

    biết zoom

  • Members
  • Pip
  • 12 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 02 June 2011 - 09:01 PM

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)
[code]
(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
  • 0

#4 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5732 Bài viết
Điểm đánh giá: 2641 (tuyệt vời)

Đã gửi 02 June 2011 - 09:18 PM

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" ""))
)
)

  • 0

#5 beba

beba

    biết zoom

  • Members
  • Pip
  • 12 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 05 June 2011 - 09:33 PM

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

#6 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5732 Bài viết
Điểm đánh giá: 2641 (tuyệt vời)

Đã gửi 06 June 2011 - 11:15 AM

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

#7 beba

beba

    biết zoom

  • Members
  • Pip
  • 12 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 06 June 2011 - 08:38 PM

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 ý
  • 0

#8 manhlinh.eng

manhlinh.eng

    Chưa sử dụng CAD

  • Members
  • Pip
  • 2 Bài viết
Điểm đánh giá: -1 (bình thường)

Đã gửi 03 July 2017 - 10:57 PM

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

 

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


  • 0

#9 cuongtk2

cuongtk2

    biết lệnh mirror

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

Đã gửi 04 July 2017 - 09:20 AM

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)
)

  • 0

#10 Danh Cong

Danh Cong

    biết lệnh explore

  • Moderator
  • PipPipPipPipPipPip
  • 479 Bài viết
Điểm đánh giá: 107 (tàm tạm)

Đã gửi 04 July 2017 - 09:41 AM

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.c...-cat-doi-tuong/


  • 0

              *** Vô lo - Vô nghĩ - Vô sầu hận ***
*** Chẳng thương - Chẳng giận - Chẳng đau lòng ***


#11 manhlinh.eng

manhlinh.eng

    Chưa sử dụng CAD

  • Members
  • Pip
  • 2 Bài viết
Điểm đánh giá: -1 (bình thường)

Đã gửi 04 July 2017 - 10:03 AM

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


  • -1

#12 cuongtk2

cuongtk2

    biết lệnh mirror

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

Đã gửi 04 July 2017 - 10:23 AM

bạn thử chạy (vl-load-com) xem sao


  • 0

#13 lp_hai

lp_hai

    biết lệnh Xplode

  • Members
  • PipPipPipPipPipPip
  • 481 Bài viết
Điểm đánh giá: 207 (khá)

Đã gửi 04 July 2017 - 11:54 AM

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


  • 0

#14 a12k39duchao

a12k39duchao

    biết vẽ arc

  • Members
  • PipPip
  • 45 Bài viết
Điểm đánh giá: -6 (bình thường)

Đã gửi 06 July 2017 - 03:29 PM

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

Chỉ giùm mình cái này phát.


  • -1