Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
khangl2001

Em Ko Biết Lệnh Tắt Để Gọi 1 Lisp Lên

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

em có 1 lisp ứng dụng như sau, nó là để đo chiều dài của 1 layer mà em ko biết gọi lệnh tắt ra sao. do em ko biết đọc mã code. Mong anh em giúp đỡ.

và chỉ luôn em cách nhận biết đâu là dòng gọi lệnh tắt trong mã code đó với. ( ví dụ như begin..x.)

(defun c:zone ( / ssl aret pert)
(princ "\nPick any object on the required layer\n")
(setq ssl (ssget))
(if (= ssl nil)(princ "\n*** Nothing was selected! ***\n\n")
(progn
(setq lay (cdr (assoc 8 (entget (ssname ssl 0)))))
(setq ssl (ssget "X" (list (cons 8 lay))))
(princ (strcat "\nLayer " lay " selected"))
(initget "Length Area")
(setq res (getkword "\nWould you like to measure Length/<Area> : "))
(if (= res "Length")(mlen)(meas))
);end progn
);end if
(princ)
);END ZONE
(defun meas ()
(setq len (sslength ssl))
(setq alen (sslength ssl))
(setq aret 0)
(setq count 0)
(setq nop 0)
(setq ope 0)
(while (/= len count)
(setq pnt (ssname ssl count))
(setq ple (cdr (assoc 0 (entget pnt))))
(if (and (/= ple "LWPOLYLINE")(/= ple "POLYLINE"))
(progn
(setq nop (+ 1 nop))
(setq alen (- alen 1))
(princ "\nNon polyline filtered\n")
);END PROGN
(progn
(setq plc (cdr (assoc 70 (entget pnt))))
(if (= plc 0)
(progn
(setq ope (+ 1 ope))
(princ "\nWarning! *** Polyline is not closed\n")
);END PROGN
);END IF
(command "area" "e" pnt)
(setq are (getvar "area"))
(setq aret (+ are aret))
);END PROGN
);END IF
(setq count (+ count 1))
);END WHILE
(if (= nop 0)(princ "\nAll selected objects were polylines")(princ (strcat "\n" (itoa nop) " non polyline objects were filtered")))
(if (= ope 0)(princ "\nAll polylines were closed")(princ (strcat "\n" (itoa ope) " polylines were not closed")))
(princ (strcat "\nTotal area for layer " lay " = " (rtos aret 2 2) " in " (itoa alen) " polylines"))
(princ)
);END MEAS
(defun mlen ()
(setq len (sslength ssl))
(setq alen (sslength ssl))
(setq pert 0)
(setq count 0)
(setq nop 0)
(while (/= len count)
(setq pnt (ssname ssl count))
(setq ple (cdr (assoc 0 (entget pnt))))
(if (and (/= ple "LWPOLYLINE")(/= ple "POLYLINE"))
(progn
(setq nop (+ 1 nop))
(setq alen (- alen 1))
(princ "\nNon polyline filtered\n")
);END PROGN
(progn
(command "area" "e" pnt)
(setq per (getvar "perimeter"))
(setq pert (+ per pert))
);END PROGN
);END IF
(setq count (+ count 1))
);END WHILE
(if (= nop 0)(princ "\nAll selected objects were polylines")(princ (strcat "\n" (itoa nop) " non polyline objects were filtered")))
(princ (strcat "\nTotal length for layer " lay " = " (rtos pert 2 2) " in " (itoa alen) " polylines" ))
(princ)
);END MLEN

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

em có 1 lisp ứng dụng như sau, nó là để đo chiều dài của 1 layer mà em ko biết gọi lệnh tắt ra sao. do em ko biết đọc mã code. Mong anh em giúp đỡ.

và chỉ luôn em cách nhận biết đâu là dòng gọi lệnh tắt trong mã code đó với. ( ví dụ như begin..x.)

(defun c:zone ( / ssl aret pert)
...................

 

 

Tìm trong lisp cú pháp : (defun c:###  

+ ### là lệnh tắt để gọi lisp đó. Ví dụ với lisp trên của bạn, lệnh tắt là "Zone"

  • 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

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  

×