Đến nội dung


Hình ảnh
- - - - -

Xin lisp tính chiều dài trung bình và DL của thanh thép biến thiên


  • Please log in to reply
47 replies to this topic

#1 qh2qa06

qh2qa06

    biết vẽ pline

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

Đã gửi 15 October 2014 - 01:35 PM

Trình bày hơi phức tạp nên em đã trình bày chi tiết trong file đính kèm.

Với các mặt bằng có cùng một dạng biến thiên, để tiện cho thiết kế và thi công, bọn em thường gộp các thanh thép vào cùng một loại, sau đó thống kê chiều dài trung bình để tính khối lượng; tính ra DL để cắt thép. Sau khi có DL thì chiều dài thanh số 1=Lmin, thanh số 2=Lmin+DL, thanh số 3=Lmin+2DL... cứ như thế cho đến hết các thanh.

Hiện bọn em thống kê phải nhập vào Excel và tính ra Ltb, tính ra DL rồi copy dán vào trong Cad, rất mất thời gian.

Em xin cảm ơn!http://www.cadviet.c..._trung_binh.dwg


  • 0

#2 nhoclangbat

nhoclangbat

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1409 Bài viết
Điểm đánh giá: 379 (khá)

Đã gửi 15 October 2014 - 05:25 PM

- hi hi lâu lâu nhóc thử tự viết lsp theo y/c ko chỉnh sửa lsp cũ xem thế nào, bạn dùng thử cho nhoc ý kiến hen ^^

(defun c:TTL (/ old lmax lmin ename1 ename2 info1 info2 dai1 dai2 ltb ldelta e1 e2) ;
(setq old (getvar "osmode"))
(setvar "osmode" 0)
(prompt "Chon thanh co chieu dai be nhat:")
(setq lmin (ssget "+.:E:S" '((0 . "LINE"))))
(if lmin
 (progn
    (setq ename1 (ssname lmin 0)
	      info1 (entget ename1)
		  dai1 (distance (cdr (assoc 10 info1)) (cdr (assoc 11 info1)))
	 )
  )
)  
 ;=========================================================
(prompt "Chon thanh co chieu dai lon nhat:")
(setq lmax (ssget "+.:E:S" '((0 . "LINE"))))
(if lmax
 (progn
    (setq ename2 (ssname lmax 0)
	      info2 (entget ename2)
		  dai2 (distance (cdr (assoc 10 info2)) (cdr (assoc 11 info2)))
	 )
  )
)  
;===========================================================
(setq sl (getint "\nSo luong thanh mun tinh:"))
(setq ltb (* (/ (+ dai1 dai2) 2.0) 1000))
(setq ldelta (* (/ (- dai2 dai1) (- sl 1)) 1000))
(setq e1 (entget (car (entsel "\nchon text ghi ket qua L trung binh:"))))
(entmod (subst (cons 1 (strcat (itoa (- sl 1)) ",L = " (rtos ltb 2 0))) (assoc 1 e1) e1))
;===============================================================
(setq e2 (entget (car (entsel "\nchon dim ghi ket qua L delta:"))))
(entmod (subst (cons 1 (strcat (rtos (* dai1 1000) 2 0) "~" (rtos (* dai2 1000) 2 0) ", \U+0394L=" (rtos ldelta 2 0))) (assoc 1 e2) e2))
(setvar "osmode" old)
(princ "\n")
(princ)
)

  • 1
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#3 qh2qa06

qh2qa06

    biết vẽ pline

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

Đã gửi 16 October 2014 - 08:48 AM

- hi hi lâu lâu nhóc thử tự viết lsp theo y/c ko chỉnh sửa lsp cũ xem thế nào, bạn dùng thử cho nhoc ý kiến hen ^^

(defun c:TTL (/ old lmax lmin ename1 ename2 info1 info2 dai1 dai2 ltb ldelta e1 e2) ;
(setq old (getvar "osmode"))
(setvar "osmode" 0)
(prompt "Chon thanh co chieu dai be nhat:")
(setq lmin (ssget "+.:E:S" '((0 . "LINE"))))
(if lmin
 (progn
    (setq ename1 (ssname lmin 0)
	      info1 (entget ename1)
		  dai1 (distance (cdr (assoc 10 info1)) (cdr (assoc 11 info1)))
	 )
  )
)  
 ;=========================================================
(prompt "Chon thanh co chieu dai lon nhat:")
(setq lmax (ssget "+.:E:S" '((0 . "LINE"))))
(if lmax
 (progn
    (setq ename2 (ssname lmax 0)
	      info2 (entget ename2)
		  dai2 (distance (cdr (assoc 10 info2)) (cdr (assoc 11 info2)))
	 )
  )
)  
;===========================================================
(setq sl (getint "\nSo luong thanh mun tinh:"))
(setq ltb (* (/ (+ dai1 dai2) 2.0) 1000))
(setq ldelta (* (/ (- dai2 dai1) (- sl 1)) 1000))
(setq e1 (entget (car (entsel "\nchon text ghi ket qua L trung binh:"))))
(entmod (subst (cons 1 (strcat (itoa (- sl 1)) ",L = " (rtos ltb 2 0))) (assoc 1 e1) e1))
;===============================================================
(setq e2 (entget (car (entsel "\nchon dim ghi ket qua L delta:"))))
(entmod (subst (cons 1 (strcat (rtos (* dai1 1000) 2 0) "~" (rtos (* dai2 1000) 2 0) ", \U+0394L=" (rtos ldelta 2 0))) (assoc 1 e2) e2))
(setvar "osmode" old)
(princ "\n")
(princ)
)

Bạn ơi Lsp bạn viết cho mình tính đủ hết rồi, nhưng mình muốn sửa dòng ghi giá trị trung bình là: Số thanh rồi đến dấu ` rồi mới là 14,L=chiều dài trung bình. Hiện Lsp viết ra thiếu tiền tố Số thanh`. Bạn thêm tiền tố đó vào giúp mình được không?

Cảm ơn bạn!


  • 0

#4 nhoclangbat

nhoclangbat

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1409 Bài viết
Điểm đánh giá: 379 (khá)

Đã gửi 16 October 2014 - 09:33 AM

-thanks bạn đã ok lsp nhoc ^^, thêm tiền tố đó ko khó, nhưng giờ nhoc đang đi thực địa hẹn bạn chiều tối nhoc sẽ sửa giúp bạn, bạn có mún thêm gì ko nhoc xem nếu đc nhoc sua lun 1 lan
  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#5 qh2qa06

qh2qa06

    biết vẽ pline

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

Đã gửi 16 October 2014 - 11:00 AM

-thanks bạn đã ok lsp nhoc ^^, thêm tiền tố đó ko khó, nhưng giờ nhoc đang đi thực địa hẹn bạn chiều tối nhoc sẽ sửa giúp bạn, bạn có mún thêm gì ko nhoc xem nếu đc nhoc sua lun 1 lan

Bọn mình chờ vậy. Mình chỉ cần thêm tiền tố đó là có một Lsp theo đúng yêu cầu của mình.

Cảm ơn bạn!


  • 0

#6 hiepttr

hiepttr

    Edu level: li10

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

Đã gửi 16 October 2014 - 11:34 AM

Một ý kiến nhỏ:

Có thể lấy Lmin, Lmax từ dim (hoặc text, hoặc nhập từ bàn phím ...) thì hay hơn.

Vì với những chi tiết có chiều dài rất rất lớn so với chiều rộng (và cả 2 bề đều biến thiên) thì bản vẽ thường đc biểu diễn có nét cắt dích dắc >>> thanh thép có chiều dài ko đúng kích thước thật.

Hoặc với bản vẽ in trên model, có scale tỉ lệ cũng vậy ...

Có nhiều lúc mình phải sửa bản vẽ của người khác nữa mà bạn !!!


  • 0

Có vợ dù dữ dù hiền , bạn đều có lợi
_ Nếu vợ hiền, bạn sẽ là người đàn ông sung sướng
_ Nếu vợ dữ, bạn sẽ thành ... triết gia !

Bergson


#7 qh2qa06

qh2qa06

    biết vẽ pline

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

Đã gửi 16 October 2014 - 12:41 PM

Một ý kiến nhỏ:

Có thể lấy Lmin, Lmax từ dim (hoặc text, hoặc nhập từ bàn phím ...) thì hay hơn.

Vì với những chi tiết có chiều dài rất rất lớn so với chiều rộng (và cả 2 bề đều biến thiên) thì bản vẽ thường đc biểu diễn có nét cắt dích dắc >>> thanh thép có chiều dài ko đúng kích thước thật.

Hoặc với bản vẽ in trên model, có scale tỉ lệ cũng vậy ...

Có nhiều lúc mình phải sửa bản vẽ của người khác nữa mà bạn !!!

Bản vẽ của bọn mình chỉ đúng như file đính kèm thôi. Bên mình không có chi tiết phức tạp, chỉ vẽ thép cho tấm BT thôi nên chiều dài thanh thép vẽ trên hình là chuẩn luôn, pick trực tiếp vào chiều dài thanh trên bản vẽ là phù hợp nhất và tiết kiệm thời gian nhất.Nét vẽ mặt cắt zigzag phải là dân cầu hoặc cơ khí, bên mình không cần.


  • 0

#8 qh2qa06

qh2qa06

    biết vẽ pline

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

Đã gửi 16 October 2014 - 01:47 PM

-thanks bạn đã ok lsp nhoc ^^, thêm tiền tố đó ko khó, nhưng giờ nhoc đang đi thực địa hẹn bạn chiều tối nhoc sẽ sửa giúp bạn, bạn có mún thêm gì ko nhoc xem nếu đc nhoc sua lun 1 lan

Mình xin thêm 1 Lsp dành cho thanh có chiều dài không đổi. File mình đính kèm theo. Cảm ơn bạn!

 

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


  • 0

#9 Namvanvo

Namvanvo

    Edu level: li5

  • Members
  • PipPipPipPipPip
  • 386 Bài viết
Điểm đánh giá: 42 (tàm tạm)

Đã gửi 16 October 2014 - 01:47 PM

Bạn Nhóc bận nên mình phỏng tay trên: 

 

Bọn mình chờ vậy. Mình chỉ cần thêm tiền tố đó là có một Lsp theo đúng yêu cầu của mình.

Cảm ơn bạn!

Bạn thay (entmod (subst (cons 1 (strcat (itoa (- sl 1)) ",L = " (rtos ltb 2 0))) (assoc 1 e1) e1))

bằng (entmod (subst (cons 1 (strcat "So thanh' " (itoa (- sl 1)) ",L = " (rtos ltb 2 0))) (assoc 1 e1) e1))


  • 1

#10 qh2qa06

qh2qa06

    biết vẽ pline

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

Đã gửi 16 October 2014 - 02:48 PM

Bạn Nhóc bận nên mình phỏng tay trên: 

 

Bạn thay (entmod (subst (cons 1 (strcat (itoa (- sl 1)) ",L = " (rtos ltb 2 0))) (assoc 1 e1) e1))

bằng (entmod (subst (cons 1 (strcat "So thanh' " (itoa (- sl 1)) ",L = " (rtos ltb 2 0))) (assoc 1 e1) e1))

Cảm ơn bạn, mình sửa được rồi.

 

@Nhoclangbat: Có 1 vấn đề nhỏ nhỏ ở Lsp này. Đó là chiều dài trung bình chưa làm tròn mà chỉ lấy phần nguyên. Ví dụ: Lmin=2197, Lmax=2776 thì Ltb tính ra là 2486 - Mình muốn giá trị tính ra được làm tròn như thông thường, tức là nếu nó là 2486.5 sẽ làm tròn lên là 2487 để không thiếu khối lượng cho nhà thầu có được không?


  • 0

#11 nhoclangbat

nhoclangbat

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1409 Bài viết
Điểm đánh giá: 379 (khá)

Đã gửi 16 October 2014 - 03:33 PM

- hì chắc tối nhoc mới về tới nhà ^^, cái phần làm tròn thêm đk là đc, bạn Nam còn onl giúp bạn ấy lun hen, nhoc nghĩ bạn Nam xử đc :)
  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#12 pphung183

pphung183

    biết dimstyle

  • Members
  • PipPipPipPipPip
  • 384 Bài viết
Điểm đánh giá: 425 (tốt)

Đã gửi 16 October 2014 - 03:34 PM

Thấy bạn thương nhà thầu như thế ai nỡ nào không giúp :) , bạn sữa chỗ:

(rtos ltb 2 0) thành (rtos (fix(+ ltb 1)) 2 0)


  • 1

#13 hiepttr

hiepttr

    Edu level: li10

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

Đã gửi 16 October 2014 - 03:44 PM

@Nhoclangbat: Có 1 vấn đề nhỏ nhỏ ở Lsp này. Đó là chiều dài trung bình chưa làm tròn mà chỉ lấy phần nguyên. Ví dụ: Lmin=2197, Lmax=2776 thì Ltb tính ra là 2486 - Mình muốn giá trị tính ra được làm tròn như thông thường, tức là nếu nó là 2486.5 sẽ làm tròn lên là 2487 để không thiếu khối lượng cho nhà thầu có được không?

 

Thấy bạn thương nhà thầu như thế ai nỡ nào không giúp :) , bạn sữa chỗ:

(rtos ltb 2 0) thành (rtos (fix(+ ltb 1)) 2 0)

 

>>>>> Mình nghĩ về mặt khối lượng thì ko có gì đáng nói, song , về mặt giải thuật thì như Nhóc là đủ rồi đó chứ !

Con số 0 chình ình trong (rtos ltb 2 0) sẽ đảm bảo việc làm tròn đó mà !!!

Nếu mà (rtos (fix(+ ltb 1)) 2 0) có khi lại "làm lời" cho nhà thầu đó chứ !

:D :D :D


  • 0

Có vợ dù dữ dù hiền , bạn đều có lợi
_ Nếu vợ hiền, bạn sẽ là người đàn ông sung sướng
_ Nếu vợ dữ, bạn sẽ thành ... triết gia !

Bergson


#14 pphung183

pphung183

    biết dimstyle

  • Members
  • PipPipPipPipPip
  • 384 Bài viết
Điểm đánh giá: 425 (tốt)

Đã gửi 16 October 2014 - 04:08 PM

Khi đã dùng hàm fix rồi thi hai thông số: 2  0  là thừa, tôi viết vậy cho dễ sửa thoi mà.

Làm tròn chỉ 1 mm mà bạn hieptr đã la toáng lên rồi :D


  • 1

#15 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 16 October 2014 - 04:23 PM

Hiepttr la làng là do bạn sai về bản chất. Dù bỏ hay không bỏ số 2 và số 0 thì đều sai, vì (fix (+ 2.0 1))=3, trong khi thực tế nó bằng 2.


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#16 qh2qa06

qh2qa06

    biết vẽ pline

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

Đã gửi 16 October 2014 - 04:51 PM

Thấy bạn thương nhà thầu như thế ai nỡ nào không giúp :) , bạn sữa chỗ:

(rtos ltb 2 0) thành (rtos (fix(+ ltb 1)) 2 0)

Không phải thương nhà thầu mà là làm chưa đúng. Các bác ấy lấy máy tính tay tính ra, phải làm tròn lên chứ không làm tròn xuống được, sai mình lại phải sửa hồ sơ.

Hiện tại với lsp của Nhoclangbat thì thiếu 1 đơn vị, không đáng bao nhiêu với thực tế nhưng không đúng với con số tính ra.

Các bác sửa giúp em một Lsp hoàn chỉnh ạ!


  • 0

#17 nhoclangbat

nhoclangbat

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1409 Bài viết
Điểm đánh giá: 379 (khá)

Đã gửi 16 October 2014 - 05:12 PM

- he đc về sớm, sao nhoc test thử vd bạn ấy đưa lsp vẫn trả về đúng 2487 mà ta @@, vậy là sao nhỉ,lúc đầu nhoc ko nhớ nên nghĩ 0.5 trở xuống thì rtos nó ko làm tròn ^^, mà kết quả trùng bình 2 số, 1 là tròn 2 là lẽ 0.5

- nhoc thêm đk phụ có thể dư, bạn cứ thử xem sao, thêm cái đk nếu đối tượng bạn chọn để ghi LTB ko phải text sẽ bắt bạn chọn đúng mới thui, L delta củng vậy ^^

(defun c:TTL (/ old lmax lmin ename1 ename2 info1 info2 dai1 dai2 ltb ldelta e1 e2) ;
(setq old (getvar "osmode"))
(setvar "osmode" 0)
(prompt "Chon thanh co chieu dai be nhat:")
(setq lmin (ssget "+.:E:S" '((0 . "LINE"))))
(if lmin
 (progn
    (setq ename1 (ssname lmin 0)
	      info1 (entget ename1)
		  dai1 (distance (cdr (assoc 10 info1)) (cdr (assoc 11 info1)))
	 )
  )
)  
 ;=========================================================
(prompt "Chon thanh co chieu dai lon nhat:")
(setq lmax (ssget "+.:E:S" '((0 . "LINE"))))
(if lmax
 (progn
    (setq ename2 (ssname lmax 0)
	      info2 (entget ename2)
		  dai2 (distance (cdr (assoc 10 info2)) (cdr (assoc 11 info2)))
	 )
  )
)  
;===========================================================
(setq sl (getint "\nSo luong thanh mun tinh:"))
(setq ltb (* (/ (+ dai1 dai2) 2.0) 1000))
(if (= (- ltb (fix ltb)) 0.5)
(setq ltb (+ ltb 0.5))
ltb
)
(setq ldelta (* (/ (- dai2 dai1) (- sl 1)) 1000))
;==============================================================
(setq e1 (entget (car (entsel "\nchon text ghi ket qua L trung binh:"))))
(princ "\n")
(while (/= (cdr (assoc 0 e1)) "TEXT")
(prompt "Ban chon ko phai la text, ban chon lai hen!!!")
(setq e1 (entget (car (entsel "\nchon text ghi ket qua L trung binh:"))))
(princ "\n")
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(entmod (subst (cons 1 (strcat "Thanh'" (itoa (- sl 1)) ",L = " (rtos ltb 2 0))) (assoc 1 e1) e1))
;===============================================================
(setq e2 (entget (car (entsel "\nchon dim ghi ket qua L delta:"))))
(princ "\n")
(while (/= (cdr (assoc 0 e2)) "DIMENSION")
(prompt "doi tuong ban chon ko phai la dim, ban chon lai hen!!!")
(setq e2 (entget (car (entsel "\nchon dim ghi ket qua L delta:"))))
(princ "\n")
)
(entmod (subst (cons 1 (strcat (rtos (* dai1 1000) 2 0) "~" (rtos (* dai2 1000) 2 0) ", \U+0394L=" (rtos ldelta 2 0))) (assoc 1 e2) e2))
;======================================================================
(setvar "osmode" old)
(princ "\n")
(princ)
)

  • 1
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#18 Hoan1111

Hoan1111

    biết lệnh adcenter

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

Đã gửi 16 October 2014 - 07:07 PM

114276_klkjhg.png

Nếu đơn vị tính là container thì lisp.ttl của anh Nhóc sai số sẽ tính bằng đơn vị xe cải tiến 2 bánh, một người kéo hai người đẩy! :) :) :)

Không hiểu bên Xây dựng dư nào, bên Cơ khí, khi cắt thép để đảm bảo kết cấu thì phải cắt thép theo chiều dài trung bình của đoạn thép và cắt vát 23°mới đảm bảo tiết kiệm thép mà không ảnh hưởng đến kết cấu.


  • 0

66 Câu Phật Học Cho Cuộc Sống : http://ngocchinh.com...-cho-cuoc-song/

Gió đưa cây cải về trời / Rau răm ở lại chịu lời đắng cay...

 

 


#19 nhoclangbat

nhoclangbat

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1409 Bài viết
Điểm đánh giá: 379 (khá)

Đã gửi 16 October 2014 - 07:28 PM

- hi mấy cái ni nhoc có biết mô răng tê rứa ^^, trong file bạn đó hướng dẫn cụ thể có công thức, nhoc thấy có thể làm đc nên thử viết giúp bạn đó ấy mà :)


  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#20 pphung183

pphung183

    biết dimstyle

  • Members
  • PipPipPipPipPip
  • 384 Bài viết
Điểm đánh giá: 425 (tốt)

Đã gửi 16 October 2014 - 07:54 PM

Ở lisp này thấy nhoc ko thể  hiện được kí hiệu fi gai (chỉ có ở bigfont) nhỉ? :)

Nếu số luong thanh muốn tính là 100 thì chẳng lẻ có fi gai = 99 :wacko:


  • 1