Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
7 replies to this topic

#1 duytuankts

duytuankts

    biết vẽ line

  • Members
  • PipPip
  • 28 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 01 September 2014 - 01:00 AM

;;************************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") )

  • 0

#2 duytuankts

duytuankts

    biết vẽ line

  • Members
  • PipPip
  • 28 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 01 September 2014 - 01:04 AM

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

http://www.mediafire...ng/file mau.dwg


  • 0

#3 quansla

quansla

    biết lệnh xclip

  • Members
  • PipPipPipPipPipPipPip
  • 643 Bài viết
Điểm đánh giá: 224 (khá)

Đã gửi 01 September 2014 - 04:39 PM

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

http://www.mediafire...ng/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


  • 0

#4 duytuankts

duytuankts

    biết vẽ line

  • Members
  • PipPip
  • 28 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 01 September 2014 - 07:42 PM

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.


  • 0

#5 quansla

quansla

    biết lệnh xclip

  • Members
  • PipPipPipPipPipPipPip
  • 643 Bài viết
Điểm đánh giá: 224 (khá)

Đã gửi 01 September 2014 - 10:16 PM

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"")
)


  • 0

#6 duytuankts

duytuankts

    biết vẽ line

  • Members
  • PipPip
  • 28 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 02 September 2014 - 10:07 PM

Không muốn nhờ nhiều nên cả ngày mò chỉnh sửa theo code bác quansla cho nhưng không được. Có ai bỏ vào giúp mình cái. @@


  • 0

#7 nhoclangbat

nhoclangbat

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1409 Bài viết
Điểm đánh giá: 379 (khá)

Đã gửi 02 September 2014 - 10:29 PM

^^ 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.c...-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" ""))
)


  • 0
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#8 duytuankts

duytuankts

    biết vẽ line

  • Members
  • PipPip
  • 28 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 02 September 2014 - 10:40 PM

Thanks 2 bác ở trên nhé ^^ đã giải quyết xong. Chúc mọi người kỳ nghỉ vui vẻ ^^


  • 0