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

Nhờ sửa lisp chuyển layer và hướng dẫn về array trong block dynamic

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

;;************************Chuyen doi tuong ve dung layer

1. Mình dùng lisp chuyển đối tượng như sau để quản lý layer:

 

 

;;************************Chuyen doi tuong ve dung layer

(defun CHANGE-LAYER (_TYPE LAYER / OBJS)
 (setq OBJS (ssget "X" (list (cons 0 _TYPE))))
 (if (not (tblsearch "layer" LAYER))
  (command ".layer" "m" LAYER "")
 );_ end if
 (command ".chprop" OBJS "" "la" LAYER "")
 (princ)
);_ end defun
(defun C:9 (/ OBJS)
(CHANGE-LAYER "DIMENSION" "---Q7-DIM")
(CHANGE-LAYER "HATCH" "---Q8-HATCH")

(CHANGE-LAYER "*TEXT" "---Q9-TEXT") )
 

Bây h mình muốn khi thực hiện lệnh của lisp trên "9" thì những đối tượng hatch của layer "---Q63-LAT NEN" không bị chuyển sang layer "---Q8-HATCH" thì phải sửa lisp như thế nào.

2. Mình muốn dùng tính năng array của block dynamic nhưng chỉ dùng được 1 chiều, muốn dùng 2 chiều thì như thế nào. Ví dụ: 1 viên gạch 500x500, chỉ cần kéo mũi tên sẽ lát gạch đó cho phòng 4000x6000 (file đính kèm)

3. Mình dùng cad hay bị lỗi khi sử dụng wipeout khi hiển thị vẫn che mất đối tượng nằm phía trên, nhưng khi move thì lại view đúng, rồi vẽ 1 lúc lại bị che mất (đối tượng nằm trên wipeout). In thì bình thường nhưng khi vẽ khó quản lý.

Thanks đã đọc. Chúc mọi người kỳ nghỉ vui vẻ.

;;************************Chuyen doi tuong ve dung layer
 
(defun CHANGE-LAYER (_TYPE LAYER / OBJS)
 (setq OBJS (ssget "X" (list (cons 0 _TYPE))))
 (if (not (tblsearch "layer" LAYER))
  (command ".layer" "m" LAYER "")
 );_ end if
 (command ".chprop" OBJS "" "la" LAYER "")
 (princ)
);_ end defun
(defun C:9 (/ OBJS)
(CHANGE-LAYER "DIMENSION" "---Q7-DIM")
(CHANGE-LAYER "HATCH" "---Q8-HATCH")

 

(CHANGE-LAYER "*TEXT" "---Q9-TEXT") )
;;************************Chuyen doi tuong ve dung layer
 
(defun CHANGE-LAYER (_TYPE LAYER / OBJS)
 (setq OBJS (ssget "X" (list (cons 0 _TYPE))))
 (if (not (tblsearch "layer" LAYER))
  (command ".layer" "m" LAYER "")
 );_ end if
 (command ".chprop" OBJS "" "la" LAYER "")
 (princ)
);_ end defun
(defun C:9 (/ OBJS)
(CHANGE-LAYER "DIMENSION" "---Q7-DIM")
(CHANGE-LAYER "HATCH" "---Q8-HATCH")
 
 
(defun CHANGE-LAYER (_TYPE LAYER / OBJS)
 (setq OBJS (ssget "X" (list (cons 0 _TYPE))))
 (if (not (tblsearch "layer" LAYER))
  (command ".layer" "m" LAYER "")
 );_ end if
 (command ".chprop" OBJS "" "la" LAYER "")
 (princ)
);_ end defun
(defun C:9 (/ OBJS)
(CHANGE-LAYER "DIMENSION" "---Q7-DIM")
(CHANGE-LAYER "HATCH" "---Q8-HATCH")
(CHANGE-LAYER "*TEXT" "---Q9-TEXT") )

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

upfile bằng diễn đàn mà không được. Nhờ mọi người vào đây down nhé.

http://www.mediafire.com/download/369e2cc6n45zrng/file+mau.dwg

1 + 3 không có file không dám đoán

1 (có lẽ nào là Hatch mà bạn thấy đang nằm trong block, group nào đó => chưa thực sự là đối tượng Hatch) bạn thử quét lại nó/ Ctrl+1 xem Cad gọi tên nó là gì, và gửi thử file nên coi

2. Có thể bạn trong môi trường Edit Block editor bạn thay vì dùng Dim (loại Line) của thẻ Pramet er bạn hãy dùng Dim (loại XY)

tên lệnh trong Cad (dùng trong môi trường Edit Block) là BPARAMETER

101306_untitled_1.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

Thanks bác quansla. Phần 1 ý mình là không muốn nó bị chuyển layer. tức là sau khi ấn lệnh, những đối tượng hatch của layer "---Q63-LAT NEN" không bị chuyển thành layer "---Q8-HATCH". thanks.

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ác quansla. Phần 1 ý mình là không muốn nó bị chuyển layer. tức là sau khi ấn lệnh, những đối tượng hatch của layer "---Q63-LAT NEN" không bị chuyển thành layer "---Q8-HATCH". thanks.

Cái dòng về Hatch ý, hay bạn thay béng thế này được không

 

(and

    (setq ss (ssget  "_x" '((0 . "HATCH") (-4 . "<not")(8 . "---Q63-LAT NEN")(-4 . "not>"))))

    (command ".chprop" ss "" "la" "---Q8-HATCH"")

)

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

^^ nhoc bỏ đại chạy thử thấy q63 ko bị đỗi thành Q8 :)

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/topic/109369-nho-sua-lisp-chuyen-layer-va-huong-dan-ve-array-trong-block-dynamic/
;;************************Chuyen doi tuong ve dung layer

(defun CHANGE-LAYER (_TYPE LAYER / OBJS)
 (setq OBJS (ssget "X" (list (cons 0 _TYPE))))
 (if (not (tblsearch "layer" LAYER)) 
  (command ".layer" "m" LAYER "")
 );_ end if
 (command ".chprop" OBJS "" "la" LAYER "")
 (princ)
);_ end defun
(defun C:9 (/ OBJS)
(CHANGE-LAYER "DIMENSION" "---Q7-DIM")
;(CHANGE-LAYER "HATCH" "---Q8-HATCH")
(CHANGE-LAYER "*TEXT" "---Q9-TEXT")
(if (and (setq ss (ssget  "_x" '((0 . "HATCH") (-4 . "<not")(8 . "---Q63-LAT NEN")(-4 . "not>")))))
(command ".chprop" ss "" "la" "---Q8-HATCH" ""))
)

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

×