Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu] Lisp điều chỉnh vị trí text ghi kích thước trên đường dim


  • Please log in to reply
27 replies to this topic

#1 tqcuonguct

tqcuonguct

    biết zoom

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

Đã gửi 27 June 2012 - 09:38 AM

Chào các bác pro. Em gặp vấn đề này mong các bác giúp đỡ.
Trong khi vẽ cad, do nhiều lý do nên có khi em phải thay đổi vị trí text ghi kích thước trên đường dim (mặc định là ghi kích thước vào giữa đường dim), làm như vậy với số lượng dim lớn thì rất mất thời gian. Mong các bác viết hộ em cái lisp để điểu chỉnh 1 lần duy nhất cho tất cả các dim (các dim này đã gióng thẳng hàng theo phương đứng), em xin cảm ơn các bác trước.
Chúc cả nhà một ngày vui.
Các bác xem chi tiết ở hình vẽ sau nhé http://www.mediafire...dis7edjxaz2p2d5
  • 0

#2 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 27 June 2012 - 09:40 AM

Điều là điều ra răng ? Hình ảnh / file của bạn đâu ? Trước khi chỉnh nó ntn, sau đấy nó ntn ??
  • 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


#3 tqcuonguct

tqcuonguct

    biết zoom

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

Đã gửi 06 July 2012 - 01:36 PM

Hình đã gửi


Mình đã cập nhật hình vẽ cụ thể, mong các bác ra tay giúp đỡ nhé.
Chúc diễn đàn ngày càng phát triển.
  • 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 06 July 2012 - 05:11 PM

Hình đã gửi


Mình đã cập nhật hình vẽ cụ thể, mong các bác ra tay giúp đỡ nhé.
Chúc diễn đàn ngày càng phát triển.

Của bạn đây. Bạn thử xem nhé :

(defun c:ctd(/ ss ename i dxf11 dxf13 vt)
(if (setq ss (ssget '((0 . "DIMENSION"))))
(progn
(setq i -1 vt (getreal "\n Text cua dim cach mep trai 1 doan :"))
(while (setq ename (ssname ss (setq i (1+ i))))
(command "dimtedit" ename "L")
(setq dxf11 (cdr(assoc 11 (entget ename)))
dxf13 (cdr(assoc 13 (entget ename))) )
(command "dimtedit" ename (list (+ (car dxf13) vt) (cadr dxf11) 0.0) )
)
)
)
)

  • 3

#5 haanh

haanh

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2876 Bài viết
Điểm đánh giá: 1555 (rất tốt)

Đã gửi 06 July 2012 - 07:12 PM

Theo em trường hợp này không nên lạm dụng lisp. Làm thủ công tiện dụng hơn nhiều, có hai cách làm:

Hình đã gửi

1- Nếu sửa ít làm theo hình ảnh > Sửa 1 kích thước rồi dùng lệnh Ma quét sửa tất cả các kích thước trong cùng một kiểu dim

Hình đã gửi

2-Nếu sửa nhiều: lựa chọn theo trên ảnh, sẽ sửa được đồng loạt như hình em đã vẽ ở trên!
  • 3

“Sống trong đời sống cần có một tấm lòng / Để làm gì em biết không ? / Để gió cuốn đi, để gió cuốn đi...”


#6 quickandfine

quickandfine

    biết lệnh copy

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

Đã gửi 07 July 2012 - 08:59 AM

Của bạn đây. Bạn thử xem nhé :


(defun c:ctd(/ ss ename i dxf11 dxf13 vt)
(if (setq ss (ssget '((0 . "DIMENSION"))))
(progn
(setq i -1 vt (getreal "\n Text cua dim cach mep trai 1 doan :"))
(while (setq ename (ssname ss (setq i (1+ i))))
(command "dimtedit" ename "L")
(setq dxf11 (cdr(assoc 11 (entget ename)))
dxf13 (cdr(assoc 13 (entget ename))) )
(command "dimtedit" ename (list (+ (car dxf13) vt) (cadr dxf11) 0.0) )
)
)
)
)

Em thấy đoạn lisp này cũng tiện lợi. Nhưng bác có thể sửa thành click chuột vào một điểm mới nằm trên đường dim đó thì text sẽ chuyển tương ứng về vị trí mới đó thì tiện hơn ạ.
  • 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 07 July 2012 - 09:33 AM

Em thấy đoạn lisp này cũng tiện lợi. Nhưng bác có thể sửa thành click chuột vào một điểm mới nằm trên đường dim đó thì text sẽ chuyển tương ứng về vị trí mới đó thì tiện hơn ạ.

Nếu trong tập chọn có : Dim theo phương X, Dim theo phương Y hoặc Dim theo phương bất kì thì làm răng bạn? Code trên cũng tính đến trường hợp này nữa
Đơn giản hơn, các bạn có thể sử dụng cách mà bạn haanh đã trình bày ở bài viết trên
  • 0

#8 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 07 July 2012 - 10:10 AM

Ketxu code 1 ví dụ ở đây , trong đấy có 2 code, bạn phù hợp với cái nào thì xài :)
  • 2

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


#9 quickandfine

quickandfine

    biết lệnh copy

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

Đã gửi 07 July 2012 - 10:38 AM

Ketxu code 1 ví dụ ở đây , trong đấy có 2 code, bạn phù hợp với cái nào thì xài :)

Thansk anh Ket nhiều ạ. Em dùng được đoạn code thứ nhất.
  • 1

#10 tqcuonguct

tqcuonguct

    biết zoom

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

Đã gửi 09 July 2012 - 05:31 PM

Cảm ơn bác Tue_NV và bác Ketxu nhiều nha, mấy hôm ngồi chờ các bác hồi âm em phải sửa từng cái một bằng tay oải lắm, giờ thì ngon lành rồi.
Chúc cả nhà vui ^^
  • 0

#11 quickandfine

quickandfine

    biết lệnh copy

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

Đã gửi 14 May 2013 - 09:20 PM

Chào bác Tue-NV và các anh em trên diễn đàn.

Lâu lắm em không có dịp vào diễn đàn vì đi công trường suốt, mới về phòng và tiếp tục công việc vẽ vời. Em gặp một tình huống tương tự như trường hợp này mà lisp này em thấy dùng chưa được như ý lắm (hoặc ít ra là trong trường hợp cụ thể của em). Xin nhờ các bác sửa giúp thêm để thực hiện được công việc như em miêu tả trong file đính kèm. Em đính kèm 2 file, một file là file miêu tả lisp yêu cầu, một file là file thực tế em đang phải làm, các bác xem và giúp em với ạ.

Thanks các bác nhiều!

File mô tả lisp

http://www.cadviet.c...10072_lsh_1.dwg

File thực tế em đang làm

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


  • 0

#12 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 14 May 2013 - 10:13 PM


Chào bác Tue-NV và các anh em trên diễn đàn.

Lâu lắm em không có dịp vào diễn đàn vì đi công trường suốt, mới về phòng và tiếp tục công việc vẽ vời. Em gặp một tình huống tương tự như trường hợp này mà lisp này em thấy dùng chưa được như ý lắm (hoặc ít ra là trong trường hợp cụ thể của em). Xin nhờ các bác sửa giúp thêm để thực hiện được công việc như em miêu tả trong file đính kèm. Em đính kèm 2 file, một file là file miêu tả lisp yêu cầu, một file là file thực tế em đang phải làm, các bác xem và giúp em với ạ.

Thanks các bác nhiều!

File mô tả lisp

http://www.cadviet.c...10072_lsh_1.dwg

File thực tế em đang làm

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

 

Bạn thử code này :

 

(defun c:ctd(/ ss ename i dxf11 dxf13 vt)
  (setq p1 (getpoint "\n Diem thu 1 :") p2 (getpoint p1 "\n Diem thu 2 :"))
  (setq ang (angle p1 p2))
  (if (setq ss (ssget '((0 . "DIMENSION"))))
    (progn
      (setq i -1); vt (getreal "\n Text cua dim cach mep trai 1 doan :"))
      (while (setq ename (ssname ss (setq i (1+ i))))
(command "dimtedit" ename "L")
(setq dxf11 (cdr(assoc 11 (entget ename)))
   dxf13 (cdr(assoc 13 (entget ename))) 
      pres (inters p1 p2 dxf11 (polar dxf11 (+ ang (/ pi 2.0)) 100.0) t)
)
(command "dimtedit" ename pres )
      )
    )
  )
)
 
Cách sử dụng:

Bạn quickan... thử code này : Bạn chọn DIMENSION -> Chọn điêm thứ 1 và điểm thứ 2 của đoạn thẳng 

 

 
(defun c:ctd(/ ss ename i dxf11 dxf13 ang pres)
  (setq p1 (getpoint "\n Diem thu 1 :") p2 (getpoint p1 "\n Diem thu 2 :"))
  (setq ang (angle p1 p2))
  (if (setq ss (ssget '((0 . "DIMENSION"))))
    (progn
      (setq i -1)
      (while (setq ename (ssname ss (setq i (1+ i))))
(command "dimtedit" ename "L")
(setq dxf11 (cdr(assoc 11 (entget ename)))
   dxf13 (cdr(assoc 13 (entget ename))) 
      pres (inters p1 p2 dxf11 (polar dxf11 (+ ang (/ pi 2.0)) 100.0) t)
)
(command "dimtedit" ename pres )
      )
    )
  )
)

  • 1

#13 Song Nhi

Song Nhi

    biết vẽ rectang

  • Members
  • PipPip
  • 83 Bài viết
Điểm đánh giá: 52 (tàm tạm)

Đã gửi 14 May 2013 - 11:00 PM

Bác Tue_NV ơi! LISP của bác thật hay khi sử dụng cho hàng loạt DIM, với một DIM thì dùng lệnh STRETCH?! TEXT vẫn còn nằm trong (hoặc nằm trên) đường dim!
Tuy nhiên, với mục đích tách loạt Dim choáng chỗ, nếu em muốn Bác sửa thế này có được không?!
 
Input: 1. Chọn vùng Dim cần thao tác
          2. Nhập vào số bậc hiệu chỉnh <1;2;3>
          3. Hướng thực hiện <T;P>: Nếu T, DIM đầu tiên bên TRÁI làm chuẩn không thay đổi, bắt đầu thay đổi từ DIM thứ 2 trở đi, từ TRÁI sang PHẢI, và ngược lại cho lựa chọn P.
 
Mô tả:
118347_song_nhi_2.jpg118347_song_nhi_1_1.jpg

Và đây là kích thước tường minh, tương quan chiều cao TEXT và các bước nhảy:
118347_88888.jpg

Nếu thực hiện được trên phương xiên nữa thì thật là tuyệt vời!
Cám ơn các Bác đã quan tâm đến vấn đề của em, thành thật xin lỗi nếu sự chỉnh sửa (bài viết) này gây ra trở ngại!!!
  • 1

#14 quickandfine

quickandfine

    biết lệnh copy

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

Đã gửi 15 May 2013 - 09:58 AM

Chào bác Tue_NV.

Sau khi down đoạn lisp trên về dùng em thấy thế này ạ.

Lisp chạy đúng cho trường hợp các dimension có cùng một "điểm xuất phát" (em không biết dùng từ gì cho chuẩn) khi đó các textdim sẽ đường căn bằng khoảng cách đến đầu bên trái bằng nhau. như vậy chúng sẽ thẳng hàng. Nhưng trường hợp các điểm căn ở đầu bên trái không thẳng hàng thì hình như chưa đúng ạ.

Em post lại file  bản vẽ yêu cầu, mô tả rõ ràng hơn, bác và các bác khác xem giúp em với nhé.

Trường hợp dim theo phương thẳng đứng cũng tương tự ạ

http://www.cadviet.c...10072_lsh_2.dwg


  • 0

#15 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 15 May 2013 - 11:04 AM

Bạn sửa dòng này :
(setq dxf11 (cdr(assoc 11 (entget ename)))
   dxf13 (cdr(assoc 13 (entget ename))) 
      pres (inters p1 p2 dxf11 (polar dxf11 (+ ang (/ pi 2.0)) 100.0) t)
)
thành dòng :
(setq dxf11 (cdr(assoc 11 (entget ename)))
   dxf13 (cdr(assoc 13 (entget ename))) 
      pres (inters p1 p2 dxf11 (polar dxf11 (+ ang (/ pi 2.0)) 100.0) nil)
)

  • 2

#16 quickandfine

quickandfine

    biết lệnh copy

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

Đã gửi 15 May 2013 - 11:25 AM

Đúng ý em rồi bác Tue_NV ạ. Cảm ơn bác nhiều ạ!


  • 0

#17 Song Nhi

Song Nhi

    biết vẽ rectang

  • Members
  • PipPip
  • 83 Bài viết
Điểm đánh giá: 52 (tàm tạm)

Đã gửi 17 May 2013 - 10:04 PM

Sẵn dịp cho phép em được refresh lại yêu cầu hôm trước của em tý, tại em thấy yêu cầu của mình cũng liên quan đến tên Topic này, nên "nhét" vô trong này mà không mở Topic mới! Hix, có lẽ vì vậy mà không nhận được sự quan tâm của các Bác?!
 

Với mục đích tách loạt Dim choáng chỗ, các bác có thể vui lòng giúp em như thế này được không ạ!
 
Input: 1. Chọn vùng Dim cần thao tác
           2. Nhập vào số bậc hiệu chỉnh <1;2;3>
           3. Hướng thực hiện <T;P>: Nếu T, DIM đầu tiên bên TRÁI làm chuẩn không thay đổi, bắt đầu thay đổi từ DIM thứ 2 trở đi, từ TRÁI sang PHẢI, và ngược lại cho lựa chọn P.
 
Mô tả:
118347_song_nhi_2.jpg118347_song_nhi_1_1.jpg

Và đây là kích thước tường minh, tương quan chiều cao TEXT và các bước nhảy:
118347_88888.jpg

Nếu thực hiện được trên phương xiên nữa thì thật là tuyệt vời!
Cám ơn các Bác đã quan tâm đến vấn đề của em, thành thật xin lỗi nếu sự chỉnh sửa (bài viết) này gây ra trở ngại!!!


  • 0

#18 rongcuoimay

rongcuoimay

    biết vẽ ellipse

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

Đã gửi 17 May 2013 - 11:19 PM

mạn phép ké topic này cũng để hỏi về di chuyển text trên đường dim.

lúc trước xài cad 2008, mỗi lần kích chuột phải vào đường dim là xuất hiện lựa chọn "dimension position" để lựa chọn: move text, move text with leader,....

bây giờ xài cad 2013, cũng thao tác vậy mà kiếm không ra cái lựa chọn "move text with leader"  :angry2:

các bác giúp mình chỗ này với, xem giùm nó nằm ở chỗ nào ? hay là cad 2013 bỏ lựa chọn này rồi

autocad201310giaothongc.jpg


  • 0

#19 tuandtu

tuandtu

    biết pan

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

Đã gửi 04 October 2013 - 08:12 AM

Xin các cao thủ chi giáo với

o hinh nay đường kích thước co đương gióng phụ ở dưới

   


  • 0

#20 tuandtu

tuandtu

    biết pan

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

Đã gửi 04 October 2013 - 08:38 AM

109490_capture.png


  • 0