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  
phamhung12

Lisp móng

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

phamhung12    1

Mình tìm được lisp vẽ mặt cắt móng. Cách dùng :

  1/ Bề rộng móng
  2/ Bề rộng cổ móng
  3/ Chiều cao bên móng
  4/ Chiều cao phần nghiêng
  5/ Chiều cao cổ móng
  6/ Bề dày lớp bảo vệ
  7/ Đường kính thép
  8/ Số lượng thép đáy móng
  9/ Lớp Bê tông lót

 10/ S.lượng thép ngang dầm móng

 11/ S.lượng thép dọc dầm móng --> Vẽ

Nhờ bác Tot77 hoặc các bác nào giỏi Lisp phát triển thêm phần Hatch kiểu "AR-CONC" cho hình chữ nhật của lớp Bê tông lót

đồng thời làm cái hộp thoại nhập số liệu chứ nhập kiểu này hơi bị rối :( . Thanks!

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
phamhung12    1

;;Ham ve mc cac thanh thep
(defun mcthep (pd pc d n)
(setq old (getvar "osmode"))
(setvar "osmode" 0)
(setq kc (/ (- (distance pd pc) d) (- n 1)))
(command ".line" pd pc "")

(setq a (angle pd pc)
pd (list (+ (car pd) (/ d 2)) (+ (cadr pd) (/ d 2)))
)

(repeat n
(command ".donut" 0 d pd c^)
(setq pd(polar pd a kc))
)
;;(command ".donut" 0 d (polar pc (+ a (* pi 0.75)) d) c^)
(setvar "osmode" old)
)
;;Ham ve thep dai va thep chiu luc cua dam mong
(defun vdai (p1 a b n1 n2 d)
(setq old (getvar "osmode"))
(setvar "osmode" 0)
(command ".rectangle" p1 (list (+ (car p1) a) (+ (cadr p1) b)))
(setq kc (/ (- a d) (- n1 1))
p1 (list (+ (car p1) (/ d 2)) (+ (cadr p1) (/ d 2)))
)
;(princ n1)
(setq p p1)
(repeat n1
(command ".donut" 0 d p c^)
(setq p (polar p 0 kc))
);end of repeat1
(setq p (polar p1 (/ pi 2) (- b d)))
(repeat n1
(command ".donut" 0 d p c^)
(setq p (polar p 0 kc))
);end of repeat2
(setq kc (/ (- b d) (- n2 1)))
(setq p (polar p1 (/ pi 2) kc))
(repeat (- n2 1)
(command ".donut" 0 d p c^)
(setq p (polar p (/ pi 2) kc))
);end of repeat3
(setq p (polar p1 0 (- a d)))
(setq p (polar p (/ pi 2) kc))
(repeat ( - n2 1)
(command ".donut" 0 d p c^)
(setq p (polar p (/ pi 2) kc))
);end of repeat4

(setvar "osmode" old)
)
;; Chuong trinh chinhs vex mc mongs
(defun c:mcm ()
(initget 1 "MC MB")
(setq res (getkword "\n<M.BANG/M.COT><MB/MC>:"))
(setq p1 (getpoint "\nDiem chen:")
l1 (getreal "\nBe rong mong:")
l2 (getreal "\nBe rong co mong:")
l3 (/ (- l1 l2) 2)
h1 (getreal "\nChieu cao ben mong:")
h2 (getreal "\nChieu cao phan nghieng:")
h3 (getreal "\nChieu cao co mong:")
bv (getreal "\nBe day lop bao ve:")
d (getreal "\nDuong kinh thep:")
n (getint "\nS.luong thep day mong:")
l (getreal "\nLop Be tong lot:")
)
(setq old (getvar "osmode"))
(setvar "osmode" 0)
(setq p (polar p1 pi l))
(setq p (polar p (/ (- 0 pi) 2) l))
(command ".rectangle" p (list (+ (car p) ( * 2 l) l1) (+ (cadr p) l)))
(command ".pline" p1 "W" 0 0 (setq p (polar p1 (/ pi 2) h1)) (setq p (list (+ (car p) l3) (+ (cadr p) h2))) (setq p (polar p (/ pi 2) h3)) ""
)
(command ".mirror" "l" "" (setq p (polar p1 0 (/ l1 2))) (setq p (polar p (/ pi 2) (/ l1 2))) "")

(IF (= res "MB")
(progn
(setq pd (list (+ (car p1) bv) (+ (cadr p1) bv))
pc (polar pd 0 (* (- l1 (* 4 bv) l2) 0.5))
)
(mcthep pd pc d (fix (* n 0.5)))

(command ".line" pc (setq pc (polar pc 0 (+ l2 (* 2 bv)))) "")
(setq pd (polar pd 0 (- l1 (* 2 bv))))

(mcthep pc pd d (fix (* n 0.5)))
(setq p (list (+ (car p1) l3 bv) (+ (cadr p1) d bv))
a (- l2 (* 2 bv))
b (- (+ h1 h2 h3) (* 2 bv) d)
n1 (getint "\nS.luong thep ngang dam mong:")
n2 (getint "\nS.luong thep doc dam mong:")
)
(vdai p a b n1 n2 d)
);end of progn1
(progn
(setq pd (list (+ (car p1) bv) (+ (cadr p1) bv))
pc (polar pd 0 (- l1 (* 2 bv)))
)
(mcthep pd pc d n)
(setq p (list (+ (car p1) l3 bv (- 0 (* 10 d))) (+ (cadr p1) (* 2 d) bv))); end of setq
(command ".pline" p "W" 0 0 (setq p (polar p 0 (* 10 d)))
(setq p (polar p (/ pi 2) (+ h1 h2 h3 (* 20 d) (- 0 (* 2 d) bv))))
(setq p (polar p (/ (- 0 pi) 4) (* 2 d))) ""
); end of co
(command ".mirror" "l" "" (setq p (polar p1 0 (/ l1 2))) (setq p (polar p (/ pi 2) (/ l1 2))) "" ); end of co
);end of progn2

); end of if
(setvar "osmode" old)
)

  • 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
phamthanhbinh    3.123

Hề hề hề,

Hãy dùng thử cái nài coi đã ưng ý chưa nhé.

1/- Download file mcm-dcl.lsp và file Nhapdulieumong.rar về và chép vào cùng một thư mục trong đường dẫn tìm kiếm của CAD. Sau đó xả file nén ra thành file Nhapdulieumong.dcl trong cùng thư mục

2/- load file mcm-dcl.lsp vào file cad cần dùng.

3/- chạy lệnh mcm như bạn đã từng chạy líp mcm.lsp

http://www.cadviet.com/upfiles/3/5194_mcmdcl.lsp

http://www.cadviet.com/upfiles/3/5194_nhapdulieumong.rar

 

PS: file lisp chưa khử biến nên bạn lưu ý khi sử dụng, tránh trường hợp bị trùng biến với các lisp khác.

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
phamhung12    1

1/- Download file mcm-dcl.lsp và file Nhapdulieumong.rar về và chép vào cùng một thư mục trong đường dẫn tìm kiếm của CAD. Sau đó xả file nén ra thành file Nhapdulieumong.dcl trong cùng thư mục

2/- load file mcm-dcl.lsp vào file cad cần dùng.

3/- chạy lệnh mcm như bạn đã từng chạy líp mcm.lsp

PS: file lisp chưa khử biến nên bạn lưu ý khi sử dụng, tránh trường hợp bị trùng biến với các lisp khác.

Xin chân thành cám ơn bác phamthanhbinh đã hổ trợ. Nhưng bác Bình ơi lisp mcm-dcl.lsp không download được phiền bác up lại dùm. Mình hơi bị dốt cái món lisp nên khi bác nói file lisp chưa khử biến gì gì đó hơi bị phân vân...Khi load các lisp chạy mỗi thằng sử dụng có tên riêng, v dụ như mcm.lsp thì đánh mcm, cd.lsp thì đánh cd... sao lại có trùng biến với các lisp khác hà bác Bình :huh: ?

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

Xin chân thành cám ơn bác phamthanhbinh đã hổ trợ. Nhưng bác Bình ơi lisp mcm-dcl.lsp không download được phiền bác up lại dùm. Mình hơi bị dốt cái món lisp nên khi bác nói file lisp chưa khử biến gì gì đó hơi bị phân vân...Khi load các lisp chạy mỗi thằng sử dụng có tên riêng, v dụ như mcm.lsp thì đánh mcm, cd.lsp thì đánh cd... sao lại có trùng biến với các lisp khác hà bác Bình :huh: ?

Hề hề hề,

1/- Trang upload của diễn đàn dạo này quá tệ. Mình gửi bạn link khác qua meiafile:

http://www.mediafire.com/download/3r0vqyyzppy8mqm/mcm-dcl.lsp

2/- Việc gõ mcm hay cd trên dòng command chỉ là gọi tên chương trình cần chạy.

Việc trùng biến xảy ra khi các chướng trình với mục đích khác nhau nhưng sử dụng chung một tên biến, nhưng sau khi sử dụng các biến này không bị triệt tiêu và vẫn lưu giữ trong máy. Vì vậy khi chạy chương trình khác thì các biến này gây lỗi do không tương tích với chương trình cần chạy.

Do chương trình gốc bạn gửi không khử biến nên mình cũng không thực hiện việc khử biến vì có thể việc khử biến này sẽ ảnh hưởng tới nhu cầu sử dụng lại các biến này của bạn.

Nếu bạn thấy cần thiết thì mình sẽ thêm đoạn code để khử các biến này sau khi chương trình chạy xong.

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
phamhung12    1

Bác Bình ơi! SAu khi mình test lisp của bác thì thấy : Khi d (duong kinh thep) <1 thì bị lỗi. Khi d>= 1 : (gửi file test đính kèm). Nhờ bác đề cập đến vụ khử biến mà mình mới để ý: té ra lâu lâu chạy các file lisp thì nó không thực hiện, phải tắt Cad rồi mở lên load lại thì mới chạy (mình nghĩ chắc đây là nguyên do bác nói, trước đây cứ nghĩ Cad bị lỗi sao ý)... Vậy bác giúp mình thêm đoạn code để khử các biến vào lisp cũ (sẵn thêm code chọn màu như bản vẽ) để mình mở mang thêm chút kiến thức nha :) . Thanks!

http://www.cadviet.com/upfiles/3/132202_mcmongbang_1.dwg

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

Bác Bình ơi! SAu khi mình test lisp của bác thì thấy : Khi d (duong kinh thep) <1 thì bị lỗi. Khi d>= 1 : (gửi file test đính kèm). Nhờ bác đề cập đến vụ khử biến mà mình mới để ý: té ra lâu lâu chạy các file lisp thì nó không thực hiện, phải tắt Cad rồi mở lên load lại thì mới chạy (mình nghĩ chắc đây là nguyên do bác nói, trước đây cứ nghĩ Cad bị lỗi sao ý)... Vậy bác giúp mình thêm đoạn code để khử các biến vào lisp cũ (sẵn thêm code chọn màu như bản vẽ) để mình mở mang thêm chút kiến thức nha :) . Thanks!

http://www.cadviet.com/upfiles/3/132202_mcmongbang_1.dwg

Hề hề hề,

Do trang upload của diễn đàn hoạt động cà giựt, bạn gửi lại file qua trang upload khác 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
phamthanhbinh    3.123

Hề hề hề,

1/- Việc bạn nhập dữ liệu với các số giá trị không nguyên lisp sẽ báo lỗi là đương nhiên bởi lisp mình sửa chỉ cho nhập các số nguyên.

Tại sao bạn lại phải nhập đường kính tép là số nhỏ hơn 1??? Phải chăng vì bạn muốn vẽ với tỷ lệ nhỏ (VD: 1/20 như hình bạn gửi). Nếu vậy giải pháp cực kỳ đơn giản là bạn hãy vẽ nó với tỷ lệ là 1:1 rồi sau đó chỉ cần scale một phát là OK.

Sở dĩ mình sửa lisp để chỉ cho nhập số nguyên là vì theo mình nghĩ nên vẽ bản vẽ ở tỷ lệ 1:1 là tốt nhất vì nó đảm bảo độ chính xác của bản vẽ. Sau đó bạn muốn in bản vẽ ở tỷ lệ nào thì sử dụng layout sẽ tốt hơn cho việc quản lý và hệ thống hoá công việc.

Để có thể nhập dữ liệu là các số thực thì phải chỉnh sửa lại lisp một chút, nhưng mình không muốn sửa nữa.

2/- Đã bổ sung việc khử biến và đặt màu cho thép + bê tông.

http://www.mediafire.com/download/3r0vqyyzppy8mqm/mcm-dcl.lsp

  • 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
phamhung12    1

Được bác Bình hỗ trợ như vầy quý hóa quá rồi... Nhờ bác mà mình có khái niệm chút đỉnh về cái vụ "biến biến gì đó" :) . Thank you very much!!! :D

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

Hề hề hề,

1/- Việc bạn nhập dữ liệu với các số giá trị không nguyên lisp sẽ báo lỗi là đương nhiên bởi lisp mình sửa chỉ cho nhập các số nguyên.

Tại sao bạn lại phải nhập đường kính tép là số nhỏ hơn 1??? Phải chăng vì bạn muốn vẽ với tỷ lệ nhỏ (VD: 1/20 như hình bạn gửi). Nếu vậy giải pháp cực kỳ đơn giản là bạn hãy vẽ nó với tỷ lệ là 1:1 rồi sau đó chỉ cần scale một phát là OK.

Sở dĩ mình sửa lisp để chỉ cho nhập số nguyên là vì theo mình nghĩ nên vẽ bản vẽ ở tỷ lệ 1:1 là tốt nhất vì nó đảm bảo độ chính xác của bản vẽ. Sau đó bạn muốn in bản vẽ ở tỷ lệ nào thì sử dụng layout sẽ tốt hơn cho việc quản lý và hệ thống hoá công việc.

Để có thể nhập dữ liệu là các số thực thì phải chỉnh sửa lại lisp một chút, nhưng mình không muốn sửa nữa.

2/- Đã bổ sung việc khử biến và đặt màu cho thép + bê tông.

http://www.mediafire.com/download/3r0vqyyzppy8mqm/mcm-dcl.lsp

bác Bình thêm 1 đoạn mã cốt thép chủ cổ cột nữa thì quá tuyệt vờ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  

×