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  
trungkien_hatangdothi

(Yêu cầu) Xin lisp làm 1 đường thẳng song song với 1 đường thẳng đã chọn

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

vuminhchau    1

Sửa lại 1 tí cho bạn đây :


(defun c:xoay(/ ST:Geom-Entity-Box-Fast mau Selset tmp)
(vl-load-com)
(defun ST:Geom-Entity-Box-Fast (vla-obj /   ll lr ur ul rt)
(vla-getboundingbox vla-obj 'll 'ur)
(cons (mapcar '(lambda (x y) (* (+ x y) 0.5)) (setq ll (vlax-safearray->list ll))(setq ur (vlax-safearray->list ur))) (angle ll ur))
)
(if (and  (princ "\nChon doi tuong mau :")
  (setq mau (ST:Geom-Entity-Box-Fast (vlax-ename->vla-object (ssname (ssget ":S" ) 0))))
  (princ "\nChon cac doi tuong can quay :")
  (ssget)
  (setq SelSet (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object))))
)
(vlax-for object Selset
 (setq typ (vla-get-ObjectName object))
 (vla-rotate object (vlax-3d-point (car (setq tmp (ST:Geom-Entity-Box-Fast object))))
 (-  (cdr mau)
  (cond  ((wcmatch typ "AcDb*Text")
  (vla-get-Rotation object))
 ((wcmatch typ "AcDb*Leader")
  (angle
   (car (setq tmp ((lambda(key lst / l )
     (foreach x lst (if (= key (car x))(setq l (cons (cdr x) l))))
       ) 10 (entget (vlax-vla-object->ename object))))
   )
   (last tmp)
  )
 )
 (T (cdr  tmp))
  )
 )
)
)
(vla-delete Selset)
)
)

 

em dùng lệnh xoay mà bác Tue_NV như hình 2 chỉ quay được chữ, không quay được mũi tên = lệnh LE.

nhờ bác sữa giúp khi dùng lệnh xong nó sẽ quay như hình thứ 3. cảm ơn bác nhiều!

http://www.cadviet.com/upfiles/3/104547_drawing2_1.dwg

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
Tue_NV    3.841

 

em dùng lệnh xoay mà bác Tue_NV như hình 2 chỉ quay được chữ, không quay được mũi tên = lệnh LE.

nhờ bác sữa giúp khi dùng lệnh xong nó sẽ quay như hình thứ 3. cảm ơn bác nhiều!

http://www.cadviet.c..._drawing2_1.dwg

Code bạn ketxu viết theo yêu cầu của bạn Trungkien (dòng màu đỏ) chưa viết cho dòng màu xanh ở bài viết ở dưới

Vì vậy, bạn nêu ra yêu cầu lần nữa cho trường hợp Pline có nhiều đoạn

 

 

Mình muốn nhờ các bác viết giúp mình 1 cái lisp như sau ạ:

 

Mình có 1 đường thẳng (Pline. line, Le...) giờ mình muốn cho nó song song với 1 đường thẳng có sẵn, nếu dùng lệnh al thì khá lâu vì phải chọn điển trên mỗi đường thẳng, giờ mình muốn chỉ cần 2 bước:

- B1: Chọn đường thẳng cần xoay (đường thẳng đc tạo bởi lệnh pline, line và le (mũi tên)) => enter

(với các đường Pline, line và Le được tạo bởi chỉ 1 đoạn duy nhất thì gốc xoay là trung điểm của đường đó, nếu tạo bởi nhiều đoạn thì sẽ có tùy chọn yêu cầu chọn đoạn cần xoay trên đường đó (gốc xoay vẫn là trung điểm) hoặc chọn điểm gốc cần xoay cho cả đường gồm nhiều đoạ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
vuminhchau    1

thực ra cái lisp của bác ketxu ở #20 đã giải quyết được gần xong rồi, nhưng chỉ có cái mũi tên nó bị quay ngược lại, vẫn song song với đối tượng chọn vì vậy em phải dùng thêm lệnh ROTATE để quay cái mũi tên đó 1 góc ngược lại 180 độ thì mới xong.

nếu đối tượng đường là pline nó khó thì có thể các bác giúp em chọn đối tượng mẫu là Line thì các đối tượng cần quay là Text và mũi tên (LE) nó sẽ quay song song như hình vẽ trên em đã gửi đượ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
Tue_NV    3.841

thực ra cái lisp của bác ketxu ở #20 đã giải quyết được gần xong rồi, nhưng chỉ có cái mũi tên nó bị quay ngược lại, vẫn song song với đối tượng chọn vì vậy em phải dùng thêm lệnh ROTATE để quay cái mũi tên đó 1 góc ngược lại 180 độ thì mới xong.

nếu đối tượng đường là pline nó khó thì có thể các bác giúp em chọn đối tượng mẫu là Line thì các đối tượng cần quay là Text và mũi tên (LE) nó sẽ quay song song như hình vẽ trên em đã gửi được không ạ!

Tue_NV sửa lại code đã viết ở bài số 26.

Bạn check lại thử 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
dovananh.xd    25

Lisp bác Tue_NV sửa lại tí là ok rồi, đúng í của chủ topic.

Xin anh thêm dòng lệnh chọn điểm gốc xoay để tiện áp dụng cho các trường hợp khác luôn! 

Mong các anh giúp cho. 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
dovananh.xd    25

Bổ sung thêm lisp này đi các pro ơi???

Thêm dòng lệnh chọn điểm gốc xoay đi các bác? Khi chọn điểm gốc thì click chuột để chọ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

Đăng nhập để thực hiện theo  

×