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

Nhờ các bác chỉnh giùm em lisp ghi chiều dài đoạn polyline vào block attributes

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

Chào các bác, em có download được trên diễn đàn 1 lisp xuất chiều dài đoạn polyline vào block attributes. Lisp đó dùng như sau:

 - Click chọn đoạn polyline hoặc line

 - Click vào attributes của block mà mình muốn xuất chiều dài vào.

Nhưng khi xuất thì nó sẽ xoá text có sẵn của attributes đó, em nhờ các bác sữa giúp em là khi xuất vào attributes thì nó ghi tiếp vào chứ đừng xoá đi text có sẵn.

Em gửi file lisp đính kèm, nhờ các bác sữa giúp em, cám ơn các bác.

image.thumb.png.0857822c70443bc46fa2ddaa74afe2df.png

TCDT-tinh chieu dai ghi ra block att.lsp

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

@vanhuyou Bạn dùng thử

(defun c:tcdt (/ att ent len ss)
  (setvar 'DIMZIN 0)
  (and (setq ss (ssget "_+.:S:E" '((0 . "*LINE"))))
       (setq ent (ssname ss 0))
       (not (redraw ent 3))
       (setq att (car (nentsel "\nPick Att: ")))
       (eq (cdr (assoc 0 (entget att))) "ATTRIB")
       (setq
	 len (vlax-curve-getDistAtParam ent (vlax-curve-getEndParam ent))
       ) ;_ end of setq
       (not
	 (vla-put-textstring
	   (vlax-ename->vla-object att)
	   (strcat (vla-get-textstring (vlax-ename->vla-object att))
		   " - "
		   (rtos len 2 0)
	   ) ;_ end of strcat
	 ) ;_ end of vla-put-textstring
       ) ;_ end of not
       (redraw ent 4)
  ) ;_ end of and
  (princ)
) ;_ end of defun

 

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
19 phút trước, tien2005 đã nói:

@vanhuyou Bạn dùng thử


(defun c:tcdt (/ att ent len ss)
  (setvar 'DIMZIN 0)
  (and (setq ss (ssget "_+.:S:E" '((0 . "*LINE"))))
       (setq ent (ssname ss 0))
       (not (redraw ent 3))
       (setq att (car (nentsel "\nPick Att: ")))
       (eq (cdr (assoc 0 (entget att))) "ATTRIB")
       (setq
	 len (vlax-curve-getDistAtParam ent (vlax-curve-getEndParam ent))
       ) ;_ end of setq
       (not
	 (vla-put-textstring
	   (vlax-ename->vla-object att)
	   (strcat (vla-get-textstring (vlax-ename->vla-object att))
		   " - "
		   (rtos len 2 0)
	   ) ;_ end of strcat
	 ) ;_ end of vla-put-textstring
       ) ;_ end of not
       (redraw ent 4)
  ) ;_ end of and
  (princ)
) ;_ end of defun

 

Tuyệt vời, cám ơn bác 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
27 phút trước, tien2005 đã nói:

@vanhuyou Bạn dùng thử


(defun c:tcdt (/ att ent len ss)
  (setvar 'DIMZIN 0)
  (and (setq ss (ssget "_+.:S:E" '((0 . "*LINE"))))
       (setq ent (ssname ss 0))
       (not (redraw ent 3))
       (setq att (car (nentsel "\nPick Att: ")))
       (eq (cdr (assoc 0 (entget att))) "ATTRIB")
       (setq
	 len (vlax-curve-getDistAtParam ent (vlax-curve-getEndParam ent))
       ) ;_ end of setq
       (not
	 (vla-put-textstring
	   (vlax-ename->vla-object att)
	   (strcat (vla-get-textstring (vlax-ename->vla-object att))
		   " - "
		   (rtos len 2 0)
	   ) ;_ end of strcat
	 ) ;_ end of vla-put-textstring
       ) ;_ end of not
       (redraw ent 4)
  ) ;_ end of and
  (princ)
) ;_ end of defun

 

Bác ơi nếu em muốn thay vì gán  chiều dài đoạn polyline thành gán chiều dài của dimension thì em đổi đoạn code (and (setq ss (ssget "_+.:S:E" '((0 . "*LINE")))) thành (and (setq ss (ssget "_+.:S:E" '((0 . "*DIMENSION")))) đúng không ạ.

Em bóc khối lượng thép sàn, nó có sẵn attribute như hình trên nên em phải gán chiều dài đoạn polyline xong rồi gán chiều dài dimension, xong rồi mới dùng attout xuất ra excel, lâu vãi các bác ơ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

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  

×