Jump to content
InfoFile
Tác giả: Tue_NV
Bài viết gốc: 99448
Tên lệnh: ctla
Viết lisp theo yêu cầu [phần 2]

Cảm ơn anh gia_bach.
Đây là code mà Tue_NV viết thêm để kiểm tra thêm điều kiện tên Layer hợp lệ khi tạo mới Layer

Filename: 99448_ctla.lsp
Tác giả: Thaistreetz
Bài viết gốc: 104784
Tên lệnh: c m r sc
Viết lisp theo yêu cầu [phần 2]


@hoa35ktxd: thay đổi thiết lập của máy người khác là điều không nên làm bạn ạ.

Filename: 104784_c_m_r_sc.lsp
Tác giả: nguyentuyen6
Bài viết gốc: 105177
Tên lệnh: cot
Viết lisp theo yêu cầu [phần 2]
Các bạn sửa giúp mình cái líp này nhé. Mình dựa theo cái lisp cua bác ssg




toàn bị báo lỗi

Diem chuan: ; error: bad argument type: 2D/3D point: nil

Filename: 105177_cot.lsp
Tác giả: Tue_NV
Bài viết gốc: 105320
Tên lệnh: shat
Viết lisp theo yêu cầu [phần 2]
buy neurontin gabapentin po caps COOPERSTOWN, N.Y. -- The committee that has been working on making recommendations for expanded replay briefed Major League Baseball"s executive council late Wednesday afternoon and will report to the joint session Thursday morning during the quarterly Owners Meetings.
order alesse online canada...
>>
buy neurontin gabapentin po caps COOPERSTOWN, N.Y. -- The committee that has been working on making recommendations for expanded replay briefed Major League Baseball"s executive council late Wednesday afternoon and will report to the joint session Thursday morning during the quarterly Owners Meetings.
order alesse online canada ijsberen I think I might have screamed out loud, I was so happy to be outside, though nobody could have heard me in all that noise: I might as well have been trying to scream over jet engines on the tarmac at LaGuardia during a thunderstorm. It sounded like every fire truck, every cop car, every ambulance and emergency vehicle in five boroughs plus Jersey was howling and caterwauling out on Fifth Avenue, a deliriously happy noise: like New Year’s and Christmas and Fourth of July fireworks rolled into one.
price of zoloft tablets Giovanni’s cover is to be a writer, and though he has no skill or knowledge of writing, the ex-mobster stumbles into amateurishly writing his memoirs. Besson attempts to show this vicious criminal finding his conscience through writing, which should help correct his course, but the script never gets to that. Giovanni has no real definable arc; he’s still the same brute at the end as he was in the start.

<<

Filename: 105320_shat.lsp
Tác giả: nguyentuyen6
Bài viết gốc: 106079
Tên lệnh: chsize
Viết lisp theo yêu cầu [phần 2]
Hi`. em đã xoá hết các dòng co liên quan đến Dim thì được cái này. (chỉ dùng cho text)





Tuy nhiên khi chọn block nguồn thì phải chọn 2 lần, chọn 1 lần không được. bác tbinh sửa giúp em với,he.
àh còn về phần dim thì em đã ko nghĩ ký để bác phải suy nghĩ nhiều. hjx. Ý em định là khi scale khung tên mỗi khung tên sẽ có 1 block nguồn. Tuy nhiên e đã quên mà không...
>>
Hi`. em đã xoá hết các dòng co liên quan đến Dim thì được cái này. (chỉ dùng cho text)





Tuy nhiên khi chọn block nguồn thì phải chọn 2 lần, chọn 1 lần không được. bác tbinh sửa giúp em với,he.
àh còn về phần dim thì em đã ko nghĩ ký để bác phải suy nghĩ nhiều. hjx. Ý em định là khi scale khung tên mỗi khung tên sẽ có 1 block nguồn. Tuy nhiên e đã quên mà không nghĩ ra rằng: dùng lệnh scale đối với dim thì tet hight không thay đổi. Vì cái nguồn của em ở đây nó là block nên khi scale nó lên thì nó cũng chỉ là hiển thị thôi, chứ nếu vào blockeditor thì thấy ngay được là text hight không đổi. Có lẽ đây chính là vấn đề..he
<<

Filename: 106079_chsize.lsp
Tác giả: nguyentuyen6
Bài viết gốc: 107117
Tên lệnh: ch
Viết lisp theo yêu cầu [phần 2]
@ bác Tbinh:
HỀ hề hề.
E rất cảm ơn bác đã giúp đỡ và chỉ dẫn rất tận tình cho em các vấn đề e mắc phải.
Tại dốt quá nhìn cái líp của bác cứ tưởng là 2 trong 1. Không biết là bác tách 2 líp ra khác nhau nên cứ đòi đánh 1 lệnh thì "ăn luôn". Bác thông cảm cho e nhé
Còn 2 cái líp này để em sẽ "ngâm cứu" cho nó vào chung 1 lệnh cho phù hợp hơn với công việc của em....
>>
@ bác Tbinh:
HỀ hề hề.
E rất cảm ơn bác đã giúp đỡ và chỉ dẫn rất tận tình cho em các vấn đề e mắc phải.
Tại dốt quá nhìn cái líp của bác cứ tưởng là 2 trong 1. Không biết là bác tách 2 líp ra khác nhau nên cứ đòi đánh 1 lệnh thì "ăn luôn". Bác thông cảm cho e nhé
Còn 2 cái líp này để em sẽ "ngâm cứu" cho nó vào chung 1 lệnh cho phù hợp hơn với công việc của em. CẢm ơn bác rất nhiều....

Đây là 2 cái líp đó:



P/S: hàm defun UPWB dùng để lặp lại các lệnh bên trên nếu trong đối tượng Đích có block, Tuy nhiên khi dùng 2 líp này thì nếu đích có blok thì nó lại không chỉnh cho mình mà vẫn giữ nguyên bác à. Bác xem giúp cho e với nhé. Thankss
<<

Filename: 107117_ch.lsp
Tác giả: nguyentuyen6
Bài viết gốc: 107117
Tên lệnh: cs
Viết lisp theo yêu cầu [phần 2]

@ bác Tbinh:
HỀ hề hề.
E rất cảm ơn bác đã giúp đỡ và chỉ dẫn rất tận tình cho em các vấn đề e mắc phải.
Tại dốt quá nhìn cái líp của bác cứ tưởng là 2 trong 1. Không biết là bác tách 2 líp ra khác nhau nên cứ đòi đánh 1 lệnh thì "ăn luôn". Bác thông cảm cho e nhé
Còn 2 cái líp này để em sẽ "ngâm cứu" cho nó vào chung 1 lệnh cho phù hợp hơn với công việc của em....
>>
@ bác Tbinh:
HỀ hề hề.
E rất cảm ơn bác đã giúp đỡ và chỉ dẫn rất tận tình cho em các vấn đề e mắc phải.
Tại dốt quá nhìn cái líp của bác cứ tưởng là 2 trong 1. Không biết là bác tách 2 líp ra khác nhau nên cứ đòi đánh 1 lệnh thì "ăn luôn". Bác thông cảm cho e nhé
Còn 2 cái líp này để em sẽ "ngâm cứu" cho nó vào chung 1 lệnh cho phù hợp hơn với công việc của em. CẢm ơn bác rất nhiều....

Đây là 2 cái líp đó:



P/S: hàm defun UPWB dùng để lặp lại các lệnh bên trên nếu trong đối tượng Đích có block, Tuy nhiên khi dùng 2 líp này thì nếu đích có blok thì nó lại không chỉnh cho mình mà vẫn giữ nguyên bác à. Bác xem giúp cho e với nhé. Thankss
<<

Filename: 107117_cs.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 107362
Tên lệnh: ch
Viết lisp theo yêu cầu [phần 2]



Bạn hãy dùng cái này xem nhé. Nếu được thì hãy xem lại cách học của bạn , còn nếu không được thì hãy chờ các cao thủ khác chỉ dạy vì mình chỉ biết đến vậy bạn ạ.



Chúc bạn vui.

Filename: 107362_ch.lsp
Tác giả: Tue_NV
Bài viết gốc: 107566
Tên lệnh: qsd
Viết lisp theo yêu cầu [phần 2]

Bạn thử cái này nhé:

Filename: 107566_qsd.lsp
Tác giả: phamngoctukts
Bài viết gốc: 107661
Tên lệnh: tam
Viết lisp theo yêu cầu [phần 2]

Chào bạn Bình
có phải nó sử dụng như thế này không bạn.
Nó cho ra toạ độ của 1 điểm mà mình không biết điểm đó là điểm nào.

Filename: 107661_tam.lsp
Tác giả: Tot77
Bài viết gốc: 288942
Tên lệnh: test
Nhờ viết lisp copy text

Có phải như vầy không?

 

(defun C:test(/ tn)
  (setq tn (cdr (assoc 1 (entget (car (entsel "\nChon text nguon:"))))))
  (princ "\nChon text dich de copy...")
  (mapcar '(lambda(x) (entmod (subst (cons 1 tn) (assoc 1 (entget x)) (entget x)))) (acet-ss-to-list (ssget '((0 . "TEXT")))))  
)


Filename: 288942_test.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 125572
Tên lệnh: nsmp
Hỏi: Cách nội suy tâm đường tròn 3D

Cám ơn bác Tue_NV và bác DuongTrung Huy đã chỉ dẫn.
Dựa vào đó mình đã chỉnh lại cái lisp phía trên để vòng tròn vẽ được xuất hiện đúng vị trí của nó bằng hàm command. Cò sử dụng hàm entmake thì mình vẫn chưa làm được, rất mong mọi người góp ý.

Filename: 125572_nsmp.lsp
Tác giả: aliosa
Bài viết gốc: 281246
Tên lệnh: 4p
[Yêu cầu] Group các đối tượng bằng lisp

Xin nhờ các bạn trên diễn đàn group các đối tượng trong lisp.
Mình dùng lisp để tạo ra các đối tượng như line, polyline, text... Sau đó mình muốn các đối tượng này được group lại thành một nhóm cho dễ quản lý. Nhưng mình chưa biết cách group các đối được mới tạo ra này bằng lisp, Mình nhờ các bạn giúp mình với.
Ví dụ lisp của mình. 

(Defun c:4p (/ point_1...
>>

Xin nhờ các bạn trên diễn đàn group các đối tượng trong lisp.
Mình dùng lisp để tạo ra các đối tượng như line, polyline, text... Sau đó mình muốn các đối tượng này được group lại thành một nhóm cho dễ quản lý. Nhưng mình chưa biết cách group các đối được mới tạo ra này bằng lisp, Mình nhờ các bạn giúp mình với.
Ví dụ lisp của mình. 

(Defun c:4p (/ point_1 point_2 point_3 point_4)
 
  (setq point_1 (getpoint "\nCho diem thu nhat :"))
  (setq point_2 (getpoint "\nCho diem thu 2 :"))
  (setq point_3 (getpoint "\nCho diem thu 2 :"))
  (setq point_4 (getpoint "\nCho diem thu 2 :"))
 
  (command "line" point_1 point_2 "")
  (command "line" point_2 point_3 "")
  (command "line" point_3 point_4 "")
  (command "line" point_1 point_4 "")
  (princ)
 

<<

Filename: 281246_4p.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 289073
Tên lệnh: ha
Nhờ viết dùm lisp select các text nhỏ hơn hoặc lớn hơn 1 giá trị cho trước!

Đây bạn!

;Chuc nang: Chon tap hop text bao gom cac so lon/nho hon 1 so cho truoc.
(defun C:HA( / flag num so z n ent)
 (initget "L N")
 (setq flag (getkword "\nChon cac Text <L>: "))
 (if (not flag) (setq flag "L"))
 (if (= flag "L")
  (setq num (getreal "\nGia tri Min cho truoc: "))
  (setq num (getreal "\nGia tri Max cho truoc: ")))
 (princ "\nChon...
>>

Đây bạn!

;Chuc nang: Chon tap hop text bao gom cac so lon/nho hon 1 so cho truoc.
(defun C:HA( / flag num so z n ent)
 (initget "L N")
 (setq flag (getkword "\nChon cac Text <L>: "))
 (if (not flag) (setq flag "L"))
 (if (= flag "L")
  (setq num (getreal "\nGia tri Min cho truoc: "))
  (setq num (getreal "\nGia tri Max cho truoc: ")))
 (princ "\nChon Text...")
 (setq so (ssget '((0 . "*TEXT") (1 . "~**"))))
 (setq z 0 so1 (ssadd))
 (repeat (sslength so)
  (if (setq num1 (distof (cdr (assoc 1 (entget (setq ent (ssname so z)))))))
   (cond
    ((and (= flag "L") (> num1 num)) (setq so1 (ssadd ent so1)))
    ((and (= flag "N") (< num1 num)) (setq so1 (ssadd ent so1)))))
  (setq z (1+ z))) 
 (sssetfirst nil so1))
 


<<

Filename: 289073_ha.lsp
Tác giả: Tot77
Bài viết gốc: 289046
Tên lệnh: test
Nhờ viết lisp copy text

Vậy thì là cái này, quơ giống như crossing, enter để dứt lệnh. Hàm rc tôi lấy trên mạng.

 

(defun rc (/ p1 p2 p3 p4 a g om)
(setq om (getvar "OSMODE"))(setvar "OSMODE" 0)
(setq p1 (getpoint "\nSelect objects by crossing..."))
 
(princ "\nOther corner...")
(while (not a)
(setq g (grread T) p3 (cadr g))
(cond ((= (car g) 3)
(setq a...
>>

Vậy thì là cái này, quơ giống như crossing, enter để dứt lệnh. Hàm rc tôi lấy trên mạng.

 

(defun rc (/ p1 p2 p3 p4 a g om)
(setq om (getvar "OSMODE"))(setvar "OSMODE" 0)
(setq p1 (getpoint "\nSelect objects by crossing..."))
 
(princ "\nOther corner...")
(while (not a)
(setq g (grread T) p3 (cadr g))
(cond ((= (car g) 3)
(setq a T)
(redraw)
)
((= (car g) 5)
(setq p2 (list (car p1)(cadr p3)))
(setq p4 (list (car p3)(cadr p1)))
(redraw)(grvecs (list -256 p1 p2 p2 p3 p3 p4 p4 p1))
)
)
)
(setvar "OSMODE" om)
(acet-ss-to-list (ssget "CP" (list p1 p2 p3 p4) '((0 . "TEXT"))))
)
 
(defun C:test(/ tn)
  (setq tn (cdr (assoc 1 (entget (car (entsel "\nChon text nguon:"))))))
  (princ "\nChon text dich de copy...")
  (vl-catch-all-error-p (vl-catch-all-apply '(lambda() 
    (while (setq tm (rc)) (mapcar '(lambda(x) (entmod (subst (cons 1 tn) (assoc 1 (entget x)) (entget x))))  tm)) ))) 
)


<<

Filename: 289046_test.lsp
Tác giả: friendship293a
Bài viết gốc: 289234
Tên lệnh: ct2
Nhờ mọi người sửa dùm lisp này với ạ

Em cần cho thêm tính năng sau khi đưa về text width =0.9 thì tự chuyển thành font vnarial. cảm ơn các anh đã quan tâm.


;;*********Dua text ve do day 0.9 ****************

(defun c:ct2(/ ss tw)
(defun Tue-ent-mod (dxf ename newValue / entget-ename)
    (setq entget-ename (entget ename))
  (if (and (or (= dxf 62) (= dxf 6)) (null (assoc dxf entget-ename)))
          (setq entget-ename (append entget-ename (list (cons dxf...
>>
Em cần cho thêm tính năng sau khi đưa về text width =0.9 thì tự chuyển thành font vnarial. cảm ơn các anh đã quan tâm.


;;*********Dua text ve do day 0.9 ****************

(defun c:ct2(/ ss tw)
(defun Tue-ent-mod (dxf ename newValue / entget-ename)
    (setq entget-ename (entget ename))
  (if (and (or (= dxf 62) (= dxf 6)) (null (assoc dxf entget-ename)))
          (setq entget-ename (append entget-ename (list (cons dxf newValue))))
  )
  (setq entget-ename (subst (cons dxf newValue) (assoc dxf entget-ename) entget-ename))
  (entmod entget-ename)
  ename
)
(defun Tue-ss-list (L-ss-vlaobj / n L Lst ssg vlaobj)
 
  (mapcar 'set '(ssg vlaobj) L-ss-vlaobj)
  (setq L (sslength ssg))
  (Repeat L
        (setq ename (ssname ssg (setq L (1- L))))
          (setq Lst (cons (if vlaobj (vlax-ename->vla-object ename) ename) Lst))
  )
)
(if (setq ss (ssget '((0 . "TEXT"))))
  (progn
        (foreach x (Tue-ss-list (list ss))
      (Tue-ent-mod 41 x 0.9)
    )
  )
)
)

 


<<

Filename: 289234_ct2.lsp
Tác giả: 18011985
Bài viết gốc: 261611
Tên lệnh: tt
[Nhờ giúp đỡ] Lisp tìm giao điểm

Sau khi nhận được sự giúp đỡ từ các bạn trên diễn đàn mình đã chỉnh sửa và hoàn thành lisp tìm giao điểm.

Nhưng trong quá trình test lisp mình gặp phải rắc rối sau.

Cùng 1 tập hợp đối tượng nhưng ở 2 bản vẽ khác nhau cho 2 kết quả khác nhau.

Vậy chứng tỏ lisp không cho kết quả sai mà định dạng của 2 file bản vẽ có vấn đề. Các bạn có thể chỉ ra hộ mình...

>>

Sau khi nhận được sự giúp đỡ từ các bạn trên diễn đàn mình đã chỉnh sửa và hoàn thành lisp tìm giao điểm.

Nhưng trong quá trình test lisp mình gặp phải rắc rối sau.

Cùng 1 tập hợp đối tượng nhưng ở 2 bản vẽ khác nhau cho 2 kết quả khác nhau.

Vậy chứng tỏ lisp không cho kết quả sai mà định dạng của 2 file bản vẽ có vấn đề. Các bạn có thể chỉ ra hộ mình không?

Mình không dành về biến định dạng của file lắm.

Bản vẽ cho kết quả đúng:http://www.cadviet.com/upfiles/3/10633_test1_1.dwg

Bản vẽ cho kết quả sai:http://www.cadviet.com/upfiles/3/10633_dongmuc_1.dwg

(defun c:tt (/ E1 E2 ELE ELE1 PLST PST SSL)

  ;;;;----------------------------Relist------------------------------
  (defun relist (lst / lst1)
;;;writen by Tue_NV
  (foreach x lst
   (if (not (member x lst1)) (setq lst1 (append lst1 (list x))))
   (Progn
   (foreach y lst1
   (if (equal y x 1.0e-8)
   (setq lst1 (vl-remove y lst1))
   );end if
);end Foreach
   (setq lst1 (append lst1 (list x)))
    );end progn
);end Foreach
    )
  ;;;;;-------------------------Chay chuong trinh----------------------
(princ "\n Chon duong dong muc: ")
(setq ssl (acet-ss-to-list (ssget))
          plst (list)
          e2 (car (entsel "\n Chon duong tim")))
  ;;;;--------------------------Tim giao diem khong gian------------------------
(foreach en ssl
       (cond
             ((= (cdr (assoc 0 (entget en))) "LWPOLYLINE") (setq ele (cdr (assoc 38 (entget en)))))
             ((= (cdr (assoc 0 (entget en))) "POLYLINE")(setq ele (last (cdr (assoc 10 (entget en))))))      
             ((= (cdr (assoc 0 (entget en))) "LINE") (setq ele (last (cdr (assoc 10 (entget en))))))
      ((= (cdr (assoc 0 (entget en))) "TEXT") (progn (setq ele 0)(setq ele1 (cdr (assoc 10 (entget en))))))
             (T (setq ele nil))
       )
      (if ele
(progn
   (if (= ele 0)
     (progn
       (setq plst (append plst (list ele1)))
       )
     (progn
       (command "copy" e2 "" (list 0 0 0) (list 0 0 ele))
       (setq e1 (entlast)
      plst (append plst (acet-geom-intersectwith e1 en 0)) )
       (command "erase" e1 "")
       )
     )
   )
)
  )
  ;;;;;;;-----------------------------Sap xep va xoa diem trung--------------------------
  (setq plst (relist plst))
  (if(= (cdr(assoc 0 (entget e2))) "LINE")
    (progn
      (setq pst (vlax-curve-getStartPoint e2))
      (setq plst (vl-sort plst '(lambda (x y) (< (distance pst (list (car x) (cadr x) 0)) (distance pst (list (car y) (cadr y) 0))))))
      )
    (progn
      (setq plst (vl-sort plst '(lambda (x y) (< (vlax-curve-getparamatpoint e2 (list (car x) (cadr x) 0)) (vlax-curve-getparamatpoint e2 (list (car y) (cadr y) 0))))))
      )
    )
  (princ plst)
  (princ)
  )

 


<<

Filename: 261611_tt.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 289361
Tên lệnh: dmat
lisp chuyển màu các thuộc tính dynamic block

Mình upload file lên mà không được, nên up lại file dynamic block cần đổi mầu

Mong các bạn giúp đỡ

 

 http://www.mediafire.com/download/g28t84ag3dbczhw/dynamic_block.dwg

Hề hề hề,

Thử dùng cái này coi...

>>

Mình upload file lên mà không được, nên up lại file dynamic block cần đổi mầu

Mong các bạn giúp đỡ

 

 http://www.mediafire.com/download/g28t84ag3dbczhw/dynamic_block.dwg

Hề hề hề,

Thử dùng cái này coi đã ưng ý chưa hè???

(defun c:dmat (/ ss tag col i a b )
(alert "\n Chon cac block chua thuoc tinh can doi mau")
(setq ss (ssget (list (cons 0 "insert") (cons 66 1))))
(setq tag (getstring "\n Nhap tag name cua thuoc tinh can doi mau : ")
          col (getint "\n Nhap so hieu mau muon doi thanh: ") 
          i 0)
(while (setq a (ssname ss i))
     (setq b (entnext a))
(while (and b (/= (cdr (assoc 0 (entget b))) "SEQEND"))
             (if (and (= (cdr (assoc 0 (entget b))) "ATTRIB") (= (cdr (assoc 2 (entget b))) tag))
                 (progn
                        (entmod (subst (cons 62 col) (assoc 62 (entget b)) (entget b)))
                        (entupd b)
                 )
             )
             (setq b (entnext b))
     )
     (setq i (1+ i))
)
)
(defun c:dmat (/ ss tag col i a b )
(alert "\n Chon cac block chua thuoc tinh can doi mau")
(setq ss (ssget (list (cons 0 "insert") (cons 66 1))))
(setq tag (getstring "\n Nhap tag name cua thuoc tinh can doi mau : ")
          col (getint "\n Nhap so hieu mau muon doi thanh: ") 
          i 0)
(while (setq a (ssname ss i))
     (setq b (entnext a))
     (while (and b (/= (cdr (assoc 0 (entget b))) "SEQEND"))
             (if (and (= (cdr (assoc 0 (entget b))) "ATTRIB") (= (cdr (assoc 2 (entget b))) tag))
                 (progn
                        (entmod (subst (cons 62 col) (assoc 62 (entget b)) (entget b)))
                        (entupd b)
                 )
             )
             (setq b (entnext b))
     )
     (setq i (1+ i))
)

<<

Filename: 289361_dmat.lsp
Tác giả: Tot77
Bài viết gốc: 289586
Tên lệnh: dma
Hỏi lệnh xem đối tượng màu số bao nhiêu?

Có vẻ bạn này muốn xài lisp, nhân cái topic gần đây có liên quan đến màu mè, tôi làm luôn cái này. 

Bạn pick cái nào thì bật bảng màu và hiện màu hiện tại, bạn có thể pick màu khác nếu muốn đổi màu, nhưng không đổi được block và dim. Lệnh dma.

 

(defun C:dma(/ tm tm1 tm2 e)
  (if (setq tm (assoc 62 (entget (setq e (car (entsel))))))
    (setq tm1 (acad_colordlg...
>>

Có vẻ bạn này muốn xài lisp, nhân cái topic gần đây có liên quan đến màu mè, tôi làm luôn cái này. 

Bạn pick cái nào thì bật bảng màu và hiện màu hiện tại, bạn có thể pick màu khác nếu muốn đổi màu, nhưng không đổi được block và dim. Lệnh dma.

 

(defun C:dma(/ tm tm1 tm2 e)
  (if (setq tm (assoc 62 (entget (setq e (car (entsel))))))
    (setq tm1 (acad_colordlg (cdr tm)))
    (setq tm2 (acad_colordlg (cdr (setq tm (assoc 62 (tblsearch "LAYER" (cdr (assoc 8 (entget e)))))))))
  )
  (if (/= tm1 (cdr tm)) (entmod (subst (cons 62 tm1) (assoc 62 (entget e)) (entget e))))
  (if (and tm2 (/= tm2 (cdr tm))) (entmod (cons (cons 62 tm2) (entget e))))
  (princ)
)


<<

Filename: 289586_dma.lsp
Tác giả: proconeng86
Bài viết gốc: 289392
Tên lệnh: dmat
[Xin] lisp chuyển màu các thuộc tính dynamic block

 

Hề hề hề,

Thử dùng cái này coi đã ưng ý chưa hè???

 

(defun c:dmat (/ ss tag col i a b )
(alert "\n Chon cac block chua thuoc tinh can doi mau")
(setq ss (ssget (list (cons 0 "insert") (cons 66 1))))
(setq tag (getstring "\n Nhap tag name cua thuoc tinh can doi mau : ")
          col (getint "\n Nhap so hieu mau muon doi thanh: ") 
          i 0)
(while (setq a (ssname ss i))
     (setq b...
>>

 

Hề hề hề,

Thử dùng cái này coi đã ưng ý chưa hè???

 

(defun c:dmat (/ ss tag col i a b )
(alert "\n Chon cac block chua thuoc tinh can doi mau")
(setq ss (ssget (list (cons 0 "insert") (cons 66 1))))
(setq tag (getstring "\n Nhap tag name cua thuoc tinh can doi mau : ")
          col (getint "\n Nhap so hieu mau muon doi thanh: ") 
          i 0)
(while (setq a (ssname ss i))
     (setq b (entnext a))
(while (and b (/= (cdr (assoc 0 (entget b))) "SEQEND"))
             (if (and (= (cdr (assoc 0 (entget b))) "ATTRIB") (= (cdr (assoc 2 (entget b))) tag))
                 (progn
                        (entmod (subst (cons 62 col) (assoc 62 (entget b)) (entget b)))
                        (entupd b)
                 )
             )
             (setq b (entnext b))
     )
     (setq i (1+ i))
)
)
(defun c:dmat (/ ss tag col i a b )
(alert "\n Chon cac block chua thuoc tinh can doi mau")
(setq ss (ssget (list (cons 0 "insert") (cons 66 1))))
(setq tag (getstring "\n Nhap tag name cua thuoc tinh can doi mau : ")
          col (getint "\n Nhap so hieu mau muon doi thanh: ") 
          i 0)
(while (setq a (ssname ss i))
     (setq b (entnext a))
     (while (and b (/= (cdr (assoc 0 (entget B))) "SEQEND"))
             (if (and (= (cdr (assoc 0 (entget B))) "ATTRIB") (= (cdr (assoc 2 (entget B))) tag))
                 (progn
                        (entmod (subst (cons 62 col) (assoc 62 (entget B)) (entget B)))
                        (entupd B)
                 )
             )
             (setq b (entnext B))
     )
     (setq i (1+ i))
)

Lisp rất hay, rất đúng ý mình, cám ơn bạn phamthanhbinh nhiều lắm nhưng có 3 điều nho nhỏ nữa phát sinh, bạn sửa giúp mình luôn nha

 

1. lúc ban đầu đưa ra lựa chọn dynamic block để đổi màu, nó lại hiện lên cái bảng, cứ phải ấn ok mới chọn được, bạn có thể bỏ các bảng đó đi, mình đưa ra lựa chọn dynamic block luôn được không

2. có thể liệt kê tên các attribute trong dynamic block để từ đó mình lựa chọn, như thế sẽ tiện hơn nhiều vì nhiều khi mình không nhớ tên attribute, cứ phải click đúp vào xem rồi mới gõ lệnh sửa mầu được

3. khi lựa chọn màu có thể hiện lên cả bảng màu để lựa chọn thì tốt, như thế sẽ trực quan dễ dàng hơn

 

Bạn giúp mình cái nha. chân thành cám ơn


<<

Filename: 289392_dmat.lsp

Trang 155/330

155