Đến nội dung


Hình ảnh
- - - - -

nhờ giúp đở cách đổi đường nét trong block


  • Please log in to reply
8 replies to this topic

#1 anhptq

anhptq

    biết zoom

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

Đã gửi 24 March 2013 - 11:07 PM

Mình mới tham gia vào diển đàn.rất mong các bác giúp đỡ.mình cần chuyển các đối tượng trong bản vẽ về layer,linetype khác.vd:
Tất cả layer 0-->layer 10
Layer 2 -->layer 90
Nét dash-->dash2
....
Mình đã tạo được lisp chuyển được các đối tượng về layer,linetype,linescale mong muốn rồi.NGOẠI TRỪ các đối tượng nằm trong BLOCK.các bác chỉ giùm mình cách truy cập các đối tượng trong block mà không phải rã block ra( có rất nhiều block,rã ra rồi phải ngồi block lại)mình cũng mới biết chút ít về autolisp thôi.cảm ơn các bác nhiều.
  • 0

#2 anhptq

anhptq

    biết zoom

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

Đã gửi 25 March 2013 - 10:03 PM

Mình mới tham gia vào diển đàn,rất mong sự giúp đở của các bạn.
  • 0

#3 sgcq

sgcq

    Hội Hai Lúa

  • Members
  • PipPipPipPipPipPipPip
  • 1880 Bài viết
Điểm đánh giá: 692 (tốt)

Đã gửi 26 March 2013 - 08:41 AM

:D :D :D

bạn biết autolisp là sư phụ của 2 lúa rồi. bạn nghiên cứu thêm autosearch nữa là ổn.


  • 0

12728974_230210507314169_718723558582070 HỘI HAI LÚA

           fanpage: https://www.facebook.com/HoiHaiLua/

 

 

 

 

 

 


#4 KangKung

KangKung

    biết lệnh array

  • Members
  • PipPipPip
  • 189 Bài viết
Điểm đánh giá: 227 (khá)

Đã gửi 26 March 2013 - 02:51 PM

Mình mới tham gia vào diển đàn.rất mong các bác giúp đỡ.mình cần chuyển các đối tượng trong bản vẽ về layer,linetype khác.vd:
Tất cả layer 0-->layer 10
Layer 2 -->layer 90
Nét dash-->dash2
....
Mình đã tạo được lisp chuyển được các đối tượng về layer,linetype,linescale mong muốn rồi.NGOẠI TRỪ các đối tượng nằm trong BLOCK.các bác chỉ giùm mình cách truy cập các đối tượng trong block mà không phải rã block ra( có rất nhiều block,rã ra rồi phải ngồi block lại)mình cũng mới biết chút ít về autolisp thôi.cảm ơn các bác nhiều.

Yêu cầu của bạn tương tự yêu cầu ở Topic Vấn đề về màu Layer:

http://www.cadviet.c...e-ve-mau-layer/

và Topic [Yên cầu] lisp lọc tất cả các đối tượng theo màu

http://www.cadviet.c...tuong-theo-mau/

có chăng khác nhau ở chỗ bạn muốn chuyển từ Layer này sang Layer khác và từ Linetype này sang kiểu khác mà thôi.

 

Còn đây là Lisp theo yêu cầu của bạn. Lệnh KK1 để chuyển layer, lệnh KK2 để chuyển Linetype. Phải load linetype trước khi chạy lệnh KK2 nhé.  Khi chạy lisp thì không riêng gì block mà toàn bộ đối tượng khác đều bị hết. Nói tóm lại là lisp này dùng cho toàn bộ đối tượng trên bản vẽ

http://www.cadviet.c...er_linetype.lsp


;========LISP CHUYEN LAYER LINETYPE==========
;===========KANGKUNG 26/03/2013==============
(defun C:KK1()
  (vl-load-com)
  (command "UNDO" "BE")
  (setq lay1(getstring T "\n Nhap ten Layer can chuyen: "))
  (setq lay2(getstring T "\n Nhap ten Layer chuyen den: "))
  (vlax-for for-item (vla-get-blocks(vla-get-activedocument(vlax-get-acad-object)))
    (vlax-for item for-item
      (if (= (vla-get-Layer item) lay1)
	(vla-put-layer item lay2)
	)
      )
    )
  (command "UNDO" "END")
  (alert "Well done!")
  )
(defun C:KK2()
  (vl-load-com)
  (command "UNDO" "BE")
  (setq type1(strcase(getstring T "\n Nhap ten LineType can chuyen: ")))
  (setq type2(strcase(getstring T "\n Nhap ten LineType chuyen den: ")))
  (vlax-for for-item (vla-get-blocks(vla-get-activedocument(vlax-get-acad-object)))
    (vlax-for item for-item
      (if (= (vla-get-linetype item) "ByLayer")
	(setq Ltype(vla-get-linetype (vlax-ename->vla-object (TBLOBJNAME "LAYER" (vla-get-Layer item)))))
	(setq Ltype(vla-get-linetype item)))
      (if (= Ltype type1)
	(vla-put-linetype item type2)
	)
      )
    )
  (command "UNDO" "END")
  (alert "Well done!")
  )
(princ "\n                Written By KangKung - 26/03/2013\n")
(princ "\n           Nhap KK1 de chuyen Layer KK2 de chuyen LineType\n") 

  • 2

#5 anhptq

anhptq

    biết zoom

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

Đã gửi 27 March 2013 - 07:04 PM

Cảm ơn KangKung nhiều nhiều.thế là mình học thêm được ít kiến thức nữa rồi.

lúc trước mình dùng như thế này:

   (setq oj ssget "X" (list (cons 6 "dashed))))
   (command ".chprop" oj "" "la" "dashed2" "")

nên nó không đụng đến block được.

CẢM ƠN HUYNH!


  • 0

#6 KangKung

KangKung

    biết lệnh array

  • Members
  • PipPipPip
  • 189 Bài viết
Điểm đánh giá: 227 (khá)

Đã gửi 27 March 2013 - 10:30 PM

Hê hê. Thằng block nó có áo giáp nên không đụng đến được bằng code trên đâu.


  • 0

#7 anhptq

anhptq

    biết zoom

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

Đã gửi 31 March 2013 - 01:05 AM

KK Cho mình hỏi thêm.nếu mình muốn chuyển tất cả các đường line về layer 2,text về layer t2...(kể cả nó nằm trong block)thì mình phải dùng hàm điều kiện như thế nào.mình đã thử dùng:
If(= (vla-get-type item) "line")
Nhưng không được.mình đang sài cad tiếng nhật nên cũng khó sài chức năng hepl.
  • 0

#8 KangKung

KangKung

    biết lệnh array

  • Members
  • PipPipPip
  • 189 Bài viết
Điểm đánh giá: 227 (khá)

Đã gửi 31 March 2013 - 06:58 PM

KK Cho mình hỏi thêm.nếu mình muốn chuyển tất cả các đường line về layer 2,text về layer t2...(kể cả nó nằm trong block)thì mình phải dùng hàm điều kiện như thế nào.mình đã thử dùng:
If(= (vla-get-type item) "line")
Nhưng không được.mình đang sài cad tiếng nhật nên cũng khó sài chức năng hepl.

Bác dùng cái này:

 

(vlax-for for-item (vla-get-blocks(vla-get-activedocument(vlax-get-acad-object)))
    (vlax-for item for-item
      (if (= (vla-get-objectname item) "AcDbText")
          (vla-put-layer item "Text"))
      (if (= (vla-get-objectname item) "AcDbPolyline")
          (vla-put-layer item "Polyline"))
      )
  )
Hoặc cái này
(vlax-for for-item (vla-get-blocks(vla-get-activedocument(vlax-get-acad-object)))
    (vlax-for item for-item
      (if (= (cdr(assoc 0 (entget(vlax-vla-object->ename item)))) "TEXT")
         (vla-put-layer item "Text"))
      (if (= (cdr(assoc 0 (entget(vlax-vla-object->ename item)))) "LWPOLYLINE")
         (vla-put-layer item "Polyline"))
      )
  )

Bác người Việt sao lại dùng hàng Nhật làm gì cho nó phức tạp? 


  • 1

#9 anhptq

anhptq

    biết zoom

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

Đã gửi 01 April 2013 - 08:02 AM

cảm ơn bác kangkung nhiều nhé.cty mình mua cad bản quyền tiếng nhật nên mình phải dùng thôi.chứ nó phiền lắm bác ạ!


  • 0