Chuyển đến nội dung
Diễn đàn CADViet
Bee

Update Block Cho Nhiều File ?

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

Mình có 1 vấn đề về block. Block có cả att. Vấn đề khi sửa lại 1 khung do thay đổi, thì làm sao update cho toàn bộ các bản vẽ khác (rất nhiều file) có block đó.?

 

Ngóng giải đáp của các bạn.

 

Thanks.

 

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

giải pháp của mình: Tạo một Block cần thiết với các Attributes sau đó copy các giá trị attributes từ block cũ vào block mới. Chạy hàng loạt cho tất cả các files.

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

giải pháp của mình: Tạo một Block cần thiết với các Attributes sau đó copy các giá trị attributes từ block cũ vào block mới. Chạy hàng loạt cho tất cả các files.

Nếu sửa cả rectang hoặc obj ko phải att thì update 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

Nếu là block thì chúng sẽ tự cập nhật hàng loạt khi có thay đổi.

 

Cập nhật ATT cho block bạn dùng: ATTSYNC

 

Còn dùng block A để thay thế toàn bộ block B bạn dùng Express tool nhé: Dòng lệnh "Replace block with another block"

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

Nếu sửa cả rectang hoặc obj ko phải att thì update thế nào ?

Nếu không nhầm thì mình hiểu ý bạn thế này:

Bạn có khung tên dưới dạng một Block bao gồm cả đối tượng Line, Circle,Polyline... và Attributes, bây giờ có thay đổi ở khung tên (chỉ xóa một vài đối tượng Line/Polyline hoặc gì đó) chứ không liên quan gì đến việc thay đổi attributes, và việc này dẫn đến phải update cho rất nhiều bản vẽ nên bạn cần một lisp hoặc một tool để làm cái này.

Hy vọng mình hiểu đúng ý bạn. 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

Nếu không nhầm thì mình hiểu ý bạn thế này:

Bạn có khung tên dưới dạng một Block bao gồm cả đối tượng Line, Circle,Polyline... và Attributes, bây giờ có thay đổi ở khung tên (chỉ xóa một vài đối tượng Line/Polyline hoặc gì đó) chứ không liên quan gì đến việc thay đổi attributes, và việc này dẫn đến phải update cho rất nhiều bản vẽ nên bạn cần một lisp hoặc một tool để làm cái này.

Hy vọng mình hiểu đúng ý bạn. hehe

Khung tên chỉ là một ví dụ dễ hình dung nhất. Thường thì là sử dụng xref. Thay đổi khung cũng đơn giản.

 

Ví dụ phức tạp hơn 1 chút: đó là tag cửa. Công trình nhiều tầng chẳng hạn.

Block tag cửa thường là chỉ có 2 tag: tag tên cửa và tag kích thước cửa. Các bản vẽ đều có hết tag cửa rồi.  Bây giờ CDT yêu cầu thêm thông tin bậu cửa sổ cách sàn bao nhiêu (thường là 900 chẳng hạn) và cửa đi sẽ là 0. Rồi bây giờ sẽ phải sửa toàn bộ tag cửa thêm 1 att và thay lại block mới 3 att vào toàn bộ block cũ 2att. Không tính trâu bò sửa tay ^_^. Có cách nào nhanh không ?

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

Khung tên chỉ là một ví dụ dễ hình dung nhất. Thường thì là sử dụng xref. Thay đổi khung cũng đơn giản.

 

Ví dụ phức tạp hơn 1 chút: đó là tag cửa. Công trình nhiều tầng chẳng hạn.

Block tag cửa thường là chỉ có 2 tag: tag tên cửa và tag kích thước cửa. Các bản vẽ đều có hết tag cửa rồi.  Bây giờ CDT yêu cầu thêm thông tin bậu cửa sổ cách sàn bao nhiêu (thường là 900 chẳng hạn) và cửa đi sẽ là 0. Rồi bây giờ sẽ phải sửa toàn bộ tag cửa thêm 1 att và thay lại block mới 3 att vào toàn bộ block cũ 2att. Không tính trâu bò sửa tay ^_^. Có cách nào nhanh không ?

Bên bạn có yêu cầu tên block không được thay đổi không ?nếu ko thì bạn tạo block att từ block cũ,có tên là block2 chẳng hạn.copy vào rồi dùng lệnh blockreplace xong là oke.

nếu nhiều bản vẽ,muốn làm nhanh,b có thể viết 1 cái macro nhỏ.mỗi bản vẽ chỉ cần copy block mới vào xong kick macro cái là xong luô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

Khung tên chỉ là một ví dụ dễ hình dung nhất. Thường thì là sử dụng xref. Thay đổi khung cũng đơn giản.

 

Ví dụ phức tạp hơn 1 chút: đó là tag cửa. Công trình nhiều tầng chẳng hạn.

Block tag cửa thường là chỉ có 2 tag: tag tên cửa và tag kích thước cửa. Các bản vẽ đều có hết tag cửa rồi.  Bây giờ CDT yêu cầu thêm thông tin bậu cửa sổ cách sàn bao nhiêu (thường là 900 chẳng hạn) và cửa đi sẽ là 0. Rồi bây giờ sẽ phải sửa toàn bộ tag cửa thêm 1 att và thay lại block mới 3 att vào toàn bộ block cũ 2att. Không tính trâu bò sửa tay ^_^. Có cách nào nhanh không ?

okie, gửi bản vẽ lên để mình test thử nhé.

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 vẽ thì ko cần. Bạn tạo 1 block 2 att. Copy sang nhieu file. Xong rồi thử sửa 1 block trg 1 file rồi chạy tool up các block ở các bv khác thô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

Với trình của Mr. Been chắc là có ý đố người khác.

Ý đồ Mr.Been rõ thế còn gì: chưa nghĩ dc giải pháp nào để update block cho nhiều file nên hóng cách nào làm được.  <_<

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 nghĩ cách mình làm cũng khá nhanh rồi.Copy block,sau đó vào từng bản vẽ chỉ cần Ctrl+V và 1 click.ngồi đợi cao kiến của các bác :)

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

Ý đồ Mr.Been rõ thế còn gì: chưa nghĩ dc giải pháp nào để update block cho nhiều file nên hóng cách nào làm được.  <_<

Nếu dùng lisp thì mình sẽ làm cách này (Đã có sẵn Block mới - có basepoint giống Block cũ - Tên Blk mới và cũ khác nhau):

1- Mở file BV, load block mới vào file

2- Quét tất BLK cũ lấy thông tin cần thiết (VD: Insertpoint, Rotation, Scale... List Attribute...)

3- Xóa block cũ, chèn Block mới tại điểm chèn của block cũ

4- Update các dữ liệu lấy ở trên lên block mới. (từ bước 2 đến bước 4 này giống lệnh blockreplace mà lohado đã nói ở trên)

5- Nếu cần thiết: (không thì thôi)

    a. Delete block cũ trong Record Table.

    b. Rename tên blk mới thành tên blk cũ.

  • 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

Nếu dùng lisp thì mình sẽ làm cách này (Đã có sẵn Block mới - có basepoint giống Block cũ - Tên Blk mới và cũ khác nhau):

1- Mở file BV, load block mới vào file

2- Quét tất BLK cũ lấy thông tin cần thiết (VD: Insertpoint, Rotation, Scale... List Attribute...)

3- Xóa block cũ, chèn Block mới tại điểm chèn của block cũ

4- Update các dữ liệu lấy ở trên lên block mới. (từ bước 2 đến bước 4 này giống lệnh blockreplace mà lohado đã nói ở trên)

5- Nếu cần thiết: (không thì thôi)

    a. Delete block cũ trong Record Table.

    b. Rename tên blk mới thành tên blk cũ.

Good solution

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

Hy vọng tool "Chạy lisp trên nhiều bản vẽ không mở" này sẽ giúp bạn Bee.

http://www.mediafire.com/view/1r487p8prox7224/Run_Lsp_Dwgs.png

http://www.mediafire.com/file/tza07d944tdv7x3/Run_Lsp_Dwgs.zip

Chỉnh sửa theo Doan Van Ha

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

Nếu dùng lisp thì mình sẽ làm cách này (Đã có sẵn Block mới - có basepoint giống Block cũ - Tên Blk mới và cũ khác nhau):

1- Mở file BV, load block mới vào file

2- Quét tất BLK cũ lấy thông tin cần thiết (VD: Insertpoint, Rotation, Scale... List Attribute...)

3- Xóa block cũ, chèn Block mới tại điểm chèn của block cũ

4- Update các dữ liệu lấy ở trên lên block mới. (từ bước 2 đến bước 4 này giống lệnh blockreplace mà lohado đã nói ở trên)

5- Nếu cần thiết: (không thì thôi)

    a. Delete block cũ trong Record Table.

    b. Rename tên blk mới thành tên blk cũ.

Ok, mình sẽ tham khảo các bước này.

 

Thanks.

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

Hy vọng tool "Chạy lisp trên nhiều bản vẽ không mở" này sẽ giúp bạn Bee.

http://www.mediafire.com/view/1r487p8prox7224/Run_Lsp_Dwgs.png

http://www.mediafire.com/file/tza07d944tdv7x3/Run_Lsp_Dwgs.zip

Thanks  Ha,

 

Đây cũng là ý tưởng hay, dể dùng chung cho các lisp. Mình hay viết riêng script hoặc DBX cho từng lệnh mà không nghĩ ra cách này. Good idea.

 

Với lisp của Ha (Hà, Hạ, HHHHH....^_^) mình chạy thử lisp test đi kèm thì vẫn chưa run đc script.

Lần đầu thì báo: ; error: bad argument type: stringp nil

 

Lần sau : "Run_Lsp_Dwgs.scr": Can't find file.

 

Mặc dù đã chọn các file trong list file bên phải, file lisp thì chọn lisp test đi kèm, tên hàm thì gán: C:test.

 

Không biết fix lỗi kiểu 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

Có lẽ tôi đã chép nhầm file (?). Đã chép lại và đã down thử rồi (vẫn ở trên). Như trong file "Lisp_test.lsp" thì bạn phải nhập là TEST hoặc (C:TEST). Trong file word đã có hướng dẫ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

@Bác Hạ: vẫn "Run_Lsp_Dwgs.scr": Can't find file. Sau một lúc tự kiếm tìm trong máy thì thấy nó nằm trong thư mục chứa bản vẽ hiện hành. => Cad or lisp nó kém hơn mình, mình tìm được mà nó thì lại không :D​.

P/s: - Bác cho lisp nó write file "Run_lsp_Dwgs.scr" vào thư mục mà "Support File search path" mới "nuột".

       - Nếu bổ sung cho lisp ghi nhớ path khi chọn file.dwg và .lsp thì "nuột" hơ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

Mình cũng có vấn đề tương tự chủ topic, mình tạo 1 block dynamic, trong đó có 5 đối tượng và sử dụng cho nhiều file, nay mình cập nhật thêm 1 đối tượng vào block đó thành 6 đối tượng, nhưng khi copy block mới thay đổi vào bản vẽ cũ thì vẫn nhận là 5. có cao nhân nào chỉ giúp mình các cập nhật block được ko. cảm ơn cả nhà.

P/s: Nội dung block là các loại đèn để bố trí trần đèn, bản vẽ cũ đã định vị tim đèn hết rồ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

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

×