Chuyển đến nội dung
Diễn đàn CADViet
Nguyen Hoanh

Viết Lisp theo yêu cầu

Các bài được khuyến nghị

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

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

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á

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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
;-----------------------------------

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

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!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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")
)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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é

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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).

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

À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?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
À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?

bạn có thể upload file bị lỗi lên diễn đàn được không?

Tôi thử với block thuộc tính vẫn bình thường.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Mình thấy lỗi nằm ở truc, vì xóa nó đi lệnh vẫn thi hành bình thường.

(command ".mirror" (car sel) "" (cadr sel) truc pause)

Hoá ra là nằm ở chế độ osmode ON nên (cadr sel) = truc , báo lỗi điểm sau cần có khoảng cách với điểm đầu "Points must be distinct"

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Có lẽ đoạn code đơn giản quá nên bác Hoành lỡ "quên" mất các chế độ bắt điểm. Xin mạn phép bác Hoành sửa lại đoạn code như sau:

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

 

Em thêm vào đoạn code tắt chế độ bắt điểm trước khi thực thi lệnh mirror để tránh gây lỗi. (bác nào thích bắt điểm chính xác lại phải gõ thêm vậy )

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Em lại đưa ra một phương án khác tối ưu hơn một chút :mellow:

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

(defun c:qmy ()  
(qm "@0,1") 
)

Sorry vì đã post 2 bài với nội dung ...na ná nhau (em tư duy hơi bị ...chậm, các bác thông cảm nhé!)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Mọi người có thể giúp đỡ mình viết lisp sau được ko, mình cám ơn rất nhiều:

- mình có 2 đường thẳng cắt nhau, mình dùng lệnh trim cắt phần dư của 1 đoạn thẳng rồi sau đó mình lại dùng lệnh line để vẽ lại đường thẳng đó rồi đổi thuộc tính của nó sang nét đứt. Vậy mình xin nhờ mọi người viết lisp để nó tự dùng lệnh cắt trim rồi đổi sang thuộc tính khác. Mình cám ơn mọi người rất nhiều

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Mọi người có thể giúp đỡ mình viết lisp sau được ko, mình cám ơn rất nhiều:

- mình có 2 đường thẳng cắt nhau, mình dùng lệnh trim cắt phần dư của 1 đoạn thẳng rồi sau đó mình lại dùng lệnh line để vẽ lại đường thẳng đó rồi đổi thuộc tính của nó sang nét đứt. Vậy mình xin nhờ mọi người viết lisp để nó tự dùng lệnh cắt trim rồi đổi sang thuộc tính khác. Mình cám ơn mọi người rất nhiều

Chưa hiểu ý bạn.

 

Bạn có thể upload 1 file dwg lên diễn đàn được không? mô tả 2 trạng thái trước và sau khi thực hiện lisp.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Chưa hiểu ý bạn.

 

Bạn có thể upload 1 file dwg lên diễn đàn được không? mô tả 2 trạng thái trước và sau khi thực hiện lisp.

Theo mình hiểu là giống như lệnh trim nhưng đoạn bị cắt không mất đi mà vẽ lại bằng nét đứt.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Mọi người có thể giúp đỡ mình viết lisp sau được ko, mình cám ơn rất nhiều:

- mình có 2 đường thẳng cắt nhau, mình dùng lệnh trim cắt phần dư của 1 đoạn thẳng rồi sau đó mình lại dùng lệnh line để vẽ lại đường thẳng đó rồi đổi thuộc tính của nó sang nét đứt. Vậy mình xin nhờ mọi người viết lisp để nó tự dùng lệnh cắt trim rồi đổi sang thuộc tính khác. Mình cám ơn mọi người rất nhiều

Bạn có thể dùng lênh break.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tình hình là mình hay phải tính cao độ và khoảng cách của các điểm trong mặt cắt ngang. Mình đã tìm được lisp tính cao độ tự động khi tích vào các điểm và đã thêm vào một số lệnh để nó có thể dóng đường thẳng xuống tự động, nhưng mình chưa biết làm sao để tính khoảng cách giữa các điểm đã tích vào. Các bác giúp giùm em nhé. Cảm ơn các bác nhiều.

//------------
(defun c:nn()
	(setq fp (getpoint "\nChon diem goc:"))
	(setq hf (getreal "\nNhap cao do goc:"))
	(setq up (getpoint "\nChon diem dau cao do: "))
	(setq ip (getpoint "\nChon vi tri ghi cao do:"))
	(setq dd (getpoint "\nChon diem dat duong dong: "))
	(setq yip (cadr ip))
	(setq yup (cadr up))
	(setq yfp (cadr fp))
	(setq ydd (cadr dd))
	(while
	(setq sp (getpoint "\nChon diem can tinh cao do:"))	
	(setq xsp (car sp))
	(setq z (+ yip (/ (- yup yip) 2)))
	(setq ipp (list xsp z))
	(setq a (list xsp yip))
	(setq b (list xsp ydd))
	(setq c (list xsp yfp))
	(setq ysp (cadr sp))
	(setq ysp (+ hf (- ysp yfp)))
	(setq ysp (rtos ysp 2 2))		
	(command "line" a b "")
	(command "line" sp c "")
	(command ".text" "J" "mc" ipp "90.0" ysp)
	(princ)
	)
)
//--------------

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Khách
Chủ đề này bây giờ đã bị đóng lại để trả lời thêm.

×