Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
18 replies to this topic

#1 bocapran

bocapran

    biết pan

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

Đã gửi 26 September 2010 - 08:13 PM

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 đỡ.
  • 0

#2 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 26 September 2010 - 09:34 PM

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.....
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#3 bocapran

bocapran

    biết pan

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

Đã gửi 27 September 2010 - 08:27 AM

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

#4 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 27 September 2010 - 09:39 AM

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

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#5 bocapran

bocapran

    biết pan

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

Đã gửi 27 September 2010 - 12:22 PM

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

vâng, đúng rùi bác ạ.
  • 0

#6 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 27 September 2010 - 06:08 PM

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.
  • 2

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#7 bocapran

bocapran

    biết pan

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

Đã gửi 27 September 2010 - 10:05 PM

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 đó.
  • 0

#8 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 27 September 2010 - 10:21 PM

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

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#9 duct

duct

    Chưa sử dụng CAD

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

Đã gửi 09 September 2011 - 04:33 PM

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

#10 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 993 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 09 September 2011 - 08:01 PM

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



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#11 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 10 September 2011 - 08:43 AM

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

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#12 npham

npham

    biết lệnh rotate

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

Đã gửi 10 September 2011 - 03:51 PM

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

  • 1

#13 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 10 September 2011 - 09:50 PM

Bác npham cho code vào thẻ code nhé :)
P/s : hàm mới viết cho 2D Coordinates
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#14 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 993 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 10 September 2011 - 11:06 PM

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



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#15 hoangtrongbang

hoangtrongbang

    biết pan

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

Đã gửi 19 November 2011 - 11:19 AM

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

#16 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 19 November 2011 - 11:44 AM

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

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#17 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 19 November 2011 - 03:40 PM

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.c...pic=42771&st=20
Xem bài này đi nhé.
  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#18 huaductiep

huaductiep

    biết vẽ rectang

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

Đã gửi 08 July 2013 - 05:18 PM

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.


  • 0

#19 77Z7 7777

77Z7 7777

    Chưa sử dụng CAD

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

Đã gửi 03 June 2014 - 01:48 PM

Mấy anh chị cho e xin e cần một líp để copy tất cả đối tượng trong một đường polyline kín 

 


  • 0