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

[Yêu cầu] nhờ các bác chỉnh thêm cho code kích thước

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

các bác trên diễn đàn ơi, có thể giúp em thêm phần chọn hiện kích thước ra ngoài khung kín hay trong khung kín như hình trên với!

cảm ơn các bác nhiều.

 

(defun c:kkt(/ chon lenlist i ename tdx tdy)
 (setq chon (ssget))
 (if (/= chon nil)
(progn
 	(setq lenlist (sslength chon))
 	(princ "so phan tu da chon : ")(princ lenlist)
 	(princ "\n")
 	(setq i 0)
 	(while (< i lenlist)
(princ "he he he")
(setq ename (ssname chon i))
(setq ename (entget ename))
(setq tdx (cdr (assoc 10 ename)))
(setq tdy (cdr (assoc 11 ename)))
(command "dimaligned" tdx tdy tdy "")
(setq i (+ 1 i))
 	)
)
 )
)

 

như hình dưới:

104547_banve_2.jpg

  • 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

rất mong các bác quan tâm và giúp đỡ cho em với! đêm nào em cũng về khuya vì đi làm về trễ và lại vào diễn đàn để hy vọng có bác nào đó quan tâm đến chủ đề nà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ác bác trên diễn đàn ơi, có thể giúp em thêm phần chọn hiện kích thước ra ngoài khung kín hay trong khung kín như hình trên với!

cảm ơn các bác nhiều.

 

(defun c:kkt(/ chon lenlist i ename tdx tdy)
 (setq chon (ssget))
 (if (/= chon nil)
(progn
 	(setq lenlist (sslength chon))
 	(princ "so phan tu da chon : ")(princ lenlist)
 	(princ "\n")
 	(setq i 0)
 	(while (< i lenlist)
(princ "he he he")
(setq ename (ssname chon i))
(setq ename (entget ename))
(setq tdx (cdr (assoc 10 ename)))
(setq tdy (cdr (assoc 11 ename)))
(command "dimaligned" tdx tdy tdy "")
(setq i (+ 1 i))
 	)
)
 )
)

 

như hình dưới:

104547_banve_2.jpg

Làm hơi khác ý bạn tý :


(defun c:nkt (/ chon lenlist i ename oldos en hei dxf11 dxf13 dxf14 dvg)
 (setq chon (ssget '((0 . "DIMENSION"))))
(if (/= chon nil)
(progn
(setq lenlist (sslength chon))
(setq i 0)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(while (< i lenlist)

(setq en (ssname chon i))
(setq hei (vlax-get (vlax-ename->vla-object en) 'TextHeight))
(setq ename (entget en))
(setq dxf11 (cdr (assoc 11 ename)))
(setq dxf13 (cdr (assoc 13 ename)))
(setq dxf14 (cdr (assoc 14 ename)))
(setq dvg1 (polar dxf11 (+ (angle dxf13 dxf14) (/ pi 2.0)) 50.0))
(setq dvg (inters dxf13 dxf14 dxf11 dvg1 nil))

 (command "dimtedit" en (polar dvg (angle dxf11 dvg) (* hei 1.1)))
 (setq i (+ 1 i))
)
(setvar "osmode" oldos)
)
)
)

Cách sử dụng :

Chọn dim : "Nhảy" ->

  • 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

oh cảm ơn anh nhiều, vậy cũng tạm ổn rồi vì đã đỡ hơn 1 số thời gian!

em có thể dùng đoạn:

(defun c:kkk()

(c:kkt)

(c:nkt)

)

để gọi từng cái chạy theo ý muốn, nhưng có thể gộp 2 cái vào làm 1 được không anh 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

oh cảm ơn anh nhiều, vậy cũng tạm ổn rồi vì đã đỡ hơn 1 số thời gian!

em có thể dùng đoạn:

(defun c:kkk()

(c:kkt)

(c:nkt)

)

để gọi từng cái chạy theo ý muốn, nhưng có thể gộp 2 cái vào làm 1 được không anh nhỉ?

1./ Lisp nkt của Tue_NV viết khi chọn toàn dim thì dim "ngoài" sẽ nhảy vào trong và ngược lại dim "trong" sẽ nhảy ra "ngoài "

2./ Vì Lisp kkt mà bạn post thì khi chạy thì chỉ chọn Line -> có 1 số dim "trong" và 1 số dim "ngoài", do đó : gộp thì được mà không đúng ý mình vì lý do ở điều 1

3./ Có thể khắc phục bằng Lisp kkt thao tác với Poline thì lúc đó mới có định nghĩa trong và ngoài được.

Nhưng bạn thì cũng thích dim nhiều đối tượng và có cả nhiều Line nữa (bằng kkt), thành ra không biết đâu là "TRONG", đâu là "NGOÀI" nên gộp thì không đúng ý

  • 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

Nếu là Poline thì tuyệt quá, vì em hay dùng Poline sau đó lại phải EXPLODE ra mới đo được KT. sau đó lại phải chuyển lại thành Poline nhưng kích thước cứ nhảy lung tung mặc dù em đã thêm biến (setvar "DIMASSOC" 1). nếu anh có code dùng cho poline mà trọn trong hoặc ngoài được cho em xin với nhe? cảm ơn anh nhiề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

Nếu là Poline thì tuyệt quá, vì em hay dùng Poline sau đó lại phải EXPLODE ra mới đo được KT. sau đó lại phải chuyển lại thành Poline nhưng kích thước cứ nhảy lung tung mặc dù em đã thêm biến (setvar "DIMASSOC" 1). nếu anh có code dùng cho poline mà trọn trong hoặc ngoài được cho em xin với nhe? cảm ơn anh nhiều!

Sửa lại code cho bạn đây:

(defun Tue-dxf (dxf ename)(cdr(assoc dxf (entget ename))))
(defun Tue-ent-Lpoint(e / i Lpoint);Tue-dxf
(if (wcmatch (Tue-dxf 0 e) "*POLYLINE")
(progn
 (if (= (type e) 'VLA-OBJECT) (setq e (vlax-vla-object->ename e)))
 (setq i -1)
 (Repeat (if (wcmatch (Tue-dxf 0 e) "*POLYLINE") (fix (1+ (vlax-curve-getEndParam e))) 2)
(setq Lpoint (append Lpoint (list (vlax-curve-getPointatParam e (setq i (1+ i))))))
 )
)
)
(if (wcmatch (Tue-dxf 0 e) "LINE")
 (setq Lpoint (append Lpoint (list (Tue-dxf 10 e) (Tue-dxf 11 e))))
)
Lpoint
)
(defun c:kkt (/ chon lenlist i j ename oldos en hei dxf11 dxf13 dxf14 dvg key dtg)
(if (setq chon (ssget '((0 . "*POLYLINE"))))
(progn
(setq kc (getdist "\n Khoang cach tu text den Pline:"))
(setq lenlist (sslength chon))
(setq i 0 el (entlast))
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(while (< i lenlist)
(setq j 0)
(setq en (ssname chon i) Lpoint (Tue-ent-Lpoint en) )
(Repeat (1- (length Lpoint))

 (command "dimaligned" (nth j Lpoint) (nth (1+ j) Lpoint)
  	(polar (nth (1+ j) Lpoint)
           (+ (angle (nth j Lpoint) (nth (1+ j) Lpoint)) (/ pi 2.0))
         kc))

 (setq j (1+ j))
)
 (setq i (+ 1 i))
)

(initget "Y")
(setq key (getkword "\n Dim huong nguoc lai <Y/N> <N> :"))
 (if (= key "Y")
(progn (setq en el)
(while (setq en (entnext en) )

   (setq ename (entget en))
   (setq dxf11 (cdr (assoc 11 ename)))
   (setq dxf13 (cdr (assoc 13 ename)))
   (setq dxf14 (cdr (assoc 14 ename)))
   (setq dvg1 (polar dxf11 (+ (angle dxf13 dxf14) (/ pi 2.0)) 50.0))
   (setq dvg (inters dxf13 dxf14 dxf11 dvg1 nil))

     (command "dimtedit" en (polar dvg (angle dxf11 dvg) kc))
)
 	)
 )
(setvar "osmode" oldos)
)
)
)

  • 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

Bác Tue_NV chép giùm hàm Tue_dxf luôn. Chắc nó nằm ở contents nên quên?

Cảm ơn bác, Tue_NV chép lại rồi.

Hàm này nằm trong thư viện Project của Tue_NV, bác ạ

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

anh ơi, em muốn bớt đoạn hỏi chọn khoảng cách (Khoang cach tu text den Pline): thì bớt cái nào vậy anh, vì em có kthuoc mẫu dồi!

Không hiểu ý!

Bớt thì dễ rồi và Khoảng cách từ Text đến Pline trong kthuoc mẫu của bạn bằng ?

Bạn vui lòng nói rõ

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 dùng nhiều tỉ lệ nên kthuoc cũng tương ứng với từng tle đó và em có những khung mẫu có kthuoc tương ứng là:1/100 khoảng cách text tới pline là o,1; tương tự 1/200 là 0,2; 1/250 là 0,25; 1/500 là 0,5; 1/1000 là 1. Cái code kthuoc Line ban đầu em gửi nó "không hỏi chọn khoảng cách từ Text đến Line" mà do mình chọn trước khi thực hiện lệnh loại kthuoc nào thì nó sẽ hiện kích thước đó.

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  

×