Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
victor85

[Yêu cầu] Nhờ viết lisp phân chia và sát nhập dim?

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

Nhờ các bác viết lisp này dùm mình với:

- Break dim: từ một dim gốc ban đầu. Chọn các điểm phân chia trên đường dimension line và từ đó tạo ra nhiều đối tượng dim mới nối tiếp nhau tại các điểm phân chia mình vừa chọn.

- Join dim: từ các dim lẻ ban đầu có dimension line song song nhau. Chọn các dimension đó và sát nhập chúng lại thành một dimension mới bao phủ các dimension con ban đầu. (dimension line của đối tượng dim mới tạo ra trùng với dimension line của cái đối tượng dimension line chọn đầu tiên.)

Cho mình cảm ơn các anh chị em trước nhiều nhiều nhé. Chúc anh chị em càng ngày càng phát triển!

Hình minh họa: http://www.mediafire.com/?q39xcwra2d90vyw

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ờ các bác viết lisp này dùm mình với:

- Break dim: từ một dim gốc ban đầu. Chọn các điểm phân chia trên đường dimension line và từ đó tạo ra nhiều đối tượng dim mới nối tiếp nhau tại các điểm phân chia mình vừa chọn.

- Join dim: từ các dim lẻ ban đầu có dimension line song song nhau. Chọn các dimension đó và sát nhập chúng lại thành một dimension mới bao phủ các dimension con ban đầu. (dimension line của đối tượng dim mới tạo ra trùng với dimension line của cái đối tượng dimension line chọn đầu tiên.)

Cho mình cảm ơn các anh chị em trước nhiều nhiều nhé. Chúc anh chị em càng ngày càng phát triển!

Hình minh họa: http://www.mediafire...q39xcwra2d90vyw

Hề hề hề,

Chơi với dimension không đơn giản như ăn chuối đâu. trong lúc chờ đợi bạn nên dim lại là chắc ăn hơn cả. Như vậy có khi còn nhanh bằng chán vạn lần ngồi chờ lisp.

Hề hề hề,

Mình thì chờ cao thủ ngủ quên nào đó vậy......

  • 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ề,

Chơi với dimension không đơn giản như ăn chuối đâu. trong lúc chờ đợi bạn nên dim lại là chắc ăn hơn cả. Như vậy có khi còn nhanh bằng chán vạn lần ngồi chờ lisp.

Hề hề hề,

Mình thì chờ cao thủ ngủ quên nào đó vậy......

 

Hị hị, vâng cảm ơn bá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

Nhờ các bác viết lisp này dùm mình với:

- Break dim: từ một dim gốc ban đầu. Chọn các điểm phân chia trên đường dimension line và từ đó tạo ra nhiều đối tượng dim mới nối tiếp nhau tại các điểm phân chia mình vừa chọn.

.....

Hình minh họa: http://www.mediafire...q39xcwra2d90vyw

Lisp BRD theo như yêu cầu của bạn :

(defun c:brd(/ e Lst Lst_dim d13dim i d13 d14 oldos)
 (setq e (car(entsel "\n Pick chon dimension"))
  d13  (cdr(assoc 13 (entget e))) d14 (cdr(assoc 14 (entget e)))
 )
 (while (setq p (getpoint "\n Chon cac diem tren Dim can break :"))
(if (car(nentselp p)) (setq Lst (append Lst (list p))))
 )
 (setq dgtr (vlax-curve-getClosestPointTo (car(nentselp (car Lst))) d13) i -1)
 (setq oldos (getvar "osmode"))
 (setvar "osmode" 0)
 (Repeat (length Lst)
(command "copy" e "" dgtr (nth (setq i (1+ i)) Lst))
(setq Lst_dim (append Lst_dim (list (entlast))))
)
 (setq Lst_dim (append (list e) Lst_dim ))
 (setq i 0)
  (Repeat (length Lst_dim)
   	(setq edim (nth i Lst_dim))
   	(if (equal edim (last Lst_dim))
(setq d13dim d14)
(setq d13dim (cdr(assoc 13 (entget (nth (1+ i) Lst_dim)))))
)
   	(setq edim (subst (cons 14 d13dim) (assoc 14 (entget edim)) (entget edim)))
(entmod edim)
(setq i (1+ i))          
)
(setvar "osmode" oldos)
)

Khi chạy, Lisp yêu cầu :

1. Chọn Dimension

2. Chọn Các điểm nằm trên Dim Line,

 

PS :Code trên cũng chưa thật hoàn chỉnh lắm.

  • Vote tăng 3

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ì, Bác Tue_NV pro thế. Giá mà mình pro bằng 1 nửa anh ý ;))

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ình hình là không dùng được bác Tuệ ơi. Cad nó báo như thế này:

Command: brd

Pick chon dimension

Chon cac diem tren Dim can break :

Chon cac diem tren Dim can break :

Chon cac diem tren Dim can break :

Chon cac diem tren Dim can break :

Chon cac diem tren Dim can break : ; error: no function definition:

VLAX-CURVE-GETCLOSESTPOINTTO.

Với lại bác sửa lại chọn các điểm trên đối tượng được Dim thì thực tế hơ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  

×