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  
cuong_lvxd

Hoi ve Lisp tinh dien tich

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

cuong_lvxd    0

Em co cai LISP tính diện tích như sau(LOAD trên diễn đàn của bác Hoành) muốn hỏi về đơn vị của nó:em tính diện tích và trong bản vẽ của em để đơn vị là (mm).Khi dùng LISP này tính diện tích ra diện tích có phải là diện tích theo đơn vị mà mình đã định trong CAD(mm) không? hoặc nếu có thể tùy chọn theo mình mong muốn thì mình sẽ sửa ở đoạn nào trong code này.Thanh kiu các bác....

.................................................................

 

;; free lisp from cadviet.com

(defun c:r()

  (setvar "cmdecho" 0)

  (setq lacol (getvar "CEColor"))

  (setq ladin (getvar "dimzin"))

  (setq laos (getvar "osmode"))  

  (if (not tl) (setq tl 1))

  (if (not h) (setq h 1))

  (setq tl1 (getreal (strcat "\nty le ban ve < 1/" (rtos tl 2 0) " >: 1/"))

    caot1 (getreal (strcat "\nCao text < " (rtos h 2 0) " >: ")))

  (if tl1 (setq tl tl1))

  (if caot1 (setq h caot1))

 

  (setq     k 0

    tdt 0)

  (setq ss (ssadd))

 

(setvar "dimzin" 0)

(setvar "OSMODE" 0)

(setq PT (getpoint "\nChon diem xuat bang thong ke dien tich (mep trai):"))

(setq     P1 (list (+ (car PT)(* 6 h)) (cadr PT))

    P2 (list (+ (car PT)(* 22 h)) (cadr PT))

    P3 (list (car PT) (- (cadr PT)(* 3 h)))

    P4 (list (car P1) (cadr P3))

    P5 (list (car P2) (cadr P3))

    P6 (list (+ (car PT)(* 11 h)) (+ (cadr PT)(* 2 h)))

    P7 (list (+ (car PT)(* 3 h)) (- (cadr PT)(* 1.5 h)))

    P8 (list (+ (car PT)(* 14 h)) (- (cadr PT)(* 1.5 h)))

);setq

(command     "pline" PT P2 P5 P3 "C"

        "pline" P1 P4 ""

        "text" "m" P6 (* 1.2 h) 0 "B?ng th?ng kê di?n tích"

        "text" "m" P7 h 0 "STT"

        "text" "m" P8 h 0 "Di?n tích (mm2)"

);command

 

(setq pt1 (getpoint "\n Chon mien tinh dien tich : "))

  (while (/= pt1 nil)

    (setq k (+ 1 k))

    (command "TEXT" "m" pt1 (* 3 h) 0 (rtos k 2 0))

    (setq     PT (list (car P3) (cadr P3))

    P1 (list (+ (car PT)(* 6 h)) (cadr PT))

    P2 (list (+ (car PT)(* 22 h)) (cadr PT))

    P3 (list (car PT) (- (cadr PT)(* 3 h)))

    P4 (list (car P1) (cadr P3))

    P5 (list (car P2) (cadr P3))

    P7 (list (+ (car PT)(* 3 h)) (- (cadr PT)(* 1.5 h)))

    P8 (list (+ (car PT)(* 14 h)) (- (cadr PT)(* 1.5 h)))

    P9 (list (car PT) (- (cadr P3)(* 3 h)))

    P10 (list (car P1) (cadr P9))

    P11 (list (car P2) (cadr P9))

    P12 (list (car P7) (- (cadr P3)(* 1.5 h)))

    P13 (list (car P8) (cadr P12))

    );setq

    (command "CECOLOR" 4 "-boundary" pt1 "" )

    (setvar "CECOLOR" lacol)

    (setq et (entlast))

    (ssadd et ss)

    (command "area" "e" "last")                

    (setq et (entlast))

    (ssadd et ss)

    (setq dtcon (* (getvar "AREA") tl tl))

    (setq tdt (+ dtcon tdt))

 

 (command "erase" ss "")

 

    (command "pline" PT P2 P5 P3 "C"

        "pline" P1 P4 ""

        "text" "m" P7 h 0 (rtos k 2 0)

        "text" "m" P8 h 0 (rtos dtcon 2 2))

 

    (setq pt1 (getpoint "\n chon mien tinh dien tich tiep theo hoac enter de ket thuc lenh..."))

);while

(setq ss nil)

(setvar "DIMZIN" ladin)

(command     "pline" P3 P9 P11 P5 "C"

        "pline" P10 P4 ""

        "text" "m" P12 h 0 "Tæng"

        "text" "m" P13 h 0 (rtos tdt 2 2)

);command

(setvar "OSMODE" laos)

(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
phamthanhbinh    3.123
Em co cai LISP tính diện tích như sau(LOAD trên diễn đàn của bác Hoành) muốn hỏi về đơn vị của nó:em tính diện tích và trong bản vẽ của em để đơn vị là (mm).Khi dùng LISP này tính diện tích ra diện tích có phải là diện tích theo đơn vị mà mình đã định trong CAD(mm) không? hoặc nếu có thể tùy chọn theo mình mong muốn thì mình sẽ sửa ở đoạn nào trong code này.Thanh kiu các bác....

.................................................................

Chào bạn cuong_lvxd,

Lisp bạn post sẽ trả về diện tích với đơn vị tính là mm2 nếu bạn đang chọn hệ đơn vị đo là mm.

Muốn thay đổi thành cm2, dm2, m2, km2..... bạn phải chía kết quả cho 10^2, 10^4, 10^6, 10^12.....

Bạn có thể bổ sung vào lisp hay tự chia thì tùy bạn. Nếu bổ sung vào lisp bạn bổ sung ở dòng (setq tdt ......).

Chúc bạn vui.

  • 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  

×