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  
nguyen chuong

anh em trợ giúp vấn đề này nhe

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

ketxu    2.653

Mình đã đưa ra giả pháp giúp bạn là sẽ vẽ lại toàn bộ bằng PL và các text bình thường, nhưng bạn không ưng. Còn nếu bạn muốn cop cop cục Block đó thì mình sẽ chỉ giúp bạn được ở mức độ bạn chọn text, chọn block -> block cập nhật nội dung text vào tag Tênhốga của bạn, sau đó xóa Text đi. Như vậy sau khi thực hiện lisp E2c ở trên, bạn cần chạy thêm lisp bên dưới nữa. Nếu giải pháp như vậy thì 20p nữa mình post code lên giúp bạn.OK ?

  • 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

Mình đã đưa ra giả pháp giúp bạn là sẽ vẽ lại toàn bộ bằng PL và các text bình thường, nhưng bạn không ưng. Còn nếu bạn muốn cop cop cục Block đó thì mình sẽ chỉ giúp bạn được ở mức độ bạn chọn text, chọn block -> block cập nhật nội dung text vào tag Tênhốga của bạn, sau đó xóa Text đi. Như vậy sau khi thực hiện lisp E2c ở trên, bạn cần chạy thêm lisp bên dưới nữa. Nếu giải pháp như vậy thì 20p nữa mình post code lên giúp bạn.OK ?

hihi

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
ketxu    2.653

Không hẳn là phá sản đâu. Nếu bạn chịu khó ngồi sửa lại điểm InsertPoint của Block trùng vào đúng tâm point đó, mình có thể giúp bạn luôn phần chèn Block vào chỗ đó và lấy tên luôn ^^ Có lẽ, nếu bạn nghĩ như thế là hay hơn thì hãy tạo Block đi, rồi mai mình giúp bạn, vì giờ mình chuẩn bị vào ổ r ^^ .CÒn đây là lời hứa đoạn code vừa nãy.Sau khi chạy E2c để có tên và point, bạn chạy thằng này, quét qua 1 block và 1 text để cập nhật.

Trong code có sử dụng Function bác Hoành và bác Tuệ giới thiệu

(defun ChangeAttributes (lst blk / item atts)  
 (if blk    
     (if (safearray-value
           (setq atts
                  (vlax-variant-value
                    (vla-getattributes (vlax-ename->vla-object blk))
                  )
           )
         )
       (progn
         (foreach item lst
           (mapcar
             '(lambda (x)
                (if
                  (= (strcase (car item))
                     (strcase (vla-get-tagstring x))
                  )
                   (vla-put-textstring x (cdr item))
                )
              )
             (vlax-safearray->list atts)
           )
         )
         (vla-update (vlax-ename->vla-object blk))
       )
     )    
 )
)
(defun laydt(ss kieu)
 (acet-list-to-ss
  (vl-remove-if '(lambda(x)
		   (null (wcmatch (acet-dxf 0 (entget x)) kieu)))
	   	 (acet-ss-to-list ss)
  )
 )
)

(defun c:e2cc(/ ss eText tName)
(princ "\n Free Lisp From Cadviet.com @ ketxu")
(defun chDXF (dxf val ent) (entmod (subst (cons dxf val) (assoc dxf (entget ent)) (entget ent))))
(defun dxf (dxf ent) (cdr (assoc dxf (entget ent))))
(princ "\nChon Blocks va text :")
(setq ss (ssget))
(setq tname(dxf 1 (setq eText(ssname (Laydt ss "TEXT") 0))))
(ChangeAttributes (list (cons "TENHOGA"  tName)) (ssname (Laydt ss "INSERT") 0))
(entdel eText)
)

  • 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

Không hẳn là phá sản đâu. Nếu bạn chịu khó ngồi sửa lại điểm InsertPoint của Block trùng vào đúng tâm point đó, mình có thể giúp bạn luôn phần chèn Block vào chỗ đó và lấy tên luôn ^^ Có lẽ, nếu bạn nghĩ như thế là hay hơn thì hãy tạo Block đi, rồi mai mình giúp bạn, vì giờ mình chuẩn bị vào ổ r ^^ .CÒn đây là lời hứa đoạn code vừa nãy.Sau khi chạy E2c để có tên và point, bạn chạy thằng này, quét qua 1 block và 1 text để cập nhật.

Trong code có sử dụng Function bác Hoành và bác Tuệ giới thiệu

(defun ChangeAttributes (lst blk / item atts)  
 (if blk    
     (if (safearray-value
           (setq atts
                  (vlax-variant-value
                    (vla-getattributes (vlax-ename->vla-object blk))
                  )
           )
         )
       (progn
         (foreach item lst
           (mapcar
             '(lambda (x)
                (if
                  (= (strcase (car item))
                     (strcase (vla-get-tagstring x))
                  )
                   (vla-put-textstring x (cdr item))
                )
              )
             (vlax-safearray->list atts)
           )
         )
         (vla-update (vlax-ename->vla-object blk))
       )
     )    
 )
)
(defun laydt(ss kieu)
 (acet-list-to-ss
  (vl-remove-if '(lambda(x)
		   (null (wcmatch (acet-dxf 0 (entget x)) kieu)))
	   	 (acet-ss-to-list ss)
  )
 )
)

(defun c:e2cc(/ ss eText tName)
(princ "\n Free Lisp From Cadviet.com @ ketxu")
(defun chDXF (dxf val ent) (entmod (subst (cons dxf val) (assoc dxf (entget ent)) (entget ent))))
(defun dxf (dxf ent) (cdr (assoc dxf (entget ent))))
(princ "\nChon Blocks va text :")
(setq ss (ssget))
(setq tname(dxf 1 (setq eText(ssname (Laydt ss "TEXT") 0))))
(ChangeAttributes (list (cons "TENHOGA"  tName)) (ssname (Laydt ss "INSERT") 0))
(entdel eText)
)

nhưng bạn ơi để chạy đoạn code này thì làm như 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

Không hẳn là phá sản đâu. Nếu bạn chịu khó ngồi sửa lại điểm InsertPoint của Block trùng vào đúng tâm point đó, mình có thể giúp bạn luôn phần chèn Block vào chỗ đó và lấy tên luôn ^^ Có lẽ, nếu bạn nghĩ như thế là hay hơn thì hãy tạo Block đi, rồi mai mình giúp bạn, vì giờ mình chuẩn bị vào ổ r ^^ .CÒn đây là lời hứa đoạn code vừa nãy.Sau khi chạy E2c để có tên và point, bạn chạy thằng này, quét qua 1 block và 1 text để cập nhật.

Trong code có sử dụng Function bác Hoành và bác Tuệ giới thiệu

(defun ChangeAttributes (lst blk / item atts)  
 (if blk    
     (if (safearray-value
           (setq atts
                  (vlax-variant-value
                    (vla-getattributes (vlax-ename->vla-object blk))
                  )
           )
         )
       (progn
         (foreach item lst
           (mapcar
             '(lambda (x)
                (if
                  (= (strcase (car item))
                     (strcase (vla-get-tagstring x))
                  )
                   (vla-put-textstring x (cdr item))
                )
              )
             (vlax-safearray->list atts)
           )
         )
         (vla-update (vlax-ename->vla-object blk))
       )
     )    
 )
)
(defun laydt(ss kieu)
 (acet-list-to-ss
  (vl-remove-if '(lambda(x)
		   (null (wcmatch (acet-dxf 0 (entget x)) kieu)))
	   	 (acet-ss-to-list ss)
  )
 )
)

(defun c:e2cc(/ ss eText tName)
(princ "\n Free Lisp From Cadviet.com @ ketxu")
(defun chDXF (dxf val ent) (entmod (subst (cons dxf val) (assoc dxf (entget ent)) (entget ent))))
(defun dxf (dxf ent) (cdr (assoc dxf (entget ent))))
(princ "\nChon Blocks va text :")
(setq ss (ssget))
(setq tname(dxf 1 (setq eText(ssname (Laydt ss "TEXT") 0))))
(ChangeAttributes (list (cons "TENHOGA"  tName)) (ssname (Laydt ss "INSERT") 0))
(entdel eText)
)

.........................hehe

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

Không hẳn là phá sản đâu. Nếu bạn chịu khó ngồi sửa lại điểm InsertPoint của Block trùng vào đúng tâm point đó, mình có thể giúp bạn luôn phần chèn Block vào chỗ đó và lấy tên luôn ^^ Có lẽ, nếu bạn nghĩ như thế là hay hơn thì hãy tạo Block đi, rồi mai mình giúp bạn, vì giờ mình chuẩn bị vào ổ r ^^ .CÒn đây là lời hứa đoạn code vừa nãy.Sau khi chạy E2c để có tên và point, bạn chạy thằng này, quét qua 1 block và 1 text để cập nhật.

Trong code có sử dụng Function bác Hoành và bác Tuệ giới thiệu

(defun ChangeAttributes (lst blk / item atts)  
 (if blk    
     (if (safearray-value
           (setq atts
                  (vlax-variant-value
                    (vla-getattributes (vlax-ename->vla-object blk))
                  )
           )
         )
       (progn
         (foreach item lst
           (mapcar
             '(lambda (x)
                (if
                  (= (strcase (car item))
                     (strcase (vla-get-tagstring x))
                  )
                   (vla-put-textstring x (cdr item))
                )
              )
             (vlax-safearray->list atts)
           )
         )
         (vla-update (vlax-ename->vla-object blk))
       )
     )    
 )
)
(defun laydt(ss kieu)
 (acet-list-to-ss
  (vl-remove-if '(lambda(x)
		   (null (wcmatch (acet-dxf 0 (entget x)) kieu)))
	   	 (acet-ss-to-list ss)
  )
 )
)

(defun c:e2cc(/ ss eText tName)
(princ "\n Free Lisp From Cadviet.com @ ketxu")
(defun chDXF (dxf val ent) (entmod (subst (cons dxf val) (assoc dxf (entget ent)) (entget ent))))
(defun dxf (dxf ent) (cdr (assoc dxf (entget ent))))
(princ "\nChon Blocks va text :")
(setq ss (ssget))
(setq tname(dxf 1 (setq eText(ssname (Laydt ss "TEXT") 0))))
(ChangeAttributes (list (cons "TENHOGA"  tName)) (ssname (Laydt ss "INSERT") 0))
(entdel eText)
)

nhưng bạn ơi để chạy đoạn code này thì làm như 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
ketxu    2.653

Bạn cũng load như vậy và chạy với lệnh E2cc, chọn text và block theo cặp đã được tạo ra từ lệnh E2c để nó update tên vào. Còn ý kiến của mình ở bài trước bạn nghĩ sao ? Nhanh nhé ^^

Điều kiện là 10 phát thanks :rolleyes:

  • 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

Bạn cũng load như vậy và chạy với lệnh E2cc, chọn text và block theo cặp đã được tạo ra từ lệnh E2c để nó update tên vào. Còn ý kiến của mình ở bài trước bạn nghĩ sao ? Nhanh nhé ^^

Điều kiện là 10 phát thanks :rolleyes:

tôi nghĩ là 10 phát thank cũng chưa đủ để ghi nhận sự nhiệt tình của ban đâu

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
ketxu    2.653

Ồ, nếu bạn đã nói thế thì chờ mình 10p, mần xong giúp bạn vậy, rồi bạn cứ nhiệt tình nhấn dấu + dưới bài post của ai đó mà bạn cho là hay và có ích nhé, không nhất thiết là mình đâu ^^ 10 phát vote ghi nợ :rolleyes:

 

Update :

1 - Bạn tạo 1 block tên là Test giống như mình tạo mẫu đây, hoặc dùng nó luôn cũng được, vì mình lấy nguyên của bạn, chỉ đổi tên Block và điểm chèn. Nhớ là lisp mình viết riêng cho mẫu này, tức là block sẽ có 4 att, và tag TENHOGA tạo ra cuối cùng như mẫu bạn gửi trong file. Nếu có thay đổi hãy nhắn lại với mình để điều chỉnh

Mẫu Block

2- Ở file cần thao tác, bạn cop block "Test" bên trên tới, dùng lisp này, lệnh E2c

E2C

3- Ngồi chờ nó finish và ấn Tks ^^

  • 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

mọi thứ đều ok!

tôi chỉ muốn thay đổi cái block củ bạn có cái râu dài thêm chút nữa như hình dang trong file tôi up lên (kế bên cái block của bạn)

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

lisp dung lệnh e2cc link bị lỗi rồi bạn 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
ketxu    2.653

Rất buồn vì bạn không đọc hướng dẫn của mình bên trên

1. Block bạn gửi lại mình thấy các text không còn link field nữa, k chạy theo tọa độ, k biết tại sao

2. Bạn muốn cho dài bao nhiêu thì dài, các đối tượng thế nào thì thế, bạn cứ tạo theo ý bạn, chỉ cần insertpoint nằm đúng điểm chỉ Point

3 .E2cc là lisp cũ mình chỉ đưa code lên diễn đàn chứ k dùng link

4. E2c.vlx mình đã gửi k biết bạn có dùng hay không ? Bạn thấy đc k ?

5. Block mình gửi là BLOCK của BẠN :unsure:

  • 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

Rất buồn vì bạn không đọc hướng dẫn của mình bên trên

1. Block bạn gửi lại mình thấy các text không còn link field nữa, k chạy theo tọa độ, k biết tại sao

2. Bạn muốn cho dài bao nhiêu thì dài, các đối tượng thế nào thì thế, bạn cứ tạo theo ý bạn, chỉ cần insertpoint nằm đúng điểm chỉ Point

3 .E2cc là lisp cũ mình chỉ đưa code lên diễn đàn chứ k dùng link

4. E2c.vlx mình đã gửi k biết bạn có dùng hay không ? Bạn thấy đc k ?

5. Block mình gửi là BLOCK của BẠN :unsure:

 

minh đã dùng lisp E2C.vlx của bạn rồi hoàn toàn tự động , đỡ mất thời gian.nhưng mình muốn sữa cái đuôi của cái ghi chú đó thì nó không còn field nữa có lẽ là chưa rành vể dùng field trong block.mình cũng chỉ mới dùng block ATT thôi nên cũng chưa hiểu hết những gì bạn diễn đạt:"chỉ cần insertpoint nằm đúng điểm chỉ Point".mình muốn lấy lisp e2cc về dùng thử xem ntn mình lick vào nút download lisp file phía trên đoạn code của bạn thì down về không được.MÌNH CHUỐI VỀ CAD LẮM NÊN ....hihi

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
ketxu    2.653

Ok. Mình sẽ giúp bạn sửa cái block giống như hình bạn post. Trong lúc đó bạn nghiên cứu thếm 1 chút về điểm chèn basepoint của Block nhé

Update : Block

 

P/S : chức năng download lisp của diễn đàn đang lỗi, bạn lấy code bằng cách copy hết code, hoặc reply lại bài mình để copy code

  • 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

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  

×