Đến nội dung


Hình ảnh

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


  • Please log in to reply
3 replies to this topic

#1 PrettyBoy_231988

PrettyBoy_231988

    biết zoom

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

Đã gửi 01 August 2013 - 04:30 PM

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 !


  • 0

#2 dvlam

dvlam

    Chưa sử dụng CAD

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

Đã gửi 01 August 2013 - 05:42 PM

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ẻ!
  • 1

#3 lebaonam

lebaonam

    Chưa sử dụng CAD

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

Đã gửi 02 August 2013 - 07:32 AM

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


  • 0

#4 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 02 August 2013 - 08:41 AM

Dùng cái này xem!

http://www.cadviet.c...topic=763&st=20


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.