Chuyển đến nội dung
Diễn đàn CADViet
faker1907

Nhờ viết lisp tạo layer và vẽ rectang với layer vừa tạo

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

Em chào các bác. 

Em xin nhờ các bác viết giúp e 1 lisp cad với nội dung như sau:

- Nhập lệnh: RTR

- Yêu cầu nhập tên layer (chỉ là số, ví dụ: 18)

- Nếu layer đó tồn tại rồi thì chuyển bước tiếp theo

-Tự động tạo layer có tên là 18 và màu cũng là 18 luôn

-Vẽ rectang

- Ghi nhớ layer đó cho lần nhập lệnh tiếp theo.

Em xin cảm ơn các bác ạ

  • Vote giảm 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

Quick code gửi bạn 
 

(defun c:rtr(/ _ml ol *error*)
	(defun *error*(m)(and oL (setvar 'clayer oL)))
	(defun _ml (c / name) ; c => 0, < 257. 257 = ins	
	(setq name (itoa c))
	(cond 
		((tblobjname "layer" name) name)
		((entmake (list '(0 . "LAYER")
			'(100 . "AcDbSymbolTableRecord")
			'(100 . "AcDbLayerTableRecord")
			(cons 70 0)
			(cons 2 name)  ; layername                         
			(cons 62 c)    ; color number                         
			)
		))
	)
	name
)
	(setq oL (getvar 'clayer))
	(or *RTR_Color* (setq *RTR_Color* 1))
	(setq *RTR_Color* (cond ((getint (strcat "\nLayer Number <" (itoa *RTR_Color*) ">")))(*RTR_Color*)))
	(if (not (< 0 *RTR_Color* 257))(setq *RTR_Color* 1))
	(setvar 'clayer (_ml *RTR_Color*))
	(command ".rectangle")
	(while (> (getvar 'cmdactive) 0)(command pause))
	(*error* nil)
)

 

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
11 giờ trước, ketxu đã nói:

Quick code gửi bạn 
 


(defun c:rtr(/ _ml ol *error*)
	(defun *error*(m)(and oL (setvar 'clayer oL)))
	(defun _ml (c / name) ; c => 0, < 257. 257 = ins	
	(setq name (itoa c))
	(cond 
		((tblobjname "layer" name) name)
		((entmake (list '(0 . "LAYER")
			'(100 . "AcDbSymbolTableRecord")
			'(100 . "AcDbLayerTableRecord")
			(cons 70 0)
			(cons 2 name)  ; layername                         
			(cons 62 c)    ; color number                         
			)
		))
	)
	name
)
	(setq oL (getvar 'clayer))
	(or *RTR_Color* (setq *RTR_Color* 1))
	(setq *RTR_Color* (cond ((getint (strcat "\nLayer Number <" (itoa *RTR_Color*) ">")))(*RTR_Color*)))
	(if (not (< 0 *RTR_Color* 257))(setq *RTR_Color* 1))
	(setvar 'clayer (_ml *RTR_Color*))
	(command ".rectangle")
	(while (> (getvar 'cmdactive) 0)(command pause))
	(*error* nil)
)

 

E cảm ơn bá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

×