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

[ yêu cầu ] Lisp số học để kiểm tra san nền !

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

Em hay làm san nền, nhiều khi phải làm hoặc kiểm tra lại thủ công.EM đang rất cần 1 lisp làm được việc như sau:

- Lisp sẽ lấy giá trị từ các text sẵn có, và xuất kết quả vào 1 text sẵn có ( số chữ số sau dấu phẩy = 2, luôn có số 0 đằng trước dấu phẩy vì nhiều bản vẽ nó bị mất số 0), khi xuất xong kết quả thì text đó được đổi màu thành màu 6, thuộc layer "TINH"

Khi chạy lisp xảy ra 4 trường hợp như sau ạ :

 

TH1:

Command : SN

chon text: ( 1 text được chọn, giá trị là a, )

Dien tich: ( chọn vào text diện tích, giá trị là s )

Ket qua: ( Chọn text chứa kết quả, kết quả = a*s/3)

 

TH2:

Command : SN

chon text: ( 2 text được chọn, giá trị là a,b )

Dien tich: ( chọn vào text diện tích, giá trị là s )

Ket qua: ( Chọn text chứa kết quả, kết quả =( a + b ) * s/4)

 

TH3:

Command : SN

chon text: ( 3 text được chọn, giá trị là a,b, c )

Dien tich: ( chọn vào text diện tích, giá trị là s )

Ket qua: ( Chọn text chứa kết quả, kết quả =( a + b + c)*s/5)

 

TH4:

Command : SN

chon text: ( 4 text được chọn, giá trị là a,b,c,d )

Dien tich: ( chọn vào text diện tích, giá trị là s )

Ket qua: ( Chọn text chứa kết quả, kết quả =( a + b + c +d)*s/4)

 

Tức là ở đây thì chỉ có 1 lệnh thôi nhưng mà tự động lisp hiểu được các trường hợp xảy ra. Lúc báo Chon text, e chọn 1 text rồi enter thì nó sẽ tình theo trường hợp 1. Rất mong các anh chị trên diễn đàn giúp đỡ . Em xin chân thành 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

Nếu để kiểm tra kết quả,sao bạn không dùng nhiều phần mềm để kiểm tra nhỉ.

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

Có thể bạn ấy muốn kiểm tra một ô bất kỳ chú Tuấn ah, nhưng anh nghĩ cái này chỉ đúng khi người làm tính toán thủ công thôi, còn nếu làm bằng phần mềm thì có thể có trường hợp không đúng nữa.

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

Của bạn đây:

http://www.cadviet.c...inhklsannen.rar

Bạn giải nén rồi upload 2 file sn.dvb+sn.lsp lên nhé, sau đó sử dụng lệnh SN

 

Cảm ơn anh REDSE_TQ, lisp chạy đúng yêu cầu nhưng thừa mất cái đơn vị m3, Thực ra là san nền thì em dùng HS rồi. Nhưng mà có nhiều cái bắt buộc phải làm thủ công nên cần lisp để tính ạ. Phiền anh bỏ giúp em cái đơn vị m3 đằng sau đi với ạ. Vì file .DVB nên em chịu ko chỉnh sửa được. Mong anh thông cảm. Chúc anh một ngày tốt lành !

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
(defun c:sn (/ ss tDt tKq dt len hs)
(defun dxf (code en)(cdr(assoc code (entget en))))
(defun chdxf (code val en) (entmod (subst (cons code val) (assoc code (entget en)) (entget en))))
(if
(and
   	(setq ss (ssget (list (cons 0 "TEXT,MTEXT"))))       
   	(setq tDt (car (entsel "\nText DT :")))
   	(wcmatch (dxf 0 tDt) "TEXT,MTEXT")
   	(setq dt (distof (dxf 1 tDt)))
   	(setq tkQ (car (entsel "\nText kQ :")))
   	(wcmatch (dxf 0 tkQ) "TEXT,MTEXT")
)
(progn
(setq len (sslength ss) hs
   	(cond	((= len 1)3)((= len 2)4)((= len 3)5)((= len 4)4)(T 1))	;gia tri he so
)   
(chdxf 1  (rtos (/ (* (apply '+ (mapcar '(lambda(x)(distof (acet-dxf 1 (entget x))))(acet-ss-to-list ss))) dt) hs) 2 2) tkq)
(chdxf 8 "0" tKq) ;Thay 0 bang Layer khac
)   
))

  • Vote tăng 2

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

(defun c:sn (/ ss tDt tKq dt len hs)
(defun dxf (code en)(cdr(assoc code (entget en))))
(defun chdxf (code val en) (entmod (subst (cons code val) (assoc code (entget en)) (entget en))))
(if
(and
   	(setq ss (ssget (list (cons 0 "TEXT,MTEXT"))))      
   	(setq tDt (car (entsel "\nText DT :")))
   	(wcmatch (dxf 0 tDt) "TEXT,MTEXT")
   	(setq dt (distof (dxf 1 tDt)))
   	(setq tkQ (car (entsel "\nText kQ :")))
   	(wcmatch (dxf 0 tkQ) "TEXT,MTEXT")
)
(progn
(setq len (sslength ss) hs
   	(cond	((= len 1)3)((= len 2)4)((= len 3)5)((= len 4)4)(T 1))	;gia tri he so
)  
(chdxf 1  (rtos (/ (* (apply '+ (mapcar '(lambda(x)(distof (acet-dxf 1 (entget x))))(acet-ss-to-list ss))) dt) hs) 2 2) tkq)
(chdxf 8 "0" tKq) ;Thay 0 bang Layer khac
)  
))

 

Chuẩn không cần chỉnh. Cảm ơn bác KETXU nhé.hii. Lisp của bác thay cả 4 cái lisp em viết !

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

Nếu trong trường hợp có từ 5 điễm trở lên thì bạn làm sao ???? Mình sử dụng gặp trở ngại việc này rối đó.

Mong được các anh giúp đở.

Và mong được viết lisp bổ sung : Trong trường họp chỉ tính cao độ bình quân thôi, phải chỉnh Lisp như thế nào ? và hàm nào chọn điểm đặt kết quả và làm cho thay đổi màu ? và nên cho chuyển sang một lớp khác luôn ?

Bạn đặt câu hỏi cho người viết nhưng chưa tự hỏi mình những câu hỏi đó, cũng không đọc đề bài chủ topic đưa ra luôn.

Hàng sản xuất riêng cho ông A thì ông A dùng, cớ chi ông B hỏi "sao chưa vừa ý tôi ?"

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  

×