Đến nội dung


Hình ảnh
- - - - -

[Xin] lisp chuyển màu các thuộc tính dynamic block


  • Please log in to reply
96 replies to this topic

#81 Tot77

Tot77

    biết lệnh adcenter

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

Đã gửi 12 May 2014 - 06:20 PM

Tôi sửa lại rồi, có sai 1 chỗ, bạn down lại theo link dưới đây.

http://www.mediafire.../CHEN_FIELD.lsp


  • 1

#82 proconeng86

proconeng86

    biết lệnh break

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

Đã gửi 12 May 2014 - 07:38 PM

Tôi sửa lại rồi, có sai 1 chỗ, bạn down lại theo link dưới đây.

http://www.mediafire.../CHEN_FIELD.lsp

 

Cám ơn bạn nhiều, lisp đã dùng được cho dynamic block nhưng nó chèn tất cả các attribute rồi, không phải khi nào cũng cần chèn hết thế, nên có bảng lựa chọn như ý trước của mình thì sẽ dễ hơn. ngoài ra phải là 2 block giống hệt nhau mới dùng được, mình có 2 dynamic block như trong file đính kèm, muốn chèn field cho nhau nhưng không được, bạn xem hộ mình cái nhé

http://www.mediafire...namic_block.dwg


  • 0

#83 Tot77

Tot77

    biết lệnh adcenter

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

Đã gửi 12 May 2014 - 08:31 PM

Vậy thì dùng cái này, bạn nhấp vào Att nào đó của block mẫu, sau đó chọn các block khác, cái nào có tag giống tag mẫu sẽ link.

 
;;;===========chen field 1 dynamic block vao dynamic block khac ======================
 
(defun C:FFL (/ v1 obj1 field ss ent i obj)
  (if (setq v1 (car (nentsel "\nChon Attribute  nguon :")))
      (setq obj1 (vlax-Ename->Vla-Object v1)
   field (list (vla-get-TagString obj1) obj1)
      )
  )
  (princ "\nChon Dynamic Block can Link :")
  (if (setq ss (ssget (list (cons 0 "INSERT") (cons 66 1))))
    (progn
      (setq i -1)
      (while (setq ent (ssname ss (setq i (1+ i))))
(setq obj (vlax-Ename->Vla-Object ent))
(foreach v (vlax-invoke Obj 'GetAttributes)
   (if (member (vla-get-TagString v) field)
     (vla-put-TextString v (strcat "%<\\AcObjProp Object(%<\\_ObjId "
 (itoa (vla-get-Objectid obj1)) ">%).TextString>%")))))
  ))
  (vl-cmdf "regen")
  (princ)
)


  • 1

#84 proconeng86

proconeng86

    biết lệnh break

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

Đã gửi 12 May 2014 - 10:12 PM

Vậy thì dùng cái này, bạn nhấp vào Att nào đó của block mẫu, sau đó chọn các block khác, cái nào có tag giống tag mẫu sẽ link.

 
;;;===========chen field 1 dynamic block vao dynamic block khac ======================
 
(defun C:FFL (/ v1 obj1 field ss ent i obj)
  (if (setq v1 (car (nentsel "\nChon Attribute  nguon :")))
      (setq obj1 (vlax-Ename->Vla-Object v1)
   field (list (vla-get-TagString obj1) obj1)
      )
  )
  (princ "\nChon Dynamic Block can Link :")
  (if (setq ss (ssget (list (cons 0 "INSERT") (cons 66 1))))
    (progn
      (setq i -1)
      (while (setq ent (ssname ss (setq i (1+ i))))
(setq obj (vlax-Ename->Vla-Object ent))
(foreach v (vlax-invoke Obj 'GetAttributes)
   (if (member (vla-get-TagString v) field)
     (vla-put-TextString v (strcat "%<\\AcObjProp Object(%<\\_ObjId "
 (itoa (vla-get-Objectid obj1)) ">%).TextString>%")))))
  ))
  (vl-cmdf "regen")
  (princ)
)

Cám ơn bạn nhiều lắm, lisp này dùng với dynamic block thế là ổn rồi nhưng bạn sửa lại lisp chèn toàn bộ attribute nhé, vì lisp đó chưa dùng được cho 2 dynamic block khác nhau.

Ngoài ra bạn chế thêm cho mình để nó áp dụng được với cả text nhé, text chèn vào text, chèn luôn content của text thôi


  • 0

#85 proconeng86

proconeng86

    biết lệnh break

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

Đã gửi 13 May 2014 - 09:43 AM

Vậy thì dùng cái này, bạn nhấp vào Att nào đó của block mẫu, sau đó chọn các block khác, cái nào có tag giống tag mẫu sẽ link.

 
;;;===========chen field 1 dynamic block vao dynamic block khac ======================
 
(defun C:FFL (/ v1 obj1 field ss ent i obj)
  (if (setq v1 (car (nentsel "\nChon Attribute  nguon :")))
      (setq obj1 (vlax-Ename->Vla-Object v1)
   field (list (vla-get-TagString obj1) obj1)
      )
  )
  (princ "\nChon Dynamic Block can Link :")
  (if (setq ss (ssget (list (cons 0 "INSERT") (cons 66 1))))
    (progn
      (setq i -1)
      (while (setq ent (ssname ss (setq i (1+ i))))
(setq obj (vlax-Ename->Vla-Object ent))
(foreach v (vlax-invoke Obj 'GetAttributes)
   (if (member (vla-get-TagString v) field)
     (vla-put-TextString v (strcat "%<\\AcObjProp Object(%<\\_ObjId "
 (itoa (vla-get-Objectid obj1)) ">%).TextString>%")))))
  ))
  (vl-cmdf "regen")
  (princ)
)

 

Nếu mà att có tag khác thì không dùng được, bạn có thể sửa thành mình chọn att nào thì sẽ chèn được luôn vào att đó được không


  • 0

#86 Tot77

Tot77

    biết lệnh adcenter

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

Đã gửi 13 May 2014 - 06:28 PM

Lisp dưới đây có 2 lệnh:

1. Lệnh LK1 : chọn 1 att hoặc 1 text làm nguồn, nhấp vào att hoặc text khác để chèn link. Lệnh này không phụ thuộc tag của att.

2. Lệnh LK2 : chọn nhiều att của block nguồn, xong enter, rồi quét chọn các block khác, nếu att nào của block đó có tag giống tag của att nguồn thì sẽ link. Lệnh này không phụ thuộc tên block, chỉ phụ thuộc tên tag.

http://www.mediafire...HEN_FIELD_1.lsp


  • 1

#87 proconeng86

proconeng86

    biết lệnh break

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

Đã gửi 13 May 2014 - 07:11 PM

Lisp dưới đây có 2 lệnh:

1. Lệnh LK1 : chọn 1 att hoặc 1 text làm nguồn, nhấp vào att hoặc text khác để chèn link. Lệnh này không phụ thuộc tag của att.

2. Lệnh LK2 : chọn nhiều att của block nguồn, xong enter, rồi quét chọn các block khác, nếu att nào của block đó có tag giống tag của att nguồn thì sẽ link. Lệnh này không phụ thuộc tên block, chỉ phụ thuộc tên tag.

http://www.mediafire...HEN_FIELD_1.lsp

 

OK, cám ơn Tot77 nhiều nhé, lisp này là ngon rồi  :)


  • 0

#88 proconeng86

proconeng86

    biết lệnh break

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

Đã gửi 20 July 2015 - 11:22 AM

Thử 1 lần nữa xem sao.

http://www.mediafire...10/attcol_2.lsp

 

 

Trước mình dùng cad 2010 thì ok nhưng giờ mình sử dụng cad 2014 ko hiểu sao lisp đó lại có 1 trên  lệnh bị lỗi, ko hiểu vì sao nữa, là lệnh MAT4, các bạn chỉnh lại cho mình cái nhé

ngoài ra mình nhờ các bạn giúp mình bổ sung thêm 1 lệnh cũng gần gần như vậy

lisp đó như sau:

   - chọn att có chứa đường kính có mầu gốc (mình chỉ sử dụng kí hiệu %%C để kí hiệu đường kính thép)

   - sau đó chọn block att cần đổi mầu và chỉ đổi màu những att nào chứa đường kính giống như đường kính đã chọn trong block trước. ví dụ chọn att ghi là 5fi10 màu 15 (fi là kí hiệu %%C nhé) làm gốc, sau đó chọn các block att khác và chỉ đổi màu att nào chứa kí hiệu fi10 (chỉ cần có fi10 là đổi màu luôn chứ ko cần chính xác nội dung như lẹnh MAT 1 nhé)

Mình cám ơn nhiều

 

http://www.mediafire...en cad 2014.png

http://www.mediafire... block thep.dwg


  • 0

#89 proconeng86

proconeng86

    biết lệnh break

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

Đã gửi 22 July 2015 - 11:52 PM

 

Trước mình dùng cad 2010 thì ok nhưng giờ mình sử dụng cad 2014 ko hiểu sao lisp đó lại có 1 trên  lệnh bị lỗi, ko hiểu vì sao nữa, là lệnh MAT4, các bạn chỉnh lại cho mình cái nhé

ngoài ra mình nhờ các bạn giúp mình bổ sung thêm 1 lệnh cũng gần gần như vậy

lisp đó như sau:

   - chọn att có chứa đường kính có mầu gốc (mình chỉ sử dụng kí hiệu %%C để kí hiệu đường kính thép)

   - sau đó chọn block att cần đổi mầu và chỉ đổi màu những att nào chứa đường kính giống như đường kính đã chọn trong block trước. ví dụ chọn att ghi là 5fi10 màu 15 (fi là kí hiệu %%C nhé) làm gốc, sau đó chọn các block att khác và chỉ đổi màu att nào chứa kí hiệu fi10 (chỉ cần có fi10 là đổi màu luôn chứ ko cần chính xác nội dung như lẹnh MAT 1 nhé)

Mình cám ơn nhiều

 

http://www.mediafire...en cad 2014.png

http://www.mediafire... block thep.dwg

 

 

Các cao thủ  Tue_NV, Tot77, ketxu, Doan Van Ha, Nguyen Hoanh đâu hết rồi, giúp mình cái

Mình cám ơn nhiều


  • 0

#90 proconeng86

proconeng86

    biết lệnh break

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

Đã gửi 28 July 2015 - 08:24 AM

 

Trước mình dùng cad 2010 thì ok nhưng giờ mình sử dụng cad 2014 ko hiểu sao lisp đó lại có 1 trên  lệnh bị lỗi, ko hiểu vì sao nữa, là lệnh MAT4, các bạn chỉnh lại cho mình cái nhé

ngoài ra mình nhờ các bạn giúp mình bổ sung thêm 1 lệnh cũng gần gần như vậy

lisp đó như sau:

   - chọn att có chứa đường kính có mầu gốc (mình chỉ sử dụng kí hiệu %%C để kí hiệu đường kính thép)

   - sau đó chọn block att cần đổi mầu và chỉ đổi màu những att nào chứa đường kính giống như đường kính đã chọn trong block trước. ví dụ chọn att ghi là 5fi10 màu 15 (fi là kí hiệu %%C nhé) làm gốc, sau đó chọn các block att khác và chỉ đổi màu att nào chứa kí hiệu fi10 (chỉ cần có fi10 là đổi màu luôn chứ ko cần chính xác nội dung như lẹnh MAT 1 nhé)

Mình cám ơn nhiều

 

http://www.mediafire...en cad 2014.png

http://www.mediafire... block thep.dwg

 

 

Hic, không bạn nào giúp mình được ah  :(


  • -2

#91 proconeng86

proconeng86

    biết lệnh break

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

Đã gửi 01 August 2015 - 11:55 AM

 

Trước mình dùng cad 2010 thì ok nhưng giờ mình sử dụng cad 2014 ko hiểu sao lisp đó lại có 1 trên  lệnh bị lỗi, ko hiểu vì sao nữa, là lệnh MAT4, các bạn chỉnh lại cho mình cái nhé

ngoài ra mình nhờ các bạn giúp mình bổ sung thêm 1 lệnh cũng gần gần như vậy

lisp đó như sau:

   - chọn att có chứa đường kính có mầu gốc (mình chỉ sử dụng kí hiệu %%C để kí hiệu đường kính thép)

   - sau đó chọn block att cần đổi mầu và chỉ đổi màu những att nào chứa đường kính giống như đường kính đã chọn trong block trước. ví dụ chọn att ghi là 5fi10 màu 15 (fi là kí hiệu %%C nhé) làm gốc, sau đó chọn các block att khác và chỉ đổi màu att nào chứa kí hiệu fi10 (chỉ cần có fi10 là đổi màu luôn chứ ko cần chính xác nội dung như lẹnh MAT 1 nhé)

Mình cám ơn nhiều

 

http://www.mediafire...en cad 2014.png

http://www.mediafire... block thep.dwg

 

 

Có bạn nào giúp mình chút với, mình nghĩ cái này đâu khó nhỉ  :(


  • -2

#92 anti lazy

anti lazy

    biết lệnh erase

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

Đã gửi 01 August 2015 - 12:55 PM

Đâu có khó, nhất là với 1 thành viên kỳ cựu như bạn. Trong 5 cao thủ trên thì bạn là member trước 3 cao thủ: Tot77, ketxu, Doan Van Ha.

Sao bạn không tự hỏi tại sao họ trở thành cao thủ còn bạn thì là thêm 1 ngày nữa là thành viên 7 năm 4 tháng tuổi cadviet mà vẫn còn là cao thủ chuyên "Xin, xin nữa, xin mãi"


  • -1

#93 proconeng86

proconeng86

    biết lệnh break

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

Đã gửi 03 August 2015 - 05:27 PM

Đâu có khó, nhất là với 1 thành viên kỳ cựu như bạn. Trong 5 cao thủ trên thì bạn là member trước 3 cao thủ: Tot77, ketxu, Doan Van Ha.

Sao bạn không tự hỏi tại sao họ trở thành cao thủ còn bạn thì là thêm 1 ngày nữa là thành viên 7 năm 4 tháng tuổi cadviet mà vẫn còn là cao thủ chuyên "Xin, xin nữa, xin mãi"

 

Mình là kĩ sư kết cấu, mình không được học qua về CAD nâng cao như lisp đâu nên hoàn toàn mù tịt về lisp. các bạn được học qua rồi, biết nhiều thì chia sẻ cho mọi người thì rất tốt mà. ngoài ra nghĩ ra được yêu cầu lisp cũng là một điều tốt, không có yêu cầu thì làm sao mà viết được. yêu cầu của mình thì nhiều người cũng giống như vậy, các bạn viết cho mình nhưng thật ra là được cho nhiều người, diễn đàn ta ngày một phát triển, đó không phải là điều tốt sao


  • 0

#94 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 03 August 2015 - 05:30 PM

K lạm bàn n Ketxu học Ngoại thương ^^ Lisp cũng không khó lắm đâu, bạn mà có hứng thú thì sẽ chủ động hơn nhiều. Trừ khi chúng ta quay lại bài toán Thời gian, mà, ai trên diễn đàn cũng phải giả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


#95 proconeng86

proconeng86

    biết lệnh break

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

Đã gửi 03 August 2015 - 08:41 PM

K lạm bàn n Ketxu học Ngoại thương ^^ Lisp cũng không khó lắm đâu, bạn mà có hứng thú thì sẽ chủ động hơn nhiều. Trừ khi chúng ta quay lại bài toán Thời gian, mà, ai trên diễn đàn cũng phải giải

 

Trước mình cũng thích học chứ, cũng mò vào topic dạy lisp rồi đó nhưng mà nhiều quá, thời gian lại không có. hiện tại mình còn đang phải học revit, adap, ko có thời gian, mà học lisp chắc mất cả năm mất. do đó mới nhờ các bạn. mà có phải nghĩ yêu cầu là dễ đâu, phải làm, va vấp mới thấy bất cập, mới thấy mất thời gian thì mới nghĩ dc yêu cầu chứ. mình nhờ nhưng chắc chắn nhiều người cũng dùng được, mọi người chưa nghĩ ra thôi, cứ theo lối mòn thôi.

mong các bạn giúp đỡ. mình cám ơn


  • -2

#96 pphung183

pphung183

    biết dimstyle

  • Members
  • PipPipPipPipPip
  • 384 Bài viết
Điểm đánh giá: 425 (tốt)

Đã gửi 03 August 2015 - 09:19 PM

Trước mình cũng thích học chứ, cũng mò vào topic dạy lisp rồi đó nhưng mà nhiều quá, thời gian lại không có. hiện tại mình còn đang phải học revit, adap, ko có thời gian, mà học lisp chắc mất cả năm mất. do đó mới nhờ các bạn. mà có phải nghĩ yêu cầu là dễ đâu, phải làm, va vấp mới thấy bất cập, mới thấy mất thời gian thì mới nghĩ dc yêu cầu chứ. mình nhờ nhưng chắc chắn nhiều người cũng dùng được, mọi người chưa nghĩ ra thôi, cứ theo lối mòn thôi.

mong các bạn giúp đỡ. mình cám ơn

Tôi không có Cad 2014 để Test -_- , nhưng xem qua Code bác Tot77 là không có lỗi gì. Chỉ trừ trường hợp bản vẽ của bạn không có attchuan = "KT" thì có khả năng lỗi xảy ra :). Chắc bạn phải kiên nhẫn chờ bác Tot77 tái xuất giang hồ  :D 


  • 0

#97 HoaVien

HoaVien

    biết vẽ arc

  • Members
  • PipPip
  • 44 Bài viết
Điểm đánh giá: 12 (tàm tạm)

Đã gửi 04 August 2015 - 01:15 PM

Trước mình cũng thích học chứ, cũng mò vào topic dạy lisp rồi đó nhưng mà nhiều quá, thời gian lại không có. hiện tại mình còn đang phải học revit, adap, ko có thời gian, mà học lisp chắc mất cả năm mất. do đó mới nhờ các bạn. mà có phải nghĩ yêu cầu là dễ đâu, phải làm, va vấp mới thấy bất cập, mới thấy mất thời gian thì mới nghĩ dc yêu cầu chứ. mình nhờ nhưng chắc chắn nhiều người cũng dùng được, mọi người chưa nghĩ ra thôi, cứ theo lối mòn thôi.

mong các bạn giúp đỡ. mình cám ơn

mem này nói cũng có lý đấy chứ,

một yêu cầu xuất phát từ việc phải qua biết bao nhiêu là va vấp. bầm dập, thời gian .....

suy nghĩ nát ... "cái trái nho" mới ra

cái yêu cầu giúp cho anh em ... cách thoát khỏi  ... lối mòn thì đáng trân trọng lắm chứ!

 

PS :

1- proconeng gửi ý tưởng này cho AutoDesk càng sớm càng tốt, họ nhận được chắc là mùng lắm, không khéo lại thưởng cho 1 bộ AutoCad mới ra lò giá trị hàng nghìn mĩ kim chứ lị. (nhắc lại : lộn tiệm rùi, gửi qua CadMỹ nhé)

2- Để tránh kiện tụng sau này, tôi yêu cầu Anh em viết Lisp CadViệt cũng cần quan tâm trả phí bản quyền cho "ý tưởng của người yêu cầu" nhé. (nhớ trả phí ý tưởng này cho tôi luôn)


  • -1