Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
kokono939

Lisp sửa bề rộng text của block thuôc tính????

Các bài được khuyến nghị

kokono939    1

LÀm thế nào để sửa chiều rộng chữ của các đối tượng text ở nhiều đối tượng block thuộc tính 1lúc mà không phải làm thủ công, block vẫn giữ nguyên????

Các bác giúp mình với!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
kokono939    1
LÀm thế nào để sửa chiều rộng chữ của các đối tượng text ở nhiều đối tượng block thuộc tính 1lúc mà không phải làm thủ công, block vẫn giữ nguyên????

Các bác giúp mình với!

 

 

Hix, không bác nào giúp được em ah.!!!!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
18011985    61
Hix, không bác nào giúp được em ah.!!!!

Kiên nhẫn chứ bạn. Đây bạn dùng thử xem.

(defun c:textblock (/ C40 ENT H I M N N40 SS SSN ENT1 SSN1)
 (vl-load-com)
 (princ "\nChon block")
 (setq ss (ssget '((0 . "INSERT"))))
 (setq i 0)
 (setq n (sslength ss))
 (setq m -1)
 (setq h (getreal "\n Nhap chieu cao chu: "))
 (while (< i n)
   (setq ssn (ssname ss (setq m (1+ m))))
   (setq ent (entget ssn))
   (if(= (cdr(assoc 66 ent)) 1)   
   (progn
     (setq ssn1(entnext ssn))           
     (setq ent1(entget ssn1))       
     (while (/= (cdr(assoc 0 ent1)) "SEQEND") 
       (setq c40 (assoc 40 ent1))
   (setq n40 (cons 40 h))
   (setq ent1 (subst n40 c40 ent1))
   (entmod ent1)
       (setq ssn1(entnext ssn1))    
       (setq ent1(entget ssn1)) 
     )
    ) 
   )
   (setq i (+ 1 i))
   )
 (vl-cmdf "regen")
 (princ)
 )     

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
kokono939    1
Kiên nhẫn chứ bạn. Đây bạn dùng thử xem.
(defun c:textblock (/ C40 ENT H I M N N40 SS SSN ENT1 SSN1)
 (vl-load-com)
 (princ "\nChon block")
 (setq ss (ssget '((0 . "INSERT"))))
 (setq i 0)
 (setq n (sslength ss))
 (setq m -1)
 (setq h (getreal "\n Nhap chieu cao chu: "))
 (while (< i n)
   (setq ssn (ssname ss (setq m (1+ m))))
   (setq ent (entget ssn))
   (if(= (cdr(assoc 66 ent)) 1)   
   (progn
     (setq ssn1(entnext ssn))           
     (setq ent1(entget ssn1))       
     (while (/= (cdr(assoc 0 ent1)) "SEQEND") 
       (setq c40 (assoc 40 ent1))
   (setq n40 (cons 40 h))
   (setq ent1 (subst n40 c40 ent1))
   (entmod ent1)
       (setq ssn1(entnext ssn1))    
       (setq ent1(entget ssn1)) 
     )
    ) 
   )
   (setq i (+ 1 i))
   )
 (vl-cmdf "regen")
 (princ)
 )     

 

 

Em cảm ơn, nhờ anh thêm phần bề rộng chữ, với cả đưa chữ về middle center không bị nhảy chữ nữa ah!

Như hình bên dưới ah.

 

http://www.cadviet.com/upfiles/3/111.jpg

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
w1nDream    73
Lệnh Battman

 

Vậy có cách nào sửa được Block gốc trong Block thuộc tính hok pác?

Em có nhiều Block thuộc tính nhưng fần Block lại bé quá nên muốn chỉnh mà không biết làm thế nào!

:(

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
trinhvqh    222
Vậy có cách nào sửa được Block gốc trong Block thuộc tính hok pác?

Em có nhiều Block thuộc tính nhưng fần Block lại bé quá nên muốn chỉnh mà không biết làm thế nào!

:(

Lệnh refedit

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
kokono939    1
Lệnh Battman

 

Lệnh battman chỉ sửa được block thuộc tính gốc; ko cập nhật thay đổi vào các blpck thuốc tính sao; khi dùng sync thì thay đổi tất cả các block sao trong bản vẽ về nội dung gốc, làm như thế ko được.

Mình thấy lisp của anh y' gần đúng ý em rồi, nhưng tiếc chỉ sửa được chiều cao text, ko sửa được bề rộng text.....( nội dung block vẫn giữ nguyên)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
18011985    61
Lệnh battman chỉ sửa được block thuộc tính gốc; ko cập nhật thay đổi vào các blpck thuốc tính sao; khi dùng sync thì thay đổi tất cả các block sao trong bản vẽ về nội dung gốc, làm như thế ko được.

Mình thấy lisp của anh y' gần đúng ý em rồi, nhưng tiếc chỉ sửa được chiều cao text, ko sửa được bề rộng text.....( nội dung block vẫn giữ nguyên)

Dạo này bận quá nên không lên thường xuyên được mong bạn thông cảm.
(defun c:textblock (/ C40 ENT H I M N N40 SS SSN ENT1 SSN1 RONG C10 C11 C41 C72 C73 N41 N72 N73)
(vl-load-com)
(princ "\nChon block")
(setq ss (ssget '((0 . "INSERT"))))
(setq i 0)
(setq n (sslength ss))
(setq m -1)
(setq h (getreal "\n Nhap chieu cao chu: "))
(setq rong (getreal "\n Nhap be rong chu: "))
(while (< i n)
(setq ssn (ssname ss (setq m (1+ m))))
(setq ent (entget ssn))
(if(= (cdr(assoc 66 ent)) 1)
(progn
(setq ssn1(entnext ssn))
(setq ent1(entget ssn1))
(while (/= (cdr(assoc 0 ent1)) "SEQEND")
(setq c40 (assoc 40 ent1))
(setq n40 (cons 40 h))
(setq c41 (assoc 41 ent1))
(setq n41 (cons 41 rong))
(setq c11 (assoc 11 ent1))
(setq c10 (cons 11 (cdr(assoc 10 ent1))))
(setq c72 (assoc 72 ent1))
(setq c73 (assoc 73 ent1))
(setq n72 (cons 72 1))
(setq n73 (cons 73 2))
(setq ent1 (subst n40 c40 ent1))
(setq ent1 (subst n41 c41 ent1))
(setq ent1 (subst c10 c11 ent1))
(setq ent1 (subst n72 c72 ent1))
(setq ent1 (subst n73 c73 ent1))
(entmod ent1)
(setq ssn1(entnext ssn1))
(setq ent1(entget ssn1))
)
)
)
(setq i (+ 1 i))
)
(vl-cmdf "regen")
(princ)
)

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
trinhvqh    222
Lệnh battman chỉ sửa được block thuộc tính gốc; ko cập nhật thay đổi vào các blpck thuốc tính sao; khi dùng sync thì thay đổi tất cả các block sao trong bản vẽ về nội dung gốc, làm như thế ko được.

Mình thấy lisp của anh y' gần đúng ý em rồi, nhưng tiếc chỉ sửa được chiều cao text, ko sửa được bề rộng text.....( nội dung block vẫn giữ nguyên)

 

Đúng là trong những trường hợp thế này không có Lisp thì không được.

Rút kinh nghiệm khỏi phải chờ lâu, lần sau bạn nên post sang Topic "Viết lisp theo yêu cầu"

Ở đó nhiều cao thủ lisp sẽ giúp bạn.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
kokono939    1
Dạo này bận quá nên không lên thường xuyên được mong bạn thông cảm.
(defun c:textblock (/ C40 ENT H I M N N40 SS SSN ENT1 SSN1 RONG C10 C11 C41 C72 C73 N41 N72 N73)
(vl-load-com)
(princ "\nChon block")
(setq ss (ssget '((0 . "INSERT"))))
(setq i 0)
(setq n (sslength ss))
(setq m -1)
(setq h (getreal "\n Nhap chieu cao chu: "))
(setq rong (getreal "\n Nhap be rong chu: "))
(while (< i n)
(setq ssn (ssname ss (setq m (1+ m))))
(setq ent (entget ssn))
(if(= (cdr(assoc 66 ent)) 1)
(progn
(setq ssn1(entnext ssn))
(setq ent1(entget ssn1))
(while (/= (cdr(assoc 0 ent1)) "SEQEND")
(setq c40 (assoc 40 ent1))
(setq n40 (cons 40 h))
(setq c41 (assoc 41 ent1))
(setq n41 (cons 41 rong))
(setq c11 (assoc 11 ent1))
(setq c10 (cons 11 (cdr(assoc 10 ent1))))
(setq c72 (assoc 72 ent1))
(setq c73 (assoc 73 ent1))
(setq n72 (cons 72 1))
(setq n73 (cons 73 2))
(setq ent1 (subst n40 c40 ent1))
(setq ent1 (subst n41 c41 ent1))
(setq ent1 (subst c10 c11 ent1))
(setq ent1 (subst n72 c72 ent1))
(setq ent1 (subst n73 c73 ent1))
(entmod ent1)
(setq ssn1(entnext ssn1))
(setq ent1(entget ssn1))
)
)
)
(setq i (+ 1 i))
)
(vl-cmdf "regen")
(princ)
)

 

 

Thank anh, nhưng em dùng nó lại bị nhảy chữ sau mỗi lần nhập bề rộng chữ, kể cả nhập bề rộng hiện hành cũng nhảy.Anh xem lại.Em post hình bên dưới!

 

 

http://www.cadviet.com/upfiles/3/1111.jpg

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
18011985    61
Thank anh, nhưng em dùng nó lại bị nhảy chữ sau mỗi lần nhập bề rộng chữ, kể cả nhập bề rộng hiện hành cũng nhảy.Anh xem lại.Em post hình bên dưới!

http://www.cadviet.com/upfiles/3/1111.jpg

Bạn upload block của bạn lên để mình tìm hiểu.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
18011985    61
Em up lai cho bac' đây ah!

 

http://www.cadviet.com/upfiles/3/nhay_chu_3.dwg

Cũng không rõ nữa vẫn báo lỗi thế này.

1_14.jpg

Nhưng thôi kệ nó đã. Bác test lại với block của bác nhé

(defun c:textblock (/ C40 ENT H I M N N40 SS SSN ENT1 SSN1 RONG C10 C11 C41 C72 C73 N41 N72 N73)
(vl-load-com)
(princ "\nChon block")
(setq ss (ssget '((0 . "INSERT"))))
(setq i 0)
(setq n (sslength ss))
(setq m -1)
(setq h (getreal "\n Nhap chieu cao chu: "))
(setq rong (getreal "\n Nhap be rong chu: "))
(while (< i n)
(setq ssn (ssname ss (setq m (1+ m))))
(setq ent (entget ssn))
(if(= (cdr(assoc 66 ent)) 1)
(progn
(setq ssn1(entnext ssn))
(setq ent1(entget ssn1))
(while (/= (cdr(assoc 0 ent1)) "SEQEND")
(setq c40 (assoc 40 ent1))
(setq n40 (cons 40 h))
(setq c41 (assoc 41 ent1))
(setq n41 (cons 41 rong))
(if (and(/= (cdr(assoc 72 ent1)) 1)(/=(cdr(assoc 73 ent1)) 2))
 (progn
   (setq c11 (assoc 11 ent1))
   (setq c10 (cons 11 (cdr(assoc 10 ent1))))
   (setq c72 (assoc 72 ent1))
   (setq c73 (assoc 73 ent1))
   (setq n72 (cons 72 1))
   (setq n73 (cons 73 2))
   (setq ent1 (subst c10 c11 ent1))
   (setq ent1 (subst n72 c72 ent1))
   (setq ent1 (subst n73 c73 ent1))
   )
 )
(setq ent1 (subst n40 c40 ent1))
(setq ent1 (subst n41 c41 ent1))  
(entmod ent1)
(setq ssn1(entnext ssn1))
(setq ent1(entget ssn1))
)
)
)
(setq i (+ 1 i))
)
(entupd ssn)
(princ)
)

Nếu còn bị nhảy thì báo lại cho mình nhé.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
vtd_xd    5
Cũng không rõ nữa vẫn báo lỗi thế này.

1_14.jpg

Nhưng thôi kệ nó đã. Bác test lại với block của bác nhé

(defun c:textblock (/ C40 ENT H I M N N40 SS SSN ENT1 SSN1 RONG C10 C11 C41 C72 C73 N41 N72 N73)
(vl-load-com)
(princ "\nChon block")
(setq ss (ssget '((0 . "INSERT"))))
(setq i 0)
(setq n (sslength ss))
(setq m -1)
(setq h (getreal "\n Nhap chieu cao chu: "))
(setq rong (getreal "\n Nhap be rong chu: "))
(while (< i n)
(setq ssn (ssname ss (setq m (1+ m))))
(setq ent (entget ssn))
(if(= (cdr(assoc 66 ent)) 1)
(progn
(setq ssn1(entnext ssn))
(setq ent1(entget ssn1))
(while (/= (cdr(assoc 0 ent1)) "SEQEND")
(setq c40 (assoc 40 ent1))
(setq n40 (cons 40 h))
(setq c41 (assoc 41 ent1))
(setq n41 (cons 41 rong))
(if (and(/= (cdr(assoc 72 ent1)) 1)(/=(cdr(assoc 73 ent1)) 2))
 (progn
   (setq c11 (assoc 11 ent1))
   (setq c10 (cons 11 (cdr(assoc 10 ent1))))
   (setq c72 (assoc 72 ent1))
   (setq c73 (assoc 73 ent1))
   (setq n72 (cons 72 1))
   (setq n73 (cons 73 2))
   (setq ent1 (subst c10 c11 ent1))
   (setq ent1 (subst n72 c72 ent1))
   (setq ent1 (subst n73 c73 ent1))
   )
 )
(setq ent1 (subst n40 c40 ent1))
(setq ent1 (subst n41 c41 ent1))  
(entmod ent1)
(setq ssn1(entnext ssn1))
(setq ent1(entget ssn1))
)
)
)
(setq i (+ 1 i))
)
(entupd ssn)
(princ)
)

Nếu còn bị nhảy thì báo lại cho mình nhé.

 

 

Text không nhảy nữa, nhưng cho tôi hỏi, nếu trong Block đó có nhiều text ATTRIBUTE thi nó đều thay đổi hết, bạn thử chỉnh lại nếu kich vào text nào trong block thì chỉ có text đó thay đổi thôi

Thank bạn

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
kokono939    1
Cũng không rõ nữa vẫn báo lỗi thế này.

1_14.jpg

Nhưng thôi kệ nó đã. Bác test lại với block của bác nhé

(defun c:textblock (/ C40 ENT H I M N N40 SS SSN ENT1 SSN1 RONG C10 C11 C41 C72 C73 N41 N72 N73)
(vl-load-com)
(princ "\nChon block")
(setq ss (ssget '((0 . "INSERT"))))
(setq i 0)
(setq n (sslength ss))
(setq m -1)
(setq h (getreal "\n Nhap chieu cao chu: "))
(setq rong (getreal "\n Nhap be rong chu: "))
(while (< i n)
(setq ssn (ssname ss (setq m (1+ m))))
(setq ent (entget ssn))
(if(= (cdr(assoc 66 ent)) 1)
(progn
(setq ssn1(entnext ssn))
(setq ent1(entget ssn1))
(while (/= (cdr(assoc 0 ent1)) "SEQEND")
(setq c40 (assoc 40 ent1))
(setq n40 (cons 40 h))
(setq c41 (assoc 41 ent1))
(setq n41 (cons 41 rong))
(if (and(/= (cdr(assoc 72 ent1)) 1)(/=(cdr(assoc 73 ent1)) 2))
 (progn
   (setq c11 (assoc 11 ent1))
   (setq c10 (cons 11 (cdr(assoc 10 ent1))))
   (setq c72 (assoc 72 ent1))
   (setq c73 (assoc 73 ent1))
   (setq n72 (cons 72 1))
   (setq n73 (cons 73 2))
   (setq ent1 (subst c10 c11 ent1))
   (setq ent1 (subst n72 c72 ent1))
   (setq ent1 (subst n73 c73 ent1))
   )
 )
(setq ent1 (subst n40 c40 ent1))
(setq ent1 (subst n41 c41 ent1))  
(entmod ent1)
(setq ssn1(entnext ssn1))
(setq ent1(entget ssn1))
)
)
)
(setq i (+ 1 i))
)
(entupd ssn)
(princ)
)

Nếu còn bị nhảy thì báo lại cho mình nhé.

 

 

Thank bác. Chữ ko bị nhảy nữa rồi!Lisp đến đây là chuẩn theo yêu cầu ban đầu rồi.Chúc bác làm việc tốt!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

Đăng nhập để thực hiện theo  

×