Đến nội dung


Hình ảnh
* - - - - 1 Bình chọn

[Yêu Cầu]Lisp chuyển Layer về thành Bylayer


  • Please log in to reply
32 replies to this topic

#21 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3805 (đỉnh cao)

Đã gửi 09 April 2012 - 11:50 AM

Hihi;))
Em đưa ra bài toán cụ thể như sau:
1/ Mở CAD lên --> gõ lệnh LA enter --> New layer --> Đặt tên layer mới là Layer1, Color: Yellow, Linetype: Continuos...
2/ Apload lisp DM.lsp
3/ Vẽ line: L enter (Vẽ một đoạn thẳng bất kỳ)
4/ Gõ 1 enter, select objects: chọn vào đường line vừa vẽ. En tơ.
Yêu cầu: màu 1 thành màu bylayer của layer1.
Hy vọng anh hiểu!
P/s: Một ngày click Like this tối đa bao nhiêu lần các anh nhỉ?

THì Vẫn là "Nếu đổi màu thành ByLayer thì chọn đối tượng rồi chọn màu là Bylayer trên thanh công cụ là được."

Lạm dụng vào Lisp nhiều quá thì không có hay.
  • 1

#22 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1359 (rất tốt)

Đã gửi 09 April 2012 - 04:10 PM

Hihi;))
Em đưa ra bài toán cụ thể như sau:
1/ Mở CAD lên --> gõ lệnh LA enter --> New layer --> Đặt tên layer mới là Layer1, Color: Yellow, Linetype: Continuos...
2/ Apload lisp DM.lsp
3/ Vẽ line: L enter (Vẽ một đoạn thẳng bất kỳ)
4/ Gõ 1 enter, select objects: chọn vào đường line vừa vẽ. En tơ.
Yêu cầu: màu 1 thành màu bylayer của layer1.
Hy vọng anh hiểu!
P/s: Một ngày click Like this tối đa bao nhiêu lần các anh nhỉ?

Mình đoán mò ý bạn chắc là đổi màu của layer chứa đối tượng được chọn chứ gì. Nếu đúng dùng lisp này.
http://duy782006.blo...tuong-chon.html
Lưu ý lisp chỉ chuyển màu của layer thôi nếu đối tượng không phải là bylayer mình không chịu trách nhiệm nhé.
  • 1

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#23 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 09 April 2012 - 10:14 PM

Tức là đối tượng A đang nằm ở layer "A", ấn 1 -> Chọn đối tượng A -> Layer "A" sẽ mang màu 1 ?
Nếu vậy thì khái niệm Bylayer trong bài toán bạn đưa ra hơi thừa
Ví dụ minh họa ý bạn như sau, bạn xem có phải không :
1 - Không dùng Reactor :

(defun c:ccl (/ m dt la enLa)
(princ "\nChon mau muon doi :")
(setq
m (acad_colordlg 3)
enLa (entget (tblobjname "LAYER" (cdr (assoc 8 (entget (car (entsel "\nChon doi tuong chua layer can doi mau: ")))))))
)
(entmod (subst (cons 62 m) (assoc 62 enLa) enLa))
(princ)
)

  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#24 dovananh.xd

dovananh.xd

    biết lệnh offset

  • Members
  • PipPipPip
  • 174 Bài viết
Điểm đánh giá: 25 (tàm tạm)

Đã gửi 09 April 2012 - 11:12 PM

Mình đoán mò ý bạn chắc là đổi màu của layer chứa đối tượng được chọn chứ gì. Nếu đúng dùng lisp này.
http://duy782006.blo...tuong-chon.html
Lưu ý lisp chỉ chuyển màu của layer thôi nếu đối tượng không phải là bylayer mình không chịu trách nhiệm nhé.



Tức là đối tượng A đang nằm ở layer "A", ấn 1 -> Chọn đối tượng A -> Layer "A" sẽ mang màu 1 ?
Nếu vậy thì khái niệm Bylayer trong bài toán bạn đưa ra hơi thừa
Ví dụ minh họa ý bạn như sau, bạn xem có phải không :
1 - Không dùng Reactor :


(defun c:ccl (/ m dt la enLa)
(princ "\nChon mau muon doi :")
(setq
m (acad_colordlg 3)
enLa (entget (tblobjname "LAYER" (cdr (assoc 8 (entget (car (entsel "\nChon doi tuong chua layer can doi mau: ")))))))
)
(entmod (subst (cons 62 m) (assoc 62 enLa) enLa))
(princ)
)

Hai lisp này là hoàn toàn giống nhau. Thanks các anh!


THì Vẫn là "Nếu đổi màu thành ByLayer thì chọn đối tượng rồi chọn màu là Bylayer trên thanh công cụ là được."

Lạm dụng vào Lisp nhiều quá thì không có hay.

Anh vẫn chưa hiểu ý của em rồi.
Hì hì, phải nói thế nào để các anh hiểu ý của em nhỉ, hì hì!
Hì hì, ngại quá! ý tưởng này của em là từ lời "thầy bói" của anh Hà mà!
Khi em đọc xong lời thầy bói, tiện thể em đang dùng cái lisp DM, thế là em nghĩ ngay tới cái ý tưởng này
Tuy nhiên dùng một trong hai lisp của anh Ket hoặc của anh Duy là được rồi.
  • 0

#25 thanhlong2202

thanhlong2202

    Chưa sử dụng CAD

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

Đã gửi 15 November 2012 - 11:08 AM

co ai cho em hoi cach lay lai thanh cong cu ByLayer khong a!
  • 0

#26 bravery10

bravery10

    biết pan

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

Đã gửi 24 November 2012 - 11:55 AM

Vấn đề này chắc được nhiều người quan tâm, với tôi khi nhận được bản vẽ người khác quản lý nét theo màu, không phù hợp với cách quản lý nét theo layer của tôi, tôi buộc phải chuyển màu tất cả các đối tượng trong bản vẽ về "BYLAYER" mã màu là 256. Với một đối tượng đồ họa bất kỳ nó đều có thuộc tính màu, và hai thuộc tính cơ bản nữa là kiểu đường và độ dày nét. Nếu các thuộc tính đều đặt là "BYLAYER" thì giá trị của các thuộc tính đó là do Layer quy định, ví dụ màu của đối tượng có thuộc tính màu là "BYLAYER" sẽ chính là màu Layer của đối tượng đó. Khi chúng ta thay đổi màu của layer thì các đối tượng trong layer đó có thuộc tính màu là "BYLAYER" cũng có màu thay đổi theo. Tương tự cho các thuộc tính khác.
Khi vẽ một đối tượng mới, đối tượng đó sẽ mang các thuộc tính màu là màu hiện hành, xem ở thanh Properties, có layer là layer hiện hành. Chúng ta cũng có thể thay đổi bằng cách chọn đối tượng và gán layer chọn trên thanh layer, gán màu, ...
Vấn đề là các đối tượng chứa trong block thì chúng ta không thể chọn block và gán màu được, các đối tượng sẽ không đổi màu trừ những đối tượng trong block đó có màu là "bylayer" và thuộc layer "0", hoặc đối tượng thuộc layer bất kỳ mà có màu là "Byblock" (mã 0). Ví dụ tôi có một đường thẳng có màu là byblock nằm trong block1, block1 lại thuộc layer3 có màu là 3. Nếu đổi màu block1 thành màu 5, thì đường thẳng trên hiển thị màu 5, nếu đổi màu block1 là "Bylayer" thì đường thẳng trên hiển thị màu 3. Các thuộc tính khác cũng tương tự.
Kết luận lại là màu Byblock, Bylayer cũng là một màu nhưng là tham biến, nó lấy màu theo layer hoặc block chứa đối tượng. Hay nói cách khác màu của đối tượng có thuộc tính màu này được quy định bởi layer hay block.
Qua đây có các cao thủ hãy viết 1 lisp mà có thể chuyển hết màu của tất cả các đối tượng, các loại đối tượng về màu bylayer. Lưu ý là trong block lại có thể có block.
  • 0
Cad 2012

#27 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 24 November 2012 - 12:10 PM

Vấn đề bạn đưa ra người ta giải quyết từ lâu lắc rồi mà. Search chữ Bylayer Lisp chắc ra hàng đống
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#28 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 24 November 2012 - 12:19 PM

Chuyển layer trong block nhiều tầng hình như chưa có?
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#29 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 24 November 2012 - 12:38 PM

Khi đã chuyển hết trong Table Block thì nó bao nhiêu tầng cũng vậy thôi ạ
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#30 whatcholingon

whatcholingon

    biết lệnh break

  • Members
  • PipPipPipPip
  • 222 Bài viết
Điểm đánh giá: 37 (tàm tạm)

Đã gửi 02 August 2013 - 04:53 PM

Sửa lại:


;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.c...-thanh-bylayer/
(defun c:dmla ( / ss)
(command "undo" "begin")
(princ "\nChon cac doi tuong can thay doi...")
(setq ss (ssget))
(command "change" ss "" "p" "c" "bylayer" "LT" "bylayer" "LW" "bylayer" "" "")
(command "undo" "end")
(princ))

 

Mr Ha có thể sửa lsp này chút được không ah?

Hiện tại khi thực hiện lsp thì chọn đối tượng nào thì đối tượng đó được đưa về màu bylayer.

Giờ sửa thành khi chọn đối tượng thuộc một layer nào đó rồi tất cả các đối tượng thuộc layer đó được đưa về màu bylayer.

 

Thanks!


  • 0

#31 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 03 August 2013 - 11:42 AM


 

Mr Ha có thể sửa lsp này chút được không ah?

Hiện tại khi thực hiện lsp thì chọn đối tượng nào thì đối tượng đó được đưa về màu bylayer.

Giờ sửa thành khi chọn đối tượng thuộc một layer nào đó rồi tất cả các đối tượng thuộc layer đó được đưa về màu bylayer.

 

Thanks!

Đây bạn!

(defun c:dmla1 ( / ss)
(command "undo" "begin") (setq cmd (getvar 'cmdecho)) (setvar 'cmdecho 0)
(while (setq ent (car (entsel "\nChon doi tuong mau...")))
 (setq lay (cdr (assoc 8 (entget ent))))
 (setq ss (ssget "X" (list (cons 8 lay))))
 (command "change" ss "" "p" "c" "bylayer" "LT" "bylayer" "LW" "bylayer" ""))
 (setvar 'cmdecho cmd) (command "undo" "end")
(princ))

  • 2

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#32 whatcholingon

whatcholingon

    biết lệnh break

  • Members
  • PipPipPipPip
  • 222 Bài viết
Điểm đánh giá: 37 (tàm tạm)

Đã gửi 03 August 2013 - 02:26 PM

Đây bạn!

 

(defun c:dmla1 ( / ss)
(command "undo" "begin") (setq cmd (getvar 'cmdecho)) (setvar 'cmdecho 0)
(while (setq ent (car (entsel "\nChon doi tuong mau...")))
 (setq lay (cdr (assoc 8 (entget ent))))
 (setq ss (ssget "X" (list (cons 8 lay))))
 (command "change" ss "" "p" "c" "bylayer" "LT" "bylayer" "LW" "bylayer" ""))
 (setvar 'cmdecho cmd) (command "undo" "end")
(princ))

 

Tuyệt vời!

Cám ơn bạn nhiều


  • 0

#33 BuiHuuNghia

BuiHuuNghia

    biết zoom

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

Đã gửi 06 January 2014 - 07:45 PM

Mình không rành nhiều về lisp nên chỉ biết viết cho bạn cái lệnh này,bạn dùng thử xem có được không

(defun c:dmla ()
(command "undo" "begin")
(command "change" "all" "" "p" "c" "bylayer" "LT" "bylayer" "LW" "bylayer" "" "")
(command "undo" "end")
(princ)
)

Ai giúp sửa lisp này thành lisp có thể chuyển cả màu của mũi tên (vẽ bằng lệnh qleader)  và màu của đo kích thước  thành bylayer với (cả thân mũi tên và đầu mũi tên đều về bylayer nha, hình bên dưới do mình không biết cách chuyển màu của đầu mũi tên về bylayer nên vẫn giữ màu đỏ).

127110_ketquadim__copy.jpghttp://www.cadviet.c.../127110_dim.dwg

  • 0