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  
tandai1102

[Yêu cầu] lisp vẽ mặt cắt dầm

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

tandai1102    0

em tìm trên diễn đàn thấy có rất nhiều lisp viết vẽ mặt cắt dầm nhưng thấy không vừa ý,

em nhờ mấy anh viết dùm em cái lisp mặt cắt dầm như chú thích trong hình, rất mong các anh giúp đỡ.

 

23-07-20058-15-02AM.jpg?t=1311383833

 

Trong đó:

+Có thể thay đổi tỷ lệ vẽ

+Dimstyle = dimstyle hiện hành.

+Thường vẽ mặt cắt dầm là tỷ lệ 1:20 (có 2 loại text : text height = 2.5*20 =50, text cao là =5*20=100)

+nếu là tỷ lệ 1:50 (có 2 loại text : text height = 2.5*50 =125, text cao là =5*50=250)

tương tự cho các tỷ lệ còn lại

+hay text height = text trong dimstyle hiện hành xplode ra, 1 cái bằng, 1 cái scale 2 lần lên.

+Các đường dim theo kích thước của dầm, nghĩa là lúc nhập sao thì dim ra như vậy( vd: nhập tiết diện dầm 200x400 thì dim ra như vậy )

khoảng cách dim tới dầm là = baseline. Dimstyle = dimstyle hiện hành.

+Coss cao độ có thể thay đổi được lúc nhập.

Chi tiết cosst cao độ như ghi chú.

các ghi chú thép có thể thay đổi lúc nhập

các thanh thép trên mặt cắt thay đổi lúc nhập

 

layer:

 

thép đai: rbar

thép: steel

bao dầm: beam

dim: dim

leader: dim

text 25: text 25

text 50: text 50

 

em xin chân thành cảm ơn và chúc cho diễn đàn phát triển ngày càng vững mạnh!

do chưa đọc thông báo quy định về lập topic yêu cầu. em sửa lại cho đúng quy định diễn đà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
lp_hai    207

em tìm trên diễn đàn thấy có rất nhiều lisp viết vẽ mặt cắt dầm nhưng thấy không vừa ý,

em nhờ mấy anh viết dùm em cái lisp mặt cắt dầm như chú thích trong hình, rất mong các anh giúp đỡ.

 

23-07-20058-15-02AM.jpg?t=1311383833

 

Trong đó:

+Có thể thay đổi tỷ lệ vẽ

+Dimstyle = dimstyle hiện hành.

+Thường vẽ mặt cắt dầm là tỷ lệ 1:20 (có 2 loại text : text height = 2.5*20 =50, text cao là =5*20=100)

+nếu là tỷ lệ 1:50 (có 2 loại text : text height = 2.5*50 =125, text cao là =5*50=250)

tương tự cho các tỷ lệ còn lại

+hay text height = text trong dimstyle hiện hành xplode ra, 1 cái bằng, 1 cái scale 2 lần lên.

+Các đường dim theo kích thước của dầm, nghĩa là lúc nhập sao thì dim ra như vậy( vd: nhập tiết diện dầm 200x400 thì dim ra như vậy )

khoảng cách dim tới dầm là = baseline. Dimstyle = dimstyle hiện hành.

+Coss cao độ có thể thay đổi được lúc nhập.

Chi tiết cosst cao độ như ghi chú.

các ghi chú thép có thể thay đổi lúc nhập

các thanh thép trên mặt cắt thay đổi lúc nhập

 

layer:

 

thép đai: rbar

thép: steel

bao dầm: beam

dim: dim

leader: dim

text 25: text 25

text 50: text 50

 

em xin chân thành cảm ơn và chúc cho diễn đàn phát triển ngày càng vững mạnh!

do chưa đọc thông báo quy định về lập topic yêu cầu. em sửa lại cho đúng quy định diễn đàn.

thú thật, dù mình ko phải lisper pro. nhưng mình thấy lisp bạn yêu cầu ko khó nhưng nhiều dữ liệu wá. vì vậy bạn phải kiên nhẫn nha. muốn viết thì tốn khá nhiều thời gian mà ko lo làm việc mà cứ coding là... ặ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
ketxu    2.652

Dù k phải người viết lisp nhưng mình thấy, chi tiết cos có thể thay đổi lúc nhập, thép thay đổi lúc nhập, số dim thay đổi lúc nhập, ghi chú thay đổi lúc nhập....Vậy thì thà bạn làm cái Block thuộc tính động hoặc cóp hẳn sang mà stretch, edit còn nhàn hơn, lisp liếc làm j 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
tandai1102    0

Dù k phải người viết lisp nhưng mình thấy, chi tiết cos có thể thay đổi lúc nhập, thép thay đổi lúc nhập, số dim thay đổi lúc nhập, ghi chú thay đổi lúc nhập....Vậy thì thà bạn làm cái Block thuộc tính động hoặc cóp hẳn sang mà stretch, edit còn nhàn hơn, lisp liếc làm j nữa ^^

 

cái lisp này mà có thì thời gian vẽ 1 cái dầm sẽ rất là nhanh, khi qua máy tính khác làm chỉ việc copy cái lisp sang mà không cần phải copy quá nhiều thứ.

thời gian thao tác trên block, hay copy và stretch và sửa text so với cái lisp thì lisp nhanh hơn nhiều.

hồi giờ toàn làm vậy, thấy hơi chậm và bất tiện nên nhờ mấy anh giúp dùm. rất mong các anh dành chút thời gian rảnh giúp đỡ!

em xin cảm ơ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
lp_hai    207

cái lisp này mà có thì thời gian vẽ 1 cái dầm sẽ rất là nhanh, khi qua máy tính khác làm chỉ việc copy cái lisp sang mà không cần phải copy quá nhiều thứ.

thời gian thao tác trên block, hay copy và stretch và sửa text so với cái lisp thì lisp nhanh hơn nhiều.

hồi giờ toàn làm vậy, thấy hơi chậm và bất tiện nên nhờ mấy anh giúp dùm. rất mong các anh dành chút thời gian rảnh giúp đỡ!

em xin cảm ơn!

sau mấy ngày cặm cụi mình viết theo ý bạn đây:

(defun c:mc(/ ten p1 p2 y1 x1 cd rd nt nd pit pig pid cao tl bl tzo tt td lt lst l20t tzo olds pp ptl olay)
 (setq p1 (getpoint "\nchon diem 1: ")
       olds (getvar "osmode")
cd (getdist "\nchieu cao dam: ")
rd (getdist "\nchieu rong dam: ")
nt (getint "\nso luong thep tren: ")
pit (getstring "\nnhap duong kinh thep tren: ")
nd (getint "\nso luong thep duoi: ")
pid (getstring "\nnhap duong kinh thep duoi: ")
pig (getstring "\nnhap duong kinh thep dai: ")
cao (getstring "\nnhap cao do dam: ")
tl (getint "\nnhap ty le 1: ")
ten (getstring "\nnhap ten mat cat: ")
x1 (car p1)
y1 (cadr p1)
bl (getvar "dimdli")
tzo (getvar "textsize")
       olay (getvar "clayer")
)
 (setvar "osmode" 0)
 (setq p2 (list (+ x1 rd) (+ y1 cd))
)
 (command "layer" "n" "beam" "c" "2" "beam" "l" "continuous" "beam" "s" "beam" "")
 (command "rectang" p1 p2)
 (command "layer" "n" "rbar" "c" "7" "rbar" "l" "continuous" "rbar" "s" "rbar" "")
 (command "offset" "20" (entlast) (list (+ x1 20) (+ y1 20)) "")
 (command "fillet" "r" "10")
 (command "fillet" "p" "l")
 (command "change" "l" "" "p" "LA" "rbar" "")
 (command "line" (list (+ x1 37.0711) (- (+ y1 cd) 22.9289)) "@40<-45" "")
 (command "offset" "20" (entlast) p1 "")
 (command "layer" "n" "steel" "c" "2" "steel" "l" "continuous" "steel" "s" "steel" "")
 (command "donut" "0" "20" (list (+ x1 30) (-(+ y1 cd) 30)) "")
 (setq tt (entlast))
 (command "copy" tt "" p1 (strcat"@0," (rtos (- 60 cd)))"")
 (setq td (entlast))
 (command "array" tt "" "r" "1" nt (/ (- rd 60) (- nt 1)))
 (command "array" td "" "r" "1" nd (/ (- rd 60) (- nd 1)))
 (command "layer" "n" "dim" "c" "7" "dim" "l" "continuous" "dim" "s" "dim" "")
 (command "dimlinear" p1 (list x1 (cadr p2)) (strcat"@-" (rtos(* bl tl))",0"))
 (command "dimlinear" p2 (list x1 (cadr p2)) (strcat"@0," (rtos(* bl tl))))
 (command "solid" (list (- x1 (* 6 tl)) (cadr p2)) (list (- x1 (* 3.5 tl)) (+(cadr p2) (* tl 2.5))) (list (- x1 (* 8.5 tl)) (+(cadr p2) (* tl 2.5))) "" "")
 (setvar "textsize" (* tl 2.5))
 (command "layer" "n" "text 2.5" "c" "2" "text 2.5" "l" "continuous" "text 2.5" "s" "text 2.5" "")
 (command "text" (list (- x1 (* 10.5 tl)) (+(cadr p2) (* tl 3))) "" "" cao)
 (command "layer" "s" "dim" "")
 (command "qleader" (list (+ x1 30) (-(cadr p2)30)) (strcat "@0," (rtos (* 4 tl))) (strcat "@" (rtos (+ rd (* 6 tl))) ",0") nil)
 (setq lt (entlast)
l20t (nth 20(entget lt))
)
 (repeat (- nt 1)
   (command "copy" lt "" p1 (strcat "@" (rtos (/ (- rd 60) (- nt 1))) ",0") "")
   (setq lt (entlast)
  lst (entget lt))
   (setq lst (subst l20t (nth 20 lst) lst))
   (entmod lst)
   )
 (command "layer" "s" "text 2.5" "")
 (command "text" "j" "ML" (list (+ (cadr l20t)(* 1.25 tl)) (caddr l20t) (cadddr l20t)) "" "" (strcat (rtos nt) "%%c" pit))
 (command "layer" "s" "dim" "")
 (command "qleader" (list (+ x1 30) (+ y1 30)) (strcat "@0,-" (rtos (* 4 tl))) (strcat "@" (rtos (+ rd (* 6 tl))) ",0") nil)
(setq lt (entlast)
l20t (nth 20(entget lt))
)
 (repeat (- nd 1)
   (command "copy" lt "" p1 (strcat "@" (rtos (/ (- rd 60) (- nd 1))) ",0") "")
   (setq lt (entlast)
  lst (entget lt))
   (setq lst (subst l20t (nth 20 lst) lst))
   (entmod lst)
   )
 (setvar "clayer" "text 2.5")
 (command "text" "j" "ML" (list (+ (cadr l20t)(* 1.25 tl)) (caddr l20t) (cadddr l20t)) "" "" (strcat (rtos nd) "%%c" pid))
 (command "layer" "s" "dim" "")
 (command "qleader" (list (-(car p2)20) (/(+ y1 (cadr p2)) 2)) (list (cadr l20t) (/(+ y1 (cadr p2))2)) nil)
 (setvar "clayer" "text 2.5")  
 (command "text" "j" "ML" (list (+ (cadr l20t)(* 1.25 tl)) (/(+ y1 (cadr p2))2)) "" "" (strcat "%%c" pig))
 (setq pp (list (/(+ x1 (car p2))2) (- y1 (* 14 tl))))
 (setq ptl (list (car pp) (-(cadr pp)(* 3.5 tl))))
 (setvar "clayer" "text 2.5")
 (command "text" "j" "C" ptl "" "" (strcat "TL: " (rtos tl)))
 (command "layer" "n" "text 5.0" "c" "1" "text 5.0" "l" "continuous" "text 5.0" "s" "text 5.0" "")
 (setvar "textsize" (* tl 5))
 (command "text" "j" "BC" pp "" "" (strcat "%%uMC " ten))  
 (setvar "osmode" olds)
 (setvar "textsize" tzo)
 (setvar "clayer" olay)
 (princ)  
 )

bạn chú ý là lúc nhập tỷ lệ VD tl là 1/20 bạn chỉ nhập 20 thôi

còn text là theo ý bạn mình cho text có chiều cao là 2.5 và 5

màu layer là mình tạo theo mẫu của bạn.

khi bạn muốn thể hiện mc ở tl nào thì bạn phải chuyển dim sang tl tương ứng trước cũng như bạn phải chọn text stlye hiện hành. và trong dim phải có Baseline (như ban đầu bạn yêu cầu)

  • 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
tandai1102    0

sau mấy ngày cặm cụi mình viết theo ý bạn đây:

(defun c:mc(/ ten p1 p2 y1 x1 cd rd nt nd pit pig pid cao tl bl tzo tt td lt lst l20t tzo olds pp ptl olay)
 (setq p1 (getpoint "\nchon diem 1: ")
       olds (getvar "osmode")
cd (getdist "\nchieu cao dam: ")
rd (getdist "\nchieu rong dam: ")
nt (getint "\nso luong thep tren: ")
pit (getstring "\nnhap duong kinh thep tren: ")
nd (getint "\nso luong thep duoi: ")
pid (getstring "\nnhap duong kinh thep duoi: ")
pig (getstring "\nnhap duong kinh thep dai: ")
cao (getstring "\nnhap cao do dam: ")
tl (getint "\nnhap ty le 1: ")
ten (getstring "\nnhap ten mat cat: ")
x1 (car p1)
y1 (cadr p1)
bl (getvar "dimdli")
tzo (getvar "textsize")
       olay (getvar "clayer")
)
 (setvar "osmode" 0)
 (setq p2 (list (+ x1 rd) (+ y1 cd))
)
 (command "layer" "n" "beam" "c" "2" "beam" "l" "continuous" "beam" "s" "beam" "")
 (command "rectang" p1 p2)
 (command "layer" "n" "rbar" "c" "7" "rbar" "l" "continuous" "rbar" "s" "rbar" "")
 (command "offset" "20" (entlast) (list (+ x1 20) (+ y1 20)) "")
 (command "fillet" "r" "10")
 (command "fillet" "p" "l")
 (command "change" "l" "" "p" "LA" "rbar" "")
 (command "line" (list (+ x1 37.0711) (- (+ y1 cd) 22.9289)) "@40<-45" "")
 (command "offset" "20" (entlast) p1 "")
 (command "layer" "n" "steel" "c" "2" "steel" "l" "continuous" "steel" "s" "steel" "")
 (command "donut" "0" "20" (list (+ x1 30) (-(+ y1 cd) 30)) "")
 (setq tt (entlast))
 (command "copy" tt "" p1 (strcat"@0," (rtos (- 60 cd)))"")
 (setq td (entlast))
 (command "array" tt "" "r" "1" nt (/ (- rd 60) (- nt 1)))
 (command "array" td "" "r" "1" nd (/ (- rd 60) (- nd 1)))
 (command "layer" "n" "dim" "c" "7" "dim" "l" "continuous" "dim" "s" "dim" "")
 (command "dimlinear" p1 (list x1 (cadr p2)) (strcat"@-" (rtos(* bl tl))",0"))
 (command "dimlinear" p2 (list x1 (cadr p2)) (strcat"@0," (rtos(* bl tl))))
 (command "solid" (list (- x1 (* 6 tl)) (cadr p2)) (list (- x1 (* 3.5 tl)) (+(cadr p2) (* tl 2.5))) (list (- x1 (* 8.5 tl)) (+(cadr p2) (* tl 2.5))) "" "")
 (setvar "textsize" (* tl 2.5))
 (command "layer" "n" "text 2.5" "c" "2" "text 2.5" "l" "continuous" "text 2.5" "s" "text 2.5" "")
 (command "text" (list (- x1 (* 10.5 tl)) (+(cadr p2) (* tl 3))) "" "" cao)
 (command "layer" "s" "dim" "")
 (command "qleader" (list (+ x1 30) (-(cadr p2)30)) (strcat "@0," (rtos (* 4 tl))) (strcat "@" (rtos (+ rd (* 6 tl))) ",0") nil)
 (setq lt (entlast)
l20t (nth 20(entget lt))
)
 (repeat (- nt 1)
   (command "copy" lt "" p1 (strcat "@" (rtos (/ (- rd 60) (- nt 1))) ",0") "")
   (setq lt (entlast)
  lst (entget lt))
   (setq lst (subst l20t (nth 20 lst) lst))
   (entmod lst)
   )
 (command "layer" "s" "text 2.5" "")
 (command "text" "j" "ML" (list (+ (cadr l20t)(* 1.25 tl)) (caddr l20t) (cadddr l20t)) "" "" (strcat (rtos nt) "%%c" pit))
 (command "layer" "s" "dim" "")
 (command "qleader" (list (+ x1 30) (+ y1 30)) (strcat "@0,-" (rtos (* 4 tl))) (strcat "@" (rtos (+ rd (* 6 tl))) ",0") nil)
(setq lt (entlast)
l20t (nth 20(entget lt))
)
 (repeat (- nd 1)
   (command "copy" lt "" p1 (strcat "@" (rtos (/ (- rd 60) (- nd 1))) ",0") "")
   (setq lt (entlast)
  lst (entget lt))
   (setq lst (subst l20t (nth 20 lst) lst))
   (entmod lst)
   )
 (setvar "clayer" "text 2.5")
 (command "text" "j" "ML" (list (+ (cadr l20t)(* 1.25 tl)) (caddr l20t) (cadddr l20t)) "" "" (strcat (rtos nd) "%%c" pid))
 (command "layer" "s" "dim" "")
 (command "qleader" (list (-(car p2)20) (/(+ y1 (cadr p2)) 2)) (list (cadr l20t) (/(+ y1 (cadr p2))2)) nil)
 (setvar "clayer" "text 2.5")  
 (command "text" "j" "ML" (list (+ (cadr l20t)(* 1.25 tl)) (/(+ y1 (cadr p2))2)) "" "" (strcat "%%c" pig))
 (setq pp (list (/(+ x1 (car p2))2) (- y1 (* 14 tl))))
 (setq ptl (list (car pp) (-(cadr pp)(* 3.5 tl))))
 (setvar "clayer" "text 2.5")
 (command "text" "j" "C" ptl "" "" (strcat "TL: " (rtos tl)))
 (command "layer" "n" "text 5.0" "c" "1" "text 5.0" "l" "continuous" "text 5.0" "s" "text 5.0" "")
 (setvar "textsize" (* tl 5))
 (command "text" "j" "BC" pp "" "" (strcat "%%uMC " ten))  
 (setvar "osmode" olds)
 (setvar "textsize" tzo)
 (setvar "clayer" olay)
 (princ)  
 )

bạn chú ý là lúc nhập tỷ lệ VD tl là 1/20 bạn chỉ nhập 20 thôi

còn text là theo ý bạn mình cho text có chiều cao là 2.5 và 5

màu layer là mình tạo theo mẫu của bạn.

khi bạn muốn thể hiện mc ở tl nào thì bạn phải chuyển dim sang tl tương ứng trước cũng như bạn phải chọn text stlye hiện hành. và trong dim phải có Baseline (như ban đầu bạn yêu cầu)

 

 

 

cảm ơn anh lp_hai nhiều lắm!

 

cái lisp vẫn còn chỗ này khi ghi chú bị sai. anh xem rồi sửa lại dùm em chút nha!

 

28-07-20058-22-22AM.jpg?t=1311816210

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
lp_hai    207

cảm ơn anh lp_hai nhiều lắm!

 

cái lisp vẫn còn chỗ này khi ghi chú bị sai. anh xem rồi sửa lại dùm em chút nha!

 

đã sửa rồi đó bạn

(defun c:mc(/ dz ten p1 p2 y1 x1 cd rd nt nd pit pig pid cao tl bl tzo tt td lt lst l20t tzo olds pp ptl olay)
 (setq p1 (getpoint "\nchon diem 1: ")
       olds (getvar "osmode")
cd (getdist "\nchieu cao dam: ")
rd (getdist "\nchieu rong dam: ")
nt (getint "\nso luong thep tren: ")
pit (getstring "\nnhap duong kinh thep tren: ")
nd (getint "\nso luong thep duoi: ")
pid (getstring "\nnhap duong kinh thep duoi: ")
pig (getstring "\nnhap duong kinh thep dai: ")
cao (getstring "\nnhap cao do dam: ")
tl (getint "\nnhap ty le 1: ")
ten (getstring "\nnhap ten mat cat: ")
x1 (car p1)
y1 (cadr p1)
bl (getvar "dimdli")
tzo (getvar "textsize")
       olay (getvar "clayer")
       dz (getvar "dimzin")
)
 (setvar "dimzin" 8)  
 (setvar "osmode" 0)
 (setq p2 (list (+ x1 rd) (+ y1 cd))
)
 (command "layer" "n" "beam" "c" "2" "beam" "l" "continuous" "beam" "s" "beam" "")
 (command "rectang" p1 p2)
 (command "layer" "n" "rbar" "c" "7" "rbar" "l" "continuous" "rbar" "s" "rbar" "")
 (command "offset" "20" (entlast) (list (+ x1 20) (+ y1 20)) "")
 (command "fillet" "r" "10")
 (command "fillet" "p" "l")
 (command "change" "l" "" "p" "LA" "rbar" "")
 (command "line" (list (+ x1 37.0711) (- (+ y1 cd) 22.9289)) "@40<-45" "")
 (command "offset" "20" (entlast) p1 "")
 (command "layer" "n" "steel" "c" "2" "steel" "l" "continuous" "steel" "s" "steel" "")
 (command "donut" "0" "20" (list (+ x1 30) (-(+ y1 cd) 30)) "")
 (setq tt (entlast))
 (command "copy" tt "" p1 (strcat"@0," (rtos (- 60 cd)))"")
 (setq td (entlast))
 (command "array" tt "" "r" "1" nt (/ (- rd 60) (- nt 1)))
 (command "array" td "" "r" "1" nd (/ (- rd 60) (- nd 1)))
 (command "layer" "n" "dim" "c" "7" "dim" "l" "continuous" "dim" "s" "dim" "")
 (command "dimlinear" p1 (list x1 (cadr p2)) (strcat"@-" (rtos(* bl tl))",0"))
 (command "dimlinear" p2 (list x1 (cadr p2)) (strcat"@0," (rtos(* bl tl))))
 (command "solid" (list (- x1 (* bl tl)) (cadr p2)) (list (- x1 (* (- bl 2.5) tl)) (+(cadr p2) (* tl 2.5))) (list (- x1 (* (+ bl 2.5) tl)) (+(cadr p2) (* tl 2.5))) "" "")
 (setvar "textsize" (* tl 2.5))
 (command "layer" "n" "text 2.5" "c" "2" "text 2.5" "l" "continuous" "text 2.5" "s" "text 2.5" "")
 (command "text" (list (- x1 (* (+ bl 4.5) tl)) (+(cadr p2) (* tl 3))) "" "" cao)
 (command "layer" "s" "dim" "")
 (command "qleader" (list (+ x1 30) (-(cadr p2)30)) (strcat "@0," (rtos (* 4 tl))) (strcat "@" (rtos (+ rd (* 6 tl))) ",0") nil)
 (setq lt (entlast)
l20t (nth 20(entget lt))
)
 (repeat (- nt 1)
   (command "copy" lt "" p1 (strcat "@" (rtos (/ (- rd 60) (- nt 1))) ",0") "")
   (setq lt (entlast)
  lst (entget lt))
   (setq lst (subst l20t (nth 20 lst) lst))
   (entmod lst)
   )
 (command "layer" "s" "text 2.5" "")
 (command "text" "j" "ML" (list (+ (cadr l20t)(* 1.25 tl)) (caddr l20t) (cadddr l20t)) "" "" (strcat (rtos nt) "%%c" pit))
 (command "layer" "s" "dim" "")
 (command "qleader" (list (+ x1 30) (+ y1 30)) (strcat "@0,-" (rtos (* 4 tl))) (strcat "@" (rtos (+ rd (* 6 tl))) ",0") nil)
(setq lt (entlast)
l20t (nth 20(entget lt))
)
 (repeat (- nd 1)
   (command "copy" lt "" p1 (strcat "@" (rtos (/ (- rd 60) (- nd 1))) ",0") "")
   (setq lt (entlast)
  lst (entget lt))
   (setq lst (subst l20t (nth 20 lst) lst))
   (entmod lst)
   )
 (setvar "clayer" "text 2.5")
 (command "text" "j" "ML" (list (+ (cadr l20t)(* 1.25 tl)) (caddr l20t) (cadddr l20t)) "" "" (strcat (rtos nd) "%%c" pid))
 (command "layer" "s" "dim" "")
 (command "qleader" (list (-(car p2)20) (/(+ y1 (cadr p2)) 2)) (list (cadr l20t) (/(+ y1 (cadr p2))2)) nil)
 (setvar "clayer" "text 2.5")  
 (command "text" "j" "ML" (list (+ (cadr l20t)(* 1.25 tl)) (/(+ y1 (cadr p2))2)) "" "" (strcat "%%c" pig))
 (setq pp (list (/(+ x1 (car p2))2) (- y1 (* 14 tl))))
 (setq ptl (list (car pp) (-(cadr pp)(* 3.5 tl))))
 (setvar "clayer" "text 2.5")
 (command "text" "j" "C" ptl "" "" (strcat "TL 1:" (rtos tl)))
 (command "layer" "n" "text 5.0" "c" "1" "text 5.0" "l" "continuous" "text 5.0" "s" "text 5.0" "")
 (setvar "textsize" (* tl 5))
 (command "text" "j" "BC" pp "" "" (strcat "%%uMC " ten))  
 (setvar "osmode" olds)
 (setvar "textsize" tzo)
 (setvar "clayer" olay)
 (setvar "dimzin" dz)
 (princ)  
 )

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
tandai1102    0

hihi! được voi đòi tiên.

em muốn các anh phát triển cái lisp này lên 1 bậc, yêu cầu chắc là khó hơn, nhờ các anh em giúp. chắc là có thể dựa trên cái lisp cũ viết lại được.

 

28-07-20058-30-01AM.jpg?t=1311822106

 

 

trong đó:

- tất cả như cũ

- có thể khai báo thêm 2 lớp thép, có thể ở lớp trên hoặc ở lớp dưới hoặc cùng lúc 2 lớp.

- có thể thêm cây cốt giá có thể thay đổi đường kinh được lúc nhập giống thanh thép khác

 

 

em xin cảm ơn các anh rất nhiều!

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
lp_hai    207

Không hỏi nữa, nhắc nhở bạn tandai1102 hãy post file lên :angry:

bác Ketxu bớt nóng tính cái nà. :rolleyes:

@tandai1102 mình thấy yêu cầu của bạn nên nhờ mấy pác tạo block dynamic tiện hơn.

còn nếu sửa lại lisp này thì mình e là phức tạp vã lại vì yêu cầu ban đầu của bạn đơn giản nên mình đặt biến hơi tùm lum. sợ mấy pác ko kiểm soát dc mà sửa cho 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
tandai1102    0

28-07-200510-45-46AM.jpg?t=1311825173

 

đây là link file:

MC DAM

 

yêu cầu sau này hơi khó, nếu không được cũng k sao, có cái lisp kia vẽ ra rồi copy sửa lại cũng được.

em xin cảm ơn các anh nhiều lắm!

 

hihi! anh ketxu nóng tính quá!

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

đã sửa rồi đó bạn

(defun c:mc(/ dz ten p1 p2 y1 x1 cd rd nt nd pit pig pid cao tl bl tzo tt td lt lst l20t tzo olds pp ptl olay)
 (setq p1 (getpoint "\nchon diem 1: ")
       olds (getvar "osmode")
cd (getdist "\nchieu cao dam: ")
rd (getdist "\nchieu rong dam: ")
nt (getint "\nso luong thep tren: ")
pit (getstring "\nnhap duong kinh thep tren: ")
nd (getint "\nso luong thep duoi: ")
pid (getstring "\nnhap duong kinh thep duoi: ")
pig (getstring "\nnhap duong kinh thep dai: ")
cao (getstring "\nnhap cao do dam: ")
tl (getint "\nnhap ty le 1: ")
ten (getstring "\nnhap ten mat cat: ")
x1 (car p1)
y1 (cadr p1)
bl (getvar "dimdli")
tzo (getvar "textsize")
       olay (getvar "clayer")
       dz (getvar "dimzin")
)
 (setvar "dimzin" 8)  
 (setvar "osmode" 0)
 (setq p2 (list (+ x1 rd) (+ y1 cd))
)
 (command "layer" "n" "beam" "c" "2" "beam" "l" "continuous" "beam" "s" "beam" "")
 (command "rectang" p1 p2)
 (command "layer" "n" "rbar" "c" "7" "rbar" "l" "continuous" "rbar" "s" "rbar" "")
 (command "offset" "20" (entlast) (list (+ x1 20) (+ y1 20)) "")
 (command "fillet" "r" "10")
 (command "fillet" "p" "l")
 (command "change" "l" "" "p" "LA" "rbar" "")
 (command "line" (list (+ x1 37.0711) (- (+ y1 cd) 22.9289)) "@40<-45" "")
 (command "offset" "20" (entlast) p1 "")
 (command "layer" "n" "steel" "c" "2" "steel" "l" "continuous" "steel" "s" "steel" "")
 (command "donut" "0" "20" (list (+ x1 30) (-(+ y1 cd) 30)) "")
 (setq tt (entlast))
 (command "copy" tt "" p1 (strcat"@0," (rtos (- 60 cd)))"")
 (setq td (entlast))
 (command "array" tt "" "r" "1" nt (/ (- rd 60) (- nt 1)))
 (command "array" td "" "r" "1" nd (/ (- rd 60) (- nd 1)))
 (command "layer" "n" "dim" "c" "7" "dim" "l" "continuous" "dim" "s" "dim" "")
 (command "dimlinear" p1 (list x1 (cadr p2)) (strcat"@-" (rtos(* bl tl))",0"))
 (command "dimlinear" p2 (list x1 (cadr p2)) (strcat"@0," (rtos(* bl tl))))
 (command "solid" (list (- x1 (* bl tl)) (cadr p2)) (list (- x1 (* (- bl 2.5) tl)) (+(cadr p2) (* tl 2.5))) (list (- x1 (* (+ bl 2.5) tl)) (+(cadr p2) (* tl 2.5))) "" "")
 (setvar "textsize" (* tl 2.5))
 (command "layer" "n" "text 2.5" "c" "2" "text 2.5" "l" "continuous" "text 2.5" "s" "text 2.5" "")
 (command "text" (list (- x1 (* (+ bl 4.5) tl)) (+(cadr p2) (* tl 3))) "" "" cao)
 (command "layer" "s" "dim" "")
 (command "qleader" (list (+ x1 30) (-(cadr p2)30)) (strcat "@0," (rtos (* 4 tl))) (strcat "@" (rtos (+ rd (* 6 tl))) ",0") nil)
 (setq lt (entlast)
l20t (nth 20(entget lt))
)
 (repeat (- nt 1)
   (command "copy" lt "" p1 (strcat "@" (rtos (/ (- rd 60) (- nt 1))) ",0") "")
   (setq lt (entlast)
 	lst (entget lt))
   (setq lst (subst l20t (nth 20 lst) lst))
   (entmod lst)
   )
 (command "layer" "s" "text 2.5" "")
 (command "text" "j" "ML" (list (+ (cadr l20t)(* 1.25 tl)) (caddr l20t) (cadddr l20t)) "" "" (strcat (rtos nt) "%%c" pit))
 (command "layer" "s" "dim" "")
 (command "qleader" (list (+ x1 30) (+ y1 30)) (strcat "@0,-" (rtos (* 4 tl))) (strcat "@" (rtos (+ rd (* 6 tl))) ",0") nil)
(setq lt (entlast)
l20t (nth 20(entget lt))
)
 (repeat (- nd 1)
   (command "copy" lt "" p1 (strcat "@" (rtos (/ (- rd 60) (- nd 1))) ",0") "")
   (setq lt (entlast)
 	lst (entget lt))
   (setq lst (subst l20t (nth 20 lst) lst))
   (entmod lst)
   )
 (setvar "clayer" "text 2.5")
 (command "text" "j" "ML" (list (+ (cadr l20t)(* 1.25 tl)) (caddr l20t) (cadddr l20t)) "" "" (strcat (rtos nd) "%%c" pid))
 (command "layer" "s" "dim" "")
 (command "qleader" (list (-(car p2)20) (/(+ y1 (cadr p2)) 2)) (list (cadr l20t) (/(+ y1 (cadr p2))2)) nil)
 (setvar "clayer" "text 2.5")  
 (command "text" "j" "ML" (list (+ (cadr l20t)(* 1.25 tl)) (/(+ y1 (cadr p2))2)) "" "" (strcat "%%c" pig))
 (setq pp (list (/(+ x1 (car p2))2) (- y1 (* 14 tl))))
 (setq ptl (list (car pp) (-(cadr pp)(* 3.5 tl))))
 (setvar "clayer" "text 2.5")
 (command "text" "j" "C" ptl "" "" (strcat "TL 1:" (rtos tl)))
 (command "layer" "n" "text 5.0" "c" "1" "text 5.0" "l" "continuous" "text 5.0" "s" "text 5.0" "")
 (setvar "textsize" (* tl 5))
 (command "text" "j" "BC" pp "" "" (strcat "%%uMC " ten))  
 (setvar "osmode" olds)
 (setvar "textsize" tzo)
 (setvar "clayer" olay)
 (setvar "dimzin" dz)
 (princ)  
 )

anh giúp em chuyển cái mặt cắt này sang màu như của em giúp em vơi anh lp_Hai các thông số vẫn để như cũ, cảm ơn anh nhiều, mong sớm hồi âm của anh. Em thấy lisp này hay lắm nhưng màu thì em chưa ưng ý mà ko biết làm sao chuyển cho tiện. Mong anh giúp đỡ em mới tham gia diễn đàn lần đầu mong anh chỉ bảo thêm. Cảm ơn anh

http://www.cadviet.c...nh_lp_hai_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

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  

×