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

[Nhờ sửa lisp] đặt layer và màu khi vẽ lệnh

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

Mình search trên diễn đàn và tìm được lisp về tô bóng, trong lệnh này khi vẽ các đường bóng thì layer và màu mặc định là cái hiện tại. mình muốn khi nó vẽ thì đường bóng layer là "danhbong" và màu mặc định là "8", sau khi hết thúc lệnh trả về layer và màu ban đầu. Mình không chuyên lập trình lisp nên nhờ anh em sửa giúp tí. cảm ơn nhiều!

(defun c:trb(/ p1 p11 p2 p22 n1 x1 x2 dis1 dis2 i oldOs oldCmd)
(grtext -1 "@S\U+01A1n T\U+00F9ng - ketxu - Cadviet")
(if (= n nil)(setq n 10))
(setq p1 (getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m 1") 
p2 (getpoint p1 "\nCh\U+1ECDn \U+0111i\U+1EC3m 2") 
p11 (getpoint  "\nCh\U+1ECDn \U+0111i\U+1EC3m 3") 
p22 (getpoint p11 "\nCh\U+1ECDn \U+0111i\U+1EC3m 4") i 0
n1 (getint (strcat "\nS\U+1ED1 kho\U+1ea3ng chia < " (rtos n 2 0) " > : "))
	dis1 (distance p1 p11)
	dis2 (distance p2 p22)
)
(if n1 (setq n n1))
(setq
x1 (/ dis1  (/ (* n (+ n 1)) 2))
x2 (/ dis2  (/ (* n (+ n 1)) 2))
oldOs (getvar "osmode")
oldCmd (getvar "cmdecho"))

(setvar "osmode" 0)
(setvar "cmdecho" 0)
(repeat n
	(command ".Line" (setq p1 (polar p1 (angle p1 p11) (+ x1 (* i x1)))) (setq p2(polar p2 (angle p2 p22) (+ x2 (* i x2)))) "")
	(setq i (1+ i))
)
(setvar "osmode" oldOs)
(setvar "cmdecho" oldCmd)
)

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

- hàng này của thầy Ket đây mà ^^, nhoc nghịch tí ^^

;;--------------------------------------
(defun _layer2 ( name colour )
    (if (null (tblsearch "LAYER" name))
        (entmake
            (list
               '(0 . "LAYER")
               '(100 . "AcDbSymbolTableRecord")
               '(100 . "AcDbLayerTableRecord")
               '(70 . 0)
                (cons 2 name)
                (cons 62 colour)
            )
        )
    )
)
;================================
(defun c:trb(/ p1 p11 p2 p22 n1 x1 x2 dis1 dis2 i oldOs oldCmd oldclay)
(grtext -1 "@S\U+01A1n T\U+00F9ng - ketxu - Cadviet")
(if (null (tblsearch "layer" "danhbong")) (_layer2 "danhbong" 8)) 
(if (= n nil)(setq n 10))
(setq p1 (getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m 1") 
p2 (getpoint p1 "\nCh\U+1ECDn \U+0111i\U+1EC3m 2") 
p11 (getpoint  "\nCh\U+1ECDn \U+0111i\U+1EC3m 3") 
p22 (getpoint p11 "\nCh\U+1ECDn \U+0111i\U+1EC3m 4") i 0
n1 (getint (strcat "\nS\U+1ED1 kho\U+1ea3ng chia < " (rtos n 2 0) " > : "))
	dis1 (distance p1 p11)
	dis2 (distance p2 p22)
)
(if n1 (setq n n1))
(setq
x1 (/ dis1  (/ (* n (+ n 1)) 2))
x2 (/ dis2  (/ (* n (+ n 1)) 2))
oldOs (getvar "osmode")
oldCmd (getvar "cmdecho")
oldclay (getvar 'clayer))

(setvar "osmode" 0)
(setvar "cmdecho" 0)
(setvar 'clayer "danhbong")
(repeat n
	(command ".Line" (setq p1 (polar p1 (angle p1 p11) (+ x1 (* i x1)))) (setq p2(polar p2 (angle p2 p22) (+ x2 (* i x2)))) "")
	(setq i (1+ i))
)
(setvar "osmode" oldOs)
(setvar "cmdecho" oldCmd)
(setvar 'clayer oldclay)
(princ)
)
  • 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

Ah. còn một điều hơi bất tiện nữa là đường tô bóng cuối cùng trùng với đường bao, hết lệnh mình lại phải xóa bằng tay. bạn có thể hiệu chỉnh thêm một tí k?

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

cảm ơn bạn. đã hiểu cú pháp

(setq n (- n 1))
(repeat n
(command ".Line" (setq p1 (polar p1 (angle p1 p11) (+ x1 (* i x1)))) (setq p2(polar p2 (angle p2 p22) (+ x2 (* i x2)))) "")
(setq i (1+ i))
)
(setq n (+ n 1))
(setq n (- n 1))
(repeat n
(command ".Line" (setq p1 (polar p1 (angle p1 p11) (+ x1 (* i x1)))) (setq p2(polar p2 (angle p2 p22) (+ x2 (* i x2)))) "")
(setq i (1+ i))
)
(setq n (+ n 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

 

cảm ơn bạn. đã hiểu cú pháp

(setq n (- n 1))
(repeat n
(command ".Line" (setq p1 (polar p1 (angle p1 p11) (+ x1 (* i x1)))) (setq p2(polar p2 (angle p2 p22) (+ x2 (* i x2)))) "")
(setq i (1+ i))
)
(setq n (+ n 1))
(setq n (- n 1))
(repeat n
(command ".Line" (setq p1 (polar p1 (angle p1 p11) (+ x1 (* i x1)))) (setq p2(polar p2 (angle p2 p22) (+ x2 (* i x2)))) "")
(setq i (1+ i))
)
(setq n (+ n 1))

 

Tốt quá rồi ^^ 

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  

×