Đế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

#1 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 02 February 2007 - 10:40 AM

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

#2 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 23 March 2007 - 08:13 AM

Mình thấy ở đây có khá nhiều bạn quan tâm đến lisp.
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 trình" của CadViet Utility.
  • 0

#3 abc007

abc007

    biết vẽ arc

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

Đã gửi 11 June 2007 - 05:50 PM

Đọc bên trang tính tổng chiều dài các đoạn thẳng , tôi thấy rất hay và có ý tưởng thực tế trong công việc và muốn có 2 lisp nhằm 2 mục đích sau ( cho TKế đường ống cấp thoát nước ):
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 trò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 tròn là m , còn các ống nhựa , sắt có cộng thêm hao hụt và làm tròn cm.
Hình kèm:Hình đã gửi ,Cám ơn các bạn
Tô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
  • 0

#4 ngagau

ngagau

    biết pan

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

Đã gửi 12 June 2007 - 03:16 PM

Nói ra ngại quá ... em là lính mới nên có bác nào chỉ em cách add LSP , VLX ... nhúng cào cad ko ...
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ì :s_dead:
  • 0

#5 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1359 (rất tốt)

Đã gửi 14 June 2007 - 10:38 AM

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 b ))
(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))
(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 b ))
(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))
(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 b ))
(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 b ))
(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 b ))
(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 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 b ))
(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 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 b ))
(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 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 b ))
(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 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
;-----------------------------------


  • 2

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#6 tambat

tambat

    biết zoom

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

Đã gửi 22 June 2007 - 11:02 AM

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 vò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 độ.

  • 0

#7 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 22 June 2007 - 11:31 AM

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 vò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)
)
  • 0

#8 tambat

tambat

    biết zoom

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

Đã gửi 22 June 2007 - 02:03 PM

[quote name='Nguyen Hoanh' post='3656' date='Jun 22 2007, 11:31 AM'][quote]



đoạn mã trên giúp mì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 mình nêu ra được, cho nên minh nêu rõ bài toán của mình mong các bác giúp mình nhé.
mình muốn tọa độ của điểm đó mình nhấp chuốt lên màn hình chứ không phải nhập vào. mình xin được trình bày rõ hơn về bài toán của mì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) mì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 mình có thể ấn định số thập phân.

cảm ơn các bác nhiều.
  • 0

#9 vndesperados

vndesperados

    biết lệnh xref

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

Đã gửi 22 June 2007 - 02:43 PM

[quote name='tambat' post='3660' date='Jun 22 2007, 02:03 PM'][quote name='Nguyen Hoanh' post='3656' date='Jun 22 2007, 11:31 AM'][quote]
đoạn mã trên giúp mì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 mình nêu ra được, cho nên minh nêu rõ bài toán của mình mong các bác giúp mình nhé.
mình muốn tọa độ của điểm đó mình nhấp chuốt lên màn hình chứ không phải nhập vào. mình xin được trình bày rõ hơn về bài toán của mì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) mì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 mình có thể ấn định số thập phân.

cảm ơn các bác nhiều.[/quote]
(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)
)
Tải thêm cái này về:
http://www.cadviet.com/upfiles/TD.zip
  • 1

#10 sirdo

sirdo

    biết zoom

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

Đã gửi 24 June 2007 - 11:42 PM

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?
  • 0

#11 tambat

tambat

    biết zoom

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

Đã gửi 25 June 2007 - 08:18 AM

Tải thêm cái này về:
http://www.cadviet.com/upfiles/TD.zip

Bác Nguyen Hoanh ơi ! sao mì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 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 mì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?

;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)
)

  • 0

#12 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 25 June 2007 - 08:39 AM

Bác Nguyen Hoanh ơi ! sao mì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 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 mì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 dòng mã như sau:
- (setq old_osmode (getvar "OSMODE")) vào đầu tiên của hàm (trước dòng command "layer" ...).
- (setvar "OSMODE" old_osmode) vào cuối cùng của hàm (sau dò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.
  • 0

#13 vndesperados

vndesperados

    biết lệnh xref

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

Đã gửi 25 June 2007 - 09:54 AM

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 gì 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
  • 0

#14 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1359 (rất tốt)

Đã gửi 25 June 2007 - 04:43 PM

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?


Mì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è.

(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 !!!!!!
  • 4

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#15 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1359 (rất tốt)

Đã gửi 25 June 2007 - 04:52 PM

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 gì 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 dò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ứ.
  • 3

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#16 sirdo

sirdo

    biết zoom

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

Đã gửi 25 June 2007 - 10:45 PM

Mì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è.


(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 !!!!!!



Mình rất tâm đắc cái này. Nó rất tiện khi làm Kết cấu. Thanks nhé. Nhưng mà làm thế nào để có thể multi dc thì tuyệt?
  • 0

#17 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 25 June 2007 - 11:30 PM

Mình rất tâm đắc cái này. Nó rất tiện khi làm Kết cấu. Thanks nhé. Nhưng mà làm thế nào để có thể multi dc thì tuyệt?

Multi đây:


(defun c:ND (/ Ename Elist Msg Oldtext Oldlist Newtext Newlist)
(defun ss2ent (ss / sodt index lstent)
(setq
sodt (cond
(ss (sslength ss))
(t 0)
)
index 0
)
(repeat sodt
(setq ent (ssname ss index)
index (1+ index)
lstent (cons ent lstent)
)
)
(reverse lstent)
)

(prompt "\nChon chu muon chinh.")
(setq ssEname (ssget '((0 . "TEXT"))))
(if (not ssEname)
(prompt "\nChua chon duoc doi tuong.")
(progn
(prompt "\nChon chu lam chuan.")
(setq lstEname (ss2ent ssEname))
(setq Newtext (car (entsel)))
(setq Newtext (entget Newtext))
(setq Newtext (assoc 1 Newtext))
(setq Newtext (cdr Newtext))
(setq Newlist (cons '1 Newtext))

(foreach Ename lstEname
(setq Elist (entget Ename))
(setq Oldlist (assoc 1 Elist))
(setq Oldtext (cdr Oldlist))
(setq Elist (subst Newlist Oldlist Elist))
(entmod Elist)
)
) ; end progn
) ; end if
(princ)
)

  • 3

#18 tambat

tambat

    biết zoom

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

Đã gửi 27 June 2007 - 07:42 PM

Các bác ơi sữa giùm mình đoạn lisp sau này nhé.


(defun C:cg()
(setvar "CMDECHO" 0)
(setq pre (getint "\nSo chu so sau dau phay?"))
(command "luprec" pre)
(setq tong 0)
(SETQ TH (SSGET))
(SETQ QUANT (SSLENGTH TH))
(SETQ INDEX 0)
(WHILE (< INDEX QUANT)
(IF
(AND(= "TEXT" (CDR (ASSOC 0 (SETQ A (ENTGET (SSNAME TH INDEX)))))))
(PROGN
(setq s (entget (SSNAME TH INDEX)))
(setq otext (assoc 1 s))
(setq ot (cdr otext))
(setq ot (read (substr ot 1 )))
(setq tong (+ ot tong))
)
)
(setq index (+ index 1))
)
(prompt "\n Chon gia tri can thay the")
(SETQ TT (SSGET))
(SETQ QUAN (SSLENGTH TT))
(SETQ INDE 0)
(WHILE (< INDE QUAN)
(IF
(AND(= "TEXT" (CDR (ASSOC 0 (SETQ A (ENTGET (SSNAME TT INDE)))))))
(PROGN
(setq s (entget (SSNAME TT INDE)))
(setq otext (assoc 1 s))
(setq ot (cdr otext))
(setq ot (read (substr ot 1 )))
(setq nt (cons 1 (rtos Tong 2)))
(setq s (subst nt otext s))
(entmod s)
)
)
(setq inde (+ inde 1))
)
)



với đoạn lisp này khi cộng các giá trị mà có tổng của chúng nhỏ hơn 1 thì nó không xuất ra kết quả 0.3 (giả sử kết quả là 0.3), mà kết quả xuất ra là ".3" ; nếu để thế rồi tiền hành phép toán khác thí nó lại không nhận gía trị .3 mà phải sửa lai 0.3 rồi mới thực hiện được.

các bác có thể giúp mình khác phục tình trạng trên không, làm sao để có đươc kết quả là "0.3"
  • 0

#19 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 28 June 2007 - 12:55 PM

Các bác ơi sữa giùm mình đoạn lisp sau này nhé.


(defun C:cg()
(setvar "CMDECHO" 0)
(setq pre (getint "\nSo chu so sau dau phay?"))
(command "luprec" pre)
(setq tong 0)
(SETQ TH (SSGET))
(SETQ QUANT (SSLENGTH TH))
(SETQ INDEX 0)
(WHILE (< INDEX QUANT)
(IF
(AND(= "TEXT" (CDR (ASSOC 0 (SETQ A (ENTGET (SSNAME TH INDEX)))))))
(PROGN
(setq s (entget (SSNAME TH INDEX)))
(setq otext (assoc 1 s))
(setq ot (cdr otext))
(setq ot (read (substr ot 1 )))
(setq tong (+ ot tong))
)
)
(setq index (+ index 1))
)
(prompt "\n Chon gia tri can thay the")
(SETQ TT (SSGET))
(SETQ QUAN (SSLENGTH TT))
(SETQ INDE 0)
(WHILE (< INDE QUAN)
(IF
(AND(= "TEXT" (CDR (ASSOC 0 (SETQ A (ENTGET (SSNAME TT INDE)))))))
(PROGN
(setq s (entget (SSNAME TT INDE)))
(setq otext (assoc 1 s))
(setq ot (cdr otext))
(setq ot (read (substr ot 1 )))
(setq nt (cons 1 (rtos Tong 2)))
(setq s (subst nt otext s))
(entmod s)
)
)
(setq inde (+ inde 1))
)
)

với đoạn lisp này khi cộng các giá trị mà có tổng của chúng nhỏ hơn 1 thì nó không xuất ra kết quả 0.3 (giả sử kết quả là 0.3), mà kết quả xuất ra là ".3" ; nếu để thế rồi tiền hành phép toán khác thí nó lại không nhận gía trị .3 mà phải sửa lai 0.3 rồi mới thực hiện được.

các bác có thể giúp mình khác phục tình trạng trên không, làm sao để có đươc kết quả là "0.3"


Đoạn lisp trên của bạn chẳng có vấn đề gì cả.
Vấn đề nằm ở biến hệ thống DIMZIN của AutoCAD. Bạn gõ DIMZIN tại dòng lệnh, rồi đặt về giá trị 0 là được (Hiện nay chắc chắn nó đang là 4).
  • 0

#20 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1359 (rất tốt)

Đã gửi 28 June 2007 - 03:57 PM

Chào mọi người!
Nhờ các bác xem giúp sao đoạn lisp này của em khi nó hông chịu kết thúc cứ phải bấm Éc thi nó mới thoát. còn không thì nó cứ sửa Text sau cùng sau mổi lần bấm enter mà không chọn điểm.

(Defun C:ct ( )


(prompt "\nChon Text mau.")
(setq DTD (car (entsel)))
(setq DT (entget DTD))
(setq NDT (cdr (assoc 1 DT)))

(Prompt "\nChon cac doi tuong chep theo...")
(Setq CDT (Ssget))

(setq a (getpoint "\nChon diem lam chuan: "))
(setq xa (car a))
(setq ya (cadr a))

(while
(luuos)
(setvar "osmode" 0)

(setq b (getpoint "\nChon diem dat moi: "))
(setq xb (car B ))
(setq yb (cadr B ))
(command "copy" CDT "" (list xa ya) (list xb yb ))
(command "copy" DTD "" (list xa ya) (list xb yb ))
(setq DTDM (entlast))

(if (and (>= (ascii NDT) 48) (<= (ascii NDT) 57))
(setq NDT (itoa (+ (atoi NDT) 1)))
(setq NDT (chr (+ (ascii NDT) 1)))
)

(setq Elist (entget DTDM))
(setq Oldlist (assoc 1 Elist))
(setq Oldtext (cdr Oldlist))
(setq Oldtext (strcase Oldtext nil))
(setq Newlist (cons '1 NDT))
(setq Elist (subst Newlist Oldlist Elist))
(entmod Elist)

(traos)
)

(Princ)
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun luuos ()
(setq
DUY_OSMODE (getvar "OSMODE")
DUY_AUTOSNAP (getvar "AUTOSNAP")
DUY_LAYERHH (getvar "CLAYER")
DUY_THANGXEOHH (getvar "ORTHO")
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_THANGXEOHH
(setvar "ORTHO" DUY_THANGXEOHH)
)
(if DUY_AUTOSNAP
(setvar "AUTOSNAP" DUY_AUTOSNAP)
)
(if DUY_filletrad
(setvar "FILLETRAD" DUY_filletrad)
)
(if DUY_TEXTSTYLE
(setvar "TEXTSTYLE" DUY_TEXTSTYLE)
)


)




  • 5

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D