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

Nhờ sửa giúp lisp tính tổng chiều dài

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

Dưới đầy lài lisp tính tổng chiều dài của mình. giờ mình muốn có thêm đoạn pick chọn layer để tính tổng sau đó mới quét khu vực có layer đó để tính tổng (nó sẽ loại những đối tượng không thuộc layer đó để chỉ tính tổng các đối tượng đã thuộc layer đã chọn). cảm ơn mọi người quan tâm.

(defun C:to (/ tot_len ss e_name e_record e_type)
(setvar "cmdecho" 0)
(prompt "\nBan hay chon cac doi tuong: line,arc,circle,polyline,ellipse,spline,... ")
(prompt "\nDe tinh tong chieu dai cho tat ca cac doi tuong do!")   
(setq tot_len 0.0)
(setq ss (ssget))
(if (null ss)
(exit)
)
(while (> (sslength ss) 0)
(setq e_name (ssname ss 0))
(setq e_record (entget e_name))
(setq e_type (cdr (assoc '0 e_record)))
(cond ((wcmatch e_type "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")
(command "lengthen" e_name "")
(setq tot_len (+ tot_len (getvar "PERIMETER")))
(ssdel e_name ss)
)
((wcmatch e_type "MLINE") (add_mline))	; Link sang Ham add_mline ***********************
(e_type (ssdel e_name ss))
)
)
(prompt (strcat "\nTong chieu dai cua cac doi tuong la: " (rtos tot_len 2 4)))
(princ)
(setq en (car (entsel "\nThay cho so : ")))
(print tot_len)
  (setq elst (entget en))
  (setq elst (subst (cons 1 (rtos tot_len 2 3)) (assoc 1 elst) elst))
  (setq elst (append elst '((62 . 2))))
  (entmod elst)
(setvar "cmdecho" 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

Đây bạn

 

(defun C:to (/ tot_len ss e_name e_record e_type tenlayer)
(setvar "cmdecho" 0)
(prompt "\nBan hay chon cac doi tuong: line,arc,circle,polyline,ellipse,spline,... ")
(prompt "\nDe tinh tong chieu dai cho tat ca cac doi tuong do!")   
(setq tot_len 0.0)

(setq  tenlayer (cdr (assoc 8 (entget (car (entsel "\nChon mau layer:"))))))
(prompt "\nChon doi tuong tinh chieu dai:") 
(setq ss (ssget (list (cons 8 tenlayer))))
(if (null ss)
(exit)
)
(while (> (sslength ss) 0)
(setq e_name (ssname ss 0))
(setq e_record (entget e_name))
(setq e_type (cdr (assoc '0 e_record)))
(cond ((wcmatch e_type "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")
(command "lengthen" e_name "")
(setq tot_len (+ tot_len (getvar "PERIMETER")))
(ssdel e_name ss)
)
((wcmatch e_type "MLINE") (add_mline))	; Link sang Ham add_mline ***********************
(e_type (ssdel e_name ss))
)
)
(prompt (strcat "\nTong chieu dai cua cac doi tuong la: " (rtos tot_len 2 4)))
(princ)
(setq en (car (entsel "\nThay cho so : ")))
(print tot_len)
  (setq elst (entget en))
  (setq elst (subst (cons 1 (rtos tot_len 2 3)) (assoc 1 elst) elst))
  (setq elst (append elst '((62 . 2))))
  (entmod elst)
(setvar "cmdecho" 1)
)


  • Vote tăng 2

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  

×