Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
digitalwall

Đường dẫn Block

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

Chào các anh!

Em có viết bằng vba chèn block vào bản vẽ. Tạo mỗi block là 1 bản vẽ cad. Sau đó em cho vào 1 foder và dán đường dẫn vào đoạn code để chèn block. Em muốn hỏi là đường dẫn của em là đường dẫn cứng nên nếu dùng máy em thì dc sang máy người khác thì lại phải cop block vào thư mục mà mình viết trong code. Bây giờ muốn viết đường dẫn để cop sang máy nào cũng chạy hết ko cần phai cop block vào đường dẫn cũ thì làm cách nào ạ. Mong các anh chỉ 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

Kiểu gì bạn cũng phải cho nó vào đâu đó. Đơn giản là không thể chèn cái không có được ^^

Bạn có thể thay đường dẫn cố định bằng đường dẫn động, có thể là dvb path của bạn => copy file Block kèm theo marco

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: anh có thể nói rõ hơn cho em biết cách tạo đường dẫn động dc ko ạ. Em cho nó vào foder co dg dẫn là:C:\Program Files\Autodesk\Blocks. Mỗi lần viết code để chèn 1 block vào lại phải khai báo dg dẫn này vao rất bất tiện. Bác nào biết có cách nào hay chỉ cho em 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

@ketxu: anh có thể nói rõ hơn cho em biết cách tạo đường dẫn động dc ko ạ. Em cho nó vào foder co dg dẫn là:C:\Program Files\Autodesk\Blocks. Mỗi lần viết code để chèn 1 block vào lại phải khai báo dg dẫn này vao rất bất tiện. Bác nào biết có cách nào hay chỉ cho em với.

Đầu tiên bạn vào Tool để Add reference : 'Microsoft Visual Basic for Applications Extensibility 5.3'

Sau đó tạo 1 function đại loại như sau :

Function DVBPath() As String
Dim objVBE As VBE
Dim strTemp$
Dim n As Integer
n = 1
Set objVBE = Application.VBE
DVBPath = objVBE.ActiveVBProject.FileName
strTemp = DVBPath
Do Until n = 0
   n = InStr(1, strTemp, "\")
   strTemp = Right(strTemp, Len(strTemp) - n)
Loop
DVBPath = Left(DVBPath, Len(DVBPath) - Len(strTemp))
End Function

Bây giờ bạn cop hêt file thư viện của bạn vào chung 1thư mục với file project DVB (hoặc 1 thư mục con)

=> Mỗi lần chèn Block, đường dẫn sẽ bằng DvbPath & "/Tên thư mục con" (nếu có) & tên file.DWG

Gọi là động vì mỗi lần chạy sub, nó sẽ sinh ra 1 đường dẫn tương ứng với đường dẫn file VBA của bạn đang nằm.

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

Chào các anh!

Em có viết bằng vba chèn block vào bản vẽ. Tạo mỗi block là 1 bản vẽ cad. Sau đó em cho vào 1 foder và dán đường dẫn vào đoạn code để chèn block. Em muốn hỏi là đường dẫn của em là đường dẫn cứng nên nếu dùng máy em thì dc sang máy người khác thì lại phải cop block vào thư mục mà mình viết trong code. Bây giờ muốn viết đường dẫn để cop sang máy nào cũng chạy hết ko cần phai cop block vào đường dẫn cũ thì làm cách nào ạ. Mong các anh chỉ dẫn ạ!

Thấy hơi trễ nhưng cũng trả lời cho bạn nào vào sau xem.

Copy hết mấy file Block đó vào supported path của AutoCAD, hoặc tạo support path đến folder chứa block, trong code ko cần dùng path.

Support path tìm ở đây:

 

ol-img1.gif

 

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

Thấy hơi trễ nhưng cũng trả lời cho bạn nào vào sau xem.

Copy hết mấy file Block đó vào supported path của AutoCAD, hoặc tạo support path đến folder chứa block, trong code ko cần dùng path.

Support path tìm ở đây:

Tuy bạn trả lời trễ nhưng ... vẫn không đúng với yêu cầu của chủ topic :D

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

Tuy bạn trả lời trễ nhưng ... vẫn không đúng với yêu cầu của chủ topic :D

hihi,

thắc mắc của chủ topic là làm sao để copy Block vào máy khác vẫn chạy dc mà ko sửa path trong code -> đừng để path trong code. Muốn vậy thì chép các file Block (bắt buộc phải chép) vào 1 trong support path là dc.

Chỉ là 1 cách thôi, đơn giản dễ dùng. Cách này có 1 ưu điểm là file Block đó có thể được gọi từ nhiều project khác nhau. nếu tự sinh path lúc runtime thì 2 project nằm ở 2 đường dẫn khác nhau sẽ phải có 2 bộ Block khác nhau nằm kèm theo -> dễ bị lỗi khi bạn sửa Block bên này mà lại quên sửa (paste) Block bên kia rolleyes.gif.

Thâ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

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  

×