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

xin lisp copy đối tượng cho trước lần lượt theo các điểm trên đường polyline

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

em có 1 đường lwpolyline trên đó có các điểm. Muốn copy 1 đối tượng lần lượt từ đầu đến cuối theo các điểm trên polyline có đc ko các bác? Em ngại phải copy rồi pick từng điểm trên polyline rất mất thời gian nên mong các bác giú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
em có 1 đường lwpolyline trên đó có các điểm. Muốn copy 1 đối tượng lần lượt từ đầu đến cuối theo các điểm trên polyline có đc ko các bác? Em ngại phải copy rồi pick từng điểm trên polyline rất mất thời gian nên mong các bác giúp đỡ.

Chào bạn Bocapran,

Vụ này trên diễn đàn đã có nhiều rồi, bạn chịu khó tìm kiếm nghen.....

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 Bocapran,

Vụ này trên diễn đàn đã có nhiều rồi, bạn chịu khó tìm kiếm nghen.....

Bác tìm dùm em với, em search tren google.com ko có, các điểm trên polyline của em ko nằm trên đường thẳng và khoảng cách giữa các điểm ko đều nhau

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ác tìm dùm em với, em search tren google.com ko có, các điểm trên polyline của em ko nằm trên đường thẳng và khoảng cách giữa các điểm ko đều nhau

Điểm bạn muốn là đỉnh pline hay là gì?

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âng, đúng rùi bác ạ.

Bạn thử cái này xem:

 

(Defun C:cpd ( )

(command "undo" "be")

(Prompt "\nChon doi tuong muon rai...")

(setq dt (ssget))

(setq dc (getpoint "\nDiem chuan cua doi tuong: "))

(Prompt "\nChon doi tuong lam duong dan")

(setq doituong1 (entsel))

(while

(null doituong1)

(Prompt "\nChon doi tuong lam duong dan")

(setq doituong1 (entsel))

)

 

(setq doituongt (car doituong1))

(setq doituong (entget doituongt))

 

(setq luubatdiem (getvar "osmode"))

(setvar "osmode" 0)

 

(setq sodinh (cdr (assoc 90 doituong)))

(setq Rec (acet-geom-vertex-list doituongt))

(setq ttd 0)

(while (< ttd sodinh)

(command ".copy" dt "" dc (nth ttd Rec))

(setq ttd (1+ ttd))

)

(setvar "osmode" luubatdiem)

(command "undo" "end")

(Princ)

)

 

Lệnh CPD, chọn nhóm đối tượng muốn chép đi, enter để kết thúc chọn đối tượng, chọn điểm làm chuẩn của nhóm đối tượng (điểm này sẽ copy trùng với các đỉnh pline), chọn pline làm đường dẩn.

  • Vote tăng 2

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 thử cái này xem:

 

(Defun C:cpd ( )

(command "undo" "be")

(Prompt "\nChon doi tuong muon rai...")

(setq dt (ssget))

(setq dc (getpoint "\nDiem chuan cua doi tuong: "))

(Prompt "\nChon doi tuong lam duong dan")

(setq doituong1 (entsel))

(while

(null doituong1)

(Prompt "\nChon doi tuong lam duong dan")

(setq doituong1 (entsel))

)

 

(setq doituongt (car doituong1))

(setq doituong (entget doituongt))

 

(setq luubatdiem (getvar "osmode"))

(setvar "osmode" 0)

 

(setq sodinh (cdr (assoc 90 doituong)))

(setq Rec (acet-geom-vertex-list doituongt))

(setq ttd 0)

(while (< ttd sodinh)

(command ".copy" dt "" dc (nth ttd Rec))

(setq ttd (1+ ttd))

)

(setvar "osmode" luubatdiem)

(command "undo" "end")

(Princ)

)

 

Lệnh CPD, chọn nhóm đối tượng muốn chép đi, enter để kết thúc chọn đối tượng, chọn điểm làm chuẩn của nhóm đối tượng (điểm này sẽ copy trùng với các đỉnh pline), chọn pline làm đường dẩn.

Cám ơn bác em đúng cái em cần tìm.

Cần bác tư vấn thêm 1 vấn đề nữa.

Em có rất nhiều các đối tượng sắp xếp lung tung trong một vùng, có 1 đường thẳng bất kì, em muốn đưa các đối tượng sắp xếp linh tinh theo phương vuông góc với đường thẳng và nằm luôn trên đường thẳ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
Em có rất nhiều các đối tượng sắp xếp lung tung trong một vùng, có 1 đường thẳng bất kì, em muốn đưa các đối tượng sắp xếp linh tinh theo phương vuông góc với đường thẳng và nằm luôn trên đường thẳng đó.

Bạn cho file cad trước và sau khi thực hiện lệnh (tổng quát 1 tí) Mọi người mới xem đc vì bạn tả hơi khó hiể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

tớ dùng lisp cpd sao lại báo lỗi error: no function definition: ACET-GEOM-VERTEX-LIST nhỉ. Duy chỉ giúp tớ vớ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

có thể bạn chưa cài tool express, nếu cài rồi thì có thể bạn đánh lệnh (vb-load-com). Sau khi gõ dòng lệnh trên command rồi thì bạn dùng lisp của bác ấy xem sao 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

có thể bạn chưa cài tool express, nếu cài rồi thì có thể bạn đánh lệnh (vb-load-com). Sau khi gõ dòng lệnh trên command rồi thì bạn dùng lisp của bác ấy xem sao nhé

Hàm (vl-load-com) chứ! Tuy nhiên, hàm này chỉ dùng khi có sử dụng các hàm "vla..." (và cả "vl..." nữa thì phải?), chứ với "acet..." thì đâu cần nhỉ?

  • 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ác bác có thể thay hàm ACET-GEOM-VERTEX-LIST thành 1 hàm khác (lấy tập dỉnh polyline)

 

Tham khảo:

 

(defun c:pco (/ ss ent p1 p2 lst i)

(defun vlp-GetPoint (ent / lst ret name)
    (setq lst  (vlax-get (vlax-ename->vla-object ent) 'Coordinates))
  (while lst
    (setq ret (append ret (list (list (car lst) (cadr lst)))))
    (setq lst (cddr lst))
 )
 ret
 )
(vl-load-com)
(setq ss (ssget))
(setq ent (car (entsel)))

(setq lst (vlp-getpoint ent))
(setq p1 (car lst) i 1)
(while (setq p2 (nth i lst))
  	(command "copy" ss "" p1 p2)
  	(setq i (1+ i))
 )
 )

  • 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

hề hề hề, em đánh nhầm. Hii. (vl-load-com).

Em online bằng điện thoại nên ko trích dẫn được. Hiii. Lâu rồi ko viết lisp mà ngứa ngáy quá, tiếc là chỉ tham gia qua cái máy điện thoại chết tiệt này. Nhiều lúc comment dài dằng dặc lại ko post được. Bực quá cơ. Khi nào rảnh ta lại cày cuốc vậ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ó bạn nào chỉnh sửa cái lisp trên cho các đối tượng sau khi được copy vào đỉnh của Pline thì xoay theo Pline đó luôn được không? Như thế sẽ rất tiện. Cám ơn trước nhé!

 

Khái niệm "Xoay theo Pline" đó luôn nghĩa là thế nà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

Có bạn nào chỉnh sửa cái lisp trên cho các đối tượng sau khi được copy vào đỉnh của Pline thì xoay theo Pline đó luôn được không? Như thế sẽ rất tiện. Cám ơn trước nhé!

http://www.cadviet.com/forum/index.php?showtopic=42771&st=20

Xem bài này đi 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

Lisp của bác rất hay. Các bác có thể chỉnh cho em sao cho có thể chon nhiều pline 1 lúc được ko ah?
Cám ơn các bác rất nhiều :)

Bạn thử cái này xem:

(Defun C:cpd ( )
(command "undo" "be")
(Prompt "\nChon doi tuong muon rai...")
(setq dt (ssget))
(setq dc (getpoint "\nDiem chuan cua doi tuong: "))
(Prompt "\nChon doi tuong lam duong dan")
(setq doituong1 (entsel))
(while
(null doituong1)
(Prompt "\nChon doi tuong lam duong dan")
(setq doituong1 (entsel))
)

(setq doituongt (car doituong1))
(setq doituong (entget doituongt))

(setq luubatdiem (getvar "osmode"))
(setvar "osmode" 0)

(setq sodinh (cdr (assoc 90 doituong)))
(setq Rec (acet-geom-vertex-list doituongt))
(setq ttd 0)
(while (< ttd sodinh)
(command ".copy" dt "" dc (nth ttd Rec))
(setq ttd (1+ ttd))
)
(setvar "osmode" luubatdiem)
(command "undo" "end")
(Princ)
)


Lệnh CPD, chọn nhóm đối tượng muốn chép đi, enter để kết thúc chọn đối tượng, chọn điểm làm chuẩn của nhóm đối tượng (điểm này sẽ copy trùng với các đỉnh pline), chọn pline làm đường dẩ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

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

×