Viết Lisp theo yêu cầu, Bạn cần lisp ǵ post lên đây.
| Nguyen Hoanh |
| ssg |
Mời các bạn tích cực tham gia đóng góp xây dựng bảng "Nội dung và cấu trúc chương tŕnh" của CadViet Utility.
| abc007 |
1. Ghi chú các đoạn ống ở giũa các đoạn ống( gồm : Đường kính ống - chiều dài - độ dốc ống )
2. Thống kê số lượng đường ống theo Đường kính và loại ống ( các loại thông dụng như PVC , Sắt tráng kẽm , ống BTCT , ống sành)
Hơn nữa chiều dài các đoạn ống có tính sẵn tṛn hao hụt luôn , cụ thể như ống BTCT mà tính bằng cm th́ khó chấp nhận , phải tính tṛn là m , c̣n các ống nhựa , sắt có cộng thêm hao hụt và làm tṛn cm.
H́nh kèm:
,Cám ơn các bạnTôi cũng viết thử nhưng chưa ngon lắm nhờ bác giúp sữa .
http://www.cadviet.com/sub/hupload.php?fok=Ong_nuoc_3.rar
| ngagau |
Nhân tiện chỉ cho em cách dấu hay xóa cái ... à bấm f2 th́ hiện ra những tác vụ đă làm , muốn bản vẽ của ta không ai coppy được thí sao nhỉ ,,, h́
| duy782006 |
-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 ṿ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.
CODE
(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
(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
(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
(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
(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
(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
(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
(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
(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
(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
(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
(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
(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
(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
(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
;-----------------------------------
| tambat |
các bác hướng dẫn giùm cái này nhé.
minh muốn in tọa độ của điểm nào đó lên màn h́nh (xem tọa độ của điểm đó trên bản vẽ rồi ghi lại tọa độ đó bên cạnh điểm đó luôn) nhưng trong bản vẽ có rất nhiều điểm cần phải ghi lại như thế, mong các bác hướng dẫn giùm cách viết lisp theo kiểu ṿng lặp, chi cần nhập lệnh một lần đề nhập chọn từng điểu để in số liệu về tọa độ.
| Nguyen Hoanh |
Chào các Bác
các bác hướng dẫn giùm cái này nhé.
minh muốn in tọa độ của điểm nào đó lên màn h́nh (xem tọa độ của điểm đó trên bản vẽ rồi ghi lại tọa độ đó bên cạnh điểm đó luôn) nhưng trong bản vẽ có rất nhiều điểm cần phải ghi lại như thế, mong các bác hướng dẫn giùm cách viết lisp theo kiểu ṿng lặp, chi cần nhập lệnh một lần đề nhập chọn từng điểu để in số liệu về tọa độ.
các bác hướng dẫn giùm cái này nhé.
minh muốn in tọa độ của điểm nào đó lên màn h́nh (xem tọa độ của điểm đó trên bản vẽ rồi ghi lại tọa độ đó bên cạnh điểm đó luôn) nhưng trong bản vẽ có rất nhiều điểm cần phải ghi lại như thế, mong các bác hướng dẫn giùm cách viết lisp theo kiểu ṿng lặp, chi cần nhập lệnh một lần đề nhập chọn từng điểu để in số liệu về tọa độ.
Đoạn mă dưới đây thực hiện điều bạn muốn:
(defun c:ntd( / caochu gt vt tmp)
(setq caochu (getdist "\nChieu cao cua text: "))
(while (and
(/= (setq gt (vl-string-trim "," (setq tmp (getstring "\nVao toa do cua diem, enter de ket thuc: ")))) "")
(setq vt (vl-string-position (ascii ",") gt))
)
(entmake (list
(cons 0 "TEXT")
(cons 10 (list (atof (substr gt 1 vt)) (atof (substr gt (+ vt 2))) 0.0))
(cons 1 gt)
(cons 40 caochu)
)
)
)
(if (/= tmp "") (princ "\nBan da nhap sai quy cach!"))
(princ)
)
| tambat |
đoạn mă trên giúp ḿnh không phải nhập lệnh liên tục, do minh mới t́m hiểu ve lisp nên minh không phát triển lên để hoàn thành mong muốn của ḿnh nêu ra được, cho nên minh nêu rơ bài toán của ḿnh mong các bác giúp ḿnh nhé.
ḿnh muốn tọa độ của điểm đó ḿnh nhấp chuốt lên màn h́nh chứ không phải nhập vào. ḿnh xin được tŕnh bày rơ hơn về bài toán của ḿnh như sau.
Trên màn h́nh có các điểm (giao của các đường thẳng chẳng hạn) ḿnh muốn có một đoạn lisp nào đó có thể nhấp chuột vào điểm đó (điểm có tọa độ là A (XA, YA))
(SETQ A (GETPOINT "\nĐiểm cần ghi tọa độ:")); ...........
kết quả ghi lên màn h́nh là
X=" hoành độ điểm A"
Y="Tung độ điểm A"
tọa độ in ra màn h́nh ḿnh có thể ấn định số thập phân.
cảm ơn các bác nhiều.
| vndesperados |
đoạn mă trên giúp ḿnh không phải nhập lệnh liên tục, do minh mới t́m hiểu ve lisp nên minh không phát triển lên để hoàn thành mong muốn của ḿnh nêu ra được, cho nên minh nêu rơ bài toán của ḿnh mong các bác giúp ḿnh nhé.
ḿnh muốn tọa độ của điểm đó ḿnh nhấp chuốt lên màn h́nh chứ không phải nhập vào. ḿnh xin được tŕnh bày rơ hơn về bài toán của ḿnh như sau.
Trên màn h́nh có các điểm (giao của các đường thẳng chẳng hạn) ḿnh muốn có một đoạn lisp nào đó có thể nhấp chuột vào điểm đó (điểm có tọa độ là A (XA, YA))
(SETQ A (GETPOINT "\nĐiểm cần ghi tọa độ:")); ...........
kết quả ghi lên màn h́nh là
X=" hoành độ điểm A"
Y="Tung độ điểm A"
tọa độ in ra màn h́nh ḿnh có thể ấn định số thập phân.
cảm ơn các bác nhiều.[/quote]
CODE
(DEFUN EXCUTE(/ n P TX TY)
(setq str (strcat "\nPhan so le muon lay [" (itoa sl) "] (press Enter or Space for get default): "))
(setq n (getint str))
(if (/= n Nil)
(setq sl n)
)
(While T
(setq P Null)
(princ "\nPick a point or press ESC for exit:")
(setq P (getpoint))
(if (/= P Nil)
(progn
(setq TX (rtos (Car P) 2 sl))
(setq TY (rtos (Cadr P) 2 sl))
(command "-INSERT" "TD" P "1" "1" "0" TX TY)
)
)
);End While
)
(DEFUN INIT()
(if (= sl Nil)
(setq sl 2)
)
)
(DEFUN C:TOADO()
(INIT)
(EXCUTE)
)
(setq str (strcat "\nPhan so le muon lay [" (itoa sl) "] (press Enter or Space for get default): "))
(setq n (getint str))
(if (/= n Nil)
(setq sl n)
)
(While T
(setq P Null)
(princ "\nPick a point or press ESC for exit:")
(setq P (getpoint))
(if (/= P Nil)
(progn
(setq TX (rtos (Car P) 2 sl))
(setq TY (rtos (Cadr P) 2 sl))
(command "-INSERT" "TD" P "1" "1" "0" TX TY)
)
)
);End While
)
(DEFUN INIT()
(if (= sl Nil)
(setq sl 2)
)
)
(DEFUN C:TOADO()
(INIT)
(EXCUTE)
)
Tải thêm cái này về:
http://www.cadviet.com/upfiles/TD.zip
| sirdo |
| tambat |
Trích dẫn
Bác Nguyen Hoanh ơi ! sao ḿnh không tải được, vă lại có cách nào khác không (chỉ sử dụng lisp không thôi, mà không phai dùng file TD.dwg nữa không.
nhân tiện nhờ bác chỉ giùm ḿnh sửa đoạn lisp này với nha'
đoạn lisp này sau khi chạy th́ nó bỏ toàn bộ lựa chon truy bát tự đông (Snap), bác có cách nào giúp ḿnh lấy lại tựa chọn cũ hay không, vă lại bài toán trên có thể ghi tọa độ theo kiện ghi cao độ trong đoạn này được không?
CODE
;VE CAO TRINH
(DEFUN C:CT (/ CMD PT1 PT2 PT3 PT4 PT5 PT6 PT7 PT8 NPI TX DX DY TL OSM OLL
CRST RSIZE TSIZE STR PRMT FCH NBC OLDERR)
(SETQ OLDERR *error*
*error* loisb)
(command "layer" "m" "ghichu" "c" "150" """")
(SETQ CMD (GETVAR "CMDECHO"))
(SETQ NBC (GETVAR "CLAYER"))
(SETQ OSM (GETVAR "OSMODE"))
(SETVAR "CMDECHO" 0)
(SETQ PT1 (GETPOINT "\nDiem cao trinh:"))
(SETQ TX "%%p00.00");;(GETSTRING "\nCao trinh:"))
(SETQ FCH (SUBSTR TX 1 1))
(IF (= FCH "@") (SETQ TX (STRCAT "%%P" (SUBSTR TX 2 (- (STRLEN TX) 1)))))
(SETQ CRST (GETVAR "TEXTSTYLE"))
(SETQ RSIZE (CDR (ASSOC 40 (TBLSEARCH "STYLE" CRST))))
(SETQ TSIZE (GETVAR "TEXTSIZE"))
(SETQ STR (RTOS TSIZE 2))
(SETQ PRMT (STRCAT "\nTy Le Ban Ve <" STR ">:"))
;(SETQ PRMT (STRCAT "\nText height <" STR ">:"))
(IF (= RSIZE 0)
(PROGN
(INITGET 4)
(SETQ TSIZE (GETREAL PRMT))
(IF (= TSIZE NIL) (SETQ TSIZE (GETVAR "TEXTSIZE"))
(SETVAR "TEXTSIZE" TSIZE))
(SETQ TSIZE (* 2.5 TSIZE))
)
)
(PRINC)
(SETQ TL (* 2.5 (/ (GETVAR "TEXTSIZE") 2)))
(SETVAR "OSMODE" 0)
(SETQ DX (CAAR (CDR (TEXTBOX (LIST (CONS 1 TX))))))
(SETQ NPI (/ PI 2))
(SETQ PT4 (POLAR PT1 NPI (* 1 TL)))
(SETQ PT2 (POLAR PT4 PI (* 2 TL)))
(SETQ PT3 (POLAR PT4 0 (* 9 TL)))
(SETQ PT5 (POLAR PT4 NPI (* 3 TL)))
(SETQ PT6 (POLAR PT2 NPI TL))
(SETQ PT7 (POLAR PT6 0 (+ (* 3.7 TL) DX)))
(SETQ PT8 (POLAR PT4 NPI (* 0.5 TL)))
(SETQ PT8 (POLAR PT8 0 (* 0.5 TL)))
(SETQ PT9 (POLAR PT1 pi (* 2 TL)))
(SETQ PT10 (POLAR PT1 0 (* 2 TL)))
(COMMAND "COLOR" "84" "")
(COMMAND "STYLE" "CAODO" "Vni-times" "" "" "" "" "")
;(COMMAND "STYLE" "honghung" "vn_vni.shx" "" "" "" "" "")
(IF (= RSIZE 0)(COMMAND "TEXT" PT8 TSIZE 0 tX) (COMMAND "TEXT" PT8 0 TX))
(COMMAND "COLOR" "7" "")
(COMMAND "pLINE" PT3 "Width" "0.005" "" PT2 PT1 "Width" "0.05" "" PT9 PT10 PT1 "Width" "0.005" "" PT5 "")
(COMMAND "COLOR" "254" "")
(COMMAND "SOLID" PT1 PT2 PT4 "" "")
(SETVAR "CLAYER" "0")
(command "ddedit" pause)
)
(DEFUN C:CT (/ CMD PT1 PT2 PT3 PT4 PT5 PT6 PT7 PT8 NPI TX DX DY TL OSM OLL
CRST RSIZE TSIZE STR PRMT FCH NBC OLDERR)
(SETQ OLDERR *error*
*error* loisb)
(command "layer" "m" "ghichu" "c" "150" """")
(SETQ CMD (GETVAR "CMDECHO"))
(SETQ NBC (GETVAR "CLAYER"))
(SETQ OSM (GETVAR "OSMODE"))
(SETVAR "CMDECHO" 0)
(SETQ PT1 (GETPOINT "\nDiem cao trinh:"))
(SETQ TX "%%p00.00");;(GETSTRING "\nCao trinh:"))
(SETQ FCH (SUBSTR TX 1 1))
(IF (= FCH "@") (SETQ TX (STRCAT "%%P" (SUBSTR TX 2 (- (STRLEN TX) 1)))))
(SETQ CRST (GETVAR "TEXTSTYLE"))
(SETQ RSIZE (CDR (ASSOC 40 (TBLSEARCH "STYLE" CRST))))
(SETQ TSIZE (GETVAR "TEXTSIZE"))
(SETQ STR (RTOS TSIZE 2))
(SETQ PRMT (STRCAT "\nTy Le Ban Ve <" STR ">:"))
;(SETQ PRMT (STRCAT "\nText height <" STR ">:"))
(IF (= RSIZE 0)
(PROGN
(INITGET 4)
(SETQ TSIZE (GETREAL PRMT))
(IF (= TSIZE NIL) (SETQ TSIZE (GETVAR "TEXTSIZE"))
(SETVAR "TEXTSIZE" TSIZE))
(SETQ TSIZE (* 2.5 TSIZE))
)
)
(PRINC)
(SETQ TL (* 2.5 (/ (GETVAR "TEXTSIZE") 2)))
(SETVAR "OSMODE" 0)
(SETQ DX (CAAR (CDR (TEXTBOX (LIST (CONS 1 TX))))))
(SETQ NPI (/ PI 2))
(SETQ PT4 (POLAR PT1 NPI (* 1 TL)))
(SETQ PT2 (POLAR PT4 PI (* 2 TL)))
(SETQ PT3 (POLAR PT4 0 (* 9 TL)))
(SETQ PT5 (POLAR PT4 NPI (* 3 TL)))
(SETQ PT6 (POLAR PT2 NPI TL))
(SETQ PT7 (POLAR PT6 0 (+ (* 3.7 TL) DX)))
(SETQ PT8 (POLAR PT4 NPI (* 0.5 TL)))
(SETQ PT8 (POLAR PT8 0 (* 0.5 TL)))
(SETQ PT9 (POLAR PT1 pi (* 2 TL)))
(SETQ PT10 (POLAR PT1 0 (* 2 TL)))
(COMMAND "COLOR" "84" "")
(COMMAND "STYLE" "CAODO" "Vni-times" "" "" "" "" "")
;(COMMAND "STYLE" "honghung" "vn_vni.shx" "" "" "" "" "")
(IF (= RSIZE 0)(COMMAND "TEXT" PT8 TSIZE 0 tX) (COMMAND "TEXT" PT8 0 TX))
(COMMAND "COLOR" "7" "")
(COMMAND "pLINE" PT3 "Width" "0.005" "" PT2 PT1 "Width" "0.05" "" PT9 PT10 PT1 "Width" "0.005" "" PT5 "")
(COMMAND "COLOR" "254" "")
(COMMAND "SOLID" PT1 PT2 PT4 "" "")
(SETVAR "CLAYER" "0")
(command "ddedit" pause)
)
| Nguyen Hoanh |
Bác Nguyen Hoanh ơi ! sao ḿnh không tải được, vă lại có cách nào khác không (chỉ sử dụng lisp không thôi, mà không phai dùng file TD.dwg nữa không.
Vẫn download b́nh thường mà bạn!nhân tiện nhờ bác chỉ giùm ḿnh sửa đoạn lisp này với nha'
đoạn lisp này sau khi chạy th́ nó bỏ toàn bộ lựa chon truy bát tự đông (Snap), bác có cách nào giúp ḿnh lấy lại tựa chọn cũ hay không, vă lại bài toán trên có thể ghi tọa độ theo kiện ghi cao độ trong đoạn này được không?
đoạn lisp này sau khi chạy th́ nó bỏ toàn bộ lựa chon truy bát tự đông (Snap), bác có cách nào giúp ḿnh lấy lại tựa chọn cũ hay không, vă lại bài toán trên có thể ghi tọa độ theo kiện ghi cao độ trong đoạn này được không?
Để không mất truy bắt, bạn thêm 2 ḍng mă như sau:
- (setq old_osmode (getvar "OSMODE")) vào đầu tiên của hàm (trước ḍng command "layer" ...).
- (setvar "OSMODE" old_osmode) vào cuối cùng của hàm (sau ḍng command "ddedit" ...).
Trong đoạn mă trên, mă lệnh (SETQ OLDERR *error* *error* loisb) là vô nghĩa v́ không có hàm loisb.
| vndesperados |
Có cái lisp nào ntn không: tự động copy nội dung của text 1 khi dc chọn -> tự động paste đè lên text 2?
Cái này th́ đơn giản lắm. C̣n một cách đơn giản hơn nữa là dùng lệnhCopy.
Chẳng hiểu phải tạo ra một lệnh copy nội dung của Text1 rổi thay thế nó cho một Text 2 để làm ǵ trong khi truyền thống của dân CAD là copy nhưng cái giống nhau, cái nào khác nhau th́ sữa lại một chút.
Lần sau bác t́m ư tưởng nào hay hay một chút,
hehehheheheh
| duy782006 |
Có cái lisp nào ntn không: tự động copy nội dung của text 1 khi dc chọn -> tự động paste đè lên text 2?
Ḿnh có cái này hồi xưa thấy trong CD bán ngoài thị trường chẳng biết của ai viết nhưng đúng ư của bạn nè.
CODE
(defun c:ND
(/ Ename Elist Msg Oldtext Oldlist Newtext Newlist)
(prompt "\nChon chu muon chinh.")
(setq Ename (car (entsel)))
(prompt "\nChon chu lam chuan.")
(if (not Ename) (prompt "\nChua chon duoc doi tuong.")
(progn
(setq Elist (entget Ename))
(setq Oldlist (assoc 1 Elist))
(setq Oldtext (cdr Oldlist))
(setq Msg (strcat "\nNewtext <" Oldtext ">:"))
(setq Newtext (car (entsel)))
(setq Newtext (entget Newtext))
(setq Newtext (assoc 1 Newtext))
(setq Newtext (cdr Newtext))
(if (= Newtext "") (setq Newtext Oldtext))
(setq Newlist (cons '1 Newtext))
(setq Elist (subst Newlist Oldlist Elist))
(entmod Elist)
) ; end progn
) ; end if
(princ)
)
Tên lệnh là ND
Chọn chử muốn chỉnh trước rồi chọn chử làm mẫu sau. Chúc vui !!!!!!
| duy782006 |
Cái này th́ đơn giản lắm. C̣n một cách đơn giản hơn nữa là dùng lệnhCopy.
Chẳng hiểu phải tạo ra một lệnh copy nội dung của Text1 rổi thay thế nó cho một Text 2 để làm ǵ trong khi truyền thống của dân CAD là copy nhưng cái giống nhau, cái nào khác nhau th́ sữa lại một chút.
Lần sau bác t́m ư tưởng nào hay hay một chút,
hehehheheheh
Chẳng hiểu phải tạo ra một lệnh copy nội dung của Text1 rổi thay thế nó cho một Text 2 để làm ǵ trong khi truyền thống của dân CAD là copy nhưng cái giống nhau, cái nào khác nhau th́ sữa lại một chút.
Lần sau bác t́m ư tưởng nào hay hay một chút,
hehehheheheh
Lần này bác không đúng rồi cái này rất hay dùng:
Ví dụ đă có khung tên các ḍng chử đă có sẳn, canh lề, chiều cao bây giờ chỉ cần nội dung có sẵn đâu đó trong bản vẽ.
Bác đồng ư rồi chứ.
| Trên đây là phiên bản rút gọn, hãy Xem phiên bản đầy đủ của chủ đề trong diễn đàn và cùng đóng góp bài viết cho diễn đàn CADViet.com |
Các chủ đề trên diễn đàn