Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
buimanhxd

Sử dụng biến hệ thống trong Autolisp

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

buimanhxd    0

Em có đoạn lisp này mong các bác giúp đỡ.

(defun c:cd1()

(setq scale (getvar "dimscale")

pt1 (getpoint "\nPick a point:")

y (cadr pt1)

y1 (/ y 1000)

)

(setvar "osmode" 0)

 

(command "insert" "D:/Chinh/acad/Block/cd1.dwg" pt1 scale scale "" (rtos y1 2 3) "")

(setvar "osmode" 127)

)

Trong đoạn lisp này em không hiểu hàm getvar tại sao lại phải lấy giá trị hiện hành của biến hệ thống osmode =0 sau đó lại lấy giá trị này bằng 127.

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
duy782006    1.374
Em có đoạn lisp này mong các bác giúp đỡ.

(defun c:cd1()

(setq scale (getvar "dimscale")

pt1 (getpoint "\nPick a point:")

y (cadr pt1)

y1 (/ y 1000)

)

(setvar "osmode" 0)

 

(command "insert" "D:/Chinh/acad/Block/cd1.dwg" pt1 scale scale "" (rtos y1 2 3) "")

(setvar "osmode" 127)

)

Trong đoạn lisp này em không hiểu hàm getvar tại sao lại phải lấy giá trị hiện hành của biến hệ thống osmode =0 sau đó lại lấy giá trị này bằng 127.

*Tên biến: Osmode

Tác dụng: Xác lập chế độ Osnaps (bắt điểm tự động)

0= 0

1= điểm cuối

2= điểm giữa

4= tâm

8= nút

16= cung 1/4

32= giao điểm

64= điểm chèn

128= vuông góc

256= gần nhất

512= nhanh

Nếu cần nhiều chế độ một lúc thì nhập tổng các chế độ đó

 

Việc chọn chế độ nào là do nhu cầu tác giả cần chế độ nào trong thời điểm nào.

Thực chất người viết lisp này chưa cẩn thận vì khi dùng xong thì thiết lập Osmode cũ củ người dùng đã bị thay đổi thành 127.

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
buimanhxd    0

Cám ơn bác rất nhiều.

Em con một thắc mắc này muốn hỏi bác. Cũng là về biến hệ thống anh ạ

Em có đoạn lisp này.

( defun c:setup()

(setq cm (getvar "cmdecho"))

(setvar "cmdecho" 0)

(command

"-style" "1_vnsimple" "vnsimple" "" "0.8" "0" "n" "n" "n"

"-style" "3_vnabch" "vn_abch" "" "0.9" "0" "n" "n" "n"

"-style" "4_vnarial" ".vnarial" "" "1.0" "0" "n" "n" "n"

"-style" "2_vnarialH" ".vnarialH" "" "1.0" "0" "n" "n"

)

(command "-layer" "n" "Hidden"

"c" "5" "hidden"

"l" "hidden" "hidden"

"n" "Center"

"c" "1" "center"

"l" "dashdot" "center"

"n" "Dimension"

"c" "8" "dimension"

"n" "Special"

"c" "6" "special"

"n" "Boundary"

"c" "4" "boundary"

"n" "Text"

"c" "3" "text"

"n" "Medium"

"c" "3" "medium"

"n" "Main_01"

"c" "7" "Main_01"

"n" "Main_02"

"c" "2" "Main_02"

"n" "Secondary"

"c" "8" "secondary"

"n" "defpoints"

"c" "151" "defpoints"

"n" "Hatch"

"c" "9" "hatch" ""

)

(command "layer" "s" "main_01" "")

(setq tyle (getreal "\n Enter main scale: "))

(setvar "dimscale" tyle)

(setvar "dimasz" 1.1)

(setvar "dimclrd" 8)

(setvar "dimclre" 8)

(setvar "dimclrt" 3)

(setvar "dimdec" 0)

(setvar "dimdli" 0.5)

(setvar "dimexe" 0.5)

(setvar "dimexo" 0.5)

(setvar "dimfit" 5)

(setvar "dimgap" 0.6)

(setvar "dimjust" 0)

(setvar "dimtad" 1)

(setvar "dimtxsty" "2_vnarialH")

(setvar "dimtxt" 1.5)

(setvar "dimtix" 1)

(setvar "dimtoh" 0)

(setvar "dimtih" 0)

(setvar "dimtofl" 1)

(command "dimstyle" "s" (rtos tyle 2 0) "")

(setvar "ltscale" 4)

(princ "Welcome to setup of TO QUANG CHINH TEDI-RECO-Bridge Design Department No")

(setvar "cmdecho" cm)

(setvar "osmode" 127)

(setvar "lunits" 2)

(setvar "psltscale" 1)

);end defun

**************************************************************

**************************************************************

Cái biến hệ thống cmdecho trong này gán bằng 0 để làm gì vậy anh.

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
Tue_NV    3.841
**************************************************************

Cái biến hệ thống cmdecho trong này gán bằng 0 để làm gì vậy anh.

 

Reply :

 

Tiện đây bác q288 cho em hỏi cái này có tác dụng gì thế?

(setvar "cmdecho" 0)

thấy rất nhiều lisp mọi người viết bắt đầu thường có đoạn này, tại vì em cũng chỉ học mót, chắp vá nên không hiểu lắm. bác giải thích hộ em với

->

Xin được giải thích :

(setvar "cmdecho" 0)

- Cái này cũng dễ hiểu lắm.

Bạn chạy Lisp với dòng này -> Mở thanh Command line quan sát (1)

Bạn chạy Lisp không có dòng này -> Mở thanh Command line quan sát (2)

Quan sát (1) và (2) => Rút ra kết luận

 

Sau đó chạy Lisp với dòng này nữa (setvar "cmdecho" 1)

Quan sát => Rút ra kết luận

 

->

còn cmdecho=0 để tắt tạm thời đối thoại của cad, vì nếu ko thì cad cứ đưa ra kết quả lằng nhằng đôi khi gây khó chịu mà còn làm chậm tộc độ chạy ct.
  • Vote tăng 2

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  

×