Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
2 replies to this topic

#1 hoavusua

hoavusua

    Chưa sử dụng CAD

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

Đã gửi 28 July 2014 - 12:36 PM

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)

)

 


  • 0

#2 nguyentuyen6

nguyentuyen6

    biết lệnh chamfer

  • Advance Member
  • PipPipPipPip
  • 213 Bài viết
Điểm đánh giá: 124 (tàm tạm)

Đã gửi 28 July 2014 - 01:09 PM

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



  • 2

Lisp In bản vẽ hàng loạt:
http://www.cadviet.c...ndpost&p=139860


#3 hoavusua

hoavusua

    Chưa sử dụng CAD

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

Đã gửi 28 July 2014 - 01:18 PM

Thanks bạn đúng ý mình


  • 0