Đế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

#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
  • 6009 Bài viết
Điểm đánh giá: 3113 (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 attdef

  • Members
  • PipPipPipPipPipPip
  • 412 Bài viết
Điểm đánh giá: 88 (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 lệnh extend

  • Members
  • PipPipPip
  • 198 Bài viết
Điểm đánh giá: 68 (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 attdef

  • Members
  • PipPipPipPipPipPip
  • 412 Bài viết
Điểm đánh giá: 88 (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