Đến nội dung


Hình ảnh
- - - - -

xin giúp đỡ lisp dời dimension text...


  • Please log in to reply
7 replies to this topic

#1 colombus

colombus

    biết vẽ ellipse

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

Đã gửi 02 April 2015 - 12:03 PM

Tôi đã tìm kiếm trên mạng và chỉ tìm được đến chỗ này http://cadtips.cadal...-xy-coordinates và không có file download.

 

Tôi mong muốn có được 1 lisp mà khi click vào text dimension thì nó nhảy lên hoặc nhảy xuống một đoạn bằng giá trị nhập vào đồng thời nó ghi nhớ giá trị này làm giá trị mặc định để lần sau khi thực hiện sẽ không phải nhập lại từ bàn phím.

 

Xin cảm ơn.


  • 0

#2 colombus

colombus

    biết vẽ ellipse

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

Đã gửi 02 April 2015 - 02:55 PM

Tôi đã tìm được 1 cách không dùng autolisp.

 

1. Trên QUICK PROPERTIES panel (cho Dimension) ta chọn customize để điều chỉnh xuất hiện text position X và text position Y

2. Chọn các kích thước (trong dãy kích thưóc) cần dời lên / xuống

3. Trên QUICK PROPERTIES panel click vào biểu tượng máy tính nằm ngang hàng với text position X / Y .

4. Hiện lên bảng tính toán ta thêm vào + a hay -a đằng sau tọa độ rất dài với rất nhiều số thập phân (với a là giá trị cần dời theo X / Y). Xong nhấn Apply là được.

 

Tuy có hơi thủ công nhưng có có thể chỉnh được nhiều dimension trong dãy (nằm ngang / thẳng đứng) cùng 1 lúc.

Đối với dãy dimension xiên ta tiến hành đổi trục X cho song song với dãy dimension rồi thực hiện như trên.

 

Rất tiếc cho những ai tắt chức năng QUICK PROPERTIES panel. (Ctrrl+Shift+P)


  • 0

#3 quansla

quansla

    biết lệnh xclip

  • Members
  • PipPipPipPipPipPipPip
  • 641 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 03 April 2015 - 01:27 PM

rất khó hiểu ,không rõ bác có thể chụp ảnh, gửi file yêu cầu, mong muốn và cách làm thủ công hiện giờ trong cad không cảm ơn bác
  • 0

#4 dckonhi1987

dckonhi1987

    biết zoom

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

Đã gửi 03 April 2015 - 03:12 PM

Xin lỗi cho tôi thắc mắc ké một chút là sao tôi làm 1 lisp lệnh
(command "-style" "Chuin" ".VntimeH" "3" "1" "0" "n" "n" "")
Nhưng khi load xong nó toàn tự bật lên bảng appload.
Có ai biết giúp dùm.

  • 0

#5 colombus

colombus

    biết vẽ ellipse

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

Đã gửi 03 April 2015 - 03:23 PM

Vâng . theo thứ tự

1. dSHSuTU.jpg

 

 

 

2. rzsDSHS.jpg

 

 

 

 

3. UJgFAR0.jpg

 

 

4.aevvZ26.jpg

 

5. mvdPpsW.jpg


  • 0

#6 anhduccec

anhduccec

    biết vẽ arc

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

Đã gửi 03 April 2015 - 09:41 PM

Thử xem:

(defun c:dtp (/ ss ename obj i txt-po delta-x delta-y sta-po end-po ang-diml xxx yyy new-po-x new-po-y direct)
(if (setq ss (ssget '((0 . "DIMENSION"))))
(progn (setq i -1
delta-x (getreal "\nKhoang dich Text theo chieu // dimline: ")
delta-y (getreal "\nKhoang dich Text theo chieu Vuong goc dimline: "))
(while (setq ename (ssname ss (setq i (1+ i))))
(setq obj (vlax-ename->vla-object ename))
(if (null delta-x)
(setq delta-x 0))
(if (null delta-y)
(setq delta-y 0))
(setq txt-po (cdr (assoc 11 (entget ename)))
sta-po (cdr (assoc 10 (entget ename)))
end-po (cdr (assoc 14 (entget ename)))
ang-diml (- (angle sta-po end-po) (* pi 0.5)))
(cond ((= ang-diml (* pi 0.5 -1)) (setq direct -1))
((<= ang-diml (* pi 0.5)) (setq direct 1))
((<= ang-diml (* pi 1.0)) (setq direct -1))
((<= ang-diml (* pi 1.5)) (setq direct -1))
((< ang-diml (* pi 2.0)) (setq direct 1)))
(setq xxx (* (cos ang-diml) direct)
yyy (* (sin ang-diml) direct))
(setq new-po-x (list (+ (car txt-po) (* delta-x xxx)) (+ (cadr txt-po) (* delta-x yyy)) 0.0)
new-po-y (list (- (car new-po-x) (* delta-y yyy)) (+ (cadr new-po-x) (* delta-y xxx)) 0.0))
(vla-put-textposition obj (vlax-3d-point new-po-y)))))
(princ))

(vl-load-com)


  • 1

#7 colombus

colombus

    biết vẽ ellipse

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

Đã gửi 05 April 2015 - 01:59 PM

Thử xem:

(defun c:dtp (/ ss ename obj i txt-po delta-x delta-y sta-po end-po ang-diml xxx yyy new-po-x new-po-y direct)
(if (setq ss (ssget '((0 . "DIMENSION"))))
(progn (setq i -1
delta-x (getreal "\nKhoang dich Text theo chieu // dimline: ")
delta-y (getreal "\nKhoang dich Text theo chieu Vuong goc dimline: "))
(while (setq ename (ssname ss (setq i (1+ i))))
(setq obj (vlax-ename->vla-object ename))
(if (null delta-x)
(setq delta-x 0))
(if (null delta-y)
(setq delta-y 0))
(setq txt-po (cdr (assoc 11 (entget ename)))
sta-po (cdr (assoc 10 (entget ename)))
end-po (cdr (assoc 14 (entget ename)))
ang-diml (- (angle sta-po end-po) (* pi 0.5)))
(cond ((= ang-diml (* pi 0.5 -1)) (setq direct -1))
((<= ang-diml (* pi 0.5)) (setq direct 1))
((<= ang-diml (* pi 1.0)) (setq direct -1))
((<= ang-diml (* pi 1.5)) (setq direct -1))
((< ang-diml (* pi 2.0)) (setq direct 1)))
(setq xxx (* (cos ang-diml) direct)
yyy (* (sin ang-diml) direct))
(setq new-po-x (list (+ (car txt-po) (* delta-x xxx)) (+ (cadr txt-po) (* delta-x yyy)) 0.0)
new-po-y (list (- (car new-po-x) (* delta-y yyy)) (+ (cadr new-po-x) (* delta-y xxx)) 0.0))
(vla-put-textposition obj (vlax-3d-point new-po-y)))))
(princ))

(vl-load-com)

 

Vâng như thế này là rất tốt rồi bác à. Tôi xin cảm ơn sự giúp đỡ của bác.

 

Như yêu cầu của tôi ban đầu thì cũng không cần khoảng dời theo phương song song dimline . Vì thế nếu như bác bỏ cho tôi cái phần này thì tốt hơn nữa. Không chỉ là bớt đi 1 cú gõ phím "space bar" mà làm như thế sẽ đỡ bị nhầm lẫn trong thao tác vẽ.


  • 0

#8 colombus

colombus

    biết vẽ ellipse

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

Đã gửi 05 April 2015 - 02:09 PM

Vâng như thế này là rất tốt rồi bác à. Tôi xin cảm ơn sự giúp đỡ của bác.

 

Như yêu cầu của tôi ban đầu thì cũng không cần khoảng dời theo phương song song dimline . Vì thế nếu như bác bỏ cho tôi cái phần này thì tốt hơn nữa. Không chỉ là bớt đi 1 cú gõ phím "space bar" mà làm như thế sẽ đỡ bị nhầm lẫn trong thao tác vẽ.

Vâng , chỉ cần xoá đi dòng

 

delta-x (getreal "\nKhoang dich Text theo chieu // dimline: ")

 

là ổn.


  • 0