Đến nội dung


Hình ảnh
- - - - -

Lisp Bind Xref các bản vẽ đang mở


  • Please log in to reply
20 replies to this topic

#1 vothanhdn

vothanhdn

    biết vẽ ellipse

  • Members
  • PipPip
  • 58 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 24 April 2013 - 10:20 AM

Chào mọi người Mình có vấn đề nhờ mọi người giúp. Mình muốn Bind tất cả các bản vẽ có các Xref trong đó. Nghĩa là trong tất cả các file mình đang mở, file nào có chứa Xref đều Bind ra bản vẽ hiện hành hết. Vấn đề này hơi khó, nhờ mọi người giúp mình với nhé. Cám ơn.
  • 0

Ứng dụng hỗ trợ thiết kế mạng lưới thoát nước VTD

  - Tính toán mạng lưới thoát nước

  - Vẽ trắc dọc, bình đồ thoát nước

......

Truy cập http://www.vtdvn.com

------------------------------------------------------------------------------------------

"Không có gì chắc chắn, chỉ có 1 điều chắc chắn là không có gì chắc chắn"...!!!


#2 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 24 April 2013 - 02:46 PM

Chào mọi người Mình có vấn đề nhờ mọi người giúp. Mình muốn Bind tất cả các bản vẽ có các Xref trong đó. Nghĩa là trong tất cả các file mình đang mở, file nào có chứa Xref đều Bind ra bản vẽ hiện hành hết. Vấn đề này hơi khó, nhờ mọi người giúp mình với nhé. Cám ơn.

Hề hề hề,

Không hiểu ý của bạn bởi vì lisp chỉ làm việc với file bản vẽ hiện hành có load lisp, còn các bản vẽ khác cho dù đang mở hay đóng nó đâu có thèm quan tâm nhể????


  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#3 vothanhdn

vothanhdn

    biết vẽ ellipse

  • Members
  • PipPip
  • 58 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 25 April 2013 - 08:16 AM

Hề hề hề,

Không hiểu ý của bạn bởi vì lisp chỉ làm việc với file bản vẽ hiện hành có load lisp, còn các bản vẽ khác cho dù đang mở hay đóng nó đâu có thèm quan tâm nhể????

 

Thanks a. Vì e cần Bind số lượng lớn các bản vẽ ra. Nếu lisp không xử lý được tất cả bản vẽ thì có cách nào khác không a. Hay là lisp xử lý Bind trên 1 bản vẽ thì cũng nhanh hơn.


  • 0

Ứng dụng hỗ trợ thiết kế mạng lưới thoát nước VTD

  - Tính toán mạng lưới thoát nước

  - Vẽ trắc dọc, bình đồ thoát nước

......

Truy cập http://www.vtdvn.com

------------------------------------------------------------------------------------------

"Không có gì chắc chắn, chỉ có 1 điều chắc chắn là không có gì chắc chắn"...!!!


#4 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5451 Bài viết
Điểm đánh giá: 2625 (tuyệt vời)

Đã gửi 25 April 2013 - 08:39 AM

1). Bạn post bài nhiều rồi mà vẫn post sai quy định của box autolisp nên rất dễ bị mod xóa. Chú ý lần sau nhé!

2). Thử cái này xem, dùng để bind các xref trong modelspace của bản vẽ hiện hành.

 

(defun C:BX(/ tmp)
 (vl-load-com)
 (vlax-for objs (vla-get-ModelSpace (vla-get-activedocument (vlax-get-acad-object)))
  (if
   (and
    (= (vla-get-ObjectName objs) "AcDbBlockReference")
    (vlax-property-available-p objs 'Path)
    (setq tmp (vla-Item  (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-Acad-Object))) (vla-get-Name objs)))
    (not (assoc 71 (entget (tblobjname "block" (vla-get-Name objs))))))
   (vla-Bind tmp :vlax-true)))
 (princ))

  • 3

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#5 vothanhdn

vothanhdn

    biết vẽ ellipse

  • Members
  • PipPip
  • 58 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 25 April 2013 - 02:44 PM

1). Bạn post bài nhiều rồi mà vẫn post sai quy định của box autolisp nên rất dễ bị mod xóa. Chú ý lần sau nhé!

2). Thử cái này xem, dùng để bind các xref trong modelspace của bản vẽ hiện hành.

 

(defun C:BX(/ tmp)
 (vl-load-com)
 (vlax-for objs (vla-get-ModelSpace (vla-get-activedocument (vlax-get-acad-object)))
  (if
   (and
    (= (vla-get-ObjectName objs) "AcDbBlockReference")
    (vlax-property-available-p objs 'Path)
    (setq tmp (vla-Item  (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-Acad-Object))) (vla-get-Name objs)))
    (not (assoc 71 (entget (tblobjname "block" (vla-get-Name objs))))))
   (vla-Bind tmp :vlax-true)))
 (princ))

Thanks a.

Ah, xin lỗi vì mình quên mất ghi "[Yêu cầu]" vào tên Topic, bây giờ không sửa được tựa đề


  • 0

Ứng dụng hỗ trợ thiết kế mạng lưới thoát nước VTD

  - Tính toán mạng lưới thoát nước

  - Vẽ trắc dọc, bình đồ thoát nước

......

Truy cập http://www.vtdvn.com

------------------------------------------------------------------------------------------

"Không có gì chắc chắn, chỉ có 1 điều chắc chắn là không có gì chắc chắn"...!!!


#6 Chiron

Chiron

    biết dimradius

  • Members
  • PipPipPipPipPip
  • 310 Bài viết
Điểm đánh giá: 90 (tàm tạm)

Đã gửi 03 May 2013 - 10:20 AM

Lisp của bác Hà chỉ bind toàn bộ xref trong model, còn trong layout thì nó ignore (Cái này hình như bác sưu tầm ở đâu đó ^ ^).

Chắc vothanhdn muốn bind toàn bộ để gửi cho người khác? Có thể dùng lệnh etransmit, chọn thêm lựa chọn Bind là xong.


  • 0

#7 ThuyLinh313

ThuyLinh313

    biết lệnh mtext

  • Members
  • PipPipPipPip
  • 288 Bài viết
Điểm đánh giá: 142 (tàm tạm)

Đã gửi 07 May 2013 - 01:59 PM

Lisp của bác Hà chỉ bind toàn bộ xref trong model, còn trong layout thì nó ignore (Cái này hình như bác sưu tầm ở đâu đó ^ ^).

Chắc vothanhdn muốn bind toàn bộ để gửi cho người khác? Có thể dùng lệnh etransmit, chọn thêm lựa chọn Bind là xong.

 

Nghĩa là thế nào hả bạn. mình dùng etransmit không có lựa chọn Bind

Lisp trên muốn sửa lại để chạy với tất cả layout cũng chắc cũng đơn giản thôi. 


  • 0

#8 KangKung

KangKung

    biết lệnh array

  • Members
  • PipPipPip
  • 189 Bài viết
Điểm đánh giá: 227 (khá)

Đã gửi 07 May 2013 - 03:23 PM

Cách đơn giản nhất để Bind tất cả các bản vẽ (kể cả Model lẫn Layout):

(command "XREF" "B" "*")


  • 1

#9 vothanhdn

vothanhdn

    biết vẽ ellipse

  • Members
  • PipPip
  • 58 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 09 May 2013 - 09:52 AM

Cách đơn giản nhất để Bind tất cả các bản vẽ (kể cả Model lẫn Layout):

(command "XREF" "B" "*")

 

Mình dùng cả Etransmit và dòng lệnh của bạn cũng không có kết quả Bind các bản vẽ trong Windows của CAD.


  • 0

Ứng dụng hỗ trợ thiết kế mạng lưới thoát nước VTD

  - Tính toán mạng lưới thoát nước

  - Vẽ trắc dọc, bình đồ thoát nước

......

Truy cập http://www.vtdvn.com

------------------------------------------------------------------------------------------

"Không có gì chắc chắn, chỉ có 1 điều chắc chắn là không có gì chắc chắn"...!!!


#10 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 10 May 2013 - 03:32 PM

Tên topic không hợp lệ, nhưng hơn hai tuần rồi topic vẫn còn (không bị xóa) chắc là mod bỏ qua rồi.

gửi bạn Lisp bind xref cho file hiện hành.

Nếu OK thì việc dùng cho các file đang mở chỉ là chuyện nhỏ.

(defun c:XrefBind ()
  (vlax-map-Collection (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object)))
    '(lambda (b)
       (if (= (vla-get-IsXRef b) :vlax-true)
	 (vl-catch-all-error-p
	   (vl-catch-all-apply 'vla-bind (list b :vlax-true)  ) )  )  )  ))

  • 2

#11 phuongkq

phuongkq

    biết vẽ line

  • Members
  • PipPip
  • 27 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 04 July 2014 - 10:03 PM

Cảm ơn các cao thủ rất nhiều!

thanks for all support!


  • 0

#12 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 2014 - 09:27 PM

Tên topic không hợp lệ, nhưng hơn hai tuần rồi topic vẫn còn (không bị xóa) chắc là mod bỏ qua rồi.

gửi bạn Lisp bind xref cho file hiện hành.

Nếu OK thì việc dùng cho các file đang mở chỉ là chuyện nhỏ.

(defun c:XrefBind ()
  (vlax-map-Collection (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object)))
    '(lambda (b)
       (if (= (vla-get-IsXRef b) :vlax-true)
	 (vl-catch-all-error-p
	   (vl-catch-all-apply 'vla-bind (list b :vlax-true)  ) )  )  )  ))

 

Mình đã dùng thử lisp và thấy rất hay nhưng lisp có 1 hạn chế. Đó là những layer đã bị đóng băng hay tắt đi rồi nhưng khi dùng lisp để bind ra thì nó lại hiện hết cả ra, làm bản vẽ không đúng như ban đầu nên không dùng được nữa. bạn có thể sửa lỗi đó không?


  • 0

#13 northface

northface

    biết pan

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

Đã gửi 23 July 2014 - 11:40 AM

Cảm ơn các cao thủ rất nhiều!

thanks for all support!

 

 

 

 

viên uống giảm cân | bí quyết giảm cân | thức uống giảm cân


  • 0

#14 northface

northface

    biết pan

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

Đã gửi 23 July 2014 - 11:41 AM

Cách đơn giản nhất để Bind tất cả các bản vẽ (kể cả Model lẫn Layout):

 

 

 

 

 

 

vitamin cho bé | bổ sung vitamin


  • -2

#15 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 24 July 2014 - 10:57 AM

Mình đã dùng thử lisp và thấy rất hay nhưng lisp có 1 hạn chế. Đó là những layer đã bị đóng băng hay tắt đi rồi nhưng khi dùng lisp để bind ra thì nó lại hiện hết cả ra, làm bản vẽ không đúng như ban đầu nên không dùng được nữa. bạn có thể sửa lỗi đó không?

Nếu dùng lisp của Mr.Ha thì :

Bạn thay dòng : (vla-Bind tmp :vlax-true)

bằng dòng (vla-Bind tmp :vlax-false)

 

dùng lisp của Gia_Bach thì :

Bạn thay dòng : (list b :vlax-true)

bằng dòng (list b :vlax-false)


Bài viết đã được chỉnh sửa nội dung bởi gia_bach: 24 July 2014 - 11:56 AM

  • 1

#16 phamhuy1

phamhuy1

    biết vẽ rectang

  • Members
  • PipPip
  • 82 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 24 July 2014 - 11:09 AM

ủa, cái lisp của bác gia_bach đâu thấy dòng nào là (vla-Bind tmp :vlax-true) để thay đâu? :(


  • 0

#17 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5451 Bài viết
Điểm đánh giá: 2625 (tuyệt vời)

Đã gửi 24 July 2014 - 11:20 AM

Chắc bác ấy đang nói tới cái lisp của ông ĐVH?


  • 2

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#18 phamhuy1

phamhuy1

    biết vẽ rectang

  • Members
  • PipPip
  • 82 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 24 July 2014 - 11:33 AM

à , e thấy rồi.Tahnks! :)


  • 0

#19 cpnqte

cpnqte

    Chưa sử dụng CAD

  • Members
  • Pip
  • 1 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 25 July 2014 - 06:40 AM

Cái này mình rất yêu đó


  • 0

#20 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 08 August 2014 - 08:12 PM

Tên topic không hợp lệ, nhưng hơn hai tuần rồi topic vẫn còn (không bị xóa) chắc là mod bỏ qua rồi.

gửi bạn Lisp bind xref cho file hiện hành.

Nếu OK thì việc dùng cho các file đang mở chỉ là chuyện nhỏ.

(defun c:XrefBind ()
  (vlax-map-Collection (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object)))
    '(lambda (b)
       (if (= (vla-get-IsXRef b) :vlax-true)
	 (vl-catch-all-error-p
	   (vl-catch-all-apply 'vla-bind (list b :vlax-true)  ) )  )  )  ))

 

Lisp này rất là hay tuy nhiên chỉ bind được file đang mở. Mình làm với 1 bên kiến trúc, mỗi mặt bằng họ làm 1 file do đó để bind được hết cũng mất rất nhiều thời gian

Mình thấy Lee Mac có 1 lisp rất hay là copy một số đối tượng vào nhiều file mà không cần mở những file đó ra (lisp đính kèm)

Do đó mình nhờ các bạn cải thiện lisp bind trên theo hướng có thể bind bản vẽ mà không cần mở như của LeeMac thì tuyệt vời

Cám ơn các bạn nhiều

P/s: bạn Tot77 đã cải tiến lisp bind trên với 1 lựa chọn là có thể chọn đối tượng để bind hoặc bind tất cả. Các bạn cải tiến lisp của bạn Tot77 theo hướng là không cần mở bản vẽ mà vẫn bind được thì tuyêt nhất

 

http://www.mediafire...rawingsV1-2.lsp

http://www.mediafire...g/bind_xref.lsp


  • 0