Đến nội dung


Hình ảnh
* * * - - 8 Bình chọn

Viết lisp theo yêu cầu [phần 2]


  • Chủ đề bị khóa Chủ đề bị khóa
3783 replies to this topic

#2981 VUVUZELA

VUVUZELA

    biết lệnh chamfer

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

Đã gửi 29 December 2010 - 10:52 AM

chờ tin bác vuvu lâu quá bác à.


HIHI
Gì thế bác
Tại bác không tin tui mà tui xuất hiện làm gì
Vả lại phương pháp của bác nhờ khác của tui
PP của bác là xử lý bản vẽ khi in sau khi thiết kế xong ==> cái này sau nộp file cho CĐT kiểm tra thì chết
Còn p2 của tui là xử lý bản vẽ ngay từ đầu (1 fát ăn ngay) ==> ra file *.ntd luôn ==> CĐT bó tay với PRO
:D
  • 0

Hệ thống Liên Kết, Thiết Kế Tự Động

ttps://www.facebook...etThietKeTuDong


#2982 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 30 December 2010 - 11:28 AM

Mạn phép hỏi các bác có ai có lisp sắp xếp, cắt chân dim đối với các dim đã oblique rồi không nhỉ ??
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#2983 hugo75

hugo75

    biết vẽ polygon

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

Đã gửi 30 December 2010 - 04:57 PM

Bấn quá thì bạn dùng tạm nhé.Chỗ nét cắt thì bác ấy viết liền thành 1 nét rùi,giờ nghỉ trưa mình hơi ngại edit ^^


;; 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
(setvar "clayer" "4")
(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 ""
(setvar "clayer" "1")
(command ".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
(setvar "clayer" "3")
(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ác,tiện bác giúp e các đường bao ngoài k phải là pline và đặt cho nét cắt là layer số 2 luôn nha.e mù lisp bác ah.Thanks
  • 0

#2984 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 31 December 2010 - 10:05 AM

Cảm ơn bác,tiện bác giúp e các đường bao ngoài k phải là pline và đặt cho nét cắt là layer số 2 luôn nha.e mù lisp bác ah.Thanks

Theo mình bạn nên để Pline thì sẽ thấy thuận lợi hơn rất nhiều khi xử lý.
Lisp của bạn đây,mình đã rút ngắn khoảng cách vẽ sàn,không để nét cắt bị lộn nữa,hi vọng đúng ý bạn


;; free lisp from cadviet.com
(defun c:MCD (/ A B C BV D E D1 E1 F P1 P11 P2 S)
(setq oldosmode (getvar "osmode"))
(setq oldlay (getvar "clayer"))
(setvar "osmode" 0)
(setq
A (getreal "\nChieu rong mc DAM:")
B (getreal "\nChieu cao mc DAM:")
S (getreal "\nBe day san:")
BV (getreal "\nLop bao ve 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
(setvar "clayer" "4")
(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 ""
(setvar "clayer" "1")
;Net bao duoi
(command ".pline" (Polar P1 0 (/ A 2))
P1
(setq P11 (list (car P1) (+ (cadr P1) (- B S))))
(setq P11 (list (- (car P11) (* 1.5 S)) (cadr P11)))
""
".mirror" "L" "" (Polar P1 0 (/ A 2)) (list (+ (car P1) (/ A 2) ) (+ (cadr P1) B )) "n" ""
".pedit" "L" "j" "p" "l" "" ""
);Xong net bao duoi
;Net cat
(setvar "clayer" "2")
(command ".Pline"
(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)))
""
".copy" "L" "" P1 (list (+ (car P1) (* 3 S) A ) (cadr P1)) ""
);xong net cat
(setvar "clayer" "1")
(command ".Line"
(setq P11 (list (car P11) (+ (cadr P11) (* 0.4 S))))
(setq P11 (list (+ (car P11) (* 3 S) A ) (cadr P11)))
""
); end of command
(setvar "clayer" "3")
(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)
(setvar "clayer" oldlay)
)


  • 2

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#2985 NDBNGO

NDBNGO

    biết lệnh rotate

  • Members
  • PipPipPip
  • 132 Bài viết
Điểm đánh giá: 20 (tàm tạm)

Đã gửi 01 January 2011 - 05:34 PM

Trên diễn đàn đã có nhiều phần lisp xuất text (giá trị cao độ) trên màn hình ra file (với định dạng thu tu,X,Y,Z) nhưng mình cần khi xuất ra file các tập hợp này được sắp sếp theo các lựa chon sau -4 lựa chọn người dùng-(giá trị X tăng, X giảm,Y tăng,Y giảm). Nhờ các ban có thể viết giúp mình lisp với các lựa chọn như vậy .
Trong các text này ,nếu giá trị text nào được lựa chọn bằng chuột (Chọn điểm text cần thêm ghi chú) thì sẽ thêm giá trị text theo người dùng yêu cầu khi xuất ra file (ví dụ mặc định là chữ T chẳng hạn)
Ví dụ : Sau khi chọn 1 tập hợp các text trên màn hình ,với chọn lựa Y tăng .Ta có 1 file *.txt như sau:

1 12.36 42.36 17.36
2 13.56 42.38 15.34
3 12.35 42.56 14.38 T
4 12.39 42.65 13.32
......

Trong file:
Cột 1 là số thứ tự
Cột 2 là giá trị x
Cột 3 giá trị y
Cột 4 giá trị Text trên màn hình
Cột 5 T là giá trị chuỗi thêm vào những text cần đánh dấu trên màn hình bằng bấm chuột (hoặc chọn)

Trước nay ,cá nhân vẫn xuất ra file txt,sau đó mở ra excel sử lý ,nhưng vì có nhiều tập hợp chọn ,hơn nữa các txt cần dánh dấu thì phải mở cả cad và excel tìm ra các điểm cần đánh dấu để gõ thêm ký tự vào tập hợp chọn. Làm như thế rất thủ công và mệt mỏi vì hay nhầm lẫn. Vậy nên cần có 1 lisp để xử lý các việc đã nêu ra ở trên
Xin cảm ơn.
  • 0

#2986 longtdh1

longtdh1

    biết pan

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

Đã gửi 02 January 2011 - 10:20 PM

Có ai biết cách truy cập basepoint của 1 block không giúp mình với.
Mình có một block. Ví dụ tên là "ABC" trong bản vẽ
Có thể dùng lập trình VBA để tìm basepoint của block này và xuất dữ liệu ra 1 biến blockbasepoint được không?
Dim blockbasepoint as double
...
  • 0

#2987 tiendaica

tiendaica

    biết zoom

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

Đã gửi 03 January 2011 - 08:31 AM

không phải là mình viết, nhưnng mình có lips đó bàn dùng thử nha!
http://www.cadviet.c...s/3/vmc_tbd.lsp

bạn cho mình hỏi thử đây sử dụng cho cad bao nhieu vậy sao khi load đánh lệnh td nó báo 1000 rồi minh enter no báo lỗi. bạn xem lai giùm minh nhé! cảm ơn bạn trước
  • 0

#2988 tiendaica

tiendaica

    biết zoom

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

Đã gửi 03 January 2011 - 08:36 AM

không phải là mình viết, nhưnng mình có lips đó bàn dùng thử nha!
http://www.cadviet.c...s/3/vmc_tbd.lsp

cám ơn bạn đã giúp đỡ mình nhưng lisp bạn bị lỗi hay sao đó ! mình đánh lệnh td nó thông báo ty le mình nhập 1000 nó báo lỗi! bạn xem lai giùm minh nhé
  • 0

#2989 NDBNGO

NDBNGO

    biết lệnh rotate

  • Members
  • PipPipPip
  • 132 Bài viết
Điểm đánh giá: 20 (tàm tạm)

Đã gửi 03 January 2011 - 08:52 AM

cám ơn bạn đã giúp đỡ mình nhưng lisp bạn bị lỗi hay sao đó ! mình đánh lệnh td nó thông báo ty le mình nhập 1000 nó báo lỗi! bạn xem lai giùm minh nhé

Lisp này mình chạy thử trên cad 2004 bình thường không báo lỗi gì đâu.Bạn kiểm tra lai đi.
  • 0

#2990 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 03 January 2011 - 10:23 AM

Mạn phép hỏi các bác có ai có lisp sắp xếp, cắt chân dim đối với các dim đã oblique rồi không nhỉ ??

Up ^^
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#2991 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 03 January 2011 - 10:27 AM

cám ơn bạn đã giúp đỡ mình nhưng lisp bạn bị lỗi hay sao đó ! mình đánh lệnh td nó thông báo ty le mình nhập 1000 nó báo lỗi! bạn xem lai giùm minh nhé

Bạn nên tránh những câu như thế này,tốt nhất là hãy post thông báo lỗi lên,hoặc chụp ảnh lại.
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#2992 quan08

quan08

    biết vẽ pline

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

Đã gửi 03 January 2011 - 10:20 PM

Theo mình bạn nên để Pline thì sẽ thấy thuận lợi hơn rất nhiều khi xử lý.
Lisp của bạn đây,mình đã rút ngắn khoảng cách vẽ sàn,không để nét cắt bị lộn nữa,hi vọng đúng ý bạn



;; free lisp from cadviet.com
(defun c:MCD (/ A B C BV D E D1 E1 F P1 P11 P2 S)
(setq oldosmode (getvar "osmode"))
(setq oldlay (getvar "clayer"))
(setvar "osmode" 0)
(setq
A (getreal "\nChieu rong mc DAM:")
B (getreal "\nChieu cao mc DAM:")
S (getreal "\nBe day san:")
BV (getreal "\nLop bao ve 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
(setvar "clayer" "4")
(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 ""
(setvar "clayer" "1")
;Net bao duoi
(command ".pline" (Polar P1 0 (/ A 2))
P1
(setq P11 (list (car P1) (+ (cadr P1) (- B S))))
(setq P11 (list (- (car P11) (* 1.5 S)) (cadr P11)))
""
".mirror" "L" "" (Polar P1 0 (/ A 2)) (list (+ (car P1) (/ A 2) ) (+ (cadr P1) B )) "n" ""
".pedit" "L" "j" "p" "l" "" ""
);Xong net bao duoi
;Net cat
(setvar "clayer" "2")
(command ".Pline"
(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)))
""
".copy" "L" "" P1 (list (+ (car P1) (* 3 S) A ) (cadr P1)) ""
);xong net cat
(setvar "clayer" "1")
(command ".Line"
(setq P11 (list (car P11) (+ (cadr P11) (* 0.4 S))))
(setq P11 (list (+ (car P11) (* 3 S) A ) (cadr P11)))
""
); end of command
(setvar "clayer" "3")
(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)
(setvar "clayer" oldlay)
)

Lisp này vẽ tỉ lệ 1:1 bác có thể sửa lại mặc định của lisp này là vẽ 1:20 (tức nếu mình nhập chiều rộng dầm là 300 thì nó sẽ vẽ là 300*5=1500) giùm e được không?Chân thành cảm ơn bác trước.
  • 0

#2993 cuti0022

cuti0022

    Chưa sử dụng CAD

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

Đã gửi 04 January 2011 - 12:33 AM

Chào mọi người!! ai có thể viết giúp e cái lisp vẽ các loại của 1,2,4 cánh và cửa sổ không. Em đã tìm hết rồi nhưng đều thấy chỉ là chương trình phụ trợ không dành cho win 7. và có người viết lisp rồi nhưng không dùng được. e xin cảm ơn trước ah. ( e cũng đã tìm luôn trên google nhưng khong thấy ) ai chỉ giúp e với!
  • 0

#2994 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6007 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 04 January 2011 - 11:34 AM

Lisp này vẽ tỉ lệ 1:1 bác có thể sửa lại mặc định của lisp này là vẽ 1:20 (tức nếu mình nhập chiều rộng dầm là 300 thì nó sẽ vẽ là 300*5=1500) giùm e được không?Chân thành cảm ơn bác trước.

Hề hề hề,
Mình ngu quá, không hiểu nổi ý của bạn, bạn có thể giải thích giùm vì sao tỷ lệ là 1:20 thì kích thước 300 lại thành 1500 được không???
Vì không hiểu rõ nên cũng không thể giúp bạn được. Mong bạn tha lỗi...
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#2995 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 04 January 2011 - 04:24 PM

Bạn ấy nói nhầm ấy mà bác.Vẽ tỉ lệ 1:20 thì nhập 300 nó sẽ ra 15 unit thôi ^^
Nếu đã mặc định 1:20 rồi thì chẳng cần phải hỏi tỉ lệ chi nữa cho dài dòng, ta cứ chia số nhập cho 20 luôn hè ^^


;; free lisp from cadviet.com
(defun c:MCD (/ A B C BV D E D1 E1 F P1 P11 P2 S)
(setq oldosmode (getvar "osmode"))
(setq oldlay (getvar "clayer"))
(setvar "osmode" 0)
(setq
A (/ (getreal "\nChieu rong mc DAM:") 20)
B (/ (getreal "\nChieu cao mc DAM:") 20)
S (/ (getreal "\nBe day san:") 20)
BV (/ (getreal "\nLop bao ve mc DAM:") 20)
D (/ (getint "\nS.luong thep ngang mc DAM:") 20)
E (/ (getint "\nS.luong thep doc mc DAM:") 20)
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
(setvar "clayer" "4")
(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 ""
(setvar "clayer" "1")
;Net bao duoi
(command ".pline" (Polar P1 0 (/ A 2))
P1
(setq P11 (list (car P1) (+ (cadr P1) (- B S))))
(setq P11 (list (- (car P11) (* 1.5 S)) (cadr P11)))
""
".mirror" "L" "" (Polar P1 0 (/ A 2)) (list (+ (car P1) (/ A 2) ) (+ (cadr P1) B )) "n" ""
".pedit" "L" "j" "p" "l" "" ""
);Xong net bao duoi
;Net cat
(setvar "clayer" "2")
(command ".Pline"
(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)))
""
".copy" "L" "" P1 (list (+ (car P1) (* 3 S) A ) (cadr P1)) ""
);xong net cat
(setvar "clayer" "1")
(command ".Line"
(setq P11 (list (car P11) (+ (cadr P11) (* 0.4 S))))
(setq P11 (list (+ (car P11) (* 3 S) A ) (cadr P11)))
""
); end of command
(setvar "clayer" "3")
(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)
(setvar "clayer" oldlay)
)


  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#2996 quan08

quan08

    biết vẽ pline

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

Đã gửi 04 January 2011 - 04:55 PM

Bạn ấy nói nhầm ấy mà bác.Vẽ tỉ lệ 1:20 thì nhập 300 nó sẽ ra 15 unit thôi ^^
Nếu đã mặc định 1:20 rồi thì chẳng cần phải hỏi tỉ lệ chi nữa cho dài dòng, ta cứ chia số nhập cho 20 luôn hè ^^


;; free lisp from cadviet.com
(defun c:MCD (/ A B C BV D E D1 E1 F P1 P11 P2 S)
(setq oldosmode (getvar "osmode"))
(setq oldlay (getvar "clayer"))
(setvar "osmode" 0)
(setq
A (/ (getreal "\nChieu rong mc DAM:") 20)
B (/ (getreal "\nChieu cao mc DAM:") 20)
S (/ (getreal "\nBe day san:") 20)
BV (/ (getreal "\nLop bao ve mc DAM:") 20)
D (/ (getint "\nS.luong thep ngang mc DAM:") 20)
E (/ (getint "\nS.luong thep doc mc DAM:") 20)
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
(setvar "clayer" "4")
(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 ""
(setvar "clayer" "1")
;Net bao duoi
(command ".pline" (Polar P1 0 (/ A 2))
P1
(setq P11 (list (car P1) (+ (cadr P1) (- B S))))
(setq P11 (list (- (car P11) (* 1.5 S)) (cadr P11)))
""
".mirror" "L" "" (Polar P1 0 (/ A 2)) (list (+ (car P1) (/ A 2) ) (+ (cadr P1) B )) "n" ""
".pedit" "L" "j" "p" "l" "" ""
);Xong net bao duoi
;Net cat
(setvar "clayer" "2")
(command ".Pline"
(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)))
""
".copy" "L" "" P1 (list (+ (car P1) (* 3 S) A ) (cadr P1)) ""
);xong net cat
(setvar "clayer" "1")
(command ".Line"
(setq P11 (list (car P11) (+ (cadr P11) (* 0.4 S))))
(setq P11 (list (+ (car P11) (* 3 S) A ) (cadr P11)))
""
); end of command
(setvar "clayer" "3")
(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)
(setvar "clayer" oldlay)
)

Cảm ơn bác e đã hiểu và sửa được rồi.
  • 0

#2997 790312

790312

    biết lệnh fillet

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

Đã gửi 07 January 2011 - 07:21 AM

E thấy trên diễn đàn có 1 lisp vẽ thép hình I,khi vẽ lần đầu thì rất tốt nhưng khi vẽ lần 2 thì bị lỗi.Mong các bác xem và sửa lại giùm.Thanks.
(defun c:Is ()
(setq h (getreal "\n Nhap chieu cao mat cat : ")
b (getreal "\n Nhap chieu rong mat cat : ")
d (getreal "\n Nhap chieu day ban canh : ")
db (getreal "\n Nhap chieu day ban bung : ")
p0 (getpoint "\n Nhap diem khoi tao"))
(command "rectang" p0 (list (+ b (car p0)) (- (cadr p0) d)))
(setq a0 (entlast))
(command "rectang" (list (car p0) (- (cadr p0) h)) (list (+ (car p0) b ) (- (cadr p0) (- h d))))
(setq a1 (entlast))
(setq p1 (list (+ (car p0) (/ (- b db) 2)) (- (cadr p0) d))
p2 (polar p1 0 db)
p3 (polar p1 (- (/ pi 2)) (- h d d))
p4 (polar p3 0 db))
(command "pline" p1 p3 "")
(setq a2 (entlast))
(command "pline" p2 p4 "")
(setq a3 (entlast))
(command "break" a0 p1 p2)
(command "break" a1 p3 p4)
(command "bhatch" "s" a0 a1 a2 a3 "" "p" "ansi31" 50 0 "" "")
(princ)
)

  • 0

#2998 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 07 January 2011 - 09:19 AM

1.Để người khác bắt bệnh, bạn nên chụp lại hiện trường để người ta khám chứ :D Bạn thao tác lại,đến lúc gặp lỗi thì ấn F2 để bật màn hình command lên, rồi chụp lại thông báo post lên diễn đàn
2.Đành xem qua code,mình dùng vẫn bình thường, chỉ khấp khiểng chỗ lệnh bhatch thôi,n vẫn k sao cả :D Bạn thử lại cái này xem sao.Cái này là chữa kiểu mù mờ này ^^

(defun c:Is ()
(setq h (getreal "\n Nhap chieu cao mat cat : ")
b (getreal "\n Nhap chieu rong mat cat : ")
d (getreal "\n Nhap chieu day ban canh : ")
db (getreal "\n Nhap chieu day ban bung : ")
p0 (getpoint "\n Nhap diem khoi tao"))
(command "rectang" p0 (list (+ b (car p0)) (- (cadr p0) d)))
(setq a0 (entlast))
(command "rectang" (list (car p0) (- (cadr p0) h)) (list (+ (car p0) b ) (- (cadr p0) (- h d))))
(setq a1 (entlast))
(setq p1 (list (+ (car p0) (/ (- b db) 2)) (- (cadr p0) d))
p2 (polar p1 0 db)
p3 (polar p1 (- (/ pi 2)) (- h d d))
p4 (polar p3 0 db))
(command "pline" p1 p3 "")
(setq a2 (entlast))
(command "pline" p2 p4 "")
(setq a3 (entlast))
(command "break" a0 p1 p2)
(command "break" a1 p3 p4)
(command "bhatch" "s" a0 a1 a2 a3 "" "p" "ansi31" 50 0 "")
(princ)
)

  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#2999 790312

790312

    biết lệnh fillet

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

Đã gửi 07 January 2011 - 10:36 AM

1.Để người khác bắt bệnh, bạn nên chụp lại hiện trường để người ta khám chứ :D Bạn thao tác lại,đến lúc gặp lỗi thì ấn F2 để bật màn hình command lên, rồi chụp lại thông báo post lên diễn đàn
2.Đành xem qua code,mình dùng vẫn bình thường, chỉ khấp khiểng chỗ lệnh bhatch thôi,n vẫn k sao cả :D Bạn thử lại cái này xem sao.Cái này là chữa kiểu mù mờ này ^^


(defun c:Is ()
(setq h (getreal "\n Nhap chieu cao mat cat : ")
b (getreal "\n Nhap chieu rong mat cat : ")
d (getreal "\n Nhap chieu day ban canh : ")
db (getreal "\n Nhap chieu day ban bung : ")
p0 (getpoint "\n Nhap diem khoi tao"))
(command "rectang" p0 (list (+ b (car p0)) (- (cadr p0) d)))
(setq a0 (entlast))
(command "rectang" (list (car p0) (- (cadr p0) h)) (list (+ (car p0) b ) (- (cadr p0) (- h d))))
(setq a1 (entlast))
(setq p1 (list (+ (car p0) (/ (- b db) 2)) (- (cadr p0) d))
p2 (polar p1 0 db)
p3 (polar p1 (- (/ pi 2)) (- h d d))
p4 (polar p3 0 db))
(command "pline" p1 p3 "")
(setq a2 (entlast))
(command "pline" p2 p4 "")
(setq a3 (entlast))
(command "break" a0 p1 p2)
(command "break" a1 p3 p4)
(command "bhatch" "s" a0 a1 a2 a3 "" "p" "ansi31" 50 0 "")
(princ)
)

Khi thực hiện xong nhấn F2 thì nó không báo lỗi,nhưng khi vẽ bản bụng nó chỉ vẽ 1 đường thẳng.E gửi file đính kèm mong bác xem giúp e
http://www.cadviet.c.../drawing1_7.rar
  • 0

#3000 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 07 January 2011 - 10:49 AM

Khi thực hiện xong nhấn F2 thì nó không báo lỗi,nhưng khi vẽ bản bụng nó chỉ vẽ 1 đường thẳng.E gửi file đính kèm mong bác xem giúp e
http://www.cadviet.c.../drawing1_7.rar

Bạn tắt chế độ bắt điểm OSNAP đi rồi chạy Lisp là được
Hoặc bạn viết 1 đoạn code bổ sung vào Lisp
(defun c:is()
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
.....
.....
(setvar "osmode" oldos)
(princ)
)
:D
  • 1