Đến nội dung


Hình ảnh
- - - - -

[yêu cầu] Nhờ các bác viết lisp rải thép đai cho dầm


  • Please log in to reply
14 replies to this topic

#1 ptd1987

ptd1987

    biết vẽ ellipse

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

Đã gửi 17 March 2015 - 09:47 AM

Do thao tác phải vẽ dầm lặp đi lặp lại nhiều lần nên Nhờ các bác viết lisp rải thép đai cho dầm, Nội dung như sau:

1> Command: RTD

2> Chọn đối tượng: {line}

3> Chọn chiều dài dầm : {pick point 1+2}

4> Chọn khoảng cách rải đai gần gối (l/4): <150> (hiện 150 ở dòng nhắc, thích thì thay đổi, không thì enter tiếp)

5> Chọn khoảng cách rải đai đoạn giữa: <200>  (hiện 200 ở dòng nhắc, thích thì thay đổi, không thì enter tiếp)

Kết quả: line được rải đầu tiên cách point 1 một đoạn 50 (mặc định, không cần dòng lệnh hỏi k/c này), rải và xóa line gốc

vd: dầm dài 4m thì trong 1m đầu tiên: move đối tượng gốc sang phải 50 (lisp tự đặt biến F8 on, sau đó trả về mặc đinh trc khi dùng lệnh  hoặc trc khi dùng lệnh người dùng bật F8 thủ công để vẽ theo phương ngang), rải k/c 150, 2m tiếp theo rải k/c 200( đối tượng đầu tiên trong 2m này cách đối tượng cuối trong đoạn 1m đầu tiên 200 cho dễ nha bác), 1m cuối rải k/c 150 ( đối tượng đầu tiên trong 1m này cách đối tượng cuối trong đoạn 2m là 150 cho dễ nha bác). 

Thanks các bác ^^

E xin edit để đính kèm file ^^

http://www.cadviet.c...112169_22_1.dwg


  • 0

#2 ptd1987

ptd1987

    biết vẽ ellipse

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

Đã gửi 23 March 2015 - 10:23 AM

huhu có bác nào viết dùm e với  :wacko:


  • 0

#3 minhtu2004

minhtu2004

    biết lệnh chamfer

  • Members
  • PipPipPipPip
  • 219 Bài viết
Điểm đánh giá: 34 (tàm tạm)

Đã gửi 23 March 2015 - 02:25 PM

-uP FILE LÊN THÌ MỚI CÓ NGƯỜI GIÚP.


  • 0

-Nhận thực hiện bản vẽ 3D bằng revit.
-Liên hệ: 01664793290.


#4 ptd1987

ptd1987

    biết vẽ ellipse

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

Đã gửi 23 March 2015 - 03:28 PM

file mẫu của e đây, các bác viết dùm ^^http://www.cadviet.c...4/112169_22.dwg


  • 0

#5 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 24 March 2015 - 02:41 PM

Thử cái này. Chú ý là cái đai (line) cần rải nằm ở điểm bắt đầu rải.

(defun c:rtd(/ ANG B1 B2 DIS DT LI OS P1 P2 TONG)
(defun chan(x n) (* n  (fix (/ x n 1.)) ))
(defun chia (a d1 d2 / D150 D200 DU)
(setq d200 (chan (* 0.5 a) d2)
d150 (chan (* 0.5 (- a d200 100)) d1)
du (* 0.5 (- a d200 (* 2 d150) 100)))
(list du d150 d200)
)
  (setvar 'cmdecho 0) 
(setq os (getvar 'osmode )
dt (car (entsel "\n Chon line de rai:"))
p1 (getpoint "\n Rai tu diem dau:")
p2 (getpoint p1 "\n Den diem cuoi:") 
)
(setq b1 (getint (strcat "\n Buoc cua doan bien <" (if gl_b1 (itoa gl_b1) (itoa (setq gl_b1 150))) ">: ")))
(if b1 (setq gl_b1 b1))
(setq b2 (getint (strcat "\n Buoc cua doan giua <" (if gl_b2 (itoa gl_b2) (itoa (setq gl_b2 200))) ">: ")))
(if b2 (setq gl_b2 b2))
(setq dis (distance p1 p2)
ang (angle p1 p2)
li (chia dis gl_b1 gl_b2))
(setvar 'osmode 0)
(command "copy" dt "" p1 (polar p1 ang (setq tong 50)))
(command "copy" dt "" p1 (polar p1 ang (setq tong (+ tong (car li)))))
(repeat (/ (cadr li) gl_b1)
(command "copy" dt "" p1 (polar p1 ang (setq tong (+ tong gl_b1)))))
(repeat (/ (last li) gl_b2)
(command "copy" dt "" p1 (polar p1 ang (setq tong (+ tong gl_b2)))))
(repeat (/ (cadr li) gl_b1)
(command "copy" dt "" p1 (polar p1 ang (setq tong (+ tong gl_b1)))))
(command "copy" dt "" p1 (polar p1 ang (setq tong (+ tong (car li)))))
(command "copy" dt "" p1 (polar p1 ang (+ tong 50)))
(setvar 'cmdecho 1) (setvar 'osmode os) (princ)
)

  • 1

#6 ptd1987

ptd1987

    biết vẽ ellipse

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

Đã gửi 25 March 2015 - 10:10 PM

Thanks bác Tot77 đã wan tâm vấn đề của em, em đã tải lisp về xài và thấy chưa dc ổn lắm

Bác chỉnh sửa lại dùm em với, chi tiết cụ thể em trình bày trong file cad đính kèm

http://www.cadviet.c..._raithepdai.dwg


  • 0

#7 minhtu2004

minhtu2004

    biết lệnh chamfer

  • Members
  • PipPipPipPip
  • 219 Bài viết
Điểm đánh giá: 34 (tàm tạm)

Đã gửi 26 March 2015 - 09:48 AM

-Bạn xóa dòng này

(command "copy" dt "" p1 (polar p1 ang (setq tong (+ tong (car li)))))

............

-Doi dòng này(command "copy" dt "" p1 (polar p1 ang (+ tong 50))) -----> thanh (command "erase" dt "")

-Còn thêm mấy cái yêu cầu thì để bạn Tot rãnh viết tiếp cho bạn.


  • 1

-Nhận thực hiện bản vẽ 3D bằng revit.
-Liên hệ: 01664793290.


#8 ptd1987

ptd1987

    biết vẽ ellipse

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

Đã gửi 26 March 2015 - 11:31 AM

Thanks minhtu2004 , mình đã thử

Xóa 2 dòng: (command "copy" dt "" p1 (polar p1 ang (setq tong (+ tong (car li)))))

-Doi dòng này(command "copy" dt "" p1 (polar p1 ang (+ tong 50))) -----> thanh (command "erase" dt "")

Test thử dầm 6m, 6.5m thì thiếu 1 đai cuối cùng, khoảng cách còn 250 mà ko rải đai nữa.

Dầm 3m 4m 5m đều ok vì k/c < 150 


  • 0

#9 minhtu2004

minhtu2004

    biết lệnh chamfer

  • Members
  • PipPipPipPip
  • 219 Bài viết
Điểm đánh giá: 34 (tàm tạm)

Đã gửi 26 March 2015 - 12:44 PM

-Mình test ok toàn bộ 3m, 3.5m, 6m, 6.5m. Bạn kiểm tra lại.


  • 0

-Nhận thực hiện bản vẽ 3D bằng revit.
-Liên hệ: 01664793290.


#10 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 26 March 2015 - 12:55 PM

Tôi viết mục đích là rải đối xứng cho dầm, chứ nếu rải từ trái qua còn dư bao nhiêu nằm ở phía bên phải thì khác.


  • 0

#11 ptd1987

ptd1987

    biết vẽ ellipse

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

Đã gửi 26 March 2015 - 01:49 PM

-Mình test ok toàn bộ 3m, 3.5m, 6m, 6.5m. Bạn kiểm tra lại.

mình đã kiểm tra lại, nếu xóa 1 dòng (command "copy" dt "" p1 (polar p1 ang (setq tong (+ tong (car li)))))

thì nhịp 6m, 6.5m đoạn cuối đúng là 150 nhưng đoạn liền kề trc thì là 100, tức là rải hơi bị ngược

tại mình xóa 2 dòng nên thử thì thấy dư đoạn 250

 

 

Tôi viết mục đích là rải đối xứng cho dầm, chứ nếu rải từ trái qua còn dư bao nhiêu nằm ở phía bên phải thì khác.

Bác sửa lại dùm e dc ko ạ? rải từ trái qua phải chứ không phải đối xứng, cho nó giống với thi công thực tế


  • 0

#12 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 26 March 2015 - 02:29 PM

Bạn thử cái này xem.

(defun c:rtd(/ ANG B1 B2 DIS DT LI OS P1 P2 TONG)
(defun chan(x n) (* n  (fix (/ x n 1.)) ))
(defun chia (a d1 d2 / D150 D200)
(setq d200 (chan (* 0.5 a) d2)
d150 (chan (* 0.5 (- a d200 100)) d1)
)
(list d150 d200)
)
  (setvar 'cmdecho 0) 
(setq os (getvar 'osmode )
dt (car (entsel "\n Chon line de rai:"))
p1 (getpoint "\n Rai tu diem dau:")
p2 (getpoint p1 "\n Den diem cuoi:") 
)
(setq b1 (getint (strcat "\n Buoc cua doan bien <" (if gl_b1 (itoa gl_b1) (itoa (setq gl_b1 150))) ">: ")))
(if b1 (setq gl_b1 b1))
(setq b2 (getint (strcat "\n Buoc cua doan giua <" (if gl_b2 (itoa gl_b2) (itoa (setq gl_b2 200))) ">: ")))
(if b2 (setq gl_b2 b2))
(setq dis (distance p1 p2)
ang (angle p1 p2)
li (chia dis gl_b1 gl_b2))
(setvar 'osmode 0)
(command "copy" dt "" p1 (polar p1 ang (setq tong 50))) 
(repeat (/ (car li) gl_b1)
(command "copy" dt "" p1 (polar p1 ang (setq tong (+ tong gl_b1)))))
(repeat (/ (last li) gl_b2)
(command "copy" dt "" p1 (polar p1 ang (setq tong (+ tong gl_b2)))))
(repeat (/ (car li) gl_b1)
(command "copy" dt "" p1 (polar p1 ang (setq tong (+ tong gl_b1))))) 
(entdel dt)
(setvar 'cmdecho 1) (setvar 'osmode os) (princ)
)

  • 0

#13 ptd1987

ptd1987

    biết vẽ ellipse

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

Đã gửi 26 March 2015 - 09:59 PM

 

Bạn thử cái này xem.

(defun c:rtd(/ ANG B1 B2 DIS DT LI OS P1 P2 TONG)
(defun chan(x n) (* n  (fix (/ x n 1.)) ))
(defun chia (a d1 d2 / D150 D200)
(setq d200 (chan (* 0.5 a) d2)
d150 (chan (* 0.5 (- a d200 100)) d1)
)
(list d150 d200)
)
  (setvar 'cmdecho 0) 
(setq os (getvar 'osmode )
dt (car (entsel "\n Chon line de rai:"))
p1 (getpoint "\n Rai tu diem dau:")
p2 (getpoint p1 "\n Den diem cuoi:") 
)
(setq b1 (getint (strcat "\n Buoc cua doan bien <" (if gl_b1 (itoa gl_b1) (itoa (setq gl_b1 150))) ">: ")))
(if b1 (setq gl_b1 b1))
(setq b2 (getint (strcat "\n Buoc cua doan giua <" (if gl_b2 (itoa gl_b2) (itoa (setq gl_b2 200))) ">: ")))
(if b2 (setq gl_b2 b2))
(setq dis (distance p1 p2)
ang (angle p1 p2)
li (chia dis gl_b1 gl_b2))
(setvar 'osmode 0)
(command "copy" dt "" p1 (polar p1 ang (setq tong 50))) 
(repeat (/ (car li) gl_b1)
(command "copy" dt "" p1 (polar p1 ang (setq tong (+ tong gl_b1)))))
(repeat (/ (last li) gl_b2)
(command "copy" dt "" p1 (polar p1 ang (setq tong (+ tong gl_b2)))))
(repeat (/ (car li) gl_b1)
(command "copy" dt "" p1 (polar p1 ang (setq tong (+ tong gl_b1))))) 
(entdel dt)
(setvar 'cmdecho 1) (setvar 'osmode os) (princ)
)

em đã thử lisp bác mới fix, dầm 3m 4m 5m ko sao nhưng 6m 6.5m lại bị khoảng cách cuối cùng là 250 ko rải thêm 1 đai cuối nữa, như hình e đính kèm112169_screenhunter_001.jpg


  • 0

#14 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 27 March 2015 - 08:29 AM

Cái này chắc OK.

(defun c:rtd (/ ANG B1 B2 DIS DIS1 DT LI OS P1 P2 TONG)
(defun chan(x n) (* n  (fix (/ x n 1.)) ))
(defun chia (a d1 d2 / D150 D200)
(setq d200 (chan (* 0.5 a) d2)
d150 (chan (* 0.5 (- a d200 100)) d1)
)
(list d150 d200)
)
  (setvar 'cmdecho 0) 
(setq os (getvar 'osmode )
dt (car (entsel "\n Chon line de rai:"))
p1 (getpoint "\n Rai tu diem dau:")
p2 (getpoint p1 "\n Den diem cuoi:") 
)
(setq b1 (getint (strcat "\n Buoc cua doan bien <" (if gl_b1 (itoa gl_b1) (itoa (setq gl_b1 150))) ">: ")))
(if b1 (setq gl_b1 b1))
(setq b2 (getint (strcat "\n Buoc cua doan giua <" (if gl_b2 (itoa gl_b2) (itoa (setq gl_b2 200))) ">: ")))
(if b2 (setq gl_b2 b2))
(setq dis (distance p1 p2)
ang (angle p1 p2)
li (chia dis gl_b1 gl_b2))
(setvar 'osmode 0)
(command "undo" "be")
 
(command "copy" dt "" p1 (polar p1 ang (setq tong 50))) 
(repeat (fix (/ (car li) gl_b1))
(command "copy" dt "" p1 (polar p1 ang (setq tong (+ tong gl_b1)))))
(repeat (fix (/ (last li) gl_b2))
(command "copy" dt "" p1 (polar p1 ang (setq tong (+ tong gl_b2)))))
(setq dis1 (/ (distance (polar p1 ang tong) p2) gl_b1))
(if (= dis1 (fix dis1))
(setq dis1 (1- (fix dis1)))
(setq dis1 (fix dis1))) 
(repeat dis1
(command "copy" dt "" p1 (polar p1 ang (setq tong (+ tong gl_b1))))) 
(entdel dt)
(command "undo" "e")
(setvar 'cmdecho 1) (setvar 'osmode os) (princ)
)

  • 2

#15 ptd1987

ptd1987

    biết vẽ ellipse

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

Đã gửi 27 March 2015 - 09:15 AM

thanks bác, lisp rải ok rồi ^^


  • 0