Thứ Ba, 14 tháng 2, 2012

Scale theo một phương.

Cái này viết đã lâu. The yêu cầu của bạn đọc mình up lên ai dùng thì dùng nhé.
*Giải nén ra bạn được 1 file lsp và 1 file dcl. File lisp thì để đâu cũng được còn file dcl thì để chổ nào cho cad tìm thấy (nằm trong Support File Search Path)
-Tên lệnh SCXY.
-Chọn đối tượng.
-Chọn điểm chuẩn (để phóng).
-Lên cái bảng như này.

*Bạn chọn Pick thì nó thoát khỏi bảng:
-Bạn vẽ hình chử nhật chuẩn (pick 2 điểm góc)
-Bạn vẽ hình chử nhật đến (pick 2 điểm góc)
Xong!
*Nếu muốn nhập tỉ lệ thì nhập giá trị vào 2 ô trên.
-Mặc định tỉ lệ theo 2 trục điều là 1.
-Giá trị nhập có thể theo dạng : 0.2 hoặc 2/3 gì cũng được.
-Nhấn nút Dong y.
Xong!
*Lưu ý khi chọn chế độ pick điểm thì các giá trị trong 2 ô là bao nhiêu kệ lisp sẽ không quan tâm tới 2 giá trị này.




File lisp.
Bạn copy nội dung và tạo file lisp hoặc tải về phía dưới nhé!

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(DEFUN c:scxy()
(setq oldvalue (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(setq donvi (/ (getvar "viewsize") 40))
(princ "Chon doi tuong can scale: ")
(setq ss (ssget))
(setq dc (getpoint "\nChon diem goc: "))
(setq diemvt1 (polar dc pi donvi))
(setq diemvt2 (polar dc (* 2 pi) donvi))
(setq diemvt3 (polar dc (/ pi 2) donvi))
(setq diemvt4 (polar dc (- 0 (/ pi 2)) donvi))
(grdraw diemvt1 diemvt2 2)
(grdraw diemvt3 diemvt4 2)
(scxyg)


(princ)
)

;;;;;;;;;;;;;
(defun scxyp ()
(setq diem1 (getpoint "\nDiem thu nhat cua hinh chu nhat chuan: "))
(setq diem2 (getcorner diem1"\nDiem thu hai cua hinh chu nhat chuan: "))
(setq diem11 (list (car diem1) (cadr diem2)))
(setq diem22 (list (car diem2) (cadr diem1)))
(grdraw diem1 diem11 3)
(grdraw diem11 diem2 3)
(grdraw diem2 diem22 3)
(grdraw diem1 diem22 3)
(setq daichuany (distance diem1 diem22))
(setq daichuanx (distance diem2 diem22))

(setq diem1 (getpoint diem1"\nDiem thu nhat cua hinh chu nhat den: "))
(setq diem2 (getcorner diem1"\nDiem thu hai cua hinh chu nhat den: "))
(setq diem11 (list (car diem1) (cadr diem2)))
(setq diem22 (list (car diem2) (cadr diem1)))
(grdraw diem1 diem11 4)
(grdraw diem11 diem2 4)
(grdraw diem2 diem22 4)
(grdraw diem1 diem22 4)
(setq daideny (distance diem1 diem22))
(setq daidenx (distance diem2 diem22))
(setq tilex (/ daidenx daichuanx))
(setq tiley (/ daideny daichuany))
(command "block" "blocktrunggian" dc ss "")
(Command "Insert" "blocktrunggian" dc tiley tilex 0 "")
(Command "Explode" "last")
(Command "Purge" "B" "blocktrunggian" "Y" "Y")
(setvar "CMDECHO" oldvalue)
(setvar "MODEMACRO" "**CHUC BAN LAM VIEC HIEU QUA**")
(princ)
)
;;;;;;;;;;;;;
(defun scxyg ()

(setq tilexb "1")
(setq tileyb "1")

(setq DCL_ID (load_dialog "scalexy.DCL"))
(new_dialog "tilescxy" DCL_ID)
(setq dial(load_dialog "scalexy.dcl"))

(action_tile "btn_pick" "(done_dialog 1)")
(action_tile "btn_dongy" "(done_dialog 2)")
(action_tile "btn_thoi" "(done_dialog 3)")
(set_tile "tilexb" tilexb)
(action_tile "tilexb" "(setq tilexb (get_tile \"tilexb\"))")
(set_tile "tileyb" tileyb)
(action_tile "tileyb" "(setq tileyb (get_tile \"tileyb\"))")

(setq phepchon (start_dialog))
(cond

((= phepchon 1) (scxyp))
((= phepchon 2) (dongysc))
((= phepchon 3) (thoi))
)
(Princ)
)
;;;;;;;;;;;;;;;;;
(defun dongysc ()
(setq tilex tilexb)
(setq tiley tileyb)
(command "block" "blocktrunggian" dc ss "")
(Command "Insert" "blocktrunggian" dc tiley tilex 0 "")
(Command "Explode" "last")
(Command "Purge" "B" "blocktrunggian" "Y" "Y")
(setvar "CMDECHO" oldvalue)
(setvar "MODEMACRO" "**CHUC BAN LAM VIEC HIEU QUA**")
(Princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(Defun thoi ()
(xlbqpqd32)
(princ "\nPHAM QUOC DUY Binh Son - Quang ngai")
(setvar "MODEMACRO" "**CHUC BAN LAM VIEC HIEU QUA** PHAM QUOC DUY - BINH SON - QUANG NGAI")
(Princ)
)




File Dcl.
Bạn copy nội dung và tạo file DCL tên scalexy hoặc tải về phía dưới nhé!

tilescxy : dialog {
label = "Nhap ti le scale";


: column {

: edit_box {
key = "tileyb";
label = "Ti le theo truc x";
}
: edit_box {
key = "tilexb";
label = "Ti le theo truc y";
}

: button {
label = "Pick diem";
key = "btn_pick";
width = 8;
}
: button {
label = "Dong y";
key = "btn_dongy";
width = 8;
}
: default_button {
is_cancel = true;
label = "Thoi";
key = "btn_thoi";
width = 8;
}
}
}

Không có nhận xét nào:

Đăng nhận xét

Khi viết nhận xét mong bạn không đứng vai trò nặc danh! Bạn có thể chọn Name/Url trong đó Url là http://duy782006.blogspot.com/ như vậy hay hơn nặc danh bạn nhé.