Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
5 replies to this topic

#1 victor85

victor85

    biết lệnh stretch

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

Đã gửi 07 December 2011 - 05:11 PM

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

#2 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 07 December 2011 - 06:30 PM

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

#3 victor85

victor85

    biết lệnh stretch

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

Đã gửi 08 December 2011 - 02:03 AM

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

#4 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 08 December 2011 - 06:46 AM

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

#5 victor85

victor85

    biết lệnh stretch

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

Đã gửi 08 December 2011 - 10:28 AM

Hì, Bác Tue_NV pro thế. Giá mà mình pro bằng 1 nửa anh ý ;))
  • 0

#6 akay_arch

akay_arch

    biết zoom

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

Đã gửi 04 January 2012 - 11:30 AM

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