Đến nội dung


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

Ứng dụng LISP để vẽ bản vẽ kiến trúc (phần cơ bản)


  • Please log in to reply
124 replies to this topic

#81 transu

transu

    biết vẽ spline

  • Members
  • PipPip
  • 93 Bài viết
Điểm đánh giá: 19 (tàm tạm)

Đã gửi 17 December 2008 - 09:13 AM

các lỗi bạn mắc phải hoàn toàn là do bạn. như ở lisp vẽ cửa thì bạn chọn 3 điểm thẳng hàng nhau nên không được. có thể bạn để chế độ bắt điểm nên không để ý đến điểm vừa bắt. các lisp khác bạn tự tìm nguyên nhân nhé...

mình đã có lisp cửa 1 và 2 cánh. mình sài thử lisp của bạn. rõ ràng nó ko sử dung đc
  • 0

#82 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 175 (tàm tạm)

Đã gửi 23 February 2009 - 08:00 PM

mình đã có lisp cửa 1 và 2 cánh. mình sài thử lisp của bạn. rõ ràng nó ko sử dung đc

Bác vui lòng post LISP của bác cho pà con xài đê. Thanks.
  • 0

#83 hoa35ktxd

hoa35ktxd

    biết lệnh move

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

Đã gửi 25 February 2009 - 09:33 AM

Các bạn thử dùng cái này xem thế nào: http://www.cadviet.c...iles/Aplisp.rar
Có nhiều kiểu vẽ cửa, cửa sổ, cửa đi, khuôn đơn, khuôn kép và nhiều chức năng khác rất tiện lợi cho việc vẽ bản vẽ kiến trúc 2D.
Lưu ý: Sau khi giải nén hãy mở file Aplisp.hlp để xem hướng dẫn cách thiết lập chương trình. File help này viết bằng bảng mã TCVN3 nên có thể một số người không cài font chữ .vn thì sẽ không đọc được, hãy mở từng trang đó ra rồi dùng Unikey để chuyển sang Unicode bằng cách copy & paste vào word.
Sau khi thiết lập xong hãy gửi lại mã đăng ký cho tôi theo địa chỉ hoacvxd@gmail.com hoặc hoa35ktxd@yahoo.com.vn tôi sẽ gửi lại mã sử dụng cho các bạn (miễn phí hoàn toàn).
Chương trình này tôi viết lâu rồi, chủ yếu phục vụ bản thân, bây giờ không dùng đến mấy và đã bị mất mã nguồn nên không thể bổ sung, nâng cấp được, nhờ các cao thủ hack hộ tôi mãi mà chẳng ai hack hộ.
  • 0

#84 khaosat2009

khaosat2009

    biết lệnh offset

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

Đã gửi 10 March 2009 - 03:08 PM

Nhờ anh hướng dẫn cho cách thể hiện fónt chữ tiếng việt và thể hiện các kí hiệu trên các thanh lệnh
Cám ơn

  • 0

#85 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 175 (tàm tạm)

Đã gửi 10 March 2009 - 04:44 PM

Các bạn thử dùng cái này xem thế nào: http://www.cadviet.c...iles/Aplisp.rar
...
Sau khi thiết lập xong hãy gửi lại mã đăng ký cho tôi theo địa chỉ hoacvxd@gmail.com hoặc hoa35ktxd@yahoo.com.vn tôi sẽ gửi lại mã sử dụng cho các bạn (miễn phí hoàn toàn).
...

Xin Bác gửi lại mã sử dụng, đây là mã đăng ký của PP: 3562042231
Cám ơn Bác rất nhiều
  • 0

#86 newness

newness

    biết pan

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

Đã gửi 08 April 2009 - 06:13 PM

Nhanh quá! Cái lisp NN kia giúp tôi đỡ được bao nhiêu công khi phải BO line thanh PLINE.

Giờ đến vễ cửa, cửa đi, cửa sổ... nhiều quá. Copy từ thư viện ra thì lại phải SCALE rồi làng nhằng LAYER không đúng với bản vẽ của mình ! Vậy thì co cách nào không nhỉ?

Bài 5: Vẽ cửa đi


;-------------------------------------------------------------------------------------
;ve cua di 1 canh
;-------------------------------------------------------------------------------------
(defun c:c1 (/ p1 p2 p3 p4 p5 daicua x y)
(setq osm (getvar "osmode"))
(setq p1 (getpoint "\nHay vao diem goc cua: ")

p2 (getpoint p1 "\nHay vao diem mut cua: ")
p3 (getpoint p1 "\nHay vao huong cua: ")
daicua (distance p1 p2)
x (car p1)
y (car (cdr p1))
x 25
y daicua
p4 (list x y)
p5 (list daicua 0)
)
(setvar "OSMODE" 0)
(if (l3d_khongthanghang p1 p2 p3)
(progn
(command ".UCS" "3" p1 p2 p3)
(command ".rectangle" "0,0" p4)
(command ".Arc" p5 "C" "0,0" p4)
(command ".UCS" "P")
)
(princ "\n3 diem nhap vao khong duoc thang hang")
)
(setvar "osmode" osm)
)
;-------------------------------------------------------------------------------------
;ve cua di 2 canh
;-------------------------------------------------------------------------------------
(defun c:c2 (/ p1 p2 p3 p4 p5 daicua x y)
(setq osm (getvar "osmode"))
(setq p1 (getpoint "\nHay vao diem goc cua: ")
p2 (getpoint p1 "\nHay vao diem mut cua: ")
p3 (getpoint p1 "\nHay vao huong cua: ")
daicua (/ (distance p1 p2) 2.0)
x (car p1)
y (car (cdr p1))
x 25
y daicua
p4 (list x y)
p5 (list daicua 0)
)
(setvar "OSMODE" 0)
(if (l3d_khongthanghang p1 p2 p3)
(progn
(command ".UCS" "3" p1 p2 p3)
(command ".rectangle" "0,0" p4)
(command ".Arc" p5 "C" "0,0" p4)
(command ".UCS" "P")

(command ".UCS" "3" p2 p1 p3)
(command ".rectangle" "0,0" p4)
(command ".Arc" p5 "C" "0,0" p4)
(command ".UCS" "P")

)

(princ "\n3 diem nhap vao khong duoc thang hang")
)
(setvar "osmode" osm)
)
;-------------------------------------------------------------------------------------
;ve cua di 4 canh
;-------------------------------------------------------------------------------------
(defun c:c4 (/ p1 p2 p3 p4 p5 daicua x y)
(setq osm (getvar "osmode"))
(setq p1 (getpoint "\nHay vao diem goc cua: ")
p2 (getpoint p1 "\nHay vao diem mut cua: ")
p3 (getpoint p1 "\nHay vao huong cua: ")
daicua (/ (distance p1 p2) 4.0)
x (car p1)
y (car (cdr p1))
x 25
y daicua
p4 (list x y)
p5 (list daicua 0)
)
(setvar "OSMODE" 0)
(if (l3d_khongthanghang p1 p2 p3)
(progn

(setq diem1 (diemgiua p1 (diemgiua p1 p2)))
(setq diem2 (diemgiua p1 p2))
(setq diem3 (diemgiua p2 (diemgiua p1 p2)))

(command ".UCS" "3" p1 p2 p3)
(command ".rectangle" "0,0" p4)
(command ".Arc" p5 "C" "0,0" p4)
(command ".UCS" "P")

(command ".UCS" "3" diem1 p2 p3)
(command ".rectangle" "0,0" p4)
(command ".Arc" p5 "C" "0,0" p4)
(command ".UCS" "P")

(command ".UCS" "3" p2 p1 p3)
(command ".rectangle" "0,0" p4)
(command ".Arc" p5 "C" "0,0" p4)
(command ".UCS" "P")

(command ".UCS" "3" diem3 p1 p3)
(command ".rectangle" "0,0" p4)
(command ".Arc" p5 "C" "0,0" p4)
(command ".UCS" "P")

)

(princ "\n3 diem nhap vao khong duoc thang hang")
)
(setvar "osmode" osm)
)
;-----------------------------------------------------------------------------


Có 3 lệnh trong lisp này.
c1: vẽ cửa đi 1 cánh
c2: vẽ cửa đi 2 cánh
c4: vẽ cửa đi 4 cánh

Thế còn cửa sổ thì sao nhỉ ?

Bài 6: Vẽ cửa sổ


(defun c:w1(/ data_m l1 l2 p1 p2 check)

(defun wd_import(/ p3 p4 p5 p6)
(setq data_m (ssget))
(setq p1 (getpoint "\nfirst point :") p2 (getpoint "\nsecond point :"))
(setq l1 nil l2 nil check 1)
(if (not (= nil data_m)) (progn
(setq l1 (entget (ssname data_m 0)))
(setq l2 (entget (ssname data_m 1)))
(if (or (= nil l1) (not (= "LINE" (cdr (assoc 0 l1))))) (setq check 0))
(if (or (= nil l2) (not (= "LINE" (cdr (assoc 0 l2))))) (setq check 0))
(if (not (= 0 (-(sslength data_m) 2))) (setq check 0))
(if (= 1 check) (progn
(setq p3 (cdr (assoc 10 l1))) (setq p3 (list (nth 0 p3) (nth 1 p3)))
(setq p4 (cdr (assoc 11 l1))) (setq p4 (list (nth 0 p4) (nth 1 p4)))
(setq p5 (cdr (assoc 10 l2))) (setq p5 (list (nth 0 p5) (nth 1 p5)))
(setq p6 (cdr (assoc 11 l2))) (setq p6 (list (nth 0 p6) (nth 1 p6)))
(if (not (= nil (inters p3 p4 p5 p6 nil))) (setq check 0))
))
) (setq check 0))
(princ)
)

(defun wd_procced()

(defun mkv(/ p3 p4 p5 p6 p7 p8 p9 ls1 ls2 getom ll1)

(setq p3 (cdr (assoc 10 l1)))
(setq p4 (cdr (assoc 11 l1)))
(setq p5 (cdr (assoc 10 l2)))
(setq p6 (cdr (assoc 11 l2)))
(if (> (abs (- (nth 1 p1) (nth 1 p3)))
(abs (- (nth 1 p3) (nth 1 p4))) ) (setq check 0))
(if (> (abs (- (nth 1 p1) (nth 1 p4)))
(abs (- (nth 1 p3) (nth 1 p4))) ) (setq check 0))
(if (> (abs (- (nth 1 p2) (nth 1 p5)))
(abs (- (nth 1 p5) (nth 1 p6))) ) (setq check 0))
(if (> (abs (- (nth 1 p2) (nth 1 p6)))
(abs (- (nth 1 p5) (nth 1 p6))) ) (setq check 0))
(if (= 0 check) (princ "\ninvalid data") (progn
(setq ls1 (arlst (list (nth 1 p1) (nth 1 p2) (nth 1 p3) (nth 1 p4) )))
; (princ ls1)
(setq p7 (list (nth 0 p3) (nth 0 ls1) 0))
(setq p8 (list (nth 0 p3) (nth 1 ls1) 0))
(mkline p7 p8 l1)
(setq p7 (list (nth 0 p3) (nth 2 ls1) 0))
(setq p8 (list (nth 0 p3) (nth 3 ls1) 0))
(mkline p7 p8 l1)

(setq ls1 (arlst (list (nth 1 p1) (nth 1 p2) (nth 1 p5) (nth 1 p6) )))
; (princ ls1)
(setq p7 (list (nth 0 p5) (nth 0 ls1) 0))
(setq p8 (list (nth 0 p5) (nth 1 ls1) 0))
(mkline p7 p8 l1)
(setq p7 (list (nth 0 p5) (nth 2 ls1) 0))
(setq p8 (list (nth 0 p5) (nth 3 ls1) 0))
(mkline p7 p8 l1)

(setq p7 (list (nth 0 p3) (nth 1 ls1) 0))
(setq p8 (list (nth 0 p5) (nth 1 ls1) 0))
(mkline p7 p8 l1)
(setq p7 (list (nth 0 p3) (nth 2 ls1) 0))
(setq p8 (list (nth 0 p5) (nth 2 ls1) 0))
(mkline p7 p8 l1)

(setq getom (getvar "osmode"))
(setvar "osmode" 0)

(setq ls2 (arlst (list (nth 0 p3) (nth 0 p5))))
(setq p7 (list (nth 0 ls2) (nth 1 ls1) 0))
(setq p8 (list (nth 1 ls2) (nth 2 ls1) 0))

(setq ll1 (list
(cons 0 "line")
(cons 8 (getvar "clayer"))
))

(drawrt2 p7 p8 ll1)

(setvar "osmode" getom)
(command "erase" data_m "")

))
(princ)
)

(defun mkh(/ p3 p4 p5 p6 p7 p8 p9 ls1 ls2 getom ll1)

(setq p3 (cdr (assoc 10 l1)))
(setq p4 (cdr (assoc 11 l1)))
(setq p5 (cdr (assoc 10 l2)))
(setq p6 (cdr (assoc 11 l2)))

(if (> (abs (- (nth 0 p1) (nth 0 p3)))
(abs (- (nth 0 p3) (nth 0 p4))) ) (setq check 0))
(if (> (abs (- (nth 0 p1) (nth 0 p4)))
(abs (- (nth 0 p3) (nth 0 p4))) ) (setq check 0))
(if (> (abs (- (nth 0 p2) (nth 0 p5)))
(abs (- (nth 0 p5) (nth 0 p6))) ) (setq check 0))
(if (> (abs (- (nth 0 p2) (nth 0 p6)))
(abs (- (nth 0 p5) (nth 0 p6))) ) (setq check 0))

(if (= 0 check) (princ "\ninvalid data") (progn

(setq ls1 (arlst (list (nth 0 p1) (nth 0 p2) (nth 0 p3) (nth 0 p4) )))
; (princ ls1)
(setq p7 (list (nth 0 ls1) (nth 1 p3) 0))
(setq p8 (list (nth 1 ls1) (nth 1 p3) 0))
(mkline p7 p8 l1)
(setq p7 (list (nth 2 ls1) (nth 1 p3) 0))
(setq p8 (list (nth 3 ls1) (nth 1 p3) 0))
(mkline p7 p8 l1)

(setq ls1 (arlst (list (nth 0 p1) (nth 0 p2) (nth 0 p5) (nth 0 p6) )))
; (princ ls1)
(setq p7 (list (nth 0 ls1) (nth 1 p5) 0))
(setq p8 (list (nth 1 ls1) (nth 1 p5) 0))
(mkline p7 p8 l1)
(setq p7 (list (nth 2 ls1) (nth 1 p5) 0))
(setq p8 (list (nth 3 ls1) (nth 1 p5) 0))
(mkline p7 p8 l1)

(setq p7 (list (nth 1 ls1) (nth 1 p3) 0))
(setq p8 (list (nth 1 ls1) (nth 1 p5) 0))
(mkline p7 p8 l1)
(setq p7 (list (nth 2 ls1) (nth 1 p3) 0))
(setq p8 (list (nth 2 ls1) (nth 1 p5) 0))
(mkline p7 p8 l1)

(setq getom (getvar "osmode"))
(setvar "osmode" 0)

(setq ls2 (arlst (list (nth 1 p3) (nth 1 p5))))
(setq p7 (list (nth 1 ls1) (nth 0 ls2) 0))
(setq p8 (list (nth 2 ls1) (nth 1 ls2) 0))

(setq ll1 (list
(cons 0 "line")
(cons 8 (getvar "clayer"))
))

(drawrt3 p7 p8 ll1)

(setvar "osmode" getom)
(command "erase" data_m "")
))
(princ)
)

(setvar "cmdecho" 0) (command "undo" "mark") (setvar "cmdecho" 1)
(if (= 0 check) (princ "\ninvalid data") (progn
(if (< (abs (- (nth 0 (cdr (assoc 10 l1)))
(nth 0 (cdr (assoc 11 l1))) )) 0.00001) (mkv))
(if (< (abs (- (nth 1 (cdr (assoc 10 l1)))
(nth 1 (cdr (assoc 11 l1))) )) 0.00001) (mkh))


))

(princ)

)
(wd_import)
(ai_undo_push)
(wd_procced)
(ai_undo_pop)
)
(defun c:w2(/ data_m l1 l2 p1 p2 check)

(defun wd_import(/ p3 p4 p5 p6)
(setq data_m (ssget))
(setq p1 (getpoint "\nfirst point :") p2 (getpoint "\nsecond point :"))
(setq l1 nil l2 nil check 1)
(if (not (= nil data_m)) (progn
(setq l1 (entget (ssname data_m 0)))
(setq l2 (entget (ssname data_m 1)))
(if (or (= nil l1) (not (= "LINE" (cdr (assoc 0 l1))))) (setq check 0))
(if (or (= nil l2) (not (= "LINE" (cdr (assoc 0 l2))))) (setq check 0))
(if (not (= 0 (-(sslength data_m) 2))) (setq check 0))
(if (= 1 check) (progn
(setq p3 (cdr (assoc 10 l1))) (setq p3 (list (nth 0 p3) (nth 1 p3)))
(setq p4 (cdr (assoc 11 l1))) (setq p4 (list (nth 0 p4) (nth 1 p4)))
(setq p5 (cdr (assoc 10 l2))) (setq p5 (list (nth 0 p5) (nth 1 p5)))
(setq p6 (cdr (assoc 11 l2))) (setq p6 (list (nth 0 p6) (nth 1 p6)))
(if (not (= nil (inters p3 p4 p5 p6 nil))) (setq check 0))
))
) (setq check 0))
(princ)
)

(defun wd_procced()

(defun mkv(/ p3 p4 p5 p6 p7 p8 p9 ls1 ls2 getom ll1)

(setq p3 (cdr (assoc 10 l1)))
(setq p4 (cdr (assoc 11 l1)))
(setq p5 (cdr (assoc 10 l2)))
(setq p6 (cdr (assoc 11 l2)))
(if (> (abs (- (nth 1 p1) (nth 1 p3)))
(abs (- (nth 1 p3) (nth 1 p4))) ) (setq check 0))
(if (> (abs (- (nth 1 p1) (nth 1 p4)))
(abs (- (nth 1 p3) (nth 1 p4))) ) (setq check 0))
(if (> (abs (- (nth 1 p2) (nth 1 p5)))
(abs (- (nth 1 p5) (nth 1 p6))) ) (setq check 0))
(if (> (abs (- (nth 1 p2) (nth 1 p6)))
(abs (- (nth 1 p5) (nth 1 p6))) ) (setq check 0))
(if (= 0 check) (princ "\ninvalid data") (progn
(setq ls1 (arlst (list (nth 1 p1) (nth 1 p2) (nth 1 p3) (nth 1 p4) )))
; (princ ls1)
(setq p7 (list (nth 0 p3) (nth 0 ls1) 0))
(setq p8 (list (nth 0 p3) (nth 1 ls1) 0))
(mkline p7 p8 l1)
(setq p7 (list (nth 0 p3) (nth 2 ls1) 0))
(setq p8 (list (nth 0 p3) (nth 3 ls1) 0))
(mkline p7 p8 l1)

(setq ls1 (arlst (list (nth 1 p1) (nth 1 p2) (nth 1 p5) (nth 1 p6) )))
; (princ ls1)
(setq p7 (list (nth 0 p5) (nth 0 ls1) 0))
(setq p8 (list (nth 0 p5) (nth 1 ls1) 0))
(mkline p7 p8 l1)
(setq p7 (list (nth 0 p5) (nth 2 ls1) 0))
(setq p8 (list (nth 0 p5) (nth 3 ls1) 0))
(mkline p7 p8 l1)

(setq p7 (list (nth 0 p3) (nth 1 ls1) 0))
(setq p8 (list (nth 0 p5) (nth 1 ls1) 0))
(mkline p7 p8 l1)
(setq p7 (list (nth 0 p3) (nth 2 ls1) 0))
(setq p8 (list (nth 0 p5) (nth 2 ls1) 0))
(mkline p7 p8 l1)

(setq ls2 (arlst (list (nth 0 p3) (nth 0 p5))))

(setq ll1 (list
(cons 0 "line")
(cons 8 (getvar "clayer"))
))

(if (< (nth 0 p1) (nth 0 ls2)) (progn
(setq p7 (list (nth 0 ls2) (nth 1 ls1) 0))
(setq p8 (list (nth 1 ls2) (nth 2 ls1) 0))
(setq p7 (list (* (+ (nth 0 p7) (nth 0 p8)) 0.5) (nth 1 p7) 0))
(drawrt2 p7 p8 ll1)

(setq p7 (list (- (nth 0 ls2) 70) (- (nth 1 ls1) 100) 0))
(setq p8 (list (- (nth 0 ls2) 70) (+ (nth 2 ls1) 100) 0))
(mkline p7 p8 ll1)

(setq p9 (list (+ (nth 0 p7) 70) (nth 1 p7) 0))
(mkline p7 p9 ll1)

(setq p9 (list (+ (nth 0 p8) 70) (nth 1 p8) 0))
(mkline p8 p9 ll1)
)(progn
(setq p7 (list (nth 0 ls2) (nth 1 ls1) 0))
(setq p8 (list (nth 1 ls2) (nth 2 ls1) 0))
(setq p8 (list (* (+ (nth 0 p7) (nth 0 p8)) 0.5) (nth 1 p8) 0))
(drawrt2 p7 p8 ll1)

(setq p7 (list (+ (nth 1 ls2) 70) (- (nth 1 ls1) 100) 0))
(setq p8 (list (+ (nth 1 ls2) 70) (+ (nth 2 ls1) 100) 0))
(mkline p7 p8 ll1)

(setq p9 (list (- (nth 0 p7) 70) (nth 1 p7) 0))
(mkline p7 p9 ll1)

(setq p9 (list (- (nth 0 p8) 70) (nth 1 p8) 0))
(mkline p8 p9 ll1)
))


(command "erase" data_m "")

))
(princ)
)

(defun mkh(/ p3 p4 p5 p6 p7 p8 p9 ls1 ls2 getom ll1)

(setq p3 (cdr (assoc 10 l1)))
(setq p4 (cdr (assoc 11 l1)))
(setq p5 (cdr (assoc 10 l2)))
(setq p6 (cdr (assoc 11 l2)))

(if (> (abs (- (nth 0 p1) (nth 0 p3)))
(abs (- (nth 0 p3) (nth 0 p4))) ) (setq check 0))
(if (> (abs (- (nth 0 p1) (nth 0 p4)))
(abs (- (nth 0 p3) (nth 0 p4))) ) (setq check 0))
(if (> (abs (- (nth 0 p2) (nth 0 p5)))
(abs (- (nth 0 p5) (nth 0 p6))) ) (setq check 0))
(if (> (abs (- (nth 0 p2) (nth 0 p6)))
(abs (- (nth 0 p5) (nth 0 p6))) ) (setq check 0))

(if (= 0 check) (princ "\ninvalid data") (progn

(setq ls1 (arlst (list (nth 0 p1) (nth 0 p2) (nth 0 p3) (nth 0 p4) )))
; (princ ls1)
(setq p7 (list (nth 0 ls1) (nth 1 p3) 0))
(setq p8 (list (nth 1 ls1) (nth 1 p3) 0))
(mkline p7 p8 l1)
(setq p7 (list (nth 2 ls1) (nth 1 p3) 0))
(setq p8 (list (nth 3 ls1) (nth 1 p3) 0))
(mkline p7 p8 l1)

(setq ls1 (arlst (list (nth 0 p1) (nth 0 p2) (nth 0 p5) (nth 0 p6) )))
; (princ ls1)
(setq p7 (list (nth 0 ls1) (nth 1 p5) 0))
(setq p8 (list (nth 1 ls1) (nth 1 p5) 0))
(mkline p7 p8 l1)
(setq p7 (list (nth 2 ls1) (nth 1 p5) 0))
(setq p8 (list (nth 3 ls1) (nth 1 p5) 0))
(mkline p7 p8 l1)

(setq p7 (list (nth 1 ls1) (nth 1 p3) 0))
(setq p8 (list (nth 1 ls1) (nth 1 p5) 0))
(mkline p7 p8 l1)
(setq p7 (list (nth 2 ls1) (nth 1 p3) 0))
(setq p8 (list (nth 2 ls1) (nth 1 p5) 0))
(mkline p7 p8 l1)

(setq getom (getvar "osmode"))
(setvar "osmode" 0)

(setq ll1 (list
(cons 0 "line")
(cons 8 (getvar "clayer"))
))
(setq ls2 (arlst (list (nth 1 p3) (nth 1 p5))))
;(princ ls2)

(if (> (nth 1 p1) (nth 1 ls2)) (progn

(setq p7 (list (nth 1 ls1) (nth 0 ls2) 0))
(setq p8 (list (nth 2 ls1) (nth 1 ls2) 0))
(setq p8 (list (nth 2 ls1) (* (+ (nth 1 p7) (nth 1 p8)) 0.5) 0))

(drawrt3 p7 p8 ll1)

(setq p7 (list (- (nth 1 ls1) 100) (+ (nth 1 ls2) 70) 0))
(setq p8 (list (+ (nth 2 ls1) 100) (+ (nth 1 ls2) 70) 0))
(mkline p7 p8 ll1)

(setq p9 (list (nth 0 p7) (- (nth 1 p7) 70) 0))
(mkline p7 p9 ll1)

(setq p9 (list (nth 0 p8) (- (nth 1 p8) 70) 0))
(mkline p8 p9 ll1)
)(progn
(setq p7 (list (nth 1 ls1) (nth 0 ls2) 0))
(setq p8 (list (nth 2 ls1) (nth 1 ls2) 0))
(setq p7 (list (nth 1 ls1) (* (+ (nth 1 p7) (nth 1 p8)) 0.5) 0))

(drawrt3 p7 p8 ll1)


(setq p7 (list (- (nth 1 ls1) 100) (- (nth 0 ls2) 70) 0))
(setq p8 (list (+ (nth 2 ls1) 100) (- (nth 0 ls2) 70) 0))
(mkline p7 p8 ll1)

(setq p9 (list (nth 0 p7) (+ (nth 1 p7) 70) 0))
(mkline p7 p9 ll1)

(setq p9 (list (nth 0 p8) (+ (nth 1 p8) 70) 0))
(mkline p8 p9 ll1)


))

(setvar "osmode" getom)

(command "erase" data_m "")
))
(princ)
)

(setvar "cmdecho" 0) (command "undo" "mark") (setvar "cmdecho" 1)
(if (= 0 check) (princ "\ninvalid data") (progn
(if (< (abs (- (nth 0 (cdr (assoc 10 l1)))
(nth 0 (cdr (assoc 11 l1))) )) 0.00001) (mkv))
(if (< (abs (- (nth 1 (cdr (assoc 10 l1)))
(nth 1 (cdr (assoc 11 l1))) )) 0.00001) (mkh))


))

(princ)

)
(wd_import)
(wd_procced)
)


Có 2 lệnh trong lisp này.
w1: vẽ cửa sổ kiểu 1
w2: vẽ cửa sổ kiểu 2


mình không thể sài nổi cái này
  • 0

#87 tamtron

tamtron

    biết vẽ arc

  • Members
  • PipPip
  • 49 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 18 April 2009 - 01:28 AM

dạo này chắc anh ji bận quá nên chắc ko trả lời đc,

có khi nào 2 cái lisp cửa sổ với cửa đi nó kén phiển bản ko ạ, anh ji dùng cad bao nhiêu ạ, bởi rất nhiều người ko xài được 2 lisp này ạ,
ở lisp c1 thì khi chọn hướng cửa, em click point xong thì ko có hiện tượng j xảy ra cả, nó đứng yên và nhảy về dòng command trắng tinh, đã thế lại còn làm clear hết đống snap của em( vì bình thường snap em để select all mà)

Anh Ji lúc nào rảnh rỗi thì check hộ tụi em phát nhé
  • 0

#88 cadpro

cadpro

    biết zoom

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

Đã gửi 13 May 2009 - 09:38 AM

Bản vẽ cũng ổn rồi. chuẩn bị viết TEXT và Dim thôi. Nhưng trước khi chuyển sang phần mới. Tôi muốn cho cho các bạn biết thêm 2 mẹo nữa khi vẽ.

Bài 8: Break đối tượng
Nhiều người sẽ bảo có lệnh Break (br) rồi cần gì LISP. Nhưng không! Lệnh BR thường không chặt điểm mà chặt đoạn nếu ta không cẩn trọng.


(defun c:bf (/ dt diem)
(setq dt (car (entsel "\nVao doi tuong can chat")))
(if dt
(progn
(redraw dt 3)
(setq diem (getpoint "\nVao diem chat: "))
(redraw dt 4)
)
)
(if (and dt diem)
(command ".break" dt diem diem)
)
)


Lệnh bf sẽ giúp ta chặt đối tượng tại một điểm.

Bài 9: Nối 2 đường Line bị ngặt quãng
Hãy tưởng tượng bạn có 1 đương Line. Bạn Br nó. Đường Line giờ đã trở thành 2 đường riêng biệt, cách nhau 1 đoạn. Không cần thiết phải xoa 1 đường và EX đường kia khi bạn muốn 2 đường làm 1.


(defun c:jl (/ p1 p2 p3 ssdt entla entlb tt p1a p2a tt p1b p2b layermoi TAPLINEMOI TENLAYERMOI)
(defun thanghang (p0 p1 p2 / dx1 dy1 dx2 dy2 x1 y1 x2 y2 x0 y0)
(setq
x0 (car p0)
y0 (cadr p0)
x1 (car p1)
y1 (cadr p1)
x2 (car p2)
y2 (cadr p2)
dx1 (- x1 x0)
dy1 (- y1 y0)
dx2 (- x2 x0)
dy2 (- y2 y0)
)
(if (equal (* dx1 dy2) (* dx2 dy1) 0.01)
t
nil
)
)
(defun noiline (p1 p2 p3 p4 / kq dmax)
(if (and (thanghang p1 p2 p3) (thanghang p1 p2 p4))
(progn
(setq d1 (distance p1 p3)
d2 (distance p1 p4)
d3 (distance p2 p3)
d4 (distance p2 p4)
dmax (max d1 d2 d3 d4)
kq (cond
((= dmax d1) (list p1 p3))
((= dmax d2) (list p1 p4))
((= dmax d3) (list p2 p3))
((= dmax d4) (list p2 p4))
(t nil)
)
)
kq
)
nil
)
)
(init)
(setq
p1 (getpoint "\ngocdau: ")
p2 (getcorner p1 "\ngocsau: ")
ssdt (ssget "c" p1 p2 '((0 . "LINE")))
entla (ssname ssdt 0)
entlb (ssname ssdt 1)
tt (entget entla)
p1a (cdr (assoc 10 tt))
p2a (cdr (assoc 11 tt))
tt (entget entlb)
p1b (cdr (assoc 10 tt))
p2b (cdr (assoc 11 tt))
tenlayermoi (cdr (assoc 8 (entget entla)))
)
(if (setq taplinemoi (noiline p1a p2a p1b p2b))
(progn
(command ".erase" ssdt "")
(entmake
(list
(cons 0 "LINE")
(cons 8 tenlayermoi)
(cons 10 (car taplinemoi))
(cons 11 (cadr taplinemoi))
)
)
(traos)
)
(princ "\nKhong the noi line duoc !")
)
(done)
)


Lệnh jl rất tiện. Bạn thử dùng mà xem...

Hẹn gặp lại vào bài sau "Những Lisp sử dụng để hoàn thiện bản vẽ". Chúc các bạn vui vẻ

Bác xem lại giúp em, sao em dùng lệnh JL thì nó hiện lên thông báo này:"JL ; error: no function definition: INIT" rồi ko sử dụng được nữa
  • 0

#89 thangduybo

thangduybo

    Chưa sử dụng CAD

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

Đã gửi 01 August 2009 - 08:58 AM

anh ơi up lại file vlx đi anh , link die rồi
  • 0

#90 MoneyFan

MoneyFan

    biết vẽ circle

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

Đã gửi 09 August 2009 - 07:46 PM

Các lisp trên thật là hay và hiệu quả
cám ơn các bác nhiều
  • 0
TỈNH THANH COMPANY
CHUYÊN KINH DOANH CÁC LOẠI ĐÁ GRANIT , ĐÁ MABLE , ĐÁ SÂN VƯỜN TIỂU CẢNH
NHẬN THI CÔNG , TƯ VẤN ,LẮP ĐẶT ỐP LÁT CÁC LOẠI ĐÁ GRANIT CHO CÁC CÔNG TRÌNH
Mọi chi tiết xin liên hệ: Cửa Hàng Tỉnh Thanh 121 Trường Chinh - Thanh Xuân - Hà Nội
Tel: 04.3.8.695430 DĐ: 0943.905.556
Thân chào quý khách!

#91 hailuavnn

hailuavnn

    biết vẽ ellipse

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

Đã gửi 11 August 2009 - 11:34 AM

Thế đấy ! Giờ thì bản vẽ đã ổn thỏa. Chẳng còn gì để làm nữa. Nhưng với đống LISP kia thì sao nhỉ? Nhiều file *.LSP quá @_@. Làm gì?

Bài 12: Chuyển LSP sang VLX
Công cụ này thì cực hay. Vì từ hàng trăm file LSP ta có thể chuyển thành 1 file VLX, gọn, nhẹ, bảo mật cao hơn...

Hình đã gửi

Các bước thực hiện.

Bước 1: Khởi động Cad, tại dòng Command nhập lệnh vlide.

Hình đã gửi

Bước 2: Trong cửa sổ Visual Lisp for AutoCad, nhấn vào File/Make Application/New Application Wizard

Hình đã gửi

Bước 3: Chọn Simple vầ nhấn Next

Hình đã gửi

Bước 4: Lựa chọn đường dẫn (Application Location) và tên file (Application Name) Rồi nhấn Next

Hình đã gửi

Bước 5: Nhấn vào nút Add, 1 cửa sổ chọn file hiện ra, select tất cả các file LSP, rồi nhấn Open

Hình đã gửi

Bước 6: Các file LSP vừa lựa chọn được cập nhật và bảng danh sách, nhấn Next

Hình đã gửi

Bước 7: Nhấn Finish để kết thúc.

Hình đã gửi

Quá trình này kết thúc thành công bàng 1 thông báo hoàn thành

Hình đã gửi

Ok. Giờ thì file VLX duy nhất đã được tạo ra, rất gọn, rất nhẹ và bảo mật cao hơn..0_0

Nếu bạn không muốn mất thời gian, có thể tải file vlxcoban.vlx tại đây:

http://thunglungden.org/cadviet/cad/lisp/v...an/vlxcoban.vlx

Kết thúc. Chúc các bạn thành công với bộ lisp cơ bản này. Hẹn gặp lại lần sau với một bộ lisp năng cao, phát huy hết các tính năng của CAD.

Chào thân ái ! :bigsmile:


jikibo xem lại link:http://thunglungden.org/cadviet/cad/lisp/v...an/vlxcoban.vlx dùm với nha. Link down không được.Thank
  • 0

#92 amen0ra

amen0ra

    Chưa sử dụng CAD

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

Đã gửi 11 August 2009 - 02:55 PM

hình như list vẽ cửa ko dùng được!!! mà mình thấy nối 2 đoạn cần gì phải dùng list? Mình hay dùng lệnh J.
  • 0
°¨(¯`'•.¸Tôi ko phải đặc biệt nhưng tôi là một .¸.•'´¯)¨°

#93 viekts

viekts

    Chưa sử dụng CAD

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

Đã gửi 11 August 2009 - 04:41 PM

lips này hay quá. thank bác ji
  • 0

#94 xoan

xoan

    biết pan

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

Đã gửi 18 August 2009 - 11:31 AM

thank các bro nhé.thật là bổ ích.
hix,nhưng e cũng bị mắc fải lỗi ở vẽ Cửa và nối Line như mấy anh em trong 4rum.mong các Bro co time rảnh post bài hướng dẫn cụ thể.
Thank các bác nhìu nhìu
  • 0

#95 vanquang_xd

vanquang_xd

    biết pan

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

Đã gửi 18 August 2009 - 09:56 PM

các pro ơi giúp em với, em mò mãi mà chưa thưc hiện được những lisp đó, các pro post video hướng dẫn cụ thể được ko ạ, em cám ơn rất nhiều
  • 0

#96 vanquang_xd

vanquang_xd

    biết pan

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

Đã gửi 20 August 2009 - 10:46 PM

cac pro oi ko ai chiu giup em ah. giup em voi!
  • 0

#97 giatan2010

giatan2010

    Chưa sử dụng CAD

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

Đã gửi 21 August 2009 - 12:24 AM

chào anh em.
mình cũng làm được gần hết chỉ có cái cửa là làm không được.ai biết làm thì chỉ mình nhé
  • 0

#98 miilp

miilp

    Chưa sử dụng CAD

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

Đã gửi 21 September 2009 - 03:01 PM

Nếu chọn hach theo đối tượng được thi sẽ hay hơn nhiếu
  • 0

#99 lavos

lavos

    biết pan

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

Đã gửi 10 November 2009 - 11:02 PM

lisp JL, cửa đi và cửa sổ k dùng đc..=(
  • 0

#100 xungfen

xungfen

    biết pan

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

Đã gửi 16 November 2009 - 09:27 AM

đối với lisp về layer, mình có thể chọn layer và colour, vậy nếu mình muốn set luôn line type thì làm thế nào vậy bạn
  • 0