Chuyển đến nội dung
Diễn đàn CADViet
Long Huỳnh

Xin mọi người giúp đỡ viết lisp

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

Em chào mọi người. Em xin mọi người giúp em viết 1 lisp insert 1 block của 1 bản vẽ bất kì vào 1 bản vẽ khác được không ạ. Lúc trước em có tải được file này. Nhưng ổ cứng cũ bị hư, phải đi thay mới, giờ quay lại thì link tải file này bị hư mất. Em cũng kiếm nhiều lắm mà ko thấy lisp nào làm được như này. Ở trong video, sau khi add lisp thì ở bất kì bản vẽ nào cũng có thể dùng lệnh đó để insert vào hết. Mong mọi người giúp em ạ. Em cảm ơn

 

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
41 phút trước, lemanhhung0302 đã nói:

Chính việc add trực tiếp vào thư mục Support dẫn đễn việc mất file khi cài lại win/ổ cứng hỏng.

Việc insert block từ bản vẽ có trong thư mục Support không khó, có rất nhiều lisp có thể làm được.

 


(defun c:SO (/ blockName fileName insertPoint )
	(setq blockName "Sofa" fileName "C:\Desktop\To be check\SOF.dwg") ;; File path location
	(if (not(tblsearch "BLOCK" "Sofa")) ;; check if the drawing not existing the block name
		(progn
			(vl-cmdf "_.-insert" filename '(0. 0. 0.) "" "" "")
			(vl-cmdf "_.erase" (entlast) "")
		)
	)
	(vl-cmdf "-insert" "Sofa" pause "1" "") ;;inserts the block you want from the master file
	(princ)
)

 

Quote

(defun c:CD1 (/ blockName fileName insertPoint )
    (setq blockName "CD1" fileName "C:\Program Files\Autodesk\AutoCAD 2018\Support\CD1.dwg") ;; File path location
    (if (not(tblsearch "BLOCK" "CD1")) ;; check if the drawing not existing the block name
        (progn
            (vl-cmdf "_.-insert" filename '(0. 0. 0.) "" "" "")
            (vl-cmdf "_.erase" (entlast) "")
        )
    )
    (vl-cmdf "-insert" "CD1" pause "1" "") ;;inserts the block you want from the master file
    (princ)
)

Em sửa lisp lại thành như này mà sao vẫn ko load được block vào anh à. Anh xem giúp em xem có lỗi chỗ nào ko ạ

image.png.19580068021c15459db79865a4fb2137.png

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
3 giờ trước, Long Huỳnh đã nói:

Em chào mọi người. Em xin mọi người giúp em viết 1 lisp insert 1 block của 1 bản vẽ bất kì vào 1 bản vẽ khác được không ạ. Lúc trước em có tải được file này. Nhưng ổ cứng cũ bị hư, phải đi thay mới, giờ quay lại thì link tải file này bị hư mất. Em cũng kiếm nhiều lắm mà ko thấy lisp nào làm được như này. Ở trong video, sau khi add lisp thì ở bất kì bản vẽ nào cũng có thể dùng lệnh đó để insert vào hết. Mong mọi người giúp em ạ. Em cảm ơn

 

Tên file với block bạn đặt khác nhau thử xem. Mình test mà bị trùng không chạy được. Khác tên thì OK.

Bạn thử Lisp dưới có chạy được không nhé!

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

(defun C:CD1 ()

  (command "_.insert" "Test") (command); "Test"-->ten file khong can duoi dwg, Ban de vo (C:\Program Files\Autodesk\AutoCAD 2018\Support\Test.dwg)

  (command "_.insert" "CD1" pause "1" "" "")

  (princ)

)

  • 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

@Long Huỳnh"C:\Program Files\Autodesk\AutoCAD 2018\Support\CD1.dwg" => "C:\\Program Files\\Autodesk\\AutoCAD 2018\\Support\\CD1.dwg"

đường dẫn của file phải có 2 xuyệt. Dùng (findfile fileName) để kiểm tra xem file co tồn tại hay không nhé

  • 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

Gửi bạn cái lisp này:

1. Bạn chỉ cần giữ lisp, file block kia không cần nữa vì lisp tự tạo ra block.

2. Trong lisp bổ sung thêm cửa sổ (cũng là block động).

3. Trước khi chọn điểm đặt cửa, bạn có thể gõ S hoặc D để chọn loại cửa (mặc định là cửa đi).

4. Lệnh là CDS.

 

CDS.rar

  • 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

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

×