Lập trình VBA trong GstarCAD

Author
Lập trình VBA trong GstarCAD​


Câu 1, làm thế nào để Load và Run VBA trong GstarCAD
Trả lời:
Từ Menu tool. Chúng ta có 4 cách để load và run VBA
1- Chạy trực tiếp VBA
2- Load tới file có đuôi .vbi
3- Load từ VBA Manager
4- Có thể mở VBA Edid và Run


Câu 2, Làm thế nào để mở VBA editor
Trả lời:
có 2 cách để mở VBA editor để sửa chữa

1, Bạn có thể luôn luôn mở được bằng tổ hợp phím Alt + F11

Đây là cách 2.

Câu 3 – Có thể chạy VBA của AutoCAD trên GstarCAD được không?
Trả lời:
1- Thông thường bạn phải chuyển toàn bộ những đoạn lập trình sang GstarCAD có thể bằng copy hoặc save từng phần của VBA trong AutoCAD sang GstarCAD

Câu 4- làm thế nào để di chuyển rễ dàng VBA trong AutoCAD sang GstarCAD
Trả lời:
Thường có 3 bước sau:
1- Acad -> Gcad
2- Ac -> Gc
3- Modify automation interface


Đó là những bước cơ bản để vào lập trình VBA trong GstarCAD và có thể chuyển từ AutoCAD sang.
rất mong nhận được sự đóng góp của các thành viên trong diễn đàn về VBA trong GstarCAD
 
Last edited by a moderator:
H

huyhoangute

Cho em hỏi cách tạo một Menu mới trong Gstarcad
Đây là code tạo Menu trong Autocad em đã test và chạy ok:

'MÃ LệNH CHO “LUA CHON 1”
Sub Macro1()
MsgBox "Ban da chon Lua chon 1"
End Sub
'MÃ LệNH CHO “LUA CHON 2”
Sub Macro2()
MsgBox "Ban da chon Lua chon 2"
End Sub
'MÃ LệNH CHO “LUA CHON 3”
Sub Macro3()
MsgBox "Ban da chon Lua chon 3"
End Sub
Sub VD_TaoMenu2()
' Định nghĩa biến và tham chiếu đến MenuGroup đầu tiên
Dim currMenuGroup As AcadMenuGroup
Set currMenuGroup = ThisDrawing.Application.MenuGroups.Item(0)

' Tạo trình đơn (Tạo PopupMenu)
' và xử lý tình huống khi trình đơn đã được tạo
Dim newMenu As AcadPopupMenu
On Error Resume Next
Set newMenu = currMenuGroup.Menus.Add("Trinh don tuy bien")
If Err <> 0 Then
Set newMenu = currMenuGroup.Menus("Trinh don tuy bien")
Dim menuEnt As AcadPopupMenuItem
For Each menuEnt In newMenu
menuEnt.Delete
Next
End If


' Khai báo biến cho PopupMenuItem
Dim newMenuItem As AcadPopupMenuItem
Dim openMacro As String

' Tạo PopupMenuItem và gán mã lệnh tương ứng
openMacro = "-vbarun Macro1 "
Set newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, "Lua chon 1", openMacro)

openMacro = "-vbarun Macro2 "
Set newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, "Lua chon 2", openMacro)

openMacro = "-vbarun Macro3 "
Set newMenuItem = newMenu.AddMenuItem(newMenu.Count + 1, "Lua chon 3", openMacro)

' Hiển thị trình đơn vừa tạo trên thanh trình đơn (MenuBar)
currMenuGroup.Menus.InsertMenuInMenuBar "Trinh don tuy bien", ""
End Sub

Nhưng em đã thay đổi chỗ nào có Acad thành Gcad rồi đưa code sang Gstarcad nhưng Gstarcad không chạy được Menu đó.
Ai biết tại sao và cho em code mới tạo Menu trong Gstarcad được không?
Xin chân thành cảm ơn và hậu tạ nếu có thể
 
Ðề: Re: lập trình VBA trong GstarCAD

cho em hỏi tác dụng của VBA trong autocad được không ạ. câu hỏi hơi bị "gà" nhưng em chưa thấy được ứng dụng của nó.
 
H

huyhoangute

Ðề: Re: lập trình VBA trong GstarCAD

tác dụng của VBA:
ví dụ đơn giản là bạn có một bảng exel với các số liệu chiều dài là 5 và chiều rộng là 3 sau đó bạn lưu lại
sử dụng dụng VBA trên autocad đọc dữ liệu file exel đó và tự động vẽ ra hình chữ nhật có chiều dài là 5 và chiều rộng là 3. Nếu bạn thay đổi dữ liệu trên file exel đó thì bản vẽ tạo ra cũng thay đổi!
 
Ðề: Re: lập trình VBA trong GstarCAD

nghĩa là VBA làm nhiệm vụ kết nối excel với autocad, ví như bài tập vẽ đĩa xích của chú DCL trong SW? em thấy trong SW cũng có VBA dù nó có thể đọc trực tiếp từ excel, anh có thể giúp butchi hình dung rõ ràng hơn về nó được không?
 
C

CadFirst

Ðề: Re: lập trình VBA trong GstarCAD

Cho em hỏi cách tạo một Menu mới trong Gstarcad
Đây là code tạo Menu trong Autocad em đã test và chạy ok:

........
Nhưng em đã thay đổi chỗ nào có Acad thành Gcad rồi đưa code sang Gstarcad nhưng Gstarcad không chạy được Menu đó.
Ai biết tại sao và cho em code mới tạo Menu trong Gstarcad được không?
Xin chân thành cảm ơn và hậu tạ nếu có thể
Chào bạn,
Chúng tôi đã check code của bạn và chạy trên GstarCAD 2010 hiển thị như sau:



Việc hiệu chỉnh khi chuyển đổi chương trình VBA từ AutoCAD sang GstarCAD, sau khi bạn đổi từ khóa Acad thành Gcad là chương trình đã OK. Tuy nhiên, nó không hiển thị Menu của bạn trên thanh công cụ vì dòng lệnh cuối của bạn không thích hợp.

' Hiển thị trình đơn vừa tạo trên thanh trình đơn (MenuBar)
currMenuGroup.Menus.InsertMenuInMenuBar "Trinh don tuy bien", ""


Thay vào đó bạn phải sử dụng:
' Hiển thị trình đơn vừa tạo trên thanh trình đơn (MenuBar)
newMenu.InsertInMenuBar (thisDrawing.Application.MenuBar.Count + 1)

Chỉ cần điều chỉnh như vậy, toàn bộ chương trình của bạn sẽ chạy tốt!

Chúc bạn thành công!

P/s: Có bất cứ vấn đề gì về GstarCAD hãy đừng ngại trao đổi tại đây hoặc liên hệ trực tiếp với chúng tôi - GstarCAD Vietnam!
 
Last edited by a moderator:
H

huyhoangute

Ðề: Lập trình VBA trong GstarCAD

Thanks các anh bên VIHOTH nhé! Bọn em đang demo dự án cho SINGAPORE, nếu họ ok thì em sẽ qua bọn anh mua software! Hy vọng sớm gặp lại các anh.
 
C

CadFirst

Ðề: Lập trình VBA trong GstarCAD

Thanks các anh bên VIHOTH nhé! Bọn em đang demo dự án cho SINGAPORE, nếu họ ok thì em sẽ qua bọn anh mua software! Hy vọng sớm gặp lại các anh.
Vâng, thật là một thông tin vui cho chúng tôi.

Hy vọng các bạn và anh em bên đó sớm thuyết phục được khách hàng.

Trong quá trình demo liên quan đến GstarCAD hay các giải pháp CAD/CAM khác, nếu có vấn đề gì cần hỗ trợ các bạn cứ liên hệ trực tiếp với ViHoth Corp, chúng tôi sẽ hỗ trợ hết sức trong khả năng có thể.

Ngoài ra, nếu trong quá trình demo, có thể 1 số lỗi phát sinh do bản GstarCAD Trial. Các bạn cứ confirm lại với chúng tôi để check trên License chính thức.

Chúc các bạn thành công!

Chúng tôi cũng hy vọng chúng ta sẽ sớm có cơ hội hợp tác.

Trân trọng,
 
H

huyhoangute

Ðề: Lập trình VBA trong GstarCAD

em lại bị phát sinh vấn đề nhờ mấy anh VIHOTH chỉ bảo với.
Trong AutoCAD nếu ta lưu file VBA là acad.dvb rồi chép vào nơi cài đặt của AutoCAD thì khi khởi động AutoCAD file VBA đó sẽ load cùng (nhấn alt+F11 thấy có code trong đó).
Cho em hỏi là làm thế nào để có thể load file VBI khi khởi động Gstarcad??
Em đã thử đổi tên là Gcad.vbi hoặc Icad.vbi nhưng khi khởi động Gstarcad nhấn Alt+F11 mà không thấy gì!
 
C

CadFirst

Ðề: Lập trình VBA trong GstarCAD

em lại bị phát sinh vấn đề nhờ mấy anh VIHOTH chỉ bảo với.
Trong AutoCAD nếu ta lưu file VBA là acad.dvb rồi chép vào nơi cài đặt của AutoCAD thì khi khởi động AutoCAD file VBA đó sẽ load cùng (nhấn alt+F11 thấy có code trong đó).
Cho em hỏi là làm thế nào để có thể load file VBI khi khởi động Gstarcad??
Em đã thử đổi tên là Gcad.vbi hoặc Icad.vbi nhưng khi khởi động Gstarcad nhấn Alt+F11 mà không thấy gì!
Hi bạn,
Việc bạn đặt tên không quan trọng, vì bạn không chỉ có 1 chương trình đó mà có thể có rất nhiều chương trình.

Các bạn cứ lưu tên file bình thường dạng *.vbi, *.lisp,...

Sau đó, các file nào các bạn muốn nạp lúc GstarCAD khởi động, các bạn hãy add chúng vào Start group list.


Thông thường, nếu không thực sự cần thiết mình sẽ không cho các chương trình lập trình ngoài tự động chạy khi GstarCAD khởi động vì nó sẽ làm quá trình khởi động bị chậm hơn.

Chúc các bạn thành công.

Ngoài ra, trong trường hợp cần thiết cần hỗ trợ các bạn có thể liên hệ:
Email: info@vihoth.com
Hotline: 0983.331.083
 
H

huyhoangute

Thanks mấy anh VIHOTH một lần nữa nha!
Ý tưởng của em thực hiện trên AutoCAD là tạo file acad.VAB và acad.lsp
file acad.lsp được tạo từ file text với nội dung:

(defun S::STARTUP()
(command "-vbarun" "VD_TaoMenu2")
)

sau đó tạo bộ cài đặt khi setup sẽ đưa 2 file trên vào bộ cài của Autocad để load như một
.

Nhờ sự hướng dẫn của mấy anh bên VIHOTH em đã tạo được bộ cài đặt tương tự trên Gstarcad
Sau đây em xin trình bày một chương trình nhỏ để các bạn có thể hình dung VBA ứng dụng trên GstarCAD nhé: Link down http://www.mediafire.com/?1aulh3od1dv2l
Chương trình này chỉ chạy trên Gstartcad 2010 nhé! khi chạy bài tập nhỏ trên các bạn nhớ chọn Enable Macros nhé!
 
H

huyhoangute

Tiện đây ai có tài liệu VBA cho Gstarcad thì post lên chia sẻ cho mọi người nhé! vì phần help trong bản Trial không được đầy đủ lắm.
Mình nghĩ hiện nay và sau này Gstarcad sẽ dần dần chiếm được thị trường của AutoCAD bởi giá thành Gstarcad rẻ hơn rất rất nhiều so với Autocad mà những tính năng của Gstarcad thực sự là 99% là giống AutoCad.
 
C

CadFirst

Ðề: Re: Lập trình VBA trong GstarCAD

Tiện đây ai có tài liệu VBA cho Gstarcad thì post lên chia sẻ cho mọi người nhé! vì phần help trong bản Trial không được đầy đủ lắm.
Mình nghĩ hiện nay và sau này Gstarcad sẽ dần dần chiếm được thị trường của AutoCAD bởi giá thành Gstarcad rẻ hơn rất rất nhiều so với Autocad mà những tính năng của Gstarcad thực sự là 99% là giống AutoCad.
Rất cảm ơn những nhận xét của các bạn,

Hiện tại, phiên bản GstarCAD 2010 còn rất nhiều hạn chế với các ngôn ngữ lập trình từ bên ngoài như VBA, GRX,... Tuy nhiên, trong phiên bản sắp tới 2011 (dự kiến sẽ xuất bản vào cuối năm 2010) thì các tính năng đó sẽ chạy "mượt mà" hơn! Rất mong sẽ được các bạn tiếp tục ủng hộ.

Ngoài ra, trong quá trình tìm hiểu ứng dụng GstarCAD, công ty ViHoth rất mong sẽ nhận được bản Application Report ghi nhận toàn bộ các ưu, nhược điểm mà các bạn đánh giá về GstarCAD. Đây sẽ là tài liệu quý giá để Hãng tiếp tục cải thiện và nâng cấp phần mềm.

Nhóm của bạn Huy Hoàng cũng như các bạn quan tâm đến VBA và Lisp trên GstarCAD có thể email cho VIHOTH (info@vihoth.com) hoặc download tại đây:
http://www.mediafire.com/?xd4t6be0hd88519
http://www.mediafire.com/?p1ujeql6cq6hyvr

Chúc các bạn thành công!
 
H

huyhoangute

Ðề: Lập trình VBA trong GstarCAD

Em tạo một đoạn code sau:
Sub Example_RemoveItems()
' Create the new selection set
Dim ssetObj As GcadSelectionSet
Set ssetObj = thisDrawing.SelectionSets.Add("TEST_SELECTIONSET")
ssetObj.SelectOnScreen
' Remove two of the objects from the selection set
Dim ellObj As GcadEllipse
Dim circObj As GcadCircle
Dim removeObjects(0 To 1) As GcadEntity
Set removeObjects(0) = ellObj
Set removeObjects(1) = circObj
ssetObj.RemoveItems removeObjects
' Thay doi color
Dim entry As GcadEntity
For Each entry In ssetObj
entry.color = gcBlue
entry.Update
Next entry

End Sub

Diến giải đoạn code trên: đầu tiên add tất cả các đối tượng lựa chọn vào tập đối tượng bằng cách quét trên màn hình sau đó remove 2 đối tượng là elip và đường tròn trong tập, rồi đổi màu các đối tượng còn lại trong tập đó.
Nhưng khi chạy code trên thì máy tính báo lỗi và thoát luôn chương trình Gstarcad
Cho em hỏi nguyên nhân tại sao? và code lại cho em với!
 
H

hoangtuCAD

Ðề: Lập trình VBA trong GstarCAD

Trong Gcad có thể thêm Menu vào Menubar như các anh nói, nhưng Gcad không hỗ trợ thêm vào Menu khi click chuột phải vào màn hình phải không? Hy vọng trong bản GCAD2011 sẽ hỗ trợ VBA tốt hơn nữa.
Đây là ví dụ thêm Menu vào Menu khi click chuột phải trên CAD:
Private Sub AcadDocument_BeginShortcutMenuDefault(ShortcutMenu As AutoCAD.IAcadPopupMenu)
On Error Resume Next
'Add a menu item to the cursor menu
Dim newMenuItem As AcadPopupMenuItem
Dim openMacro As String
openMacro = Chr(27) + Chr(27) + Chr(95) + "trim" + Chr(32) + Chr(32)
Set newMenuItem = ShortcutMenu.AddMenuItem(0, "&Menu moi", openMacro)
End Sub
View attachment 3049
 
Top