Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
Trương Trí Thức

Sửa Auto Lisp

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

Nhờ các Bác chỉnh giúp em Lisp pick diện tích này để nó chỉ cần khai báo tỷ lệ, số chữ số sau dấu phẩy 1 lần, hiện tại sau mỗi lần pick nó lại yêu cầu khai báo lại ak. Thank các Bác nhiều ak!

(defun c:ss() ; 
(setvar "cmdecho" 0)
(setvar "DIMZIN" 0)
(if (= Ty_le nil)
(progn
(setq Ty_le (getreal "\Nnhap ti le <1000>:"))
(if (= Ty_le nil)(setq Ty_le 1000.00))
)
(progn
(setq khaibaoTy_le (getstring (strcat "\nti le = " (rtos Ty_le 2 0) " CO MUON THAY DOI KHONG <K>,C:")))
(if (= (strlen khaibaoTy_le) 0) (setq khaibaoTy_le "K"))
(if (or (= khaibaoTy_le "k") (= khaibaoTy_le "K"))
(progn
(princ (strcat "\nti le = " (rtos Ty_le 2 0)))
)
(if (or (= khaibaoTy_le "c") (= khaibaoTy_le "C"))
(progn
(setq Ty_le (getreal "\nnhap ti le <1000>:"))
(if (= Ty_le nil)(setq Ty_le 1000.00))
)

)
)
)
(if (= So_Le nil)
(progn
(setq So_Le (getint "\nnhap so le dien tich <2>:"))
(if (= So_Le nil)(setq So_Le 2))
)
(progn
(setq khaibaoSo_Le (getstring (strcat "\nso le dien tich = " (rtos So_Le 2 0) " co muon thay doi khong <K>,C:")))
(if (= (strlen khaibaoSo_Le) 0) (setq khaibaoSo_Le "K"))
(if (or (= khaibaoSo_Le "k") (= khaibaoSo_Le "K"))
(progn
(princ (strcat "\nso le dien tich = " (rtos So_Le 2 0)))
)
(if (or (= khaibaoSo_Le "c") (= khaibaoSo_Le "C"))
(progn
(setq So_Le (getint "\nnhap so le dien tich <2>:"))
(if (= So_Le nil)(setq So_Le 2))
)

)
)
)
(setq He_so (/ 1000 Ty_le))
(setq He_so2 (* He_so He_so)) 
(setq dtl 0)
(setq ss (ssadd))
(setq oslast (getvar "OSMODE"))
(command "osnap" "")
(print)
(print)
(setq pt1 (getpoint "\nChon Vung Kin Tinh Dien Tich : "))
(while (/= pt1 nil)
(command "-boundary" pt1 "")
(setq et (entlast))
(ssadd et ss)
(command "area" "e" "last")
(setq vsize ( /(getvar "VIEWSIZE") 50 ))
(command "hatch" "ANSI31" vsize "5" "last" "")
(setq et (entlast))
(ssadd et ss)
(setq dtcon (getvar "AREA"))
(setq dtl (+ dtcon dtl))
(print)
(print)
(setq pt1 (getpoint "\nChon Vung Kin Tinh Dien Tich : "))
)
(command "setvar" "OSMODE" oslast)
(command "erase" ss "")
(setq ss nil)
(command "redraw")
(setq dtl (/ (/ dtl He_so2) 1)) 
(setq en (car (entsel "Thay cho so : ")))
(while (= en nil)
(setq en (car (entsel "Thay cho so : ")))
)
(setq elst (entget en))
(setq elstold (assoc 1 elst)) 
(setq elstnew (cons 1 (rtos dtl 2 So_Le)))
(setq elst (subst elstnew elstold elst))
(entmod elst)
(setq elst nil)
(setq dtl nil)
(command "_change" en "" "p" "c" "1" "")
(princ "\nhttp:\\doanduyhung.googlepages.com")
)

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

Đây bạn. Nó chỉ hỏi lần đầu thôi, những lần sau nó không thèm hỏi nữa. Nhưng nếu bỗng dưng bạn có ngẫu hứng mún thay đổi các thông số thì đánh lệnh SSS nhé (3 chư S chứ kp 3 số 5).

ss.lsp

  • Like 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ình cũng tham gia góp vui tí 

- Khi lệnh hỏi  "Chon Vung Kin Tinh Dien Tich [Setting]": Nhập S để khai báo lại thông số

- Fix lỗi khi chọn text, Mtext để sửa. đối tượng chọn không phải là Text, Mtext

 

ss.lsp

(defun c:ss() 
    (setq oldcmd (getvar "cmdecho")
            olddimz (getvar "DIMZIN"))

    (setvar "cmdecho" 0)
    (setvar "DIMZIN" 0)
    (defun _iSetting ( / Ty_le1 So_Le1)
        (if (= Ty_le nil)
            (progn
                (setq Ty_le1 (getreal "\nnhap ti le <1000>:"))
                (if (= Ty_le1 nil) (setq Ty_le 1000.00) (setq Ty_le Ty_le1))
            )
            (progn
                (setq Ty_le1 (getreal (strcat "\Nnhap ti le <" (rtos Ty_le 2 0) ">:")))
                (if Ty_le1 (setq Ty_le Ty_le1))

            )
        )
        (if (= So_Le nil)
            (progn
                (setq So_Le (getint "\nnhap so le dien tich <2>:"))
                (if (= So_Le nil)(setq So_Le 2)(setq So_Le So_Le1))
            )
            (progn
                (setq So_Le1 (getint (strcat "\nnhap ti le <" (rtos So_Le 2 0) ">:")))
                (if So_Le1 (setq So_Le So_Le1))            
            )
        )
    )

    (defun _iSelect ( getss int msg / pt)
        (if int (initget int))
        (setq pt (getss (strcat msg )))
        pt
    )

    (if (or (= Ty_le nil) (= So_Le nil)) (_iSetting))
    (setq He_so (/ 1000 Ty_le))
    (setq He_so2 (* He_so He_so)) 
    (setq dtl 0)
    (setq ss (ssadd))
    (setq oslast (getvar "OSMODE"))
    (command "osnap" "")
    (print)
    (print)
    
    (while (setq pt1 (_iSelect getpoint "Setting" "Chon Vung Kin Tinh Dien Tich [Setting]"))
    
    
    
;    (while (/= pt1 nil)
        (cond
            (    (= pt1 "Setting")
                (_iSetting)
            )
            (    
                (progn
                    (command "-boundary" pt1 "")
                    (setq et (entlast))
                    (ssadd et ss)
                    (command "area" "e" "last")
                    (setq vsize ( /(getvar "VIEWSIZE") 50 ))
                    (command "hatch" "ANSI31" vsize "5" "last" "")
                    (setq et (entlast))
                    (ssadd et ss)
                    (setq dtcon (getvar "AREA"))
                    (setq dtl (+ dtcon dtl))
                    (princ (strcat "\n" (rtos dtl 2 So_Le)))
                    (print)
                    (print)
                    ;(setq pt1 (getpoint "\nChon Vung Kin Tinh Dien Tich : "))
                )
            )
        )
    )
    (command "setvar" "OSMODE" oslast)
    (command "erase" ss "")
    (setq ss nil)
    (command "redraw")
    (setq dtl (/ (/ dtl He_so2) 1)) 
    (setq en (_iSelect entsel nil "Thay chu so : "))
        (cond 
            (     (= en nil)
                (princ (strcat "\nDien tich: " (rtos dtl 2 So_Le)))
            )
            (    (wcmatch (strcase (cdr (assoc 0 (entget (car en))))) "*TEXT")
                (progn
                    (setq elst (entget (car en)))
                    (setq elstold (assoc 1 elst)) 
                    (setq elstnew (cons 1 (rtos dtl 2 So_Le)))
                    (setq elst (subst elstnew elstold elst))
                    (entmod elst)
                    (setq elst nil)
                    (setq dtl nil)
                
                    (command "_change" en "" "p" "c" "1" "")
                )            
            )
            ( 
                (princ (strcat "\nDien tich: " (rtos dtl 2 So_Le)))
            )
            
        )    
        (setvar "cmdecho" oldcmd)
        (setvar "DIMZIN" olddimz)
    (princ "\nhttp:\\doanduyhung.googlepages.com")
    (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

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay
Đăng nhập để thực hiện theo  

×