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

Nhờ viết lisp tính toán chiều dài theo layer

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

Xin Chào mọi người !

Mình đang làm bóc tách bản vẽ điện, trên bản vẽ có nhiều loại dây , mỗi loại dây mình phải tính chiều dài từng loại. Làm theo cách thủ công là chọn từng loại dây thì lâu quá.  Mình xem trên diễn đàn có rất nhiều lisp viết về tính toán chiều dài (line, arc..) mình tìm ko thấy có cái lisp nào tính toán chiều dài theo layer cả, mình xin nhờ a e viết hộ  lisp này với yêu cầu như sau : 

 - Block và đoạn thẳng cùng layer thì sẽ không tính chiều dài của block đó 

 - hiện thị chiều dài lên các đoạn thẳng, arc mà mình chọn, nếu ko thích thì có thể tắt hiện thị chiều dài đó đi.

 - Hiện thị ra tổng chiều dài của layer đó.

 Mình xin cảm ơ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

1. Nếu chỉ riêng LINE, PLINE bạn có thể tắt những Layer không liên quan đi và áp dụng lisp sau của Lee Mac:

(defun c:DAI ( / ss )
  (vl-load-com)
  (if (setq ss (ssget '((0 . "LINE,*POLYLINE"))))
    (
      (lambda ( i total / e )
        (while (setq e (ssname ss (setq i (1+ i))))
          (setq total (+ total (vla-get-length (vlax-ename->vla-object e))))
        )
 
        (princ (strcat "\n<< Length: " (rtos total) " >>"))
      )
      -1 0
    )
  )
 
  (princ))
2. Nếu bạn muốn lọc layer thì thêm vào, phần lọc nữa, tùy bạn lọc theo tên layer, hoặc theo đối tượng chọn mẫu... Trong toàn bản vẽ hay khu vực cửa sổ chọn... Sau đó bạn search trên diễn đàn để bổ xung thêm tính toán cho các loại đối tượng khác: ARC; SPLINE; ELIPS...

 

Chúc vui vẻ!

  • 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. Nếu chỉ riêng LINE, PLINE bạn có thể tắt những Layer không liên quan đi và áp dụng lisp sau của Lee Mac:

(defun c:DAI ( / ss )
  (vl-load-com)
  (if (setq ss (ssget '((0 . "LINE,*POLYLINE"))))
    (
      (lambda ( i total / e )
        (while (setq e (ssname ss (setq i (1+ i))))
          (setq total (+ total (vla-get-length (vlax-ename->vla-object e))))
        )
 
        (princ (strcat "\n<< Length: " (rtos total) " >>"))
      )
      -1 0
    )
  )
 
  (princ))
2. Nếu bạn muốn lọc layer thì thêm vào, phần lọc nữa, tùy bạn lọc theo tên layer, hoặc theo đối tượng chọn mẫu... Trong toàn bản vẽ hay khu vực cửa sổ chọn... Sau đó bạn search trên diễn đàn để bổ xung thêm tính toán cho các loại đối tượng khác: ARC; SPLINE; ELIPS...

 

Chúc vui vẻ!

ok thank ! để tớ tim thêm trên dd

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  

×