Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
13 replies to this topic

#1 vuminhchau

vuminhchau

    biết vẽ polygon

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

Đã gửi 21 August 2012 - 01:54 PM

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:
Hình đã gửi
  • 1

#2 vuminhchau

vuminhchau

    biết vẽ polygon

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

Đã gửi 22 August 2012 - 10:15 PM

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

#3 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 23 August 2012 - 12:10 PM

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:
Hình đã gửi

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

#4 vuminhchau

vuminhchau

    biết vẽ polygon

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

Đã gửi 23 August 2012 - 11:26 PM

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

#5 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 24 August 2012 - 06:03 AM

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 ý
  • 1

#6 vuminhchau

vuminhchau

    biết vẽ polygon

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

Đã gửi 25 August 2012 - 05:40 AM

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

#7 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 25 August 2012 - 08:12 AM

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

  • 1

#8 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 25 August 2012 - 08:32 AM

Bác Tue_NV chép giùm hàm Tue_dxf luôn. Chắc nó nằm ở contents nên quên?
  • 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.


#9 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 25 August 2012 - 08:54 AM

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

#10 vuminhchau

vuminhchau

    biết vẽ polygon

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

Đã gửi 25 August 2012 - 01:26 PM

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

#11 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 25 August 2012 - 02:09 PM

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

#12 vuminhchau

vuminhchau

    biết vẽ polygon

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

Đã gửi 25 August 2012 - 10:12 PM

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

#13 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 25 August 2012 - 10:41 PM

:D :D :D
  • 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 vuminhchau

vuminhchau

    biết vẽ polygon

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

Đã gửi 26 August 2012 - 08:05 PM

có lẽ các bác đang bận bên gd ngày cuối tuần, chúc cả nhà vui vẻ!
  • 0