Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
vanhuyou

Nhờ các bác tạo giúp lisp cộng trừ số của TEXT OVERRIDE DIm

Các bài được khuyến nghị

Chào các bác, em có download được 1 dim ghi số lượng đai vào TEXT OVERRIDE của DIM, nhờ các bác giúp tạo cái lisp để cộng lại số lượng của các TEXT OVERRIDE đó vì mỗi lần cộng phải bấm máy mất thời gian. Mong các bác giúp đỡ, cụ thể là:

- Chọn DIM cần cộng

- Đưa ra số lượng lên bảng thông báo hoặc chọn text để ghi với cú pháp: 13∅6a200

Mong các bác giúp đỡ.

image.png.062a3868690fff995ca630b4ed6906df.png

 

Drawing1.dwg

  • Vote giảm 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Vào lúc 10/3/2019 tại 08:57, vanhuyou đã nói:

Chào các bác, em có download được 1 dim ghi số lượng đai vào TEXT OVERRIDE của DIM, nhờ các bác giúp tạo cái lisp để cộng lại số lượng của các TEXT OVERRIDE đó vì mỗi lần cộng phải bấm máy mất thời gian. Mong các bác giúp đỡ, cụ thể là:

- Chọn DIM cần cộng

- Đưa ra số lượng lên bảng thông báo hoặc chọn text để ghi với cú pháp: 13∅6a200

Mong các bác giúp đỡ.

image.png.062a3868690fff995ca630b4ed6906df.png

 

Drawing1.dwg

(vl-load-com)
(defun c:test (/ ss tong ent ovr a b c text)
  (setq ss (acet-ss-to-list (ssget (list (cons 0 "*DIM*")))))
  (setq tong 0)
  (foreach ent ss
    (setq ovr (vla-get-textoverride (vlax-ename->vla-object ent)))
 (if  (setq a (vl-string-search "X" ovr)
 	    b (vl-string-search "%%" ovr)) (progn
  (setq	c (substr ovr (+ a 2) (- b (1+ a)))
	tong (+ tong (atoi c)))
  ))
    )
    (if (and (setq text (car (entsel "\n Pick Text")))
	     (Wcmatch (cdr (assoc 0 (entget text))) "*TEXT"))
      (vla-put-textstring (vlax-ename->vla-object text) (itoa tong))
    (alert (itoa tong)) )
  )

Không hiểu rõ ý yêu cầu lắm, viết thế này chủ thớt xem được chưa

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
13 giờ trước, Doan Nguyen Van đã nói:

(vl-load-com)
(defun c:test (/ ss tong ent ovr a b c text)
  (setq ss (acet-ss-to-list (ssget (list (cons 0 "*DIM*")))))
  (setq tong 0)
  (foreach ent ss
    (setq ovr (vla-get-textoverride (vlax-ename->vla-object ent)))
 (if  (setq a (vl-string-search "X" ovr)
 	    b (vl-string-search "%%" ovr)) (progn
  (setq	c (substr ovr (+ a 2) (- b (1+ a)))
	tong (+ tong (atoi c)))
  ))
    )
    (if (and (setq text (car (entsel "\n Pick Text")))
	     (Wcmatch (cdr (assoc 0 (entget text))) "*TEXT"))
      (vla-put-textstring (vlax-ename->vla-object text) (itoa tong))
    (alert (itoa tong)) )
  )

Không hiểu rõ ý yêu cầu lắm, viết thế này chủ thớt xem được chưa

image.png.e7498d53517390e5b4f2b9020c165054.png

Bạn có thể thêm sửa lại là: hiện ra bảng thông báo hoặc ghi ra text được không. Cám ơn bạn.

  • Vote giảm 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
1 giờ} trướ}c, vanhuyou đã nói:

Bạn có thể thêm sửa lại là: hiện ra bảng thông báo hoặc ghi ra text được không. Cám ơn bạn.

Lỡ có 1 chú 13Ø8a150 lọt vào vùng "nhạy cảm" thì phải "nàm thao"?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
22 phút trước, NTHAHT đã nói:

Lỡ có 1 chú 13Ø8a150 lọt vào vùng "nhạy cảm" thì phải "nàm thao"?

Hì, thêm 1 dòng text nữa được không bạn

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
3 giờ trước, vanhuyou đã nói:

Hì, thêm 1 dòng text nữa được không bạn

Hôm nay hơi rảnh nên viết cho bạn nè.

Ở đây ký hiệu Ø của mình có mã là "%%C", có thể khác đối với 1 số font, để chỉnh sửa bạn vào lisp sửa trong dòng (setq symbol "%%C") - dòng đầu tiên.

[CTH] Cong thep.lsp

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
1 phút trước, Duong Nhat Duy đã nói:

Bạn down lại đi, nãy mình up lại file ấy mà.

Hi bạn, lúc chọn điểm xuất kết quả xong thì không thấy ra gì hết bạn ơi

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

 

 

5 giờ trước, vanhuyou đã nói:

image.png.e7498d53517390e5b4f2b9020c165054.png

Bạn có thể thêm sửa lại là: hiện ra bảng thông báo hoặc ghi ra text được không. Cám ơn bạn.

Định không viết vì yêu cầu không rõ ràng và mơ hồ và cũng có bác nhắc nhưng tại cứ nghĩ đến lại thấy muốn làm, lên lại thấy bác Duy viết rồi, nhưng mất công viết nên vẫn đăng vậy

Untitled.png.cc10f5518a35cfeb35d36bfc6188ff91.png

(vl-load-com)
(defun c:test (/ ss tong ent ent1 ent2 ent3 lst nd lststr ketqua ovr a b c text id x y )
  (setq ss (acet-ss-to-list (ssget (list (cons 0 "*DIM*") ))))
	(setq lst (list))
	(foreach ent1 ss
	  (if (Vl-string-search "%%" (dxf 1 ent1)) (Progn
						(setq nd (substr (dxf 1 ent1) (+ (Vl-string-search "%%" (dxf 1 ent1)) 1)))
						(or (vl-position nd lst) (setq lst (append lst (list nd))))
						))
	  )
 
  (setq lststr (list))
    (setq lst (vl-sort lst '(lambda (x y) (< (atoi (substr x 4 (- (Vl-string-search "a" x) 3))) (atoi (substr y 4 (- (Vl-string-search "a" y) 3)))))))
								  
  (foreach ent2 lst
    
  (setq tong 0)
  (foreach ent ss
    (if (Vl-string-search ent2 (dxf 1 ent)) (progn
    (setq ovr (dxf 1 ent))
  (setq a (vl-string-search "X" ovr)
 	    b (vl-string-search "%%" ovr)) 
  (setq	c (substr ovr (+ a 2) (- b (1+ a)))
	tong (+ tong (atoi c)))

    )))
    (setq str (strcat (itoa tong) ent2))
    (setq lststr (append lststr (list str)))
    )
  (Setq ketqua "")
  

  (foreach ent3 lststr
    (setq ketqua (strcat ketqua "\n" ent3))
    )
    (if (and (setq text (car (entsel "\n Pick Text")))
	     (Wcmatch (cdr (assoc 0 (entget text))) "*TEXT"))
      (vla-put-textstring (vlax-ename->vla-object text) ketqua)
    (alert ketqua) )
)
(defun dxf (id ent)
  (cdr (assoc id (entget ent))))

 

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
5 phút trước, Doan Nguyen Van đã nói:

Định không viết vì yêu cầu không rõ ràng và mơ hồ và cũng có bác nhắc nhưng tại cứ nghĩ đến lại thấy muốn làm, lên lại thấy bác Duy viết rồi, nhưng mất công viết nên vẫn đăng vậy


(vl-load-com)
(defun c:test (/ ss tong ent ent1 ent2 ent3 lst nd lststr ketqua ovr a b c text id x y )
  (setq ss (acet-ss-to-list (ssget (list (cons 0 "*DIM*") ))))
	(setq lst (list))
	(foreach ent1 ss
	  (if (Vl-string-search "%%" (dxf 1 ent1)) (Progn
						(setq nd (substr (dxf 1 ent1) (+ (Vl-string-search "%%" (dxf 1 ent1)) 1)))
						(or (vl-position nd lst) (setq lst (append lst (list nd))))
						))
	  )
 
  (setq lststr (list))
    (setq lst (vl-sort lst '(lambda (x y) (< (atoi (substr x 4 (- (Vl-string-search "a" x) 3))) (atoi (substr y 4 (- (Vl-string-search "a" y) 3)))))))
								  
  (foreach ent2 lst
    
  (setq tong 0)
  (foreach ent ss
    (if (Vl-string-search ent2 (dxf 1 ent)) (progn
    (setq ovr (dxf 1 ent))
  (setq a (vl-string-search "X" ovr)
 	    b (vl-string-search "%%" ovr)) 
  (setq	c (substr ovr (+ a 2) (- b (1+ a)))
	tong (+ tong (atoi c)))

    )))
    (setq str (strcat (itoa tong) ent2))
    (setq lststr (append lststr (list str)))
    )
  (Setq ketqua "")
  

  (foreach ent3 lststr
    (setq ketqua (strcat ketqua "\n" ent3))
    )
    (if (and (setq text (car (entsel "\n Pick Text")))
	     (Wcmatch (cdr (assoc 0 (entget text))) "*TEXT"))
      (vla-put-textstring (vlax-ename->vla-object text) ketqua)
    (alert ketqua) )
)
(defun dxf (id ent)
  (cdr (assoc id (entget ent))))

Untitled.png.b43d42546db335e5dbe6b4de16d0da01.png

Tuyệt vời quá bác ơi. Cám ơn bác nhiều nhiều.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay
Đăng nhập để thực hiện theo  

×