Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
kedensau88

[Nhờ chỉnh sửa] Lisp insert và open bản vẽ

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

Chào các anh,bây giờ em đang có đoạn lisp sau :

File DCL :

 
nuts :dialog {label = "HEX NUTS-ISO (4043)";
:boxed_row {label = "Select Type"; height = 12;
:list_box {key = "nuts"; width = 30;}
}
spacer;
:row {
:button {label = "OK"; key = "ok"; width = 15; fixed_width = true;}
:button {label = "Cancel"; is_cancel = true; key = "cancel"; width = 15; fixed_width = true;}
}
}
[/code
File Lisp :
[code] 
(defun saveVars()
 (setq sStr(get_tile "nuts")) 
 (if(= sStr "")
(setq nuts1 "Nothing") 
(setq nuts1 (nth (atoi sStr) nuts)))
 )
;;;--------------------------------------------------------------
(defun nuts( / i)
(setq nuts(list "M5" "M6" "M8" "M10" "M12" "M14" "M16" "M18" "M20" "M22" "M24" "M27" "M30" "M36" "M39" "M42" "M45" "M48" "M52" "M56" "M60" "M64"))
(setq i (load_dialog "flanges\\flanges.dcl"))
(if (not (new_dialog "nuts" i)) (exit))
(start_list "nuts" 3)
(mapcar 'add_list nuts)
(end_list)
 (action_tile "ok" "(setq ddiag 2)(saveVars1)(done_dialog)")
 (action_tile "cancel" "(setq ddiag 1)(done_dialog)")
(start_dialog) (unload_dialog i)
)
;;;--------------------------------------------------------------
(defun C:nut(/ pt)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(nuts)
 (if(= ddiag 1)
(princ "\n Nuts cancelled!")
 )
 (if(= ddiag 2)
(progn
(command "insert" nuts1 pause "" "" "")))
(setvar "osmode" oldos)
 (princ)

 

- Khi em load lisp và thực hiện lệnh "nut" thì nó vẫn thực hiện bình thường.Nhưng đến khi em thực hiện lệnh "nut" lần thứ 2 thì nó báo lỗi "_nut ; error: bad function: ("M5" "M6" "M8" "M10" "M12" "M14" "M16"

"M18" "M20" "M22" "M24" "M27" "M30" "M36" "M39" "M42" "M45" "M48" "M52" "M56"

"M60" "M64")".Em ko biết vì sao lại vậy ?

- Bây giờ em muốn thay lệnh "insert" bằng "open" thì em phải thay đổi đoạn lisp command đó như thế nào ?(Lisp trên là em tạo thư viện các bản vẽ,trong mỗi bản vẽ sẽ chứa 1 chi tiết tiêu chuẩn,khi mình cần dùng chi tiết đó để vẽ bản vẽ thì mình sẽ insert nó vào bản vẽ mình vẽ.Còn khi em muốn thay bằng open là em muốn tạo thư viện các bản vẽ tiêu chuẩn tham khảo,khi muốn xem bản vẽ nào chỉ cần chọn bản vẽ đó để mở ra xem,ko cần phải vào "My Computer\\..." để tìm bản vẽ rất mất công).

Các anh giúp em với,cảm ơn các anh 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

- Sai cơ bản về việc đặt tên biến trùng tên hàm ngay đầu hàm nuts

- Các dòng command bạn thực hiện thủ công ra sao thì viết lệnh như vậy thôi

  • 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

- Sai cơ bản về việc đặt tên biến trùng tên hàm ngay đầu hàm nuts

- Các dòng command bạn thực hiện thủ công ra sao thì viết lệnh như vậy thôi

-Vâng,em ko để ý,em sửa lại được rồi.Thanks anh nhiều nhé.

-Còn khi em thay bằng open,nó ko mở bản vẽ ra ngay mà nó lại thực hiện lệnh đứng sau open đó (vì khi chạy chương trình em thấy nó báo lỗi Unknown command "M6" có nghĩa là khi thực hiện open,nó ko mở cái file M6 mà nó lại đi thực hiện lệnh M6),ko biết em hiểu vậy có đúng ko nữa,mong anh giú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

-Vâng,em ko để ý,em sửa lại được rồi.Thanks anh nhiều nhé.

-Còn khi em thay bằng open,nó ko mở bản vẽ ra ngay mà nó lại thực hiện lệnh đứng sau open đó (vì khi chạy chương trình em thấy nó báo lỗi Unknown command "M6" có nghĩa là khi thực hiện open,nó ko mở cái file M6 mà nó lại đi thực hiện lệnh M6),ko biết em hiểu vậy có đúng ko nữa,mong anh giúp đỡ.

Ví dụ file M6.dwg nằm trong Support Search Path

Mở file M6.dwg bằng :

(Command "ai_editcustfile" "M6.dwg")

Còn nếu M6.dwg không nằm trong Support Search Path thì phải khai đầy đủ đường dẫn của nó

Ví dụ :

(Command "ai_editcustfile" "C:\\M6.dwg")

  • 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

Ví dụ file M6.dwg nằm trong Support Search Path

Mở file M6.dwg bằng :

(Command "ai_editcustfile" "M6.dwg")

Còn nếu M6.dwg không nằm trong Support Search Path thì phải khai đầy đủ đường dẫn của nó

Ví dụ :

(Command "ai_editcustfile" "C:\\M6.dwg")

 

Nhưng ở đây mình có rất nhiều bản vẽ,nếu mình lặp đi lặp lại chọn từng bản vẽ thì nó rất dài.

chính vì vậy mình đã gán tên các bản vẽ thành biến "nuts1".

Làm thế nào để mình đưa hợp lý cái biến "nuts1" vào dòng lệnh của bạn được ?

Nếu mình thay "M6.dwg" bằng "nuts1" thì khi thực hiện lệnh nó chỉ hiểu là mở file "M6" thôi chứ ko phải file "M6.dwg" nên nó sẽ ko mở đ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

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  

×