Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
tuvanthietke.hcm

Tổng hợp LISP và nhờ các cao thủ CHỈNH SỬA

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

Mình có 1 lisp vẽ MC cột nhưng nó lại hơi xấu, ai có thể sửa nó bo tròn đẹp hơn như mình không.

 

Thanks

 

http://www.mediafire.com/?cw390pz7qtce27t

 

Pic: 1117201095533pm.png

Mình sửa cho bạn đây. Bạn xem có vừa ý không nhé.

;;LE QUOC VIET 2/8/2002
; CHUONG TRINH VE MC COT
(defun c:MCC (/ A B C BV D E D1 E1 F P1 P2)
       (vl-load-com)
(setq oldosmode (getvar "osmode"))
       (setvar "osmode" 0)
       (setq 
	A (getreal "\nBe rong mc cot:")
	B (getreal "\nBe dai mc cot:")
	BV (getreal "\nLop bv mc cot:")
	D (getint "\nS.luong thep ngang mc cot:")
	E (getint "\nS.luong thep doc mc cot:")
	P1 (getpoint  "\nDiem chen:")
               F (* BV 0.7)
		D1 (/ (- A (* 2 BV) (* F 2)) (- D 1))
	E1 (/ (- B (* 2 BV) (* F 2)) (- E 1))
       ); end of setq
(command ".rectangle" "f" "0" P1 (list (+ (car P1) A) (+ (cadr P1) :iluvyousmiley:) ""
	".offset" BV (ssget P1) (list (+ (car P1) BV) (+ (cadr P1) BV)) ""
       )
       (setq ver (acet-geom-vertex-list (entlast)))
       (entdel (entlast))
       (command ".rectangle" "f" (* bv 0.7) (car ver) (caddr ver)
        ".change" (entlast) "" "P" "C" 1 ""
       ); end of command
       (setq 	P2 (list (+ (car P1) BV F) (+ (cadr P1) BV F)))
    	(repeat D 
	(command ".donut" 0 F P2 ^C)
       	(setq P2 (polar P2 0 D1))
     	); end of repeat1
       (setq 	P2 (list (+ (car P1) BV F) (+ (cadr P1) (- B BV F) )))
    	(repeat D 
	(command ".donut" 0 F P2 ^C)
       	(setq P2 (polar P2 0 D1))
     	); end of repeat2
       (setq 	P2 (list (+ (car P1) BV F) (+ (cadr P1) BV F)))
       (repeat (- E 2)
      		(setq P2 (polar P2 (/ pi 2)  E1))
	(command ".donut" 0 F P2 ^C)
       ); end of repeat3
 	(setq 	P2 (list (+ (car P1) (- A BV F)) (+ (cadr P1) BV F)))
	(repeat (- E 2)
      		(setq P2 (polar P2 (/ pi 2)  E1))
	(command ".donut" 0 F P2 ^C)
       ); end of repeat3
(setvar "osmode" oldosmode)
); end of ve mc cot

  • Vote tăng 4

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
Mình sửa cho bạn đây. Bạn xem có vừa ý không nhé.

Hình như Tú dùng lệnh rectange với tham số F xong thì ko trả lại nguyên trạng cho USER thì phải sau này dùng lệnh rectange sẽ bọ bo góc miết dậy đó. Mình nghỉ nên vẽ rectange xong dùng lệnh fillet với lựa chọn p thì ổ hơn vì mình lưu và trả được biến bán kính của lệnh fillet

  • 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
Mình sửa cho bạn đây. Bạn xem có vừa ý không nhé.

;;LE QUOC VIET 2/8/2002
; CHUONG TRINH VE MC COT
(defun c:MCC (/ A B C BV D E D1 E1 F P1 P2)
       (vl-load-com)
(setq oldosmode (getvar "osmode"))
       (setvar "osmode" 0)
       (setq 
	A (getreal "\nBe rong mc cot:")
	B (getreal "\nBe dai mc cot:")
	BV (getreal "\nLop bv mc cot:")
	D (getint "\nS.luong thep ngang mc cot:")
	E (getint "\nS.luong thep doc mc cot:")
	P1 (getpoint  "\nDiem chen:")
               F (* BV 0.7)
		D1 (/ (- A (* 2 BV) (* F 2)) (- D 1))
	E1 (/ (- B (* 2 BV) (* F 2)) (- E 1))
       ); end of setq
(command ".rectangle" "f" "0" P1 (list (+ (car P1) A) (+ (cadr P1) :iluvyousmiley:) ""
	".offset" BV (ssget P1) (list (+ (car P1) BV) (+ (cadr P1) BV)) ""
       )
       (setq ver (acet-geom-vertex-list (entlast)))
       (entdel (entlast))
       (command ".rectangle" "f" (* bv 0.7) (car ver) (caddr ver)
        ".change" (entlast) "" "P" "C" 1 ""
       ); end of command
       (setq 	P2 (list (+ (car P1) BV F) (+ (cadr P1) BV F)))
    	(repeat D 
	(command ".donut" 0 F P2 ^C)
       	(setq P2 (polar P2 0 D1))
     	); end of repeat1
       (setq 	P2 (list (+ (car P1) BV F) (+ (cadr P1) (- B BV F) )))
    	(repeat D 
	(command ".donut" 0 F P2 ^C)
       	(setq P2 (polar P2 0 D1))
     	); end of repeat2
       (setq 	P2 (list (+ (car P1) BV F) (+ (cadr P1) BV F)))
       (repeat (- E 2)
      		(setq P2 (polar P2 (/ pi 2)  E1))
	(command ".donut" 0 F P2 ^C)
       ); end of repeat3
 	(setq 	P2 (list (+ (car P1) (- A BV F)) (+ (cadr P1) BV F)))
	(repeat (- E 2)
      		(setq P2 (polar P2 (/ pi 2)  E1))
	(command ".donut" 0 F P2 ^C)
       ); end of repeat3
(setvar "osmode" oldosmode)
); end of ve mc cot

 

Không thể hay hơn

 

Tiếp là lisp vẽ mặt cắt ngang dầm http://www.mediafire.com/?vf5jd4ik9p50sb8

 

11192010101539pm.png

 

À tiện thể cho hỏi luôn làm sao chèn file lên diễn đàn

 

Chỉnh giúp lisp đẹp như hình vẽ

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
À tiện thể cho hỏi luôn làm sao chèn file lên diễn đàn

Để up file lên thì bạn đọc trong topic này. http://www.cadviet.com/forum/index.php?showtopic=101

up code thì tham khảo ở đây: http://www.cadviet.com/forum/index.php?showtopic=11382

  • 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
Không thể hay hơn

 

Tiếp là lisp vẽ mặt cắt ngang dầm http://www.mediafire.com/?vf5jd4ik9p50sb8

 

11192010101539pm.png

 

À tiện thể cho hỏi luôn làm sao chèn file lên diễn đàn

 

Chỉnh giúp lisp đẹp như hình vẽ

Mình sửa cho bạn nè

;;LE QUOC VIET ; 2/8/2002
; CHUONG TRINH VE MC DAM
(defun c:MCD (/ A B C BV D E D1 E1 F P1 P2 S)
(setq oldosmode (getvar "osmode"))
       (setvar "osmode" 0)
       (setq 
	A (getreal "\nBe rong mc DAM:")
	B (getreal "\nBe dai mc DAM:")
	S (getreal "\nBe day san:")
	BV (getreal "\nLop bv mc DAM:")
	D (getint "\nS.luong thep ngang mc DAM:")
	E (getint "\nS.luong thep doc mc DAM:")
	P1 (getpoint  "\nDiem chen:")
               F (/ A 20)
		D1 (/ (- A (* 2 BV) (* F 2)) (- D 1))
	E1 (/ (- B (* 2 BV) (* F 2)) (- E 1))
       ); end of setq
(command ".rectangle" "f" (* bv 0.5) (list (+ (car P1) BV) (+ (cadr P1) BV)) 
			(list (+ (car P1) (- A BV)) (+ (cadr P1) (- B BV))) 				"" "f" "0" ""
	".change" "L" "" "P" "C" 1 ""
	".pline" (Polar P1 0 (/ A 2)) "W" 0 0 	
				P1
(setq P11 (list (car P1) (+ (cadr P1) (- B S))))
(setq P11 (list (- (car P11) (* 2 S)) (cadr P11)))
(list (car P11) (- (cadr P11) (* 0.4 S)))
(setq P11 (list (car P11) (+ (cadr P11) (* 0.4 S))))
(setq P11 (list (- (car P11) (* 0.4 S)) (cadr P11)))
(setq P11 (list (+ (car P11) (* 0.8 S)) (+ (cadr P11) (* 0.2 S))))
(setq P11 (list (- (car P11) (* 0.4 S)) (cadr P11)))
(list (car P11) (+ (cadr P11) (* 0.8 S)))
(setq P11 (list (car P11) (+ (cadr P11) (* 0.4 S))))
(setq P11 (list (+ (car P11) (* 2 S) (/ A 2)) (cadr P11)))
                          ""
	".mirror" "L" "" (Polar P1 0 (/ A 2)) P11 ""
               ".pedit" "l" "j" "p" "l" "" ""

       ); end of command
       (setq 	P2 (list (+ (car P1) BV F) (+ (cadr P1) BV F)))
    	(repeat D 
	(command ".donut" 0 F P2 ^C)
       	(setq P2 (polar P2 0 D1))
     	); end of repeat1
       (setq 	P2 (list (+ (car P1) BV F) (+ (cadr P1) (- B BV F) )))
    	(repeat D 
	(command ".donut" 0 F P2 ^C)
       	(setq P2 (polar P2 0 D1))
     	); end of repeat2
       (setq 	P2 (list (+ (car P1) BV F) (+ (cadr P1) BV F)))
       (repeat (- E 2)
      		(setq P2 (polar P2 (/ pi 2)  E1))
	(command ".donut" 0 F P2 ^C)
       ); end of repeat3
 	(setq 	P2 (list (+ (car P1) (- A BV F)) (+ (cadr P1) BV F)))
	(repeat (- E 2)
      		(setq P2 (polar P2 (/ pi 2)  E1))
	(command ".donut" 0 F P2 ^C)
       ); end of repeat3
(setvar "osmode" oldosmode)
)

  • 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
Mình sửa cho bạn nè

;;LE QUOC VIET ; 2/8/2002
; CHUONG TRINH VE MC DAM
(defun c:MCD (/ A B C BV D E D1 E1 F P1 P2 S)
(setq oldosmode (getvar "osmode"))
       (setvar "osmode" 0)
       (setq 
	A (getreal "\nBe rong mc DAM:")
	B (getreal "\nBe dai mc DAM:")
	S (getreal "\nBe day san:")
	BV (getreal "\nLop bv mc DAM:")
	D (getint "\nS.luong thep ngang mc DAM:")
	E (getint "\nS.luong thep doc mc DAM:")
	P1 (getpoint  "\nDiem chen:")
               F (/ A 20)
		D1 (/ (- A (* 2 BV) (* F 2)) (- D 1))
	E1 (/ (- B (* 2 BV) (* F 2)) (- E 1))
       ); end of setq
(command ".rectangle" "f" (* bv 0.5) (list (+ (car P1) BV) (+ (cadr P1) BV)) 
			(list (+ (car P1) (- A BV)) (+ (cadr P1) (- B BV))) 				"" "f" "0" ""
	".change" "L" "" "P" "C" 1 ""
	".pline" (Polar P1 0 (/ A 2)) "W" 0 0 	
				P1
(setq P11 (list (car P1) (+ (cadr P1) (- B S))))
(setq P11 (list (- (car P11) (* 2 S)) (cadr P11)))
(list (car P11) (- (cadr P11) (* 0.4 S)))
(setq P11 (list (car P11) (+ (cadr P11) (* 0.4 S))))
(setq P11 (list (- (car P11) (* 0.4 S)) (cadr P11)))
(setq P11 (list (+ (car P11) (* 0.8 S)) (+ (cadr P11) (* 0.2 S))))
(setq P11 (list (- (car P11) (* 0.4 S)) (cadr P11)))
(list (car P11) (+ (cadr P11) (* 0.8 S)))
(setq P11 (list (car P11) (+ (cadr P11) (* 0.4 S))))
(setq P11 (list (+ (car P11) (* 2 S) (/ A 2)) (cadr P11)))
                          ""
	".mirror" "L" "" (Polar P1 0 (/ A 2)) P11 ""
               ".pedit" "l" "j" "p" "l" "" ""

       ); end of command
       (setq 	P2 (list (+ (car P1) BV F) (+ (cadr P1) BV F)))
    	(repeat D 
	(command ".donut" 0 F P2 ^C)
       	(setq P2 (polar P2 0 D1))
     	); end of repeat1
       (setq 	P2 (list (+ (car P1) BV F) (+ (cadr P1) (- B BV F) )))
    	(repeat D 
	(command ".donut" 0 F P2 ^C)
       	(setq P2 (polar P2 0 D1))
     	); end of repeat2
       (setq 	P2 (list (+ (car P1) BV F) (+ (cadr P1) BV F)))
       (repeat (- E 2)
      		(setq P2 (polar P2 (/ pi 2)  E1))
	(command ".donut" 0 F P2 ^C)
       ); end of repeat3
 	(setq 	P2 (list (+ (car P1) (- A BV F)) (+ (cadr P1) BV F)))
	(repeat (- E 2)
      		(setq P2 (polar P2 (/ pi 2)  E1))
	(command ".donut" 0 F P2 ^C)
       ); end of repeat3
(setvar "osmode" oldosmode)
)

 

Cảm ơn bạn!

 

Mình có thể làm chách nào để chỉnh size của hình chấm tròn (thép) đó cảm ơn.

 

Tiện thể có bạn nào có lisp vẽ mc dọc của dầm không (không phải mcngang nhé) 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
Cảm ơn bạn!

 

Mình có thể làm chách nào để chỉnh size của hình chấm tròn (thép) đó cảm ơn.

 

Tiện thể có bạn nào có lisp vẽ mc dọc của dầm không (không phải mcngang nhé) cảm ơn

Bạn tìm đến dòng có từ "donut" sửa F -> (* F 1.2) số 1.2 chỉ ví dụ nếu muốn lớn hơn thì thay bằng số lớn hơn và ngược lại.

Mình có lisp vẽ mặt cắt dọc dầm nhưng không nhớ để đâu đe mình tìm lại đã. Vì mình là dân KT mà.

  • 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
Bạn tìm đến dòng có từ "donut" sửa F -> (* F 1.2) số 1.2 chỉ ví dụ nếu muốn lớn hơn thì thay bằng số lớn hơn và ngược lại.

Mình có lisp vẽ mặt cắt dọc dầm nhưng không nhớ để đâu đe mình tìm lại đã. Vì mình là dân KT mà.

 

Cảm ơn bạn tốt bụng! :iluvyousmiley: Cố tìm giúp mình nhe

 

Mình thấy lệnh này hay mà down về không dùng được

 

lệnh array copy

dùng như lệnh copy, ngoại trừ việc bạn phải nhập thêm số lần được nhân lên. Lệnh là AC.

http://caddata.dir3d.com/caddata/items/687...array_copy.html

 

Mọi người check thử xem

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

); end of command

(setq P2 (list (+ (car P1) BV F) (+ (cadr P1) BV F)))

(repeat D

(command ".donut" 0 F P2 ^C)

(setq P2 (polar P2 0 D1))

); end of repeat1

(setq P2 (list (+ (car P1) BV F) (+ (cadr P1) (- B BV F) )))

(repeat D

(command ".donut" 0 F P2 ^C)

(setq P2 (polar P2 0 D1))

); end of repeat2

(setq P2 (list (+ (car P1) BV F) (+ (cadr P1) BV F)))

(repeat (- E 2)

(setq P2 (polar P2 (/ pi 2) E1))

(command ".donut" 0 F P2 ^C)

); end of repeat3

(setq P2 (list (+ (car P1) (- A BV F)) (+ (cadr P1) BV F)))

(repeat (- E 2)

(setq P2 (polar P2 (/ pi 2) E1))

(command ".donut" 0 F P2 ^C)

); end of repeat3

(setvar "osmode" oldosmode)

 

Mình chẳng biết sửa cái dòng nào hết, bạn giúp 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
Cảm ơn bạn tốt bụng! :iluvyousmiley: Cố tìm giúp mình nhe

 

Mình thấy lệnh này hay mà down về không dùng được

 

lệnh array copy

dùng như lệnh copy, ngoại trừ việc bạn phải nhập thêm số lần được nhân lên. Lệnh là AC.

http://caddata.dir3d.com/caddata/items/687...array_copy.html

 

Mọi người check thử xem

Cái lisp này là của bác Hoành Bác ấy up nhầm code bạn down cái này mới đúng

(defun c:ac (/ dt p1 p2 sl index kc goc)
 (setq	dt    (ssget)
p1    (getpoint "\nVao diem goc: ")
p2    (getpoint p1 "\nVao diem den: ")
sl    (getint "\nVao so lan: ")
goc   (angle p1 p2)
kc    (distance p1 p2)
index 0
 )
 (repeat sl
   (setq index (1+ index))
   (command ".copy" dt "" p1 (polar p1 goc (* kc index)))
 )
)

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
); end of command

(setq P2 (list (+ (car P1) BV F) (+ (cadr P1) BV F)))

(repeat D

(command ".donut" 0 F P2 ^C)

(setq P2 (polar P2 0 D1))

); end of repeat1

(setq P2 (list (+ (car P1) BV F) (+ (cadr P1) (- B BV F) )))

(repeat D

(command ".donut" 0 F P2 ^C)

(setq P2 (polar P2 0 D1))

); end of repeat2

(setq P2 (list (+ (car P1) BV F) (+ (cadr P1) BV F)))

(repeat (- E 2)

(setq P2 (polar P2 (/ pi 2) E1))

(command ".donut" 0 F P2 ^C)

); end of repeat3

(setq P2 (list (+ (car P1) (- A BV F)) (+ (cadr P1) BV F)))

(repeat (- E 2)

(setq P2 (polar P2 (/ pi 2) E1))

(command ".donut" 0 F P2 ^C)

); end of repeat3

(setvar "osmode" oldosmode)

 

Mình chẳng biết sửa cái dòng nào hết, bạn giúp nhé

Bạn sửa tất cả các dòng (command ".donut" 0 F P2 ^C) -> (command ".donut" 0 (* F 1.2) P2 ^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

Trong khi chờ mình tim cái mặt cắt dọc dầm bạn dùng thừ cái Mặt cắt sàn này nhé.

;VE MAT CAT SAN
(defun c:Mcs (/ A1 A2 A3 A4 A5 A6 A7 AA AA1 AM4 B2 B3 B4 B5 B6 B66 B67 B7 BB
BB11 BB12 BX BX1 C1 C2 C3 C4 C5 C6 CC CL1 DD1 DDAM DDT DY DY1 G1
G10 G11 G12 G2 G7 G8 G9 GG7 GG8 J1 J10 J11 J12 J13 J14 J2 J3 J4
J5 J6 J7 J8 J9 JJ1 JJ2 K12 K19 KC KC1 LX LX1 LXY1 LY LY1 MM MM1
MM2 N10 N11 N12 N13 N14 N15 N16 N17 N18 N19 N7 N8 N9 NBC OD OU OV
P1 P10 P67 P9 Q1 Q2 Q3 TDD TDD1 TIEP TONG TT1 TTR1 TTR2 TTR3 U1 U2 U3 V1 XG YG)
(taolayer)
(SETQ NBC (GETVAR "CLAYER"))
(setvar "osmode" 1)
(setq tiep "C")
(setq tong 0)
(setq ddam 350)
(setq dy1 (getreal (strcat "Chieu cao dam < " (itoa ddam) " >: ")))
(if (null dy1) (setq dy1 ddam))
(setq ou 20)
(setq od 100)
(setq ov 200)
(initget 6)
(setq kc1 (getreal (strcat "\nkhoang bao ve (mm) <" (itoa ou) ">: ")))
(if (null kc1) (setq kc1 ou))
(setq dy (* dy1 5))
(setq kc (* kc1 4))
(while (= tiep "C")
(setvar "cmdecho" 0)
(setvar "osmode" 15359)
(setq BB (getpoint "Diem chen :"))
(setvar "osmode" 0)
(setq xg (car BB))
(setq yg (cadr BB))
(initget 6)
(setq Ly1 (getreal (strcat "\nChieu day ban (mm) <" (itoa od) ">: ")))
(if (null Ly1) (setq Ly1 od)) 
(setq Lxy1 (getreal "Chieu dai nhip(m) :"))
(setq Lx1 (* Lxy1 1000))
(setq Bx1 (getreal "Chieu dai thep am (mm):"))
(setq tdd1 (getreal (strcat "\nKhoang cach cac thanh thep (mm) <" (itoa ov) ">: ")))
(if (null tdd1) (setq tdd1 ov)) 
(SETQ TTR1 200)
(setq TTR2 (RTOS TTR1 2 0))
(setq Tt1 (RTOS TDD1 2 0))
(setq dd1 (STRCAT "a"TT1""))
(setq ddT (STRCAT "a"TTR2""))
(setq Lx (* Lx1 4))
(setq tong (+ tong Lx)) 
(setq Ly (* Ly1 5))
(setq Bx (* Bx1 4))
(setq tdd (* tdd1 4))
(setq TTR3 (* TTR1 4))
(setq B2 (list xg (+ yg Ly)))
(setq B3 (list xg (+ (- yg dy) Ly)))
(setq B4 (polar B3 0 880))
(setq B5 (polar BB 0 880))
(setq B6 (polar BB 0 Lx))
(setq B66 (polar B6 (* Pi 1.5) (- dy Ly)))
(setq B67 (polar B66 0 440))
(setq B7 (polar B2 0 (+ Lx 440)))
(setq p1 (/ Bx TTR3))
(setq g1 (fix p1))
(setq g2 (- g1 1))
(setq v1 (/ (- Lx 880) tdd))
(setq u1 (fix v1))
(setq u2 (+ u1 1))
(setq u3 (- (/ (- Lx (* u1 tdd)) 2) 440)) 
(setq A1 (list (+ xg 440) (+ yg kc)))
(setq A2 (list (+ xg 440) (- (cadr B2) kc)))
(setq A3 (polar A2 0 Bx))
(setq A4 (polar A1 0 Bx))
(setq Am4 (polar A4 (* Pi 1.5) kc))
(setq A5 (list (- (car A3) 50) (- (cadr A3) 50)))
(setq J5 A5)
(setq A7 (list (+ (+ (car A1) 440) u3) (+ (cadr A1) 50)))
(setq N7 (polar A7 0 tdd))
(setq N8 (polar N7 0 tdd))
(setq N9 (list (+ (car N7) (* 0.5 tdd)) (- (cadr n7) (+ 900 (* 1.5 KC)))))
(setq N10 (polar N9 0 900))
(setq N11 (polar N10 0 250))
(setq N12 (list (+ (car N9) 450) (+ (cadr N9) 220)))
(setq K12 (polar N12 (* Pi 1.5) 440))
(setq N13 (list (+ (car a7) (* tdd 6.5)) (cadr a1)))
(setq N14 (polar N13 (* Pi 1.25) kc))
(setq N15 (polar N13 (* Pi 0.25) kc))
(setq N16 (polar N13 (* Pi 1.5) (+ 900 kc)))
(setq N17 (polar N16 0 900))
(setq N18 (polar N17 0 250))
(setq N19 (list (+ (car N16) 450) (+ (cadr N16) 220)))
(setq K19 (polar N19 (* Pi 1.5) 440))
(command "osmode" 0 "")
(setvar "CLAYER" "8")
(command ".line" N7 N9 N8 "")
(command ".line" N10 N9 "")
(command ".line" N14 N15 "")
(command ".line" N13 N16 N17 "")
(setvar "CLAYER" "3")
(command ".text" "mc" N12 "250" "0" "/G10" "")
(command ".text" "mc" N19 "250" "0" "/g10" "")
(command ".text" "mc" K12 "250" "0" DD1 "")
(command ".text" "mc" K19 "250" "0" DD1 "")
(setq A6 (polar A1 0 Lx))
(setq AA1 (polar A3 (* 1.5 Pi) Ly))
(setq AA (polar A2 (* 0.5 Pi) 1500))
(setq C1 (polar B3 0 440))
(setq C3 (polar C1 0 Lx))
(setq C5 (polar C1 (* 1.5 Pi) 800))
(setq C2 (polar C5 0 (/ Lx 2)))
(setq C6 (polar C5 (* 1.5 Pi) 100))
(setq C4 (polar C6 (* 1.5 Pi) 350))
(setq CC (polar C2 (* 0.5 Pi) 250))
(command "osmode" 0 "")
(setvar "CLAYER" "3")
(command "donut" "0" kc A5 A7"")
(repeat g2
(setq A5 (polar A5 Pi TTR3))
(command "donut" "0" kc A5 "")
)
(setq mm (ssget "W" A2 AA1))
(setq J6 (polar J5 Pi TTR3))
(setq J4 (polar A3 Pi (* TTR3 1.5)))
(setq jj1 (polar j4 (* Pi 1.25) kc))
(setq jj2 (polar j4 (* Pi 0.25) kc))
(setvar "CLAYER" "8")
(command ".line" JJ1 JJ2 "")
(setq J7 (polar J6 0 (* TTR3 0.5)))
(setq J8 (polar J7 (* 0.5 Pi) 800))
(setq J3 (polar J4 (* 0.5 Pi) 800))
(setq J2 (polar J3 Pi 900))
(setq J9 (polar J8 0 900))
(setq J10 (polar J9 0 250))
(setq J1 (polar J2 Pi 250))
(command ".line" J5 J8 J6 "")
(command ".line" J8 J9 "")
(command ".line" J4 J3 J2 "")
(command ".circle" J1 "d" 500)
(setq cl1 (entlast))
(setq J11 (list (+ (car J2) 450) (+ (cadr J2) 220)))
(setq J12 (polar J11 (* Pi 1.5) 440))
(setq J13 (list (+ (car J8) 450) (+ (cadr J8) 220)))
(setq J14 (polar J13 (* Pi 1.5) 440))
(setvar "CLAYER" "3") 
(command ".text" "mc" J11 "250" "0" "/G10" "")
(command ".text" "mc" J13 "250" "0" "%%c6" "")
(command ".text" "mc" J12 "250" "0" DDT "")
(command ".text" "mc" J14 "250" "0" "a200" "")
(command "-ATTDEF" "" "+" "1" "1" "j" "mc" J1 "250" "")
(if (= (tblsearch "block" "ghithep") nil)
(command "block" "ghithep" J1 (entlast) cl1 "")
)
(if (/= (tblsearch "block" "ghithep") nil)
(command "block" "ghithep" "y" J1 (entlast) cl1 "")
)
(repeat u1
(setq A7 (polar A7 0 tdd))
(command "donut" "0" kc A7 "")
)
(setvar "CLAYER" "7")
(command ".line" BB B3 B4 B5 B6 "")
(command ".line" B2 B7 "")
(command ".line" B6 B66 B67 "")
(command ".line" C5 C6 "")
(setvar "CLAYER" "4")
(command ".pline" A2 A3 Am4 "")
(setq mm1 (ssget "L")) 
(command ".line" A1 A6 "")
(setvar "CLAYER" "100")
(command ".DIMLINEAR" C1 C3 C2)
(setq BB11 (polar BB (* 1 Pi) 500))
(setq BB12 (polar BB11 (* 1 Pi) 700)) 
(setvar "CLAYER" "20")
(command ".DIMLINEAR" BB B2 BB11)
(command ".DIMLINEAR" B3 B2 BB12)
(setvar "CLAYER" "100")
(command ".DIMLINEAR" A2 A3 AA)
(setq mm2 (ssget "L"))
(chenblock N11 1 1)
(chenblock N18 1 1)
(chenblock J1 "1" "1")
(chenblock J10 "1" "1")
(chenblock C4 "1.4" "1.4")
(command ".select" mm mm1 mm2 "")
(command ".mirror" "p" "" C2 CC "")
(initget 1 "C K")
(setq tiep (strcase (getkword "Lam tiep cau kien khac [1©/2(K)] :")))
)
(setq g7 (polar B67 (* Pi 0) 440))
(setq g8 (polar g7 (* Pi 0.5) dy))
(setq g9 (polar g8 (* Pi 1) 440))
(setq g10 (polar g9 (* Pi 1.5) kc))
(setq j10 (polar g9 (* Pi 1.5) (- Ly kc)))
(setq g11 (polar g10 (* Pi 0) 360))
(setq g12 (polar g11 (* Pi 1.5) (- Ly kc)))
(setq p67 (polar b67 (* 1.5 Pi) 800))
(setq p9 (polar p67 (* 1.5 Pi) 100))
(setq p10 (polar p9 (* 1.5 Pi) 350))
(setq j11 (polar j10 0 300))
(setq j12 (polar j11 (* 0.5 Pi) 100))
(setq j13 (polar j12 Pi 90))
(chenblock p10 "1.4" "1.4")
(setvar "CLAYER" "4")
(command "pline" j13 j12 "a" "a" -180 j11 "l" j10 "")
(setq Q1 (ssget "L")) 
(command "pline" g10 g11 g12 "")
(setq Q2 (ssget "L")) 
(setvar "CLAYER" "7")
(command ".line" B67 g7 "")
(command ".line" g8 g9 "")
(command ".line" g8 g7 "")
(setq gG7 (polar G7 Pi (/ (+ tong 880) 2)))
(setq gG8 (polar G8 Pi (/ (+ tong 880) 2)))
(setq Q3 (ssget "L")) 
(command ".line" p9 p67 "")
(command ".select" Q1 Q2 Q3 "")
(command ".mirror" "p" "" GG7 GG8 "")
(setvar "osmode" 691)
(SETVAR "CLAYER" NBC)
)
(defun taolayer ()
(if (= (tblsearch "layer" "3") nil) (command "layer" "n" "3" ""))
(if (= (tblsearch "layer" "4") nil) (command "layer" "n" "4" ""))
(if (= (tblsearch "layer" "7") nil) (command "layer" "n" "7" ""))
(if (= (tblsearch "layer" "8") nil) (command "layer" "n" "8" ""))
(if (= (tblsearch "layer" "20") nil) (command "layer" "n" "20" ""))
(if (= (tblsearch "layer" "100") nil) (command "layer" "n" "100" ""))
)
(defun chenblock ( dcb x y /)
(command "-insert" "ghithep" dcb x y "" "")
)

  • 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

Cảm ơn bạn, mình đã thử nhưng không có cách nào 2 thép tròn có bán kính bằng nhau được ở 2 cái lisp trên đó (mcc +mcd) vì trong cùng 1 bản vẽ 2 thép phải bằng nhau, không được to nhỏ, mình sửa mãi không được, bạn giúp mình nhé

 

http://www.mediafire.com/?a08wf48aowdsw24

http://www.mediafire.com/file/a08wf48aowds...%2019-11%29.lsp

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
Cảm ơn bạn, mình đã thử nhưng không có cách nào 2 thép tròn có bán kính bằng nhau được ở 2 cái lisp trên đó (mcc +mcd) vì trong cùng 1 bản vẽ 2 thép phải bằng nhau, không được to nhỏ, mình sửa mãi không được, bạn giúp mình nhé

 

http://www.mediafire.com/?a08wf48aowdsw24

http://www.mediafire.com/file/a08wf48aowds...%2019-11%29.lsp

Muốn thống nhất trong 2 lisp đó bạn sửa 2 dòng này trong 2 lisp trên:

F (* BV 0.7) của lisp mcc

F (/ A 20) của lisp mcd

Bạn đưa về cùng 1 loại là:

F (/ A 20) của lisp mcc

hoặc

F (* BV 0.7) của mcd

  • 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
Bạn tìm đến dòng có từ "donut" sửa F -> (* F 1.2) số 1.2 chỉ ví dụ nếu muốn lớn hơn thì thay bằng số lớn hơn và ngược lại.

Mình có lisp vẽ mặt cắt dọc dầm nhưng không nhớ để đâu đe mình tìm lại đã. Vì mình là dân KT mà.

http://www.cadviet.com/forum/index.php?showtopic=4240

  • 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

Thì ra Bác Nộ thiên là tác giả của fast cad. Cám ơn Bác đã đóng góp cho cộng đồng một tiện ích rất hay. Bác có thể up mã nguồn mở để anh em nghiên cứu được không Bác. Thanh!!!

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
Thì ra Bác Nộ thiên là tác giả của fast cad. Cám ơn Bác đã đóng góp cho cộng đồng một tiện ích rất hay. Bác có thể up mã nguồn mở để anh em nghiên cứu được không Bác. Thanh!!!

Nguồn mở thì OK vì cách đây mấy năm có người hỏi xin và mình cũng đã cho rồi.

Nhưng bộ fastcad này mình viết lúc chập chững đến với lisp nên cũng còn nhiều hạn chế lắm.

có gì gửi mail cho mình.

Thx.

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
Muốn thống nhất trong 2 lisp đó bạn sửa 2 dòng này trong 2 lisp trên:

F (* BV 0.7) của lisp mcc

F (/ A 20) của lisp mcd

Bạn đưa về cùng 1 loại là:

F (/ A 20) của lisp mcc

hoặc

F (* BV 0.7) của mcd

 

Mình đã làm đúng như bạn nói, nhưng hình tròn donut không có bán kính bằng nhau là sao, bạn thử fix rồi vẽ xem sao?

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
Nguồn mở thì OK vì cách đây mấy năm có người hỏi xin và mình cũng đã cho rồi.

Nhưng bộ fastcad này mình viết lúc chập chững đến với lisp nên cũng còn nhiều hạn chế lắm.

có gì gửi mail cho mình.

Thx.

 

Mình đang cần lisp vẽ mc dọc của dầm, bạn có thể chia sẻ không? cảm ơn, chỉ cần những cái đơn lẻ dễ dùng thôi, cảm ơn 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
Mình đã làm đúng như bạn nói, nhưng hình tròn donut không có bán kính bằng nhau là sao, bạn thử fix rồi vẽ xem sao?

 

Mình sửa cho bạn này. Lớp bảo vệ bằng nhau thì đường kính thép sẽ bằng nhau.

;; free lisp from cadviet.com
(defun c:MCD (/ A B C BV D E D1 E1 F P1 P2 S)
(setq oldosmode (getvar "osmode"))
(setvar "osmode" 0)
(setq 
A (getreal "\nBe rong mc DAM:")
B (getreal "\nBe dai mc DAM:")
S (getreal "\nBe day san:")
BV (getreal "\nLop bv mc DAM:")
D (getint "\nS.luong thep ngang mc DAM:")
E (getint "\nS.luong thep doc mc DAM:")
P1 (getpoint "\nDiem chen:")
F (* bv 0.7)
D1 (/ (- A (* 2 BV) (* F 2)) (- D 1))
E1 (/ (- B (* 2 BV) (* F 2)) (- E 1))
); end of setq
(command ".rectangle" "f" (* bv 0.5) (list (+ (car P1) BV) (+ (cadr P1) BV)) 
(list (+ (car P1) (- A BV)) (+ (cadr P1) (- B BV))) "" "f" "0" ""
".change" "L" "" "P" "C" 1 ""
".pline" (Polar P1 0 (/ A 2)) "W" 0 0 
P1
(setq P11 (list (car P1) (+ (cadr P1) (- B S))))
(setq P11 (list (- (car P11) (* 2 S)) (cadr P11)))
(list (car P11) (- (cadr P11) (* 0.4 S)))
(setq P11 (list (car P11) (+ (cadr P11) (* 0.4 S))))
(setq P11 (list (- (car P11) (* 0.4 S)) (cadr P11)))
(setq P11 (list (+ (car P11) (* 0.8 S)) (+ (cadr P11) (* 0.2 S))))
(setq P11 (list (- (car P11) (* 0.4 S)) (cadr P11)))
(list (car P11) (+ (cadr P11) (* 0.8 S)))
(setq P11 (list (car P11) (+ (cadr P11) (* 0.4 S))))
(setq P11 (list (+ (car P11) (* 2 S) (/ A 2)) (cadr P11)))
""
".mirror" "L" "" (Polar P1 0 (/ A 2)) P11 ""
".pedit" "l" "j" "p" "l" "" ""

); end of command
(setq P2 (list (+ (car P1) BV F) (+ (cadr P1) BV F)))
(repeat D 
(command ".donut" 0 F P2 ^C)
(setq P2 (polar P2 0 D1))
); end of repeat1
(setq P2 (list (+ (car P1) BV F) (+ (cadr P1) (- B BV F) )))
(repeat D 
(command ".donut" 0 F P2 ^C)
(setq P2 (polar P2 0 D1))
); end of repeat2
(setq P2 (list (+ (car P1) BV F) (+ (cadr P1) BV F)))
(repeat (- E 2)
(setq P2 (polar P2 (/ pi 2) E1))
(command ".donut" 0 F P2 ^C)
); end of repeat3
(setq P2 (list (+ (car P1) (- A BV F)) (+ (cadr P1) BV F)))
(repeat (- E 2)
(setq P2 (polar P2 (/ pi 2) E1))
(command ".donut" 0 F P2 ^C)
); end of repeat3
(setvar "osmode" oldosmode)
)

;; free lisp from cadviet.com

(defun c:MCC (/ A B C BV D E D1 E1 F P1 P2)
       (vl-load-com)
(setq oldosmode (getvar "osmode"))
       (setvar "osmode" 0)
       (setq 
	A (getreal "\nBe rong mc cot:")
	B (getreal "\nBe dai mc cot:")
	BV (getreal "\nLop bv mc cot:")
	D (getint "\nS.luong thep ngang mc cot:")
	E (getint "\nS.luong thep doc mc cot:")
	P1 (getpoint  "\nDiem chen:")
               F (* BV 0.7)
		D1 (/ (- A (* 2 BV) (* F 2)) (- D 1))
	E1 (/ (- B (* 2 BV) (* F 2)) (- E 1))
       ); end of setq
(command ".rectangle" "f" "0" P1 (list (+ (car P1) A) (+ (cadr P1) :leluoi: ) ""
	".offset" BV (ssget P1) (list (+ (car P1) BV) (+ (cadr P1) BV)) ""
       )
       (setq ver (acet-geom-vertex-list (entlast)))
       (entdel (entlast))
       (command ".rectangle" "f" (* bv 0.7) (car ver) (caddr ver)
        ".change" (entlast) "" "P" "C" 1 ""
       ); end of command
       (setq 	P2 (list (+ (car P1) BV F) (+ (cadr P1) BV F)))
    	(repeat D 
	(command ".donut" 0 F P2 ^C)
       	(setq P2 (polar P2 0 D1))
     	); end of repeat1
       (setq 	P2 (list (+ (car P1) BV F) (+ (cadr P1) (- B BV F) )))
    	(repeat D 
	(command ".donut" 0 F P2 ^C)
       	(setq P2 (polar P2 0 D1))
     	); end of repeat2
       (setq 	P2 (list (+ (car P1) BV F) (+ (cadr P1) BV F)))
       (repeat (- E 2)
      		(setq P2 (polar P2 (/ pi 2)  E1))
	(command ".donut" 0 F P2 ^C)
       ); end of repeat3
 	(setq 	P2 (list (+ (car P1) (- A BV F)) (+ (cadr P1) BV F)))
	(repeat (- E 2)
      		(setq P2 (polar P2 (/ pi 2)  E1))
	(command ".donut" 0 F P2 ^C)
       ); end of repeat3
(setvar "osmode" oldosmode)
); end of ve mc cot

  • 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
Cảm ơn bạn nhiều, bạn có lisp vẽ mc ngang dầm, mc sàn, mc móng không? shared mình với, mình đã test và thép cùng size

Bạn có thể dùng lisp của Bác Nộ thiên ở trên có link rồi đấy. Lisp rất hay đấy bạn nên khai thá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

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  

×