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  
Han Tinh

INSERT ĐỐI TƯỢNG TRONG THƯ VIỆN

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

Han Tinh    1

127675_insert_doi_tuong.jpgChào các anh em trong điễn đàn cadviet, mình có tạo một tiện ích dùng trong cad(tạo thư viện trong cad với file ảnh là *sld), với phần mở rộng là *.mns trên thanh toolbar, nhưng khi insert thì đối tượng đó không nằm ngay con trỏ mà nằm ở rất xa so với con trỏ. khi insert xong ta phải zoom all mới thấy được đối tượng đó. Có cách nào khi ta insert thì đối tượng nằm ngay con trỏ không vậy. Cảm ơn các anh em! 

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
ketxu    2.653

Nếu sử dụng Block chắc bạn sẽ hiểu nó phụ thuộc vào điểm chèn Block lúc tạo

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
Han Tinh    1

Cam ơn bạn nguyenbd1 nhiều nha! mình làm được rồi. Là phải đem bản vẽ trong khung nhìn về góc tọa độ. Thanks bạn! 

Với lại cho mình hỏi thêm tí nữa là: mình muốn dùng Lisp để gọi bản vẽ trong tiện ích ra mà không phải dùng chuột để chọn chúng trên toolbar thì được không 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
namnhim    5

Cam ơn bạn nguyenbd1 nhiều nha! mình làm được rồi. Là phải đem bản vẽ trong khung nhìn về góc tọa độ. Thanks bạn! 

Với lại cho mình hỏi thêm tí nữa là: mình muốn dùng Lisp để gọi bản vẽ trong tiện ích ra mà không phải dùng chuột để chọn chúng trên toolbar thì được không vậy? 

nếu muốn dùng lisp bạn có thể dùng đoạn code này:

(DEFUN C:GBV() (prompt "\n DE GOI BVE TRONG THU VIEN")
(setq ms 1) (setq x (getpoint "\nCHON GOC TRAI-DUOI BAN VE :"))
(setenv "ACAD" (strcat (GETENV "ACAD") ";" "C:\\Program Files\\AutoCAD 2004\\Thu Vien"))
(command "-insert" "C:\\Program Files\\AutoCAD 2004\\Thu Vien\\TENBVE.DWG" x ms ms "0") 
(Command "explode" (ssget "L")) (Command "-purge" "b" "TENBVE" "y" "y") 
(Command "zoom" "e")
(prompt "\nDA GOI BVE RA")(princ))

lưu ý là bve mẫu được lưu theo đường dẫn "C:\\Program Files\\AutoCAD 2004\\Thu Vien" là ok

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
Han Tinh    1

Bạn namnhim cho mình hỏi là: minh vẩn tạo thư mục thư viện trong đó vẫn có flie TENBVE và lưu theo đường dẫn trong ổ C, mà sau khi gọi lệnh thì màn hình hiện lên các dòng như này là sao vậy bạn. 

127675_anh_hien_thi.jpg

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
namnhim    5

bạn đổi Cad 2004 thành 2007 (\\Program Files\\AutoCAD 2004\\....) ==> (\\Program Files\\AutoCAD 2007\\....)

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ạn namnhim nhiều nha! Nhưng có vấn đề là: nếu trong folder Thu Vien mình lưu  nhiều bản vẽ(VD là 50 bản vẽ) thì khi gọi lệnh nó sẽ cho ra một loạt( 50 bản vẽ)  thì rất là bất tiện lắm. Có cách nào khi GỌI LỆNH nó sẽ hiện trên màn hình hay trên thanh toolbar dưới dạng cây folder(thư mục cha và các thư mục con). 

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
namnhim    5

cái này chỉ để gọi cho 1 bve do bạn đặt tên trong Thư Viện, 

(command "-insert" "C:\\Program Files\\AutoCAD 2004\\Thu Vien\\TENBVE.DWG" x ms ms "0")

Nếu bạn muốn gọi từng chi tiết bằng bảng điều khiển thì hình như trên diễn đàn đã có rồi, bạn có thể tìm nó tối ưu hơn.

hoặc bạn có thể dùng theo kiểu cùi bắp này là tạo những file chi tiết riêng rồi vất vào trong thư viện, sau đó sử dụng Lisp hiển thị bảng lệnh do anh anh Ketxu viết và gõ LC là hiện ra bảng có tên chi tiết cần gọi rồi chon chi tiết đó và nhấn OK là ra cái chi tiết đó.

(defun c:lc(/ LM:ListBox str lstData ST:SendKeys)
(setq lstData
    (acad_strlsort (list
;Viet tiep cac lenh vao duoi dong nay theo mau "Ten lenh Noi dung"
    "MCA MatcatAA.dwg"
    "MCB MatcatBB.dwg"
    "MCC MatcatCC.dwg"
    "CO Copy th\U+00F4ng minh"    
    ))
)
(defun ST:SendKeys (keys / ws)
  (vlax-invoke-method (setq ws (vlax-create-object "WScript.Shell"))  'sendkeys keys)
  (vlax-release-object ws)
  (princ)
)
(defun LM:ListBox ( title data multiple / file tmp dch return )
  (cond
	(
  	(not
    	(and (setq file (open (setq tmp (vl-filename-mktemp nil nil ".dcl")) "w"))
      	(write-line
        	(strcat "listbox : dialog { label = \"" title
          "\"; spacer; : list_box { key = \"list\"; multiple_select = "
          	(if multiple "true" "false") "; } spacer; ok_cancel;}"
        	)
        	file
      	)
      	(not (close file)) (< 0 (setq dch (load_dialog tmp))) (new_dialog "listbox" dch)
    	)
  	)
	)
	(
  	t    
  	(start_list "list")
  	(mapcar 'add_list data) (end_list)
 
  	(setq return (set_tile "list" "0"))
  	(action_tile "list" "(setq return $value)")
 
  	(setq return
    	(if (= 1 (start_dialog))
      	(mapcar '(lambda ( x ) (nth x data)) (read (strcat "(" return ")")))
    	)
  	)          
	)
  )
  (if (< 0 dch) (unload_dialog dch))
  (if (setq tmp (findfile tmp)) (vl-file-delete tmp))
  return
)
(cond (
        (setq str (LM:ListBox "Ghi ch\U+00FA l\U+1EC7nh - lisp CAD - @ketxu - 2/6/2012 :" lstData nil))
        (setq str (car str))
        (ST:SendKeys (strcat (substr str 1 (vl-string-position 32 str)) "\n"))
        )
)
(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  

×