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.
duy782006

Lisp Thống Kế Thép Bằng Block.

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

Tr.CongSon    41

 

Hay quá a Duy ơi ^^ 

 

Em thấy các giá trị nhập vào bảng thống kê thì nên khống chế giá trị nhập  phải là number và các đường kính thép phải nằm trong tiêu chuẩn (vd 6,8,10..chấp nhận còn 7,9,11,13 thì không được )Như vậy thì tốt hơn a ạ.

 

 

Thanks 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
duy782006    1.372

Thực chất lisp này up lên  là  để bạn tham khảo vì thấy bạn cũng đang viết. Mình chỉ viết thế thôi. Không muốn chĩnh sửa gì nửa lười lắm.

  • 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
Tr.CongSon    41

Em cảm ơn a,lâu ni em cũng đang nghiên cứu cái thống kê này ^^

Giờ Có đoạn Lisp này của a thì còn gì bằng ^^ Hi vọng mót được ít  ^^

Chúc anh mạnh giỏi và thành công trong cuộc sống !

Thâ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
pphung183    425

Thấy Bạn duy782006 tặng diễn đàn 1 lisp hết sức công phu, mình cũng viết 1 lisp hỗ trợ sửa Bảng thống kê từ Lisp duy782006 :)

tặng các bạn yêu thích Lisp :) :

(defun c:TKTE (/ cmd GetTLDV GetDai GetTag PutTag ent at obj tn Dai km n k)
(setq cmd (getvar "cmdecho")) (setvar "cmdecho" 0)
(defun GetTLDV(D)
(cond ((= D 6) 0.222) ((= D 8) 0.395) ((= D 10) 0.617) ((= D 12) 0.888) ((= D 14) 1.209)
((= D 16) 1.579) ((= D 18) 1.998) ((= D 20) 2.467) ((= D 22) 2.985) ((= D 24) 3.552)
((= D 25) 3.854) ((= D 26) 4.169) ((= D 28) 4.835) ((= D 30) 5.55) ((= D 32) 6.315)
((= D 34) 7.129) ((= D 36) 7.992) ((= D 40) 9.867) )) ;;;;;
(defun GetDai (obj / Tag Val l lst)
(foreach att (vlax-invoke obj 'GetAttributes) 
(setq Tag (vla-get-TagString att)) (setq Val (vla-get-TextString att))
(if (or (eq Tag "KT1") (eq Tag "KT2") (eq Tag "KT3") (eq Tag "KTA1")
(eq Tag "KTA2") (eq Tag "KTB1") (eq Tag "KTB2") (eq Tag "KTC1") 
(eq Tag "KTC2") ) (setq l (atof Val) lst (cons l lst)) )) lst) ;;;;;
(defun GetTag (obj tag)
(vl-some '(lambda (att) (if (= tag (vla-get-tagstring att)) (vla-get-textstring att)))
(vlax-invoke obj 'getattributes)) ) ;;;;;
(defun PutTag (obj tag tn)
(vl-some '(lambda (att) (if (= tag (vla-get-tagstring att)) (vla-put-textstring att tn)))
(vlax-invoke obj 'getattributes)) ) ;;;;;
(setq cmd (getvar "cmdecho")) (setvar "cmdecho" 0) 
(while (and (/= (setq ent (entsel "\nSelect Block Attribute for edit: ")) nil) 
(setq at (car (nentselp (cadr ent))) obj (vlax-ename->vla-object (car ent))) )
(setq tn (lisped (vla-get-TextString (setq at (vlax-ename->vla-object at)))))
(vla-put-TextString at tn) (setq Dai (apply '+ (GetDai obj)))
(PutTag obj "CD" (rtos Dai 2 0))
(setq km (GetTLDV (atoi (GetTag obj "PI")))) (setq n (atof (GetTag obj "SL")))
(setq k (atof (GetTag obj "SCK"))) (setq tn1 (/ (* Dai n k) 1000))
(setq tn2 (* tn1 km)) (PutTag obj "TCDCK" (rtos tn1 2 2)) 
(PutTag obj "TLCK" (rtos tn2 2 2)) (vla-Update obj) ) 
(setvar "cmdecho" cmd) (princ))

  • 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
pphung183    425

Trong lisp của duy đã có sửa thống kê rồi mà nhỉ?

Vâng, mình biết là (c:edt) :) . Nhưng thực tế là có rất nhiều kiểu thống kê từ BlockAtt... muôn hình muôn vê... Nếu muốn sửa mà lấy code của Bạn thì chắc là nổ tung đầu để tìm :D . Từ code lisp của mình thì các bạn biết Lisp chỉ cần thay các Tag theo Bản thống kê hiện có là Ok. Ở đây mình lấy Tag  BlockAtt của Bạn làm điển hì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
duy782006    1.372

Không hiều ý bạn lắm.

-Nguyên tắc đặt tên tag của mình là cứ tag bắt đầu bằng KT thì là kích thước. và có hàn com chịu trách nhiệm lọc hết các tag có 2 ký tự bắt đầu là KT và cộng lại là ra giá trị chiều dài thanh.

-Sở dĩ có KT, KTA, KTB, KTC vì là nếu là 3 ký tự đầu là có hàm lọc 3 ký tự đầu dùng để hỏi nhập giá trị 1 lần và gán cho nhiều vị trí nếu tag có ký tự ban đầu theo quy định.

 -Ko có gì phài nổ tung cả chẳng qua mình gom rất nhiều hàm con phục vụ cà hộp thoại, và vân vân nên nó thế. 

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
pphung183    425

Không hiều ý bạn lắm.

-Nguyên tắc đặt tên tag của mình là cứ tag bắt đầu bằng KT thì là kích thước. và có hàn com chịu trách nhiệm lọc hết các tag có 2 ký tự bắt đầu là KT và cộng lại là ra giá trị chiều dài thanh.

-Sở dĩ có KT, KTA, KTB, KTC vì là nếu là 3 ký tự đầu là có hàm lọc 3 ký tự đầu dùng để hỏi nhập giá trị 1 lần và gán cho nhiều vị trí nếu tag có ký tự ban đầu theo quy định.

 -Ko có gì phài nổ tung cả chẳng qua mình gom rất nhiều hàm con phục vụ cà hộp thoại, và vân vân nên nó thế. 

Bạn xem Link này sẽ hiểu ý mình :)

http://www.cadviet.com/forum/topic/120498-nho-sua-lisp-thong-ke-cot-thep/

Đây là bản vẽ Bảng TK cũng dùng BlockAtt có nhiều Tag và còn nhiều loại 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

Bạn Duy viết lisp này rất hay nhưng cho mình hỏi có cách nào để chọn font chữ và layer cho bảng thống kê theo bản vẽ của mình (font khác font của bạ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

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


×