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

VBA cho AutoCad-Hãy cùng tham gia trao đổi

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

code nào cũng vậy thôi bạn. mình thử tạo 1 userform khác, hoặc 1 project khác. tạo 1 textbox, và cho Run luôn. nhưng lỗi cũng bị thế. bấm mãi mới ra đc 1 chữ. ko biết có phải do CAD ko. mình thử 2 máy đều bị vậy. xài CAD 2011 64 bits.

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

code nào cũng vậy thôi bạn. mình thử tạo 1 userform khác, hoặc 1 project khác. tạo 1 textbox, và cho Run luôn. nhưng lỗi cũng bị thế. bấm mãi mới ra đc 1 chữ. ko biết có phải do CAD ko. mình thử 2 máy đều bị vậy. xài CAD 2011 64 bits.

Tôi ít sài VBA, nhưng nhiều khả năng do bản CAD 64bits.

Các bản CAD 32 bit chạy VBA bình thường.

  • 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

Nhờ Anh Em giúp mình với :

Mình vừa chuyển đổi file Exell sang Autocad Electrical . Khong biết có cách nào để tự động chuyển text sang ô màu xanh không ?xin giúp E với

http://www.cadviet.com/upfiles/3/125972_page_03_battery_box.dwg

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ó 1 đoạn code add text như bên dưới. làm thế nào để đổi font của nó nhỉ. vd mình muốn đổi font nó sang Arial.

 

 

 

Sub AddMtext()

 

Dim MTextObj As AcadMText

Dim point(0 To 2) As Double

Dim width As Double

Dim text As String

point(0) = 0#: point(1) = 10#: point(2) = 0#

width = 10

text = "ABC"

 

Set MTextObj = ThisDrawing.ModelSpace.AddMText(point, width, text)

ZoomAll

 

End Sub

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ó 1 đoạn code add text như bên dưới. làm thế nào để đổi font của nó nhỉ. vd mình muốn đổi font nó sang Arial.

 

 

 

Sub AddMtext()

 

Dim MTextObj As AcadMText

Dim point(0 To 2) As Double

Dim width As Double

Dim text As String

point(0) = 0#: point(1) = 10#: point(2) = 0#

width = 10

text = "ABC"

 

Set MTextObj = ThisDrawing.ModelSpace.AddMText(point, width, text)

ZoomAll

 

End Sub

Dùng thuộc tính Height của đối tượng acadMtext ví dụ

Sub Addmtext()
    Dim mtxt As AcadMText
        With ThisDrawing
            p1 = .Utility.GetPoint()
            Set mtxt = .ModelSpace.Addmtext(p1, 10, "ABC")
            mtxt.Height = 100
        End With
End Sub

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à Autocad đã có ngôn ngữ lisp. Còn dùng VBA sao không dùng cho Solidwork?

Mình cũng phải làm việc với bản vẽ 3D nhiều mà có nhiều cái lặp lại mà không biết cách tạo marco cho solidwork.

Mà autolisp cho cad là quá đủ rồi sao còn phải dùng VBA?

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à Autocad đã có ngôn ngữ lisp. Còn dùng VBA sao không dùng cho Solidwork?

Mình cũng phải làm việc với bản vẽ 3D nhiều mà có nhiều cái lặp lại mà không biết cách tạo marco cho solidwork.

Mà autolisp cho cad là quá đủ rồi sao còn phải dùng VBA?

Không thể so sánh Lisp với VBA được : Lisp chỉ là 1 ngôn ngữ thông dịch , còn VBA là ngôn ngữ lập trình theo hướng đối tượng ==> nói đến đây nếu bạn có thể hiểu ưu điểm và nhược điểm của tứng cái rồi đúng 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

Dùng thuộc tính Height của đối tượng acadMtext ví dụ

Sub Addmtext()
    Dim mtxt As AcadMText
        With ThisDrawing
            p1 = .Utility.GetPoint()
            Set mtxt = .ModelSpace.Addmtext(p1, 10, "ABC")
            mtxt.Height = 100
        End With
End Sub

 

thuộc tính height chỉ thay đổi chiều cao text thôi. ko thay đổi font. mình muốn font nó thay đổi thành một font khác, theo cách làm bằng tay thì thay đổi mặc định của CAD, nhưng mình muốn thay đổi bằng phần mề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

mình có vấn đề này mong mọi người giúp đỡ..mình cài cad 2007, sau khi cài xong nó hiện lên là giấy phép hết hạn..trước đó mình co tự down 1 bản cad về xài nhưng chưa có crack...ai biết cách nào khắc phục giúp mình với,,tks all

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

Sau 1 thời gian tìm hiểu thì tôi đã hoàn tất Code có thể tách bản vẽ và in tự động nhiều bản vẽ nằm trong 1 bản model hoặc layout không biết ai cần dùng không thì tôi sẽ cho

  • 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

Sau 1 thời gian tìm hiểu thì tôi đã hoàn tất Code có thể tách bản vẽ và in tự động nhiều bản vẽ nằm trong 1 bản model hoặc layout không biết ai cần dùng không thì tôi sẽ cho

Rất hoan nghênh bác chia sẻ cùng anh em.

Bác gửi cho em tham khảo 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

đối với việc in ấn thì bên công ty mình dùng lệnh publish có sẵn trong cad. In vài trăm bản vẽ chỉ cần 2 3 cái click chuột thì liệu chương trình của bạn có hay hơn đc ko. Bạn chia sẽ code lên cho mọi người tham khảo có vẽ hay 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

đối với việc in ấn thì bên công ty mình dùng lệnh publish có sẵn trong cad. In vài trăm bản vẽ chỉ cần 2 3 cái click chuột thì liệu chương trình của bạn có hay hơn đc ko. Bạn chia sẽ code lên cho mọi người tham khảo có vẽ hay hơn đó  :)

bạn không hiểu rồi, publish chỉ print được nhiều bản vẽ nhưng mồi file là 1 bản vẽ. còn tôi có thể print tuỳ ý nhiều bản vẽ mà cùng nằm trong 1 file thôi. hoặc trong model hoặc trong paper . nó giống như code này : http://www.cadviet.com/forum/topic/42078-da-xong-in-nhieu-ban-ve-trong-model-ma-chi-can-1-layout/

nhưng tôi viết bằng vba và có điểm khác nữa là có thể tách tự động toàn bộ bản vẽ đấy riêng biệt, và có thể in trong nhiều bản trong layout. còn code đường dẫn trên chỉ in được nhiều trong model thôi :). ai cần thì liên hệ với tôi theo :

email: bavinh.bavinh@gmail.com

skype: p.bavinh1

ps: mục đích của tôi là muốn chia sẻ vba cho mọi người vì code tôi hiện nay có ít người dùng quá nên thấy hơi phí, có thể ai đấy sẽ cần. ngoài ra tôi còn một số code xuất excel vào cad

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ác bác cho em hỏi làm sao để code một nút commandbutton đê mở form khác, em định viết một ct tính thép xong vẽ = vba for cad, dùng nhiều form mà ko bit mở form = comman kiểu gi ạ, 

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

Dung 1 sub gọi form đó lên

Làm 1 lisp gọi sub đó lên là ok

Ví du:

'1.Thu tuc goi Form có tên là Userform 1

sub aa()

Userform1.show

end sub

'2.Lisp gọi form

(defun c:goi()

(command "vbarun" "aa")

(princ)

)

;Cai dat
(defun c:ds()
(Command "Vbarun" "Caidat")
(grtext -1 "0968.870.268") 
(princ) 
)
;Cai dat
(defun c:ds()
(Command "Vbarun" "Caidat")
(grtext -1 "0968.870.268") 
(princ) 
)
(defun c:TG()
(alert "\n Name:Nguyen Ngoc Son \n Phone: 0968.870.268")
(grtext -1 "Nguy\U+1EC5n Ng\U+1ECDc S\U+01A1n")
(princ) 
)
;Cai dat
(defun c:ds()
(Command "Vbarun" "Caidat")
(grtext -1 "0968.870.268") 
(princ) 
)

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

Sau 1 thời gian tìm hiểu thì tôi đã hoàn tất Code có thể tách bản vẽ và in tự động nhiều bản vẽ nằm trong 1 bản model hoặc layout không biết ai cần dùng không thì tôi sẽ cho

Ban gui vao Mail cho minh dk Mail minh la : ngvdai.nuce@gmail.com cam on ban nhieu nhe

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

Hi mọi người có thể giúp em vấn đề này không.

http://www.cadviet.com/forum/topic/149680-hoi-them-vai-v-n-xung-quanh-cad3d-b-ng-vba/

em đã post lên diễn đàn chắc à không đúng chủ đề nên khong thấy ai trả lời cả

hi vọng topic có thể giúp e được phân nào

 

thanks all

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

Vote up 

Xin chào ketxu!

Mình có một đoạn mã VBA nhờ bạn chỉ điểm một vài nội dung trong đó. Mã VBA như sau:

 

Public Function Processor() As String
Dim GetSN As Variant
Dim SubGetSN As Variant
Dim wmi As Variant
Dim str1 As String
Dim str3() As String
Dim str4 As String
Dim str5 As String
Dim va As Variant
Dim i As Integer
Dim j As Integer
    On Error Resume Next
    ' Get the Windows Management Instrumentation object.
    Set wmi = GetObject("WinMgmts:")
 
    ' Get the "base SubGetSNs" (mother SubGetSNs).
    Set GetSN = wmi.InstancesOf("Win32_ComputerSystemProduct")
    For Each SubGetSN In GetSN
        
        str1 = str1 & SubGetSN.UUID
     
    Next SubGetSN
    If Err <> 0 Then
    Err.Clear
    Processor = "481455476449"
    Else
    
    If Len(str1) > 0 Then str1 = _
        Trim$(str1)
    str3 = Split(str1, "-")
 
    For Each va In str3
    str4 = str4 & va
    Next
 
    j = Len(str4) \ 8
    For i = 1 To j * 8 Step 8
    str5 = str5 & Asc(Mid(str4, i, 1)) + Asc(Mid(str4, i + 1, 1)) + 1 + Asc(Mid(str4, i + 2, 1)) _
    + Asc(Mid(str4, i + 3, 1)) - 1 + Asc(Mid(str4, i + 4, 1)) + Asc(Mid(str4, i + 5, 1)) + 1 + Asc(Mid(str4, i + 6, 1)) _
    + Asc(Mid(str4, i + 7, 1))
    Next
    
    Processor = str5
    End If
End Function
  • Vote giảm 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

Sử dụng select Previous bằng việc thêm dòng lệnh đầu cú pháp:

ThisDrawing.SendCommand "_select" & vbCr & "_P" & vbCr & vbCr

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ại sao không dùng Slect Previous để mình lấy lại đối tượng vừa select xong, bằng việc thêm cú pháp ở đầu như sau:

ThisDrawing.SendCommand "_select" & vbCr & "_P" & vbCr & vbCr

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

×