Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
4 replies to this topic

#1 namntq_wru70

namntq_wru70

    Chưa sử dụng CAD

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

Đã gửi 13 March 2015 - 03:06 PM

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.c...055_suathep.lsp

File cad: http://www.cadviet.c...055_bangtkt.dwg

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


  • 0

#2 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 14 March 2015 - 04:01 PM

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.c...055_suathep.lsp

File cad: http://www.cadviet.c...055_bangtkt.dwg

File tl (giải nén file rar): http://www.cadviet.c.../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.c.../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
 

  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#3 namntq_wru70

namntq_wru70

    Chưa sử dụng CAD

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

Đã gửi 14 March 2015 - 05:16 PM

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!!!


  • 0

#4 buithengan1

buithengan1

    biết vẽ line

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

Đã gửi 02 September 2015 - 10:30 PM

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


  • 0

#5 Tr.CongSon

Tr.CongSon

    biết lệnh array

  • Members
  • PipPipPip
  • 183 Bài viết
Điểm đánh giá: 40 (tàm tạm)

Đã gửi 03 September 2015 - 11:15 AM

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 !


  • 1