Đến nội dung


Hình ảnh
5 stars - based on 24598 reviews
- - - - -

[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
32 replies to this topic

#21 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:42 AM

xin các cao thủ chi cho minh với

gưii vào mail của minh hj

 mail. dangvantuandtu@gmail.com


  • 0

#22 duytanckm

duytanckm

    Chưa sử dụng CAD

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

Đã gửi 08 March 2014 - 11:55 PM

bác nao giup e voi!!! em moi tap ve cad??? bình thường em chọn đoạn thẳng mình về thì nó sáng lên hk biết cái đắc thế nào mà giờ lick vào đoạn thẳng ko thấy phản ứng gì  giúp em cài đặc lại với em cảm ơn nhiều??


  • 0

#23 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 09 March 2014 - 11:28 AM

bác nao giup e voi!!! em moi tap ve cad??? bình thường em chọn đoạn thẳng mình về thì nó sáng lên hk biết cái đắc thế nào mà giờ lick vào đoạn thẳng ko thấy phản ứng gì  giúp em cài đặc lại với em cảm ơn nhiều??

Hề hề hề,

Cài "đặc" thì mình chịu chết , hổng biết cách làm. Nhưng mà cài "lỏng" thì có biết chút chút. Bác nào cần xài "lỏng" thì cứ a lô nhé.


  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#24 spsp0

spsp0

    Chưa sử dụng CAD

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

Đã gửi 20 June 2015 - 12:22 AM

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

bác cho em xin đoạn code này của bác @Ketxu để tham khảo đuợc không !

Hơi tò mò mà không tìm thấy code này.

Thanks các bác !


  • 0

#25 conghoa

conghoa

    biết lệnh divide

  • Members
  • PipPipPipPipPipPip
  • 446 Bài viết
Điểm đánh giá: 91 (tàm tạm)

Đã gửi 10 November 2016 - 11:57 AM

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

 

Vấn đề move text Dim này cũng khá hay, mong mọi người giúp đỡ lisp này nhé.

 

Yêu cầu lisp bên trên cũng khá lằng nhằng, mong muốn của em nó đơn giản hơn chút:

 

- Chạy lisp, lisp yêu cầu chọn dãy dim cần dãn text trùng

+ Người dùng chọn dãy dim

- Lisp nhận diện các text bị đè lên nhau và move text trùng xuống dưới hàng dim (khoảng cách move bằng 2 lần chiều cao text). Kết thúc lệnh

 

File ví dụ:

http://www.mediafire...0dred/Vidu2.dwg


  • 0

#26 Bee

Bee

    biết dimdiameter

  • Members
  • PipPipPipPipPip
  • 335 Bài viết
Điểm đánh giá: 105 (tàm tạm)

Đã gửi 11 November 2016 - 09:13 PM

Vấn đề move text Dim này cũng khá hay, mong mọi người giúp đỡ lisp này nhé.

 

Yêu cầu lisp bên trên cũng khá lằng nhằng, mong muốn của em nó đơn giản hơn chút:

 

- Chạy lisp, lisp yêu cầu chọn dãy dim cần dãn text trùng

+ Người dùng chọn dãy dim

- Lisp nhận diện các text bị đè lên nhau và move text trùng xuống dưới hàng dim (khoảng cách move bằng 2 lần chiều cao text). Kết thúc lệnh

 

File ví dụ:

http://www.mediafire...0dred/Vidu2.dwg

Thử lisp này, thay lệnh test tùy ý nhé. ^_^

 

https://youtu.be/6NyEJFNnIwM

(defun c:test (/ ss lst _angle)
  (vl-load-com)
  (command "undo" "be")
  (if (setq ss (ssget '((0 . "DIMENSION"))))
    (progn
      (setq lst	(vl-remove-if
		  '(lambda (e) (> (cdr (assoc 42 (entget e))) 900.))
		  (vl-remove-if
		    'listp
		    (mapcar 'cadr (ssnamex ss))
		  )
		)
      )					;setq
      (setq _angle (angle (cdr (assoc 11 (entget (car lst))))
			  (cdr (assoc 11 (entget (cadr lst))))
		   )
      )
      (cond
	((or (= _angle 0)
	     (= _angle pi)
	 )
	 (dim_hor lst)
	)				;#cond1
	((or (= _angle (/ pi 2))
	     (= _angle (* pi 1.5))
	 )
	 (dim_ver lst)
	)				;#cond2
	(_angle
	 (dim_ lst _angle)
	)				;#cond3
      )					;#cond
    )					;progn
    (princ "\nBan da khong chon dim.!")
  )					;if
  (command "undo" "end")
  (princ)
)
(defun dim_hor (l / lst pt)
  (setq	lst (vl-sort l
		     '(lambda (e1 e2)
			(< (car (cdr (assoc 11 (entget e1))))
			   (car (cdr (assoc 11 (entget e2))))

			)
		      )
	    )
  )
  (foreach x lst
    (if	(= (rem (vl-position x lst) 2) 0)
      (progn
	(if (>=	(cadr (cdr (assoc 10 (entget x))))
		(cadr (cdr (assoc 14 (entget x))))
	    )

	  (setq	pt (polar (cdr (assoc 11 (entget x)))
			  (* pi 1.5)
			  (* 2 (txt_height x))
		   )
	  )
	  (setq	pt (polar (cdr (assoc 11 (entget x)))
			  (/ pi 2)
			  (* 2 (txt_height x))
		   )
	  )
	)
	(vlax-put (vlax-ename->vla-object x) 'TextPosition pt)
      )					;progn
    )					;if
  )					;foreach
)					;defun
(defun dim_ver (l / lst pt)
  (setq	lst (vl-sort l
		     '(lambda (e1 e2)
			(< (cadr (cdr (assoc 11 (entget e1))))
			   (cadr (cdr (assoc 11 (entget e2))))

			)
		      )
	    )
  )
  (foreach x lst
    (if	(= (rem (vl-position x lst) 2) 0)
      (progn
	(if (>=	(car (cdr (assoc 10 (entget x))))
		(car (cdr (assoc 14 (entget x))))
	    )

	  (setq	pt (polar (cdr (assoc 11 (entget x)))
			  pi
			  (* 2 (txt_height x))
		   )
	  )
	  (setq	pt (polar (cdr (assoc 11 (entget x)))
			  0.0
			  (* 2 (txt_height x))
		   )
	  )
	)
	(vlax-put (vlax-ename->vla-object x) 'TextPosition pt)
      )					;progn
    )					;if
  )					;foreach
)
(defun dim_ (l ang / lst pt)
  (setq	lst (vl-sort l
		     '(lambda (e1 e2)
			(< (cadr (cdr (assoc 11 (entget e1))))
			   (cadr (cdr (assoc 11 (entget e2))))

			)
		      )
	    )
  )
  (foreach x lst
    (if	(= (rem (vl-position x lst) 2) 0)
      (progn
	(if (>=	(car (cdr (assoc 10 (entget x))))
		(car (cdr (assoc 14 (entget x))))
	    )

	  (setq	pt (polar (cdr (assoc 11 (entget x)))
			  (+ ang (* pi 1.5))
			  (* 2 (txt_height x))
		   )
	  )
	  (setq	pt (polar (cdr (assoc 11 (entget x)))
			  (+ ang (* pi 1.5))
			  (* 2 (txt_height x))
		   )
	  )
	)
	(vlax-put (vlax-ename->vla-object x) 'TextPosition pt)
      )					;progn
    )					;if
  )					;foreach
)
(defun txt_height (ename / BlkEnt EntData height)
  (if
    (and
      (= (cdr (assoc 0 (setq EntData (entget ename))))
	 "DIMENSION"
      )
      (setq BlkEnt (tblobjname "block" (cdr (assoc 2 EntData))))
    )
     (while (setq BlkEnt (entnext BlkEnt))
       (if (= (cdr (assoc 0 (setq EntData (entget BlkEnt)))) "MTEXT")
	 (setq height (cdr (assoc 40 EntData)))
       )
     )
  )
  height
)
(princ)

  • 1

#27 nqthang115

nqthang115

    Chưa sử dụng CAD

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

Đã gửi 11 November 2016 - 11:43 PM

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

Lisp của bác rất tốt. Phiền bác giúp em chỉnh lại lệnh để sau khi chọn text sẽ di chuyển vào vị trí giữa 2 đường gióng (extension lines) được không ạ? cảm ơn bác nhiều.

link ảnh:

http://www.upsieutoc.com/image/iQAys


  • 0

#28 conghoa

conghoa

    biết lệnh divide

  • Members
  • PipPipPipPipPipPip
  • 446 Bài viết
Điểm đánh giá: 91 (tàm tạm)

Đã gửi 12 November 2016 - 10:04 AM

 

Thử lisp này, thay lệnh test tùy ý nhé. ^_^

 

https://youtu.be/6NyEJFNnIwM

(defun c:test (/ ss lst _angle)
  (vl-load-com)
  (command "undo" "be")
  (if (setq ss (ssget '((0 . "DIMENSION"))))
    (progn
      (setq lst	(vl-remove-if
		  '(lambda (e) (> (cdr (assoc 42 (entget e))) 900.))
		  (vl-remove-if
		    'listp
		    (mapcar 'cadr (ssnamex ss))
		  )
		)
      )					;setq
      (setq _angle (angle (cdr (assoc 11 (entget (car lst))))
			  (cdr (assoc 11 (entget (cadr lst))))
		   )
      )
      (cond
	((or (= _angle 0)
	     (= _angle pi)
	 )
	 (dim_hor lst)
	)				;#cond1
	((or (= _angle (/ pi 2))
	     (= _angle (* pi 1.5))
	 )
	 (dim_ver lst)
	)				;#cond2
	(_angle
	 (dim_ lst _angle)
	)				;#cond3
      )					;#cond
    )					;progn
    (princ "\nBan da khong chon dim.!")
  )					;if
  (command "undo" "end")
  (princ)
)
(defun dim_hor (l / lst pt)
  (setq	lst (vl-sort l
		     '(lambda (e1 e2)
			(< (car (cdr (assoc 11 (entget e1))))
			   (car (cdr (assoc 11 (entget e2))))

			)
		      )
	    )
  )
  (foreach x lst
    (if	(= (rem (vl-position x lst) 2) 0)
      (progn
	(if (>=	(cadr (cdr (assoc 10 (entget x))))
		(cadr (cdr (assoc 14 (entget x))))
	    )

	  (setq	pt (polar (cdr (assoc 11 (entget x)))
			  (* pi 1.5)
			  (* 2 (txt_height x))
		   )
	  )
	  (setq	pt (polar (cdr (assoc 11 (entget x)))
			  (/ pi 2)
			  (* 2 (txt_height x))
		   )
	  )
	)
	(vlax-put (vlax-ename->vla-object x) 'TextPosition pt)
      )					;progn
    )					;if
  )					;foreach
)					;defun
(defun dim_ver (l / lst pt)
  (setq	lst (vl-sort l
		     '(lambda (e1 e2)
			(< (cadr (cdr (assoc 11 (entget e1))))
			   (cadr (cdr (assoc 11 (entget e2))))

			)
		      )
	    )
  )
  (foreach x lst
    (if	(= (rem (vl-position x lst) 2) 0)
      (progn
	(if (>=	(car (cdr (assoc 10 (entget x))))
		(car (cdr (assoc 14 (entget x))))
	    )

	  (setq	pt (polar (cdr (assoc 11 (entget x)))
			  pi
			  (* 2 (txt_height x))
		   )
	  )
	  (setq	pt (polar (cdr (assoc 11 (entget x)))
			  0.0
			  (* 2 (txt_height x))
		   )
	  )
	)
	(vlax-put (vlax-ename->vla-object x) 'TextPosition pt)
      )					;progn
    )					;if
  )					;foreach
)
(defun dim_ (l ang / lst pt)
  (setq	lst (vl-sort l
		     '(lambda (e1 e2)
			(< (cadr (cdr (assoc 11 (entget e1))))
			   (cadr (cdr (assoc 11 (entget e2))))

			)
		      )
	    )
  )
  (foreach x lst
    (if	(= (rem (vl-position x lst) 2) 0)
      (progn
	(if (>=	(car (cdr (assoc 10 (entget x))))
		(car (cdr (assoc 14 (entget x))))
	    )

	  (setq	pt (polar (cdr (assoc 11 (entget x)))
			  (+ ang (* pi 1.5))
			  (* 2 (txt_height x))
		   )
	  )
	  (setq	pt (polar (cdr (assoc 11 (entget x)))
			  (+ ang (* pi 1.5))
			  (* 2 (txt_height x))
		   )
	  )
	)
	(vlax-put (vlax-ename->vla-object x) 'TextPosition pt)
      )					;progn
    )					;if
  )					;foreach
)
(defun txt_height (ename / BlkEnt EntData height)
  (if
    (and
      (= (cdr (assoc 0 (setq EntData (entget ename))))
	 "DIMENSION"
      )
      (setq BlkEnt (tblobjname "block" (cdr (assoc 2 EntData))))
    )
     (while (setq BlkEnt (entnext BlkEnt))
       (if (= (cdr (assoc 0 (setq EntData (entget BlkEnt)))) "MTEXT")
	 (setq height (cdr (assoc 40 EntData)))
       )
     )
  )
  height
)
(princ)

Thanks Bee nhiều! Lisp của bạn rất hay :D


  • 0

#29 NguyenNgocSon

NguyenNgocSon

    biết dimcontinue

  • Members
  • PipPipPipPipPip
  • 376 Bài viết
Điểm đánh giá: 41 (tàm tạm)

Đã gửi 19 May 2017 - 05:08 PM

Cùng chủ đề. Mình muốn di chuyển text dim theo như bản vẽ đính kèm

Mong các bác xem phương án lisp giúp đỡ.

Cám ơn !

http://www.cadviet.c...67_text_dim.dwg


  • 0

#30 conghoa113

conghoa113

    biết vẽ line

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

Đã gửi 20 May 2017 - 08:19 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

 

Vấn đề của bạn mình nghĩ chỉ cần tick chọn như hình dưới trong dimmesion style là được

128900_untitled_1.jpg


  • 0

#31 quocmanh04tt

quocmanh04tt

    biết lệnh adcenter

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

Đã gửi 20 May 2017 - 10:14 PM

141736_dhl2.gif


  • 2

#32 NguyenNgocSon

NguyenNgocSon

    biết dimcontinue

  • Members
  • PipPipPipPipPip
  • 376 Bài viết
Điểm đánh giá: 41 (tàm tạm)

Đã gửi 22 May 2017 - 02:25 PM

Quá hay. cái này bác có pulic code không ?


  • 0

#33 NguyenNgocSon

NguyenNgocSon

    biết dimcontinue

  • Members
  • PipPipPipPipPip
  • 376 Bài viết
Điểm đánh giá: 41 (tàm tạm)

Đã gửi 24 May 2017 - 11:48 PM

141736_dhl2.gif

Không thấy bác phản hổi về ý kiến code lisp hoặc mình cần thì làm ntn ?

Cám ơn !


  • 0