Đến nội dung


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

Viết Lisp theo yêu cầu


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

#821 cuongtk2

cuongtk2

    biết vẽ ellipse

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

Đã gửi 28 June 2008 - 04:24 PM

Cảm ơn ssq nhiều, mấy cái font đó là mã unicode của chữ Việt thôi ( xem bài hiện tiếng việt trên command cho cad2007)
Mình viết cái lisp này để muốn tra thước Lỗ Ban khỏi cần ra web, trước đây có 1 con thước dùng đuôi VLX chỉ hiển thị tốt trên cad 2004, còn trên cad 2007 thì lỗi.
Thực ra mình viết lisp cũng nhiều nhưng với DCL không có tài liệu nào viết cụ thể cách vào ra nên mới phải học hỏi thêm.
Theo tài liệu hướng dẫn của Nguyễn Hữu Lộc thì muốn xử lý phép tính thì phải giấu hộp thoại. Bây giờ mới thấy là mình hiểu chưa đúng tài liệu (:mellow:)
  • 0

#822 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 28 June 2008 - 04:58 PM

ok chính xác đó bác

Lệnh là T2PL (Text to Pline).

Sau khi bạn gõ lệnh T2PL, bạn hãy chọn tất cả các text X, Y (tức là nếu đa giác có n đỉnh thì bạn sẽ chọn 2*n text). Chương trình sẽ tự động nhận diện đâu là text X, đâu là text Y. Bạn đừng chọn các text không phải là tọa độ x, y (ví dụ như text số thứ tự, text chiều dài cạnh,...) vì như thế chương trình sẽ bị lỗi.

Chương trình sẽ vẽ một pline tại đúng tọa độ X, Y đó và có thể nó sẽ nằm rất xa so với tọa độ của text. Sau khi thực hiện lệnh, bạn hãy sử dụng lệnh Zoom E để xem Pline vừa được tạo nằm ở đâu.


(defun c:t2pl()
(setq ss (ssget '((0 . "TEXT")))
lst (ss2ent ss)
fuz (/ (cdr (assoc 40 (entget (car lst)))) 2.0)
lst (mapcar '(lambda (e) (setq tt (entget e)) (cons (cdr (assoc 10 tt)) (cdr (assoc 1 tt)))) lst)
lst (vl-sort lst '(lambda (e1 e2) (if (equal (cadar e1)(cadar e2) fuz)(< (caar e1)(caar e2))(> (cadar e1)(cadar e2)))))
lst (mapcar '(lambda (e) (cdr e)) lst)
cur ""
x nil
)
(luuos)
(setvar "osmode" 0)
(command ".pline")
(foreach pp lst
(if (null x)
(setq x pp)
(progn
(command (strcat x "," pp))
(setq x nil)
)
)
)
(command "")
(traos)
(princ)
)

(defun luuos ()
(setq
CADVIET_OSMODE (getvar "OSMODE")
CADVIET_AUTOSNAP (getvar "AUTOSNAP")
)
)
(defun traos ()
(if CADVIET_OSMODE
(setvar "OSMODE" CADVIET_OSMODE)
)
(if CADVIET_AUTOSNAP
(setvar "AUTOSNAP" CADVIET_AUTOSNAP)
)
)

(defun ss2ent(ss / sodt index lstent)
(setq
sodt (if ss (sslength ss) 0)
index 0
)
(repeat sodt
(setq ent (ssname ss index)
index (1+ index)
lstent (cons ent lstent)
)
)
(reverse lstent)
)

  • 0

#823 ditimbantot

ditimbantot

    biết zoom

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

Đã gửi 28 June 2008 - 05:07 PM

Cảm ơn bác nhiều lắm để về nhà thử cái xem
  • 0

#824 ditimbantot

ditimbantot

    biết zoom

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

Đã gửi 28 June 2008 - 06:06 PM

Hu hu bác Hoanh ơi không được rồi bác sửa lại lisp giùm mình đi nhận ngược lại được không ,Y trước X sau trong bản vẽ của mình được không.
Thí dụ X: 1186000.00 Y:58186000.00 em về vẽ thử của bác rồi đúng nhưng bảng tọa độ của em bị sai nên nhận diện sai, làm hình thể xa tuốt mù tịt luôn
Cái của bác viết tự động nhận diện XY nên bảng tọa độ xuất ra làm lệnh hình thể khổ ghê luôn đó
Bác thử gõ pline sau đó nhập tọa độ Y trước X sau sẽ đúng hình thể mà em post lên ấy
  • 0

#825 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 28 June 2008 - 06:09 PM

Hu hu bác Hoanh ơi không được rồi bác sửa lại lisp giùm mình đi nhận ngược lại được không ,Y trước X sau trong bản vẽ của mình được không.
Thí dụ X: 1186000.00 Y:58186000.00 em về vẽ thử của bác rồi đúng nhưng bảng tọa độ của em bị sai nên nhận diện sai, làm hình thể xa tuốt mù tịt luôn
Cái của bác viết tự động nhận diện XY nên bảng tọa độ xuất ra làm lệnh hình thể khổ ghê luôn đó

Bây giờ bạn muốn thế nào?
Ngoài việc đổi X với Y, còn gì nữa không?
Bạn hãy nêu luôn một thể.

Tôi không ngại viết, nhưng rất ngại sửa.
  • 1

#826 ditimbantot

ditimbantot

    biết zoom

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

Đã gửi 28 June 2008 - 06:11 PM

Không chỉ như vậy thôi bác ơi xin lỗi bác nha
  • 0

#827 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 28 June 2008 - 06:12 PM

Không chỉ như vậy thôi bác ơi xin lỗi bác nha

Đây là mã lisp đã được sửa đổi Y trước X sau:

(defun c:t2pl()
(setq ss (ssget '((0 . "TEXT")))
lst (ss2ent ss)
fuz (/ (cdr (assoc 40 (entget (car lst)))) 2.0)
lst (mapcar '(lambda (e) (setq tt (entget e)) (cons (cdr (assoc 10 tt)) (cdr (assoc 1 tt)))) lst)
lst (vl-sort lst '(lambda (e1 e2) (if (equal (cadar e1)(cadar e2) fuz)(> (caar e1)(caar e2))(> (cadar e1)(cadar e2)))))
lst (mapcar '(lambda (e) (cdr e)) lst)
cur ""
x nil
)
(luuos)
(setvar "osmode" 0)
(command ".pline")
(foreach pp lst
(if (null x)
(setq x pp)
(progn
(command (strcat x "," pp))
(setq x nil)
)
)
)
(command "")
(traos)
(princ)
)

(defun luuos ()
(setq
CADVIET_OSMODE (getvar "OSMODE")
CADVIET_AUTOSNAP (getvar "AUTOSNAP")
)
)
(defun traos ()
(if CADVIET_OSMODE
(setvar "OSMODE" CADVIET_OSMODE)
)
(if CADVIET_AUTOSNAP
(setvar "AUTOSNAP" CADVIET_AUTOSNAP)
)
)

(defun ss2ent(ss / sodt index lstent)
(setq
sodt (if ss (sslength ss) 0)
index 0
)
(repeat sodt
(setq ent (ssname ss index)
index (1+ index)
lstent (cons ent lstent)
)
)
(reverse lstent)
)

  • 1

#828 cuongtk2

cuongtk2

    biết vẽ ellipse

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

Đã gửi 28 June 2008 - 06:15 PM

Bây giờ bạn muốn thế nào?
Ngoài việc đổi X với Y, còn gì nữa không?
Bạn hãy nêu luôn một thể.

Tôi không ngại viết, nhưng rất ngại sửa.

Biết mà, mấy cha địa chính này đảo điên trời đất, X dọc Y ngang. Mở bản vẽ ra xem định lưu ý anh Hoành nhưng ko kịp.
  • 1

#829 ditimbantot

ditimbantot

    biết zoom

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

Đã gửi 28 June 2008 - 06:16 PM

Thanks bác nhiều lắm bác ở HCM hay chỗ khác có dịp sẽ hậu tạ bác
- Thật phiền bác

- Mình sẽ góp phần vào cadviet , bởi vì khi lên diễn dàn mình thấy có rất nhiều lisp mình có , mình sẽ chia sẽ cùng các bạn, mình thành thật xin lỗi vì vấn đề này.
- Hiện tại mình có nguyên bộ lisp rất lớn mình từng post lên forum rồi , nếu có vấn đề gì liên quan mình sẽ trợ giúp hết mình
- Cuối cùng cũng thành thật xin lỗi vì mình phiền quá
  • 0

#830 cuongtk2

cuongtk2

    biết vẽ ellipse

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

Đã gửi 28 June 2008 - 06:17 PM

Bây giờ bạn muốn thế nào?
Ngoài việc đổi X với Y, còn gì nữa không?
Bạn hãy nêu luôn một thể.

Tôi không ngại viết, nhưng rất ngại sửa.

Biết mà, mấy cha địa chính này đảo điên trời đất, X dọc Y ngang bọn này nằm vẽ hay sao ấy anh ạ. Mở bản vẽ ra xem định lưu ý anh Hoành nhưng ko kịp.
  • 0

#831 vinataba

vinataba

    biết vẽ circle

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

Đã gửi 30 June 2008 - 11:35 PM

Biết mà, mấy cha địa chính này đảo điên trời đất, X dọc Y ngang bọn này nằm vẽ hay sao ấy anh ạ. Mở bản vẽ ra xem định lưu ý anh Hoành nhưng ko kịp.

Ông này chả hiểu gì, mỗi nghề có đặc thù riêng. Trong địa chính thì bắt buộc phải đảo x, y như thế thì mới dùng được vì hệ tọa độ trắc địa nó ngược với hệ tọa độ trên cad.
  • 0

#832 trananhtuan

trananhtuan

    biết vẽ arc

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

Đã gửi 02 July 2008 - 08:48 PM

Nhờ các bác viết giúp cái hộp thoại cho cái lệnh này của em, có một số ý muốn như thế này:
-Cố gắng giữ nguyên các câu lệnh của em chỉ sửa những chổ cần thiết
-Dùng thuần lisp giúp em vì em không biết VBA.
-Hình dáng hộp thoại gồm:
+03 imagebutton thể hiện 03 loại thép hình.
+03 nút : Chèn tiêu đề; kẻ bảng; chọn và hủy bỏ.
-Hộp thoại dùng các file: SLD rời đừng gộp chung lại (để em còn phát triển).
-Khi chọn 1 ảnh song bấm enter thì thực thi giống như chọn nút ok.
-Nhớ vị trí ảnh chọn ở lần gọi lệnh sau.
-Mổi ảnh và nút có thể chọn bằng chử ở bàn phím.
-Tạo giúp em cái vòng lặp khi thực hiện xong lệnh sẽ tiếp tục quay lại.
Cảm ơn các bác nhiều.



(Defun C:tkth ( )
(setvar "MODEMACRO" "THONG KE THEP HINH")
(command "-style" "thep" "VNI-HELVE" "0" "1" "0" "n" "n")
(setq lc (strcase (getstring "\nCac lua chon :Tieu de/Ke khung/thepVuong/thepL/thepC:")))
(if (= lc "t")
(progn
(setq a (getpoint "\nChon diem tren ben trai: "))
(setq x (car a))
(setq y (cadr a))
(luuos)
(setvar "osmode" 0)
(command "INSERT" "tieudel" (list (+ x 0)(- y 0)) 1 1 0)
(command "-layer" "new" "Cat-20" "color" "20" "cat-20" "")
(command "-layer" "set" "Cat-20" "")
(command "LINE"(list (+ x 0) (- y 1500)) (list (+ x 0) (+ y 0)) (list (+ x 13214) (+ y 0)) (list (+ x 13214) (- y 1500)) "")
(traos)

)
)
(if (= lc "T")
(progn
(setq a (getpoint "\nChon diem tren ben trai: "))
(setq x (car a))
(setq y (cadr a))
(luuos)
(setvar "osmode" 0)
(command "INSERT" "tieudel" (list (+ x 0)(- y 0)) 1 1 0)
(command "-layer" "new" "Cat-20" "color" "20" "cat-20" "")
(command "-layer" "set" "Cat-20" "")
(command "LINE"(list (+ x 0) (- y 1500)) (list (+ x 0) (+ y 0)) (list (+ x 13214) (+ y 0)) (list (+ x 13214) (- y 1500)) "")
(traos)

)
)
(if (= lc "k")
(progn
(command "-style" "thep" "VNI-HELVE" "0" "1" "0" "n" "n")
(setq a (getpoint "\nChon diem tren ben trai: "))
(setq x (car a))
(setq y (cadr a))
(luuos)
(setvar "osmode" 0)
(command "-layer" "new" "Cat-20" "color" "20" "cat-20" "")
(setq s (getreal "\nSo luong hang: "))
(setq h (* s 600))
(setq z (* s 300))
(command "-layer" "set" "Cat-20" "")
(command "LINE"(list (+ x 0) (- y 0)) (list (+ x 0) (- y h)) "")
(command "LINE"(list (+ x 13214) (- y 0)) (list (+ x 13214) (- y h)) "")
(traos)
(luuos)
(setvar "osmode" 0)
(command "LINE"(list (+ x 2000) (- y 0)) (list (+ x 2000) (- y h)) "")
(command "LINE"(list (+ x 4925) (- y 0)) (list (+ x 4925) (- y h)) "")
(command "LINE"(list (+ x 7261) (- y 0)) (list (+ x 7261) (- y h)) "")
(command "LINE"(list (+ x 8610) (- y 0)) (list (+ x 8610) (- y h)) "")
(command "LINE"(list (+ x 11214) (- y 0)) (list (+ x 11214) (- y h)) "")
(command "LINE"(list (+ x 1200) (- y 0)) (list (+ x 1200) (- y h)) "")
(command "TRIM" "last" "" "f" (list (+ x 1) (- y 1)) (list (+ x 1) (+ (- y h) 1)) "" "")
(command "INSERT" "vitrichuthep" (list (+ x 950)(- y z)) 1 1 90)
(setq w (getstring 5"\nSo luong cau kien : "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 950)(- y z)) 250 90 "( CK)")
(command "TEXT" "c" (list (+ x 950)(- y z 250)) 250 90 w)
;(command "INSERT" "vitrichuthep" (list (+ x 500)(- y z)) 1 1 90)
(princ "\nChon mau lop :")
;(setq t (getstring 5"\nTen cau kien : "))
;(command "UNDO" "")
(command "TEXT" "c" (list (+ x 500)(- y z)) 250 90 "TEÂN")
(command "ddedit" "last" "")
(traos)

)
)
(if (= lc "K")
(progn
(command "-style" "thep" "VNI-HELVE" "0" "1" "0" "n" "n")
(setq a (getpoint "\nChon diem tren ben trai: "))
(setq x (car a))
(setq y (cadr a))
(luuos)
(setvar "osmode" 0)
(command "-layer" "new" "Cat-20" "color" "20" "cat-20" "")
(setq s (getreal "\nSo luong hang: "))
(setq h (* s 600))
(setq z (* s 300))
(command "-layer" "set" "Cat-20" "")
(command "LINE"(list (+ x 0) (- y 0)) (list (+ x 0) (- y h)) "")
(command "LINE"(list (+ x 13214) (- y 0)) (list (+ x 13214) (- y h)) "")
(traos)
(luuos)
(setvar "osmode" 0)
(command "LINE"(list (+ x 2000) (- y 0)) (list (+ x 2000) (- y h)) "")
(command "LINE"(list (+ x 4925) (- y 0)) (list (+ x 4925) (- y h)) "")
(command "LINE"(list (+ x 7261) (- y 0)) (list (+ x 7261) (- y h)) "")
(command "LINE"(list (+ x 8610) (- y 0)) (list (+ x 8610) (- y h)) "")
(command "LINE"(list (+ x 11214) (- y 0)) (list (+ x 11214) (- y h)) "")
(command "LINE"(list (+ x 1200) (- y 0)) (list (+ x 1200) (- y h)) "")
(command "TRIM" "last" "" "f" (list (+ x 1) (- y 1)) (list (+ x 1) (+ (- y h) 1)) "" "")
(command "INSERT" "vitrichuthep" (list (+ x 950)(- y z)) 1 1 90)
(setq w (getstring 5"\nSo luong cau kien : "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 950)(- y z)) 250 90 "( CK)")
(command "TEXT" "c" (list (+ x 950)(- y z 250)) 250 90 w)
;(command "INSERT" "vitrichuthep" (list (+ x 500)(- y z)) 1 1 90)
(princ "\nChon mau lop :")
;(setq t (getstring 5"\nTen cau kien : "))
;(command "UNDO" "")
(command "TEXT" "c" (list (+ x 500)(- y z)) 250 90 "TEÂN")
(command "ddedit" "last" "")
(traos)

)
)
(if (= lc "l")
(progn
(command "-style" "thep" "VNI-HELVE" "0" "1" "0" "n" "n")
(setq a (getpoint "\nChon diem tren ben trai: "))
(setq x (car a))
(setq y (cadr a))
(luuos)
(setvar "osmode" 0)
(command "LINE"(list (+ x 0) (- y 600)) (list (+ x 13214) (- y 600)) "")
(command "INSERT" "vitrichuthep" (list (+ x 1600)(- y 450)) 1 1 0)
(setq s (getstring 5"\nSo thu tu : "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 1600)(- y 450)) 250 0 s)
(command "TEXT" "c" (list (+ x 3446)(- y 450)) 250 0 "L * *")
(command "INSERT" "vitrichuthep" (list (+ x 3082)(- y 450)) 1 1 0)
(setq d (getreal "\nCanh thu nhat : "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 3082)(- y 450)) 250 0 (fix d))
(command "INSERT" "vitrichuthep" (list (+ x 3791)(- y 450)) 1 1 0)
(setq b (getreal "\nCanh thu hai : "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 3791)(- y 450)) 250 0 (fix :mellow:)
(command "INSERT" "vitrichuthep" (list (+ x 4404)(- y 450)) 1 1 0)
(setq w (getreal "\nDo day : "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 4404)(- y 450)) 250 0 (fix w))
(command "INSERT" "vitrichuthep" (list (+ x 6092)(- y 450)) 1 1 0)
(setq l (getreal "\nChieu dai thanh: "))
(command "erase" "last" "")
(command "TEXT" "c" (list (+ x 6092)(- y 450)) 250 0 (fix l))
(command "INSERT" "vitrichuthep" (list (+ x 7935)(- y 450)) 1 1 0)
(setq n (getreal "\nSo luong thanh: "))
(command "erase" "last" "")
(command "TEXT" "c" (list (+ x 7935)(- y 450)) 250 0 (fix n))
(setq c (* n l))
(setq m (/ c 1000))
(command "TEXT" "c" (list (+ x 9912)(- y 450)) 250 0 (rtos m 2 2))
(setq r (+ d :ph34r:)
(setq k (* w r))
(setq v (* k 786))
(setq j (* v m))
(setq t (/ j 100000))
(command "TEXT" "c" (list (+ x 12214)(- y 450)) 250 0 (rtos t 2 2))
(command "LINE"(list (+ x 0) (- y 600)) (list (+ x 13214) (- y 600)) "")
(traos)
)
)


(if (= lc "L")
(progn
(command "-style" "thep" "VNI-HELVE" "0" "1" "0" "n" "n")
(setq a (getpoint "\nChon diem tren ben trai: "))
(setq x (car a))
(setq y (cadr a))
(luuos)
(setvar "osmode" 0)
(command "LINE"(list (+ x 0) (- y 600)) (list (+ x 13214) (- y 600)) "")
(command "INSERT" "vitrichuthep" (list (+ x 1600)(- y 450)) 1 1 0)
(setq s (getstring 5"\nSo thu tu : "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 1600)(- y 450)) 250 0 s)
(command "TEXT" "c" (list (+ x 3446)(- y 450)) 250 0 "L * *")
(command "INSERT" "vitrichuthep" (list (+ x 3082)(- y 450)) 1 1 0)
(setq d (getreal "\nCanh thu nhat : "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 3082)(- y 450)) 250 0 (fix d))
(command "INSERT" "vitrichuthep" (list (+ x 3791)(- y 450)) 1 1 0)
(setq b (getreal "\nCanh thu hai : "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 3791)(- y 450)) 250 0 (fix :angry:)
(command "INSERT" "vitrichuthep" (list (+ x 4404)(- y 450)) 1 1 0)
(setq w (getreal "\nDo day : "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 4404)(- y 450)) 250 0 (fix w))
(command "INSERT" "vitrichuthep" (list (+ x 6092)(- y 450)) 1 1 0)
(setq l (getreal "\nChieu dai thanh: "))
(command "erase" "last" "")
(command "TEXT" "c" (list (+ x 6092)(- y 450)) 250 0 (fix l))
(command "INSERT" "vitrichuthep" (list (+ x 7935)(- y 450)) 1 1 0)
(setq n (getreal "\nSo luong thanh: "))
(command "erase" "last" "")
(command "TEXT" "c" (list (+ x 7935)(- y 450)) 250 0 (fix n))
(setq c (* n l))
(setq m (/ c 1000))
(command "TEXT" "c" (list (+ x 9912)(- y 450)) 250 0 (rtos m 2 2))
(setq r (+ d :gun:)
(setq k (* w r))
(setq v (* k 786))
(setq j (* v m))
(setq t (/ j 100000))
(command "TEXT" "c" (list (+ x 12214)(- y 450)) 250 0 (rtos t 2 2))
(command "LINE"(list (+ x 0) (- y 600)) (list (+ x 13214) (- y 600)) "")
(traos)
)
)


(if (= lc "O")
(progn
(command "-style" "thep" "VNI-HELVE" "0" "1" "0" "n" "n")
(setq a (getpoint "\nChon diem tren ben trai: "))
(setq x (car a))
(setq y (cadr a))
(luuos)
(setvar "osmode" 0)
(command "INSERT" "vitrichuthep" (list (+ x 1600)(- y 450)) 1 1 0)
(setq s (getstring 5"\nSo thu tu : "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 1600)(- y 450)) 250 0 s)
(command "TEXT" "c" (list (+ x 3250)(- y 450)) 250 0 "%%254= -DAØY")
(command "INSERT" "vitrichuthep" (list (+ x 3000)(- y 450)) 1 1 0)
(setq d (getreal "\nDuong kinh : "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 3000)(- y 450)) 250 0 (fix d))
(command "INSERT" "vitrichuthep" (list (+ x 4550)(- y 450)) 1 1 0)
(setq b (getreal "\nDo day : "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 4550)(- y 450)) 250 0 (fix :s_big:)
(command "INSERT" "vitrichuthep" (list (+ x 6092)(- y 450)) 1 1 0)
(setq l (getreal "\nChieu dai thanh: "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 6092)(- y 450)) 250 0 (fix l))
(command "INSERT" "vitrichuthep" (list (+ x 7935)(- y 450)) 1 1 0)
(setq n (getreal "\nSo luong thanh: "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 7935)(- y 450)) 250 0 (fix n))
(setq c (* n l))
(setq m (/ c 1000))
(command "TEXT" "c" (list (+ x 9912)(- y 450)) 250 0 (rtos m 2 2))
(setq r (* pi d))
(setq k (* r :s_big:)
(setq v (* k 786))
(setq j (* v m))
(setq t (/ j 50000))
(command "TEXT" "c" (list (+ x 12214)(- y 450)) 250 0 (rtos t 2 2))
(command "LINE"(list (+ x 0) (- y 600)) (list (+ x 13214) (- y 600)) "")
(traos)
)
)
(if (= lc "v")
(progn
(command "-style" "thep" "VNI-HELVE" "0" "1" "0" "n" "n")
(setq a (getpoint "\nChon diem tren ben trai: "))
(setq x (car a))
(setq y (cadr a))
(luuos)
(setvar "osmode" 0)
(command "INSERT" "vitrichuthep" (list (+ x 1600)(- y 450)) 1 1 0)
(setq s (getstring 5"\nSo thu tu : "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 1600)(- y 450)) 250 0 s)
(command "TEXT" "c" (list (+ x 3446)(- y 450)) 250 0 "[] * *")
(command "INSERT" "vitrichuthep" (list (+ x 3082)(- y 450)) 1 1 0)
(setq d (getreal "\nCanh thu nhat : "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 3082)(- y 450)) 250 0 (fix d))
(command "INSERT" "vitrichuthep" (list (+ x 3791)(- y 450)) 1 1 0)
(setq b (getreal "\nCanh thu hai : "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 3791)(- y 450)) 250 0 (fix :angry:)
(command "INSERT" "vitrichuthep" (list (+ x 4404)(- y 450)) 1 1 0)
(setq w (getreal "\nDo day : "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 4404)(- y 450)) 250 0 (fix w))
(command "INSERT" "vitrichuthep" (list (+ x 6092)(- y 450)) 1 1 0)
(setq l (getreal "\nChieu dai thanh: "))
(command "erase" "last" "")
(command "TEXT" "c" (list (+ x 6092)(- y 450)) 250 0 (fix l))
(command "INSERT" "vitrichuthep" (list (+ x 7935)(- y 450)) 1 1 0)
(setq n (getreal "\nSo luong thanh: "))
(command "erase" "last" "")
(command "TEXT" "c" (list (+ x 7935)(- y 450)) 250 0 (fix n))
(setq c (* n l))
(setq m (/ c 1000))
(command "TEXT" "c" (list (+ x 9912)(- y 450)) 250 0 (rtos m 2 2))
(setq r (+ d :gun:)
(setq k (* w r))
(setq v (* k 786))
(setq j (* v m))
(setq t (/ j 50000))
(command "TEXT" "c" (list (+ x 12214)(- y 450)) 250 0 (rtos t 2 2))
(command "LINE"(list (+ x 0) (- y 600)) (list (+ x 13214) (- y 600)) "")
(traos)
)
)

(if (= lc "V")
(progn
(command "-style" "thep" "VNI-HELVE" "0" "1" "0" "n" "n")
(setq a (getpoint "\nChon diem tren ben trai: "))
(setq x (car a))
(setq y (cadr a))
(luuos)
(setvar "osmode" 0)
(command "INSERT" "vitrichuthep" (list (+ x 1600)(- y 450)) 1 1 0)
(setq s (getstring 5"\nSo thu tu : "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 1600)(- y 450)) 250 0 s)
(command "TEXT" "c" (list (+ x 3446)(- y 450)) 250 0 "[] * *")
(command "INSERT" "vitrichuthep" (list (+ x 3082)(- y 450)) 1 1 0)
(setq d (getreal "\nCanh thu nhat : "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 3082)(- y 450)) 250 0 (fix d))
(command "INSERT" "vitrichuthep" (list (+ x 3791)(- y 450)) 1 1 0)
(setq b (getreal "\nCanh thu hai : "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 3791)(- y 450)) 250 0 (fix :gun:)
(command "INSERT" "vitrichuthep" (list (+ x 4404)(- y 450)) 1 1 0)
(setq w (getreal "\nDo day : "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 4404)(- y 450)) 250 0 (fix w))
(command "INSERT" "vitrichuthep" (list (+ x 6092)(- y 450)) 1 1 0)
(setq l (getreal "\nChieu dai thanh: "))
(command "erase" "last" "")
(command "TEXT" "c" (list (+ x 6092)(- y 450)) 250 0 (fix l))
(command "INSERT" "vitrichuthep" (list (+ x 7935)(- y 450)) 1 1 0)
(setq n (getreal "\nSo luong thanh: "))
(command "erase" "last" "")
(command "TEXT" "c" (list (+ x 7935)(- y 450)) 250 0 (fix n))
(setq c (* n l))
(setq m (/ c 1000))
(command "TEXT" "c" (list (+ x 9912)(- y 450)) 250 0 (rtos m 2 2))
(setq r (+ d :lol2:)
(setq k (* w r))
(setq v (* k 786))
(setq j (* v m))
(setq t (/ j 50000))
(command "TEXT" "c" (list (+ x 12214)(- y 450)) 250 0 (rtos t 2 2))
(command "LINE"(list (+ x 0) (- y 600)) (list (+ x 13214) (- y 600)) "")
(traos)
)
)

(if (= lc "c")
(progn
(command "-style" "thep" "VNI-HELVE" "0" "1" "0" "n" "n")
(setq a (getpoint "\nChon diem tren ben trai: "))
(setq x (car a))
(setq y (cadr a))
(luuos)
(setvar "osmode" 0)
(command "LINE"(list (+ x 0) (- y 600)) (list (+ x 13214) (- y 600)) "")
(command "INSERT" "vitrichuthep" (list (+ x 1600)(- y 450)) 1 1 0)
(setq s (getstring 5"\nSo thu tu : "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 1600)(- y 450)) 250 0 s)
(command "TEXT" "c" (list (+ x 3400)(- y 450)) 250 0 "C * *")
(command "INSERT" "vitrichuthep" (list (+ x 3082)(- y 450)) 1 1 0)
(setq d (getreal "\nCanh dai : "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 3082)(- y 450)) 250 0 (fix d))
(command "INSERT" "vitrichuthep" (list (+ x 3791)(- y 450)) 1 1 0)
(setq b (getreal "\nCanh ngan : "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 3791)(- y 450)) 250 0 (fix :lol2:)
(command "INSERT" "vitrichuthep" (list (+ x 4404)(- y 450)) 1 1 0)
(setq w (getreal "\nDo day : "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 4404)(- y 450)) 250 0 (fix w))
(command "INSERT" "vitrichuthep" (list (+ x 6092)(- y 450)) 1 1 0)
(setq l (getreal "\nChieu dai thanh: "))
(command "erase" "last" "")
(command "TEXT" "c" (list (+ x 6092)(- y 450)) 250 0 (fix l))
(command "INSERT" "vitrichuthep" (list (+ x 7935)(- y 450)) 1 1 0)
(setq n (getreal "\nSo luong thanh: "))
(command "erase" "last" "")
(command "TEXT" "c" (list (+ x 7935)(- y 450)) 250 0 (fix n))
(setq c (* n l))
(setq m (/ c 1000))
(command "TEXT" "c" (list (+ x 9912)(- y 450)) 250 0 (rtos m 2 2))
(setq r (+ d b :lol2:)
(setq k (* w r))
(setq v (* k 786))
(setq j (* v m))
(setq t (/ j 100000))
(command "TEXT" "c" (list (+ x 12214)(- y 450)) 250 0 (rtos t 2 2))
(traos)
)
)

(if (= lc "C")
(progn
(command "-style" "thep" "VNI-HELVE" "0" "1" "0" "n" "n")
(setq a (getpoint "\nChon diem tren ben trai: "))
(setq x (car a))
(setq y (cadr a))
(luuos)
(setvar "osmode" 0)
(command "LINE"(list (+ x 0) (- y 600)) (list (+ x 13214) (- y 600)) "")
(command "INSERT" "vitrichuthep" (list (+ x 1600)(- y 450)) 1 1 0)
(setq s (getstring 5"\nSo thu tu : "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 1600)(- y 450)) 250 0 s)
(command "TEXT" "c" (list (+ x 3400)(- y 450)) 250 0 "C * *")
(command "INSERT" "vitrichuthep" (list (+ x 3082)(- y 450)) 1 1 0)
(setq d (getreal "\nCanh dai : "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 3082)(- y 450)) 250 0 (fix d))
(command "INSERT" "vitrichuthep" (list (+ x 3791)(- y 450)) 1 1 0)
(setq b (getreal "\nCanh ngan : "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 3791)(- y 450)) 250 0 (fix :lol2:)
(command "INSERT" "vitrichuthep" (list (+ x 4404)(- y 450)) 1 1 0)
(setq w (getreal "\nDo day : "))
(command "UNDO" "")
(command "TEXT" "c" (list (+ x 4404)(- y 450)) 250 0 (fix w))
(command "INSERT" "vitrichuthep" (list (+ x 6092)(- y 450)) 1 1 0)
(setq l (getreal "\nChieu dai thanh: "))
(command "erase" "last" "")
(command "TEXT" "c" (list (+ x 6092)(- y 450)) 250 0 (fix l))
(command "INSERT" "vitrichuthep" (list (+ x 7935)(- y 450)) 1 1 0)
(setq n (getreal "\nSo luong thanh: "))
(command "erase" "last" "")
(command "TEXT" "c" (list (+ x 7935)(- y 450)) 250 0 (fix n))
(setq c (* n l))
(setq m (/ c 1000))
(command "TEXT" "c" (list (+ x 9912)(- y 450)) 250 0 (rtos m 2 2))
(setq r (+ d b :lol2:)
(setq k (* w r))
(setq v (* k 786))
(setq j (* v m))
(setq t (/ j 100000))
(command "TEXT" "c" (list (+ x 12214)(- y 450)) 250 0 (rtos t 2 2))
(traos))
)
(setvar "MODEMACRO" "**CHUC BAN LAM VIEC HIEU QUA** PHAM QUOC DUY - BINH SON - QUANG NGAI")

(Princ)
)

;-------
;;------------------------------------------------------------
(defun DUY_newerror (msg)
(if (and (/= msg "Function cancelled")
(/= msg "quit / exit abort")
)
(princ (strcat "\n" msg))
)
(done)
)
;;----------
(defun init ()
(setq
DUY_CMD (getvar "CMDECHO")
DUY_OLDERROR *error*
*error* DUY_newerror

)
(setvar "CMDECHO" 0)
(command ".undo" "BE")
)
;;----------
(defun done ()
(command ".redraw")
(command ".undo" "E")
(if DUY_CMD
(setvar "CMDECHO" DUY_CMD)
)
(if DUY_OLDERROR
(setq *error* DUY_OLDERROR)
)
(princ)
)
;;----------
(defun luuos ()
(setq
DUY_OSMODE (getvar "OSMODE")
DUY_AUTOSNAP (getvar "AUTOSNAP")
DUY_LAYERHH (getvar "CLAYER")
DUY_filletrad (getvar "FILLETRAD")
DUY_TEXTSTYLE (getvar "TEXTSTYLE")
)
)
(defun traos ()
(if DUY_OSMODE
(setvar "OSMODE" DUY_OSMODE)
)
(if DUY_LAYERHH
(setvar "CLAYER" DUY_LAYERHH)
)
(if DUY_AUTOSNAP
(setvar "AUTOSNAP" DUY_AUTOSNAP)
)
(if DUY_filletrad
(setvar "FILLETRAD" DUY_filletrad)
)
(if DUY_TEXTSTYLE
(setvar "TEXTSTYLE" DUY_TEXTSTYLE)
)


)


;;----------
(defun c:h? (/ tl index)
(setq index 0)
(foreach tl h_taptenlenh
(setq index (1+ index))
(princ (strcat "\n" (itoa index) ": " tl)
)
)
(princ)
)

;;----------
(setvar "MODEMACRO" "*_*CHUC BAN LAM VIEC HIEU QUA*_* ")
(setvar "UCSICON" 1)
(setvar "FILLETRAD" 0.0)
(setvar "GRIDMODE" 0)
(setvar "OSMODE" 191)
(setq h_tylebv 100.0)
(dangky_app)
(princ)
;-------
;---------------------------------------
(defun nstr (stri def)
(princ stri)
(princ "<")
(princ " ")
(princ def)
(princ ">")
(princ ":")
(princ " ")
);defun nstr
;--------------------
(defun nstr1 (stri)
(princ stri)
(princ "<")
(princ "Nhap vao")
(princ ">")
(princ ":")
(princ " ")
);defun nstr1
;---------------------
(defun nint (prompt def / temp)
(if def
(setq temp (getint (nstr prompt def)))
(setq def (getint (nstr1 prompt)))
);if def
(if temp
(setq def temp)
def
);if temp
);defun nint
;---------------------
(defun dnint (prompt def / temp)
(if def
(setq temp (getreal (nstr prompt def)))
(setq def (getreal (nstr1 prompt)))
);if def
(if temp
(setq def temp)
def
);if temp
);defun nint
;--------------------
(defun ndist (po prompt def / temp) ;nhan kh/cach va luu gia tri mac dinh
(if def
(setq temp (getdist po (nstr prompt def)))
(setq def (getdist po (nstr1 prompt)))
)if def
(if temp
(setq def temp)
def
);if temp
);defun ndist
;-----------------------------------


  • 0

#833 ph168xd

ph168xd

    biết lệnh adcenter

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

Đã gửi 06 July 2008 - 11:00 AM

Các bác cho em bít lish Mirror nhanh ở chỗ nào đc không.
Pick vào vị trí nào thì đối tg mirror tại vị trí đó.
Theo trục X, hay Y phụ thuộc vào lệnh tắt. :mellow: Thank các bác nhìu!
  • 0

#834 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 06 July 2008 - 12:09 PM

Các bác cho em bít lish Mirror nhanh ở chỗ nào đc không.
Pick vào vị trí nào thì đối tg mirror tại vị trí đó.
Theo trục X, hay Y phụ thuộc vào lệnh tắt. :mellow: Thank các bác nhìu!

lệnh QMX, QMY (quick mirror) dưới đây sẽ giúp bạn:

(defun qm(truc)
(setq sel (entsel "\nChon doi tuong: "))
(command ".mirror" (car sel) "" (cadr sel) truc pause)
(princ)
)
(defun c:qmx()
(qm "@1,0")
)
(defun c:qmy()
(qm "@0,1")
)

  • 0

#835 vodang15k

vodang15k

    Chưa sử dụng CAD

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

Đã gửi 06 July 2008 - 04:14 PM

Bạn có thể post yêu cầu về autolisp ở topic này.

Xin chào tất cả các bạn trong diễn đàn và bác Hoành
Bác Hoành cho em 1 lisp về layer
khi chọn 1 layer thi nó khóa tất cả các layer khác, duy nhất layer chọn là không bị khoá (lock layer)
cái này để chỉnh sửa
không phải lệnh ẩn hiện layer đã có trong cadviet nhé
cám ơn bác trước nhé
  • 0

#836 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 06 July 2008 - 04:40 PM

Xin chào tất cả các bạn trong diễn đàn và bác Hoành
Bác Hoành cho em 1 lisp về layer
khi chọn 1 layer thi nó khóa tất cả các layer khác, duy nhất layer chọn là không bị khoá (lock layer)
cái này để chỉnh sửa
không phải lệnh ẩn hiện layer đã có trong cadviet nhé
cám ơn bác trước nhé


Bạn hãy sử dụng lệnh LAYLCK và LAYULK của ACAD để khóa và mở khóa các layer.
  • 0

#837 ph168xd

ph168xd

    biết lệnh adcenter

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

Đã gửi 06 July 2008 - 10:34 PM

lệnh QMX, QMY (quick mirror) dưới đây sẽ giúp bạn:


(defun qm(truc)
(setq sel (entsel "\nChon doi tuong: "))
(command ".mirror" (car sel) "" (cadr sel) truc pause)
(princ)
)
(defun c:qmx()
(qm "@1,0")
)
(defun c:qmy()
(qm "@0,1")
)


Hình như có vấn đề gì đó Bác Hoành ah.
Thứ 1: Khi chọn đối tg, lúc thì đc, lúc thì báo lỗi "; error: Function cancelled"
Thứ 2: Em muốn lish tự chọn yes luôn chứ không phải thêm 1 lệnh chọn yes nữa
  • 0

#838 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 06 July 2008 - 10:38 PM

Hình như có vấn đề gì đó Bác Hoành ah.
Thứ 1: Khi chọn đối tg, lúc thì đc, lúc thì báo lỗi "; error: Function cancelled"
Thứ 2: Em muốn lish tự chọn yes luôn chứ không phải thêm 1 lệnh chọn yes nữa


Thứ 1: Tôi thử thấy bình thường, không lỗi gì cả. Bạn xem lỗi có thường xảy ra không? nếu thường xảy ra, bạn xem nguyên nhân rồi gửi nguyên nhân cho tôi. Nếu không thường xuyên, bạn hãy quên những lần lỗi đó đi và dùng bình thường.

Thứ 2: bạn thay chữ pause trong mã lệnh bằng "yes" (có cả dấu nháy).
  • 0

#839 ph168xd

ph168xd

    biết lệnh adcenter

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

Đã gửi 06 July 2008 - 10:55 PM

Thứ 1: Tôi thử thấy bình thường, không lỗi gì cả. Bạn xem lỗi có thường xảy ra không? nếu thường xảy ra, bạn xem nguyên nhân rồi gửi nguyên nhân cho tôi. Nếu không thường xuyên, bạn hãy quên những lần lỗi đó đi và dùng bình thường.

Thứ 2: bạn thay chữ pause trong mã lệnh bằng "yes" (có cả dấu nháy).


Rất khó có thể chọn nổi đối tg a Hoành ạh. Pick vào đối tg, lập tức báo lỗi ngay
"Points must be distinct.
; error: Function cancelled"
Em cũng đang ko hiểu tại sao?
  • 0

#840 ph168xd

ph168xd

    biết lệnh adcenter

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

Đã gửi 06 July 2008 - 10:59 PM

Àh. phải chăng chúng không thể áp dụng cho block thuộc tính được hả Bác Hoành.
Vì áp dụng với chúng thì mới báo lỗi. Các đối tg khác thì lại bình thường
Liệu có cách nào khác phục đc không Bác?
  • 0