Chuyển đến nội dung
Diễn đàn CADViet
namntq_wru70

[Nhờ sửa lisp]Thống kê cốt thép

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

Mình có 1 lisp thống kê cốt thép, lisp sử dụng để chỉnh sữa block thuộc tính trong file cad đính kèm.

Lisp sửa thép:

;----------------------------------------
; TT - Sua thep trong Bang thong ke thep
; Su dung file : tl.dcl
;----------------------------------------

(defun GetTLDV(Phi)
(cond ((= Phi 6) 0.222)
((= Phi 8) 0.395)
((= Phi 10) 0.617)
((= Phi 12) 0.888)
((= Phi 14) 1.21)
((= Phi 16) 1.58)
((= Phi 18) 2.0)
((= Phi 20) 2.47)
((= Phi 22) 2.98)
((= Phi 24) 3.551)
((= Phi 25) 3.85)
((= Phi 26) 4.17)
((= Phi 28) 4.83)
((= Phi 30) 5.55)
((= Phi 32) 6.31)
((= Phi 34) 7.13)
((= Phi 36) 7.99)
((= Phi 40) 9.89)
)
)

;------------------------------------------------------------------------
; ATTUPD - Update the attribute values of a selected block in steel table
;------------------------------------------------------------------------
(defun AttUpd(ENTITY_NAME / ENTITY_LIST ENTITY_TYPE CONTINUE VALUE TAG TLDV
Dai TongSL TongDai)

(setq ENTITY_LIST (entget ENTITY_NAME))
(setq ENTITY_TYPE (cdr (assoc 0 ENTITY_LIST)))

(setq CONTINUE "YES")

(if (equal ENTITY_TYPE "INSERT")
(while (and
(setq ENTITY_NAME (entnext ENTITY_NAME))
(equal CONTINUE "YES")
)
(setq ENTITY_LIST (entget ENTITY_NAME))
(setq ENTITY_TYPE (cdr (assoc 0 ENTITY_LIST)))

(cond ((equal ENTITY_TYPE "ATTRIB")
(setq VALUE (cdr (assoc 1 ENTITY_LIST)))
(setq TAG (cdr (assoc 2 ENTITY_LIST)))
(cond ((equal TAG "D_K") (setq TLDV (GetTLDV (atof VALUE))))
((equal TAG "D_T") (setq Dai (atof VALUE)))
((equal TAG "T_S") (setq TongSL (atof VALUE)))
((equal TAG "T_D")
(setq TongDai (/ (* Dai TongSL) 1000))
(setq ENTITY_LIST (subst (cons 1 (rtos TongDai 2 2)) (assoc 1 ENTITY_LIST) ENTITY_LIST))
(entmod ENTITY_LIST)
(entupd ENTITY_NAME)
)
((equal TAG "T_L")
(setq TongLuong (* TLDV TongDai))
(setq ENTITY_LIST (subst (cons 1 (rtos TongLuong 2 2)) (assoc 1 ENTITY_LIST) ENTITY_LIST))
(entmod ENTITY_LIST)
(entupd ENTITY_NAME)
)
)
)
((equal ENTITY_TYPE "SEQEND")
(setq CONTINUE "NO")
)
)
)
)
)

(defun c:STH(/ Pick TextEntity Point Entity First_Entity Entity_Type
EList CText)
(defun _DCL ()
(setq _CText (get_tile "text_kt"))
(done_dialog)
); End of _DCL

(setq oldblp (getvar "BLIPMODE")
oldech (getvar "CMDECHO")
)
(setvar "BLIPMODE" 0)
(setvar "CMDECHO" 0)

(while (setq Pick (nentsel "\nChon Text trong Bang ke thep : "))
(setq TextEntity (car Pick)) ;Get the entity name
(setq Point (car (cdr Pick))) ;Get the selected point
(setq Entity (ssget Point)) ;Get the entity at selected point
(setq First_Entity (ssname Entity 0)) ;Get the first entity

(setq ELIST (entget TextEntity)) ;Get the database information
(setq ENTITY_TYPE (cdr (assoc 0 ELIST)))

(if (equal ENTITY_TYPE "ATTRIB")
(setq CText (cdr (assoc 1 EList)))
(setq CText "")
); End of if

(if (/= CText "")
(progn
(setq dcl_id (load_dialog "tl.DCL"))
(if (not (new_dialog "sua_text" dcl_id)) (exit))
(setq accept nil)
(set_tile "text_kt" CText)
(action_tile "accept" "(_DCL)")
(start_dialog)
(setq ELIST (subst (cons 1 _CText) (assoc 1 ELIST) ELIST))
(entmod ELIST)
(if (equal ENTITY_TYPE "ATTRIB")
(progn
(entupd TextEntity)
(AttUpd First_Entity)
)
)
(unload_dialog dcl_id)
)
)
); End of while

(setvar "BLIPMODE" oldblp)
(setvar "CMDECHO" oldech)

(redraw)
(prompt "\nProgram complete.")
(princ)

) ;End of C:STH

 

2015-03-13_110831.png

 

 

 

Mình muốn thêm công thức như sau: Tổng chiều dài các đoạn thép thành phần = chiều dài.

Ví dụ như ảnh trên thì: 50+350+14400+350+50=15200 (2 ô màu vàng)

Tức là khi mình chỉnh sữa các số 50, 350, 14400, 350, 50 thì số 15200 cũng nhảy theo.

Hy vọng được mọi người giúp đỡ. Cám ơn!!!

 

File lisp: http://www.cadviet.com/upfiles/4/96055_suathep.lsp

File cad: http://www.cadviet.com/upfiles/4/96055_bangtkt.dwg

File tl (giải nén file rar): http://www.cadviet.com/upfiles/4/96055_tl_1.rar

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

Mình có 1 lisp thống kê cốt thép, lisp sử dụng để chỉnh sữa block thuộc tính trong file cad đính kèm.

Lisp sửa thép:

 

Mình muốn thêm công thức như sau: Tổng chiều dài các đoạn thép thành phần = chiều dài.

Ví dụ như ảnh trên thì: 50+350+14400+350+50=15200 (2 ô màu vàng)

Tức là khi mình chỉnh sữa các số 50, 350, 14400, 350, 50 thì số 15200 cũng nhảy theo.

Hy vọng được mọi người giúp đỡ. Cám ơn!!!

 

File lisp: http://www.cadviet.com/upfiles/4/96055_suathep.lsp

File cad: http://www.cadviet.com/upfiles/4/96055_bangtkt.dwg

File tl (giải nén file rar): http://www.cadviet.com/upfiles/4/96055_tl_1.rar

Hề hề hề,

Không biết có phải ý chủ thớt là như vầy không???

Chủ thớt hãy download lisp đã sửa dưới đây và test thử coi sao nhé.

 

http://www.cadviet.com/upfiles/4/5194_sth_1.lsp

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/topic/120498-nho-sua-lisp-thong-ke-cot-thep/
;----------------------------------------
 
; TT - Sua thep trong Bang thong ke thep
 
; Su dung file : tl.dcl
 
;----------------------------------------
 
 
(defun GetTLDV(Phi)
 
(cond ((= Phi 6) 0.222)
 
((= Phi 8) 0.395)
 
((= Phi 10) 0.617)
 
((= Phi 12) 0.888)
 
((= Phi 14) 1.21)
 
((= Phi 16) 1.58)
 
((= Phi 18) 2.0)
 
((= Phi 20) 2.47)
 
((= Phi 22) 2.98)
 
((= Phi 24) 3.551)
 
((= Phi 25) 3.85)
 
((= Phi 26) 4.17)
 
((= Phi 28) 4.83)
 
((= Phi 30) 5.55)
 
((= Phi 32) 6.31)
 
((= Phi 34) 7.13)
 
((= Phi 36) 7.99)
 
((= Phi 40) 9.89)
 
)
 
)
 
 
;------------------------------------------------------------------------
 
; ATTUPD - Update the attribute values of a selected block in steel table
 
;------------------------------------------------------------------------
 
(defun AttUpd (ENTITY_NAME / ENTITY_LIST ENTITY_TYPE CONTINUE VALUE TAG TLDV Dai TongSL TongDai)
 
 
(setq ENTITY_LIST (entget ENTITY_NAME))
 
(setq ENTITY_TYPE (cdr (assoc 0 ENTITY_LIST)))
 
 
(setq CONTINUE "YES")
 
 
(if (equal ENTITY_TYPE "INSERT")
 
    (progn
 
     (setq Dai 0)
 
    (while (and (setq ENTITY_NAME (entnext ENTITY_NAME)) (equal CONTINUE "YES"))
 
               (setq ENTITY_LIST (entget ENTITY_NAME))
 
               (setq ENTITY_TYPE (cdr (assoc 0 ENTITY_LIST)))
 
 
              (cond 
 
                       ((equal ENTITY_TYPE "ATTRIB")
 
                              (setq VALUE (cdr (assoc 1 ENTITY_LIST)))
 
                              (setq TAG (cdr (assoc 2 ENTITY_LIST)))
 
                             (cond 
                                     
                                     ((or (equal TAG "O_SO0")
                                            (equal TAG "O_SO1")
                                            (equal TAG "O_SO2")
                                            (equal TAG "O_SO3")
                                            (equal TAG "O_SO4")
                                            (equal TAG "O_SO5")
                                            (equal TAG "O_SO6")
                                            (equal TAG "O_SO7")
                                            (equal TAG "O_SO8")
                                            (equal TAG "O_SO9")
                                            (equal TAG "O_SO10")
                                            (equal TAG "O_SO11")
                                            (equal TAG "O_SO12")
                                            (equal TAG "O_SO13")    )
                                                                                          (setq  Dai (+ Dai (atof VALUE)))            )
 
                                     ((equal TAG "D_K") (setq TLDV (GetTLDV (atof VALUE))))
 
                                     ((equal TAG "D_T") (setq ENTITY_LIST (subst (cons 1 (rtos Dai 2 0)) (assoc 1 ENTITY_LIST) ENTITY_LIST))
 
                                                                        (entmod ENTITY_LIST)
 
                                                                       (entupd ENTITY_NAME)             )
 
                                     ((equal TAG "T_S") (setq TongSL (atof VALUE)))
 
                                     ((equal TAG "T_D") (setq TongDai (/ (* Dai TongSL) 1000))
 
                                                                       (setq ENTITY_LIST (subst (cons 1 (rtos TongDai 2 2)) (assoc 1 ENTITY_LIST) ENTITY_LIST))
 
                                                                       (entmod ENTITY_LIST)
 
                                                                       (entupd ENTITY_NAME)
 
                                     )
 
                                     ((equal TAG "T_L") (setq TongLuong (* TLDV TongDai))
 
                                                                       (setq ENTITY_LIST (subst (cons 1 (rtos TongLuong 2 2)) (assoc 1 ENTITY_LIST) ENTITY_LIST))
 
                                                                       (entmod ENTITY_LIST)
 
                                                                       (entupd ENTITY_NAME)
 
                                     )
 
                            )
 
                     )
 
                    ((equal ENTITY_TYPE "SEQEND") (setq CONTINUE "NO")  )
 
           )
 
      )
 
)
 
)
 
)
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:STH(/ Pick TextEntity Point Entity First_Entity Entity_Type
 
EList CText)
 
(defun _DCL ()
 
(setq _CText (get_tile "text_kt"))
 
(done_dialog)
 
); End of _DCL
 
 
(setq oldblp (getvar "BLIPMODE")
 
oldech (getvar "CMDECHO")
 
)
 
(setvar "BLIPMODE" 0)
 
(setvar "CMDECHO" 0)
 
 
(while (setq Pick (nentsel "\nChon Text trong Bang ke thep : "))
 
(setq TextEntity (car Pick)) ;Get the entity name
 
(setq Point (car (cdr Pick))) ;Get the selected point
 
(setq Entity (ssget Point)) ;Get the entity at selected point
 
(setq First_Entity (ssname Entity 0)) ;Get the first entity
 
 
(setq ELIST (entget TextEntity)) ;Get the database information
 
(setq ENTITY_TYPE (cdr (assoc 0 ELIST)))
 
 
(if (equal ENTITY_TYPE "ATTRIB")
 
(setq CText (cdr (assoc 1 EList)))
 
(setq CText "")
 
); End of if
 
 
(if (/= CText "")
 
(progn
 
(setq dcl_id (load_dialog "tl.DCL"))
 
(if (not (new_dialog "sua_text" dcl_id)) (exit))
 
(setq accept nil)
 
(set_tile "text_kt" CText)
 
(action_tile "accept" "(_DCL)")
 
(start_dialog)
 
(setq ELIST (subst (cons 1 _CText) (assoc 1 ELIST) ELIST))
 
(entmod ELIST)
 
(if (equal ENTITY_TYPE "ATTRIB")
 
(progn
 
(entupd TextEntity)
 
(AttUpd First_Entity)
 
)
 
)
 
(unload_dialog dcl_id)
 
)
 
)
 
); End of while
 
 
(setvar "BLIPMODE" oldblp)
 
(setvar "CMDECHO" oldech)
 
 
(redraw)
 
(prompt "\nProgram complete.")
 
(princ)
 
 
) ;End of C:STH
 

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

Trời ơi đúng rồi!!!

Cám ơn Mod nhiều nhiều luôn nha. Cuối cùng thì cũng làm được rồi.

Nếu có dịp vào Phan Thiết pm em, em sẽ hậu tạ   :D  :D  :D

Một lần nữa xin cám ơn và chúc sức khỏe!!!

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

bạn chỉ giúp mình cách sử dụng với. cảm ơn bạn

 

Trước tiên,bạn phải có bảng thống kê cốt thép + file .DCLnhư chủ thớt,

Vào diễn đàn search cách load file .DCL

Rồi apload file Lisp --> rồi gõ lệnh STH  dùng như lệnh Cad thôi ^^

Chúc bạn thành công !

  • 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


×