QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
4天前
全站
goto3d 说: 版主微信号:caivin811031;还未入三维微信群的小伙伴,速度加
2022-07-04
查看: 5350|回复: 21
收起左侧

[原创] 浅谈MC—VBScript自动化语言

[复制链接]
发表于 2019-5-24 13:57:38 | 显示全部楼层 |阅读模式

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 piaofcu 于 2019-5-25 11:01 编辑
8 T8 L! P& K! n5 t6 V
0 z6 l6 S- H- P1 A! a      VBScript是Visual Basic Script的简称,即 VB 脚本语言,缩写VBS。它是微软环境下的一种轻量级的解释型语言。注意形容词:轻量级, 解释型' }. {) Q/ C4 r: e2 v3 y1 ~
      大部分软件都支持VBScript编程。(如AUTOCAD中的AUTOLIST, Office中的VBA也类似...)
) Q1 M  m: K8 O- y
1 d; U3 K8 l  B  ]# r+ }+ h( [; v4 ?      1. 首先了解一下,VBScript能干什么?   在你使用软件的过程中,经常会有一些重复的操作。假如可以录制一套操作过程(宏),并保存下来,然后在其它需要用到的文件中调用,以减少工作量,那么实现这个过程就是VBScript编程。(为什么不是直接录制后调用呢?因为程序仅是程序, 不是人工智能,有很多细节和错误并不能分辩,只有通过编程语言才能将之清晰的表达出来。)
  F$ m6 J8 R& c, [7 D* Z$ a! v: P/ d( Y; Y$ w6 H4 a. S' |9 ~+ L
      VBScript脚本语言特点之一是它只需要被解释而不是编译(如C / C ++),故用户编写VBScripts,只需要文本编辑器(例如:记事本)以及一些VBScript(或Visual Basic或Visual Basic for Applications)的基础知识即可,受众面广大。, F- C# x! I+ R9 [3 I
     大部分软件都使用C/C++编写,包括MC。而一般的二次开发,使用C/C++是一个最佳选择,软件会提供相应的接口使用户能够通过C/C++仿问软件。但是使用C/C++编程并不一项简单的工作,它需要你有大量的C/C++的编程知识(头文件,数据结构,内存,编译器..)... 简单点说,给您一份二次开发的操作过程文档,初学者也并不一定能通过C/C++做出来, 而不出错。但VBScript不同,它只有基本结构,简易的数据类型。你可能需要1~3年掌握并使用C/C++写出一个程序, 但可能仅需要1~3个月,亦或1~3天就能用VBScript写出一个简单的程序。
9 r. o/ k0 Y8 Z
! m7 z: c7 C6 t! \: L. w    2. Mastercam 中的VBScript# _- ?/ |# I, `

8 t+ T' {1 _- o, t) w1 z- e     从Mastercam V9.1开始提供VBScript工具,目的是向更广泛的受众开放编程。任何人都可以使用此脚本语言自动执行Mastercam中的许多任务,例如几何创建和刀具路径生成。
/ p! m, D  {  W     
1 Z, x* B$ M  H# |$ G" i" |     看到这里,请你先不要高兴的太早。请谨记VBScript的另一特点:轻量级, 并不是所有的任务(操作)都可以通过它来执行。(其可操作范围远不及C / C ++, 当然其难度也远远低于C / C++ )( H$ S$ ?* U( V5 W; C# _

+ z' v5 ~6 s6 Q4 ^4 Q2 l     3. 若想了解VBScript, 该从哪里开始?  ^9 e  `* s, v
     5 v" F. e$ s' R, Z  a
       3.1 Microsoft 帮助文档 (以下帮助文档 可以在Mastrercam VBScript编辑器中帮助中打开链接)。
! P. M  \- o. k8 i* u8 o. s0 L            若您没有一点基础,那么MS 2001年发布的帮助文件“Script56.chm” 可能是你开始熟悉VBScript语法的好地方。有一个好消息是因为这个chm文件发布较早,所以有翻译后的中文版可供 下载 阅读。(图 S0 )            
% L- J" g! h- d/ M0 y5 `              http://www.3dportal.cn/discuz/forum.php?mod=attachment&aid=MjM0MDkxMXwxNWYyZDdjM2FhMzQ0NTAyNDY1MDViODNiOWVmZjUzY3wxNzE4NTQyODY0&request=yes&_f=.png
1 ]# j, O" Y, _; H- R% f% ?" X* \& Y6 k% c" [* Q0 a
            而有关使用VBScript自动化的Mastercam文档,在 "MC安装目录\help\VBSCRIPT.Htm" 中可供查询参阅。" X0 \3 c. r$ b! X% G- l

( a6 d* @% \* E            注意:MS和MC中的VBScript解释器有所不同,MC中的语法要求更加严格一些,所以从  参阅大量VBS示例  开始也许是一个很好的选择 (3.2)。  N* p- l, n1 X

/ ^5 u% V4 \' m+ X7 S6 S' r        3.2 VBS示例文件
* a7 p) ^" s9 |7 |, R9 h1 W' h' ?' U
       每个版本的Mastercam都会提供 大约30个VBS示例文件可供查询,参考。! U" z/ ~8 ^. k! o0 ~
       其路径位于: - S& j2 {& k' W# ^3 U7 W- w: M
               <v9>   :  X:\Mcam9\VB\           (v版本位于安装目录VB文件夹下)) E  F; Q( v$ i8 H" u
                <X>    :  Shared Mcamx*\VB\    (X版本位于共享目录VB文件夹下)- ^* _3 i, d% k- l. h0 s

9 r5 s7 B4 g# K5 Q       这些文件都可以通过记事本打开查看。
' @7 G7 K% Y$ M1 ^; d+ ^# x  n, X8 K4 D+ k; J
     4. 在Mastercam界面中,从哪里进入VBScript?
/ h: h$ H' T) N4 @1 S. N         v9 中两种方法可进入:1 ^: j: j: {8 f9 f  ?% z
         (1) Main Menu > Create >Next menu >Add-ins >McamVB*& Y3 Y3 U; n6 P/ D$ f! V
         (2) Alt+C > MCAMVB.DLL
$ W6 M- u; l% T- G8 a8 f/ M; T( o! M& P  K; S5 A
         X版本以 X6为例:* ^, Z/ }( J7 b' F
         菜单 > 设置 >VB脚本' {8 `1 S- c: _+ i9 `, j5 M- t
        "VBScript编辑器" 界面如下:(图 S1)+ d# G' [' Y4 _/ A; k
         http://www.3dportal.cn/discuz/forum.php?mod=attachment&aid=MjM0MDkxMnxhMjc3YWRkMjlkYjgxYzBmNzYzN2Q3ZmIyYWVlM2JiOHwxNzE4NTQyODY0&request=yes&_f=.png/ D8 M$ |6 a, d8 j

, Q; f; D0 U9 B; {         你可以在其中新建、编辑、或运行一个VBScript文件。
' o; f$ V- j" y4 S+ y$ _# x/ x" Z8 k) \
         PS: 如果觉得进入VBScript的方法有些麻烦,建议你在MC中设置快捷键 'F12' 指向此功能。9 S8 p' c! o+ o7 [6 L
7 C! j' o2 `4 e- Y$ E# j
     5. 现在,让我们开始进入MC中的VBScript吧。9 L/ [- a) o2 B5 f6 N' E
  \8 ~( a0 o3 [# a7 u+ T
        5.1 了解VBScript界面和基础知识。0 ~+ _/ X+ g( c! }
        在"VBScript编辑器"中点击 "New" (新建), 会弹出界面:(图S3)
3 J- ^9 g! s+ W0 w9 U' z; y/ \
& ]! E! D. R0 E       http://www.3dportal.cn/discuz/forum.php?mod=attachment&aid=MjM0MDkyMXw0YzRjYzExZTQyYWNkMGI0YzFlNDkyZjdmMWVmNGU3NHwxNzE4NTQyODY0&request=yes&_f=.png
$ G5 s1 F& x% ~+ A* \' W9 ?
7 w( T6 q7 I) z) o( a! U8 I: S' S0 ]        (1)在帮助中你可以查看当前MC版本VBScript所支持的自动化功能
, m1 f! @  P3 u+ j  b2 K/ }! u8 ~* _- S$ `, k; S; P; ?
        http://www.3dportal.cn/discuz/forum.php?mod=attachment&aid=MjM0MDkxNHwwMDg5Y2MxOTQ4MzZmYTI2YzUyZDg1MGUxZjU5MWM4NnwxNzE4NTQyODY0&request=yes&_f=.png
% k& O' V& J/ J$ v; x5 _7 d         , w+ S% S# m* Q% |( }
        在VBScript语言中,有一个命令RunMastercamCommand可以访问大部分MC自带的命令,是一个用途较广的功能,而其所能访问的范围在帮助文件中有说明。
- L9 F- |$ n6 b6 l# p2 T7 e
( C; _' B% J0 d2 j4 w        http://www.3dportal.cn/discuz/forum.php?mod=attachment&aid=MjM0MDkxNXw2NzE5NzNkNTY4MzBiOTBiNDU2YjdjN2I4YjQ4MTc4YXwxNzE4NTQyODY0&request=yes&_f=.png
/ h$ P' A0 p! j, H2 ~        http://www.3dportal.cn/discuz/forum.php?mod=attachment&aid=MjM0MDkxNnwzMmRhYjkyZGQ2MGYwZThiODY5MGFmYWI2Njc0YWE5ZnwxNzE4NTQyODY0&request=yes&_f=.png
# n/ s4 [' S* U1 M4 F2 {* W# M        http://www.3dportal.cn/discuz/forum.php?mod=attachment&aid=MjM0MDkxN3w2Mjc4ODRjNzgzMThhYzBkYWZlYTcyZWI1YTM2YTQ5NHwxNzE4NTQyODY0&request=yes&_f=.png
3 I) X' w6 L% J! D! j- r0 D! L        http://www.3dportal.cn/discuz/forum.php?mod=attachment&aid=MjM0MDkxOHw1N2JlYjEwNzdiODViN2ZiNDIwMWEzYjVmMGE3NDk3MHwxNzE4NTQyODY0&request=yes&_f=.png
4 r7 }6 v+ \- n" z7 j) R        5 i" |0 |, o  ~! ]
       (2)VBScript编辑器中的常用快捷键,可引导编程。9 M* t6 _. @, |8 [" j

, _) T% V) Y& f" a        http://www.3dportal.cn/discuz/forum.php?mod=attachment&aid=MjM0MDkxOXw1YWM5YjQ5NjNkZDUzZDc0MDZjM2VhZDc0OGJiM2Y0N3wxNzE4NTQyODY0&request=yes&_f=.png; h! k; E1 R" W/ |9 l9 `
        http://www.3dportal.cn/discuz/forum.php?mod=attachment&aid=MjM0MDkyMHxlYzU0ZGZlMWQ2ZTgwMWMzODdlZjYxOTA4YzA5ZGJhOXwxNzE4NTQyODY0&request=yes&_f=.png
8 N0 m3 W. t5 H( |0 c0 O4 d0 y( A
        5.2 下面,使用一个范例来熟悉VBScript,录入蓝色部分代码(单引号‘之后的内容可以不管)。  [或将附件a1.txt 下载后改扩展名为a1.vbs,在VBScript中调用]  
1 y$ J5 y3 t) Y2 f* ?
  1. Sub Main()
    , E' y4 Z2 w* d5 w5 L9 Q2 C
  2. $ B& U) P, a- O7 p6 t
  3.     Dim mcColor_Current                        '定义变量mcColor_Current(Dim 是关键字,定义变量)5 y% W! S) c" f" \0 [" r: R) k) H
  4.     mcColor_Current=GetBackGroundColor        '获取当前MC背景颜色/ l% j/ u5 k7 E. a. w" d( j2 M* b
  5. 4 C1 @+ H5 A  Z, l3 _) j
  6.     ShowString("现在我想把屏幕背景弄成白色.")          '显示对话框
    + \' F  g- B- ?/ T  s( C7 V, r
  7.    
    ' {$ X4 k2 L" z' y, E3 O+ A- h
  8.    Call SetBackGroundColor(mcCOLOR_WHITE)        '变更背景颜色为白色
    ) J' e/ E7 O. u% D" M, f
  9.    Call RepaintScreen(False)                        '刷新屏幕: 一般更改屏幕内容后需要刷新屏幕: b# ~# e9 L6 L) p" L" T
  10.    Call RunMastercamCommand("clipbrd")        '调用内置命令:截图
    ! l* O1 R/ o" f' l( U& B- m/ F/ }7 W' E
  11.            : h* x- }. W3 l2 P
  12.    If askYesNo("是否恢复原有背景色?")=1 Then        '询问是否恢复原有MC背景颜色: =1(点击Yes)恢复( C5 {  ^: z/ T2 D9 a0 K
  13.       Call SetBackGroundColor(mcColor_Current)        2 e/ C0 L& i: R# I) l; `4 F
  14.       Call RepaintScreen(False)
    8 Z( v- g0 Y& U3 D! @: m
  15.    End If/ _3 |" ?  q, N6 C/ m0 @( J
  16.           n2 ~8 q2 `8 Z3 U2 F+ C
  17. . R# S9 f0 f2 g
  18. End Sub
复制代码

! k! J8 d+ z* t0 c       存档后,调用并运行它,看看会发生什么?: [+ m. J7 w: h! J. v0 s. b

! ~$ @/ ?& E; {6 o      首先弹出对话框,点击确定后,工作区屏幕背景会变成白色., }6 h% z3 A& t, L; F* q
      此时正在调用截图功能(看MC提示区信息),框选范围或按ESC键 可以部分或全屏截图到剪贴板中。(打开Excel或画图工具,按Ctrl+V可以粘贴出来截图。)
% n$ v: _6 h; F9 V+ Q, Z2 E      当上一个命令执行完毕,会再次弹出对话框,询问是否恢复背景颜色,选是则恢复,否则退出。
' Y* k' r1 i& g1 F     
1 g$ s' x/ U8 R+ T" ~      从示例中来看,VBS相对而言是一种比较简易的语言,容易理解。
" y5 m  e7 h# v5 c5 F* O/ d9 [2 s, [2 O; V: c& Z/ x
     6. 另外再提供一个VBScript示例:[附件a2.txt扩展名改为a2.vbs]  
7 j# p' j1 S1 [1 E" B2 Q0 X      此VBS用于自动将图档中指定直径的圆(整圆)设定为指定颜色,方便在编程时通过选定颜色的方式 一次性全部选择。
- `& }) P) ^7 Z. g" q+ I6 b* h
7 ~  z" v5 L% d* ]: n! H, v: B' s  @) A- p) o7 i! I" c
    题外话:* E! P1 Z8 F8 G# ~" s) t, I
    (1) 本文仅为抛砖引玉,引导初学者了解VBScript这一工具,方便爱好者入门。期盼将来能有大票高手涌现,把编程弄得更简单点。1 X& J& w/ k% u6 v$ s1 g; h
    (2) 作者本身有一些VB基础,也仅是花费了几天工夫了解VBScript。故如在文中发现错误,请不吝指出并共同探讨。( t' w2 S' p  H6 Y
' [7 Y3 W0 Q/ s5 ?' l

8 F# `# w' A$ Y+ B1 B  H, q
3 r$ q, _- w/ F. C& \/ M
+ E* U2 `; ]1 v5 t+ f$ B0 X
) e- N6 |( }! Y. k8 d0 X+ l9 p) _0 b
% S( M! T) u2 b9 V1 ^) a- J8 Q
) J/ t2 b' j* }

S0

S0

S1

S1

S3

S3

S4_1

S4_1

S4_2

S4_2

S4_3

S4_3

S4_4

S4_4

SS

SS

S6

S6

S2

S2

S0

S0

评分

参与人数 1三维币 +20 收起 理由
路过不买 + 20 鼓励分享,好资料!

查看全部评分

发表于 2019-5-24 14:22:20 | 显示全部楼层
火钳刘明
发表于 2019-5-24 14:26:00 | 显示全部楼层
火钳刘明,抢地主。
发表于 2019-5-24 14:26:02 | 显示全部楼层
666感谢分享——有时间我也试试
发表于 2019-5-24 14:47:55 | 显示全部楼层
干货,感谢分享
发表于 2019-5-24 15:30:40 | 显示全部楼层
写的非常棒
发表于 2019-5-24 19:48:09 | 显示全部楼层
解释全部的开放接口才是重点吧?
发表于 2019-5-25 14:17:22 | 显示全部楼层
这个很厉害了,如果可以把以前的NC转换NCI单独提出来到后面的X版本用,就解决我的一大心愿了
 楼主| 发表于 2019-5-25 15:41:36 | 显示全部楼层
是太难还是大家对此不感兴趣?+ k* A% C: |' m& l' E9 S% H* A

' ^4 t6 Q# Y1 E' ]再贴一示例: 利用MC自带命令截3视图出来。/ ]  t2 I1 }$ B7 ^! b! |* D* A
  1. '////////////////////////////////////////////////////////////////////////////////& T$ f4 c7 C5 n% f* o( q0 O: O; m: @
  2. '//        Author:   zrs: V' V+ n5 @. R1 d2 w6 u4 s
  3. '//          Date:   25-05-2019 02:43 PM
    ( X" q. v+ U! k" n* ^; ~
  4. '//     File Name:   Get Gviwe Shot0 _! @+ `" i' B0 T
  5. '//   Description:   Mastercam VB Script! R, \! S) X) T+ D, f
  6. '//      Comments:   利用MC自带命令DoBitmapfile截图多个视角的线框模型存档到 C:\ 根目录下.
    5 ^0 \) m; {0 E# F: N+ y& X
  7. '////////////////////////////////////////////////////////////////////////////////5 `" D5 T& r2 `2 x2 t- L5 }1 Y
  8. 7 @  m7 S# `" Z9 b

  9. . s: o- B$ T( `* x0 U
  10. '///////////////// My Constants /////////////////
    . c  j+ C3 q. e( @
  11. Const Mydir="C:"               '保存路径0 E2 u& l6 \+ h! Z
  12. Const Bitmap_Name="Shot_"       '截图保存的名称前缀- ~' e+ n  x% Q
  13. ( u- V2 {- t* ^
  14. '///////////////// My Global Variables //////////
    6 g& v$ A5 j- d$ ?
  15. Dim ViewNum(2)                  '定义数组变量 () , 数组从0开始,所以数组有0,1,2共3个元素$ B+ S) W/ @5 u' W! o
  16. ViewNum(0)="1"                  '分别指定3个元素的数值,其中1,2,7对应 MC视角1-TOP, 2-FRONT, 7-ISO5 N; {/ [$ H0 G& E$ c8 W5 f3 N: `7 y
  17. ViewNum(1)="2"& q" H) Z: t+ ^0 d5 X6 ~
  18. ViewNum(2)="7"1 j* `$ D5 q% s3 w8 L* k. [
  19. 7 }0 `8 }/ U1 P1 ?5 Y+ ?: k/ F) r
  20. ' -- Start Script0 s$ D$ B" Z) I
  21. Call Main()3 V* \7 r3 M: ^1 o1 z

  22. 2 N+ N$ t  a! g& a' o

  23. ; I4 Q3 r4 h5 j( }
  24. ' ////////////////////
    ) }$ v, E$ a1 F* R$ E
  25. ' Sub Declaration" c8 d5 {5 b( }. x$ L1 X5 n1 v4 i
  26. ' ////////////////////6 H  f/ @# z( B. ]3 j7 Z, P% v2 B
  27. Sub Main()
    . \% B5 j" B7 U# w' y, u
  28.     Dim i,Pnum
    / b# H5 }' c+ ]
  29.     Dim strBMP                                      '定义3个变量, i为序号, Pnum为元素, strBMP为字符串:要存档的名称
    0 J( f* J! m6 G
  30.     For i=0 To UBound(ViewNum)                      '循环: 从0开始到数组ViewNum在最大数: 则i依次为0,1,2
    3 l' u, d3 |8 d! }$ d
  31.       Pnum=ViewNum(i)                               'i为0时,Pnum数值等于数组内第一个数值,即1
    ( B. z' Q0 D/ {
  32.       strBMP= Mydir& Bitmap_Name & i & ".bmp"       '存档的名字
    2 A5 C" \* r" g5 s- d' S
  33. ) T) U6 u- S- g& @* J2 n
  34.       Call GetBitmap(Pnum)                          '呼叫函数GetBitmap, 在最下方0 e7 z4 L0 ^" d; u; q, R/ m9 E# ]% k
  35.       If DoBitmapfile(vbNullString,strbmp) Then     'MC自带命令DoBitmapfile截图$ o" ]# E% a$ k* m
  36.       % t7 e+ J3 H" C+ K' Z6 ~, F/ Q
  37.       Else! J$ x2 s) m3 v& w
  38.          ShowString "Error!" & strBMP               '如果截图出错显示错误
    ) s8 ]4 p4 P/ P3 q$ _. b, E
  39.          Exit Sub                                   '并且退出程序/ M& k& W- p' [+ I4 |
  40.       End If
    & h- F% J3 u& T( Q
  41.     Next! a8 e4 H  h" J& y+ R
  42.     Call RepaintScreen(False)                       '刷新屏幕
    & l7 U- i- S( J5 L) b
  43. End Sub5 ]' y: k5 S' q6 o6 s& s2 w* `- |. I* Y2 J

  44. , R  m2 w/ E. N1 S& r$ }

  45. 9 B, C" r- X2 G7 l! c) ~
  46. Function GetBitmap(GViewNum)                        '自定义函数GetBitmap; w9 s! Y/ D# h/ [3 e5 n5 f
  47.     Call SetGViewNumber(GViewNum)                   '设定MC视角为指定视角
    % E( u- @5 r8 N) k. j
  48.     Call RepaintScreen(False)                       '刷新屏幕
    & J( c* D( \+ B) x
  49. End Function) k; X5 K( g5 C6 p: ^, |
复制代码
9 j1 Q8 Z* Q' d6 n9 Q+ h( y

. B1 M: Y! P. j5 w, u效果如下:2 C6 c. z/ W+ c$ h3 a
   运行后,会在C盘根目录下生成3个截图文件:Shot_0.bmp~Shot_2.bmp

aaa.txt

1.95 KB, 下载次数: 24

发表于 2019-5-31 10:22:24 | 显示全部楼层
这个可以搞二次开发
发表于 2019-5-31 19:43:29 | 显示全部楼层
刚接触的我一窍不通
发表于 2019-9-11 12:23:46 | 显示全部楼层
真·大神!!
发表于 2019-9-11 12:35:24 | 显示全部楼层
不知道为啥,9.1这三个有两个报错,整圆改指定颜色的没反应,大佬现在还有研究VBS吗?9 w( K! X, z. ]/ {0 |
发表于 2019-9-17 11:26:02 来自手机 | 显示全部楼层
历害了,正好学习一下
发表于 2019-9-18 20:18:29 | 显示全部楼层
感谢分享.......
发表于 2019-11-11 08:31:29 | 显示全部楼层
看着很厉害的样子,反正我也不懂。
发表于 2020-3-19 18:02:08 | 显示全部楼层
VBs获取一下程序的编号program#,弄一天了,找不到是那一个Get函数。。。
7 _$ {* f, ]( A. X5 z' D! a  {
) e5 |! H& J) |6 d/ N9 j/ P: i% ^2 c& ?) w1 t3 c- `* ?9 {

4 n! ]( A% I0 Y) V那们大神可以提取出来,,,# B4 D% S3 X+ n1 j
program no.png
发表于 2020-3-19 18:43:00 | 显示全部楼层
平看看
发表于 2020-10-22 11:36:36 | 显示全部楼层
好像2017以后没有VB文件啊
发表于 2020-11-11 16:42:23 | 显示全部楼层
高级货,懵逼中,希望楼主持续更新
发表于 2021-3-11 20:48:26 | 显示全部楼层
看不懂!!!* `2 |. A; M* r5 @  {% {/ s
太高端了
发表于 2021-3-15 14:27:22 | 显示全部楼层
绝对是精华贴, 在 ActiceReports 里面还可以用 C# 做脚本,估计 MC现在这支持。
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备13008828号-1 )

快速回复 返回顶部 返回列表