QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 6664|回复: 21
收起左侧

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

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

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

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

x
本帖最后由 piaofcu 于 2019-5-25 11:01 编辑
3 j& C1 ?; s, \; q: B, x+ E. q' A0 E) O& G$ H
      VBScript是Visual Basic Script的简称,即 VB 脚本语言,缩写VBS。它是微软环境下的一种轻量级的解释型语言。注意形容词:轻量级, 解释型) v% |  I" A( ~
      大部分软件都支持VBScript编程。(如AUTOCAD中的AUTOLIST, Office中的VBA也类似...), V" k6 u. b2 x% p

' u) l: }3 B* e5 j$ @6 j( i1 U      1. 首先了解一下,VBScript能干什么?   在你使用软件的过程中,经常会有一些重复的操作。假如可以录制一套操作过程(宏),并保存下来,然后在其它需要用到的文件中调用,以减少工作量,那么实现这个过程就是VBScript编程。(为什么不是直接录制后调用呢?因为程序仅是程序, 不是人工智能,有很多细节和错误并不能分辩,只有通过编程语言才能将之清晰的表达出来。)7 }; g1 H: `$ S+ K- U+ {

* u7 P, r) r1 `      VBScript脚本语言特点之一是它只需要被解释而不是编译(如C / C ++),故用户编写VBScripts,只需要文本编辑器(例如:记事本)以及一些VBScript(或Visual Basic或Visual Basic for Applications)的基础知识即可,受众面广大。
7 P7 Z3 D% s% ]     大部分软件都使用C/C++编写,包括MC。而一般的二次开发,使用C/C++是一个最佳选择,软件会提供相应的接口使用户能够通过C/C++仿问软件。但是使用C/C++编程并不一项简单的工作,它需要你有大量的C/C++的编程知识(头文件,数据结构,内存,编译器..)... 简单点说,给您一份二次开发的操作过程文档,初学者也并不一定能通过C/C++做出来, 而不出错。但VBScript不同,它只有基本结构,简易的数据类型。你可能需要1~3年掌握并使用C/C++写出一个程序, 但可能仅需要1~3个月,亦或1~3天就能用VBScript写出一个简单的程序。
. \7 r, ]) k! u% w3 O& m/ j
  _& ]6 s) ~: N    2. Mastercam 中的VBScript
7 j8 v7 b& b, w2 q0 @& }% L  [. v' B3 k$ D
     从Mastercam V9.1开始提供VBScript工具,目的是向更广泛的受众开放编程。任何人都可以使用此脚本语言自动执行Mastercam中的许多任务,例如几何创建和刀具路径生成。
0 e2 Q" W& r4 J' O% t- }! D     # ]( K' b: _- i7 c7 Y
     看到这里,请你先不要高兴的太早。请谨记VBScript的另一特点:轻量级, 并不是所有的任务(操作)都可以通过它来执行。(其可操作范围远不及C / C ++, 当然其难度也远远低于C / C++ )
6 _' v" M/ b  E1 I+ E- P5 p3 W
     3. 若想了解VBScript, 该从哪里开始?
/ n( P+ d9 Q2 V) j& E; ^     
( m5 W% N/ n* R$ M. ?       3.1 Microsoft 帮助文档 (以下帮助文档 可以在Mastrercam VBScript编辑器中帮助中打开链接)。
/ E7 v( i' b5 _; r            若您没有一点基础,那么MS 2001年发布的帮助文件“Script56.chm” 可能是你开始熟悉VBScript语法的好地方。有一个好消息是因为这个chm文件发布较早,所以有翻译后的中文版可供 下载 阅读。(图 S0 )            
5 V% p# x9 l; n! r  Y. `" ~              http://3dportal.cn/discuz/forum.php?mod=attachment&aid=MjM0MDkxMXxlMjFhMmUxNmE2ZDYyYWEwODcxODMzNGIxYjFjNDFlMXwxNzc1ODQzODcy&request=yes&_f=.png% |# m# h% x/ j. a1 Z' N

9 |( l  D  S) n! T1 t8 e            而有关使用VBScript自动化的Mastercam文档,在 "MC安装目录\help\VBSCRIPT.Htm" 中可供查询参阅。1 G) i3 i* N. H
! |! a" ^4 y: J+ P( n
            注意:MS和MC中的VBScript解释器有所不同,MC中的语法要求更加严格一些,所以从  参阅大量VBS示例  开始也许是一个很好的选择 (3.2)。
) ^+ B; X3 A6 W6 O9 R! _; p1 G% q0 J- k7 i4 d- q/ k
        3.2 VBS示例文件
6 z" i) R6 A. m
: {; }: P! j: k* o9 Y' F       每个版本的Mastercam都会提供 大约30个VBS示例文件可供查询,参考。
4 m3 N& f+ k2 q. Y3 p6 ]" T3 `       其路径位于:
# P/ s, d4 [- T* G3 X6 [$ q               <v9>   :  X:\Mcam9\VB\           (v版本位于安装目录VB文件夹下)- @+ \7 G/ S4 j; p# F* G
                <X>    :  Shared Mcamx*\VB\    (X版本位于共享目录VB文件夹下)3 F7 m- F# U( x5 _  v1 {4 l  {
- V3 ]  t" P: O9 I0 P* [8 D
       这些文件都可以通过记事本打开查看。8 U' g" f6 x; c! v/ S0 K  T

- o, D# \, {8 L; C8 T& E     4. 在Mastercam界面中,从哪里进入VBScript?/ w9 f- U" |7 }: }
         v9 中两种方法可进入:
9 i9 }, A+ U! B0 i! l3 l9 Y         (1) Main Menu > Create >Next menu >Add-ins >McamVB*3 d7 `3 d) K" ~2 K
         (2) Alt+C > MCAMVB.DLL
0 K! Q, Z% K/ S$ v3 W/ m; k5 `  P% [5 H. E
         X版本以 X6为例:
& }/ |* u4 u3 U7 ]5 `3 r$ y         菜单 > 设置 >VB脚本
: J/ q' T# u$ S' o7 ]) E5 A& X        "VBScript编辑器" 界面如下:(图 S1)
% c( A& C/ [* o- U' Z4 i5 d5 a. y         http://3dportal.cn/discuz/forum.php?mod=attachment&aid=MjM0MDkxMnw3YWJlN2ZhYjhiNmIwMDg5OWJkNGJkOWI4ZTZlZTUwOXwxNzc1ODQzODcy&request=yes&_f=.png
6 u7 @8 ]. Z$ B& x- ?4 {0 a  m  g1 [" a: M' o
         你可以在其中新建、编辑、或运行一个VBScript文件。: N1 p0 Z2 t* n: u5 C
- p5 L1 V, q( f
         PS: 如果觉得进入VBScript的方法有些麻烦,建议你在MC中设置快捷键 'F12' 指向此功能。
" T* G6 u4 s# z5 R8 Q0 p6 [9 E" [2 f3 o! i. I5 Y
     5. 现在,让我们开始进入MC中的VBScript吧。; @6 s: e( A) W& I; H0 T& K
' y/ o, [0 I, [. m: R
        5.1 了解VBScript界面和基础知识。: C0 Q! z, u; H; m6 j9 u( G
        在"VBScript编辑器"中点击 "New" (新建), 会弹出界面:(图S3)4 ^( T8 _5 E2 K& F9 e2 |
( b9 i% i# y2 w/ y! m: |# n& s
       http://3dportal.cn/discuz/forum.php?mod=attachment&aid=MjM0MDkyMXxkMmFlMWYwNTQyMGFmMTZmYzNhNGFlY2M1MmU0ODRkZXwxNzc1ODQzODcy&request=yes&_f=.png5 r1 G. ?# R+ _# C9 R

. H! v" d5 V5 n  R+ R# c        (1)在帮助中你可以查看当前MC版本VBScript所支持的自动化功能
: @# d% A1 @4 D% k' l5 {9 o
8 f" s1 Q$ E  c; T        http://3dportal.cn/discuz/forum.php?mod=attachment&aid=MjM0MDkxNHwzOGRlZjU4MWQ2MzEyODhjZTEzMzFjYmVlZWFhMTYxNHwxNzc1ODQzODcy&request=yes&_f=.png& w1 {; p2 N+ {- ~* y. o3 c
         - U% x  k2 m% O
        在VBScript语言中,有一个命令RunMastercamCommand可以访问大部分MC自带的命令,是一个用途较广的功能,而其所能访问的范围在帮助文件中有说明。1 T( T  ?3 i+ {1 F" A
, O$ R( _1 H' c1 J  Q: c. O1 W1 b' c/ h
        http://3dportal.cn/discuz/forum.php?mod=attachment&aid=MjM0MDkxNXxlYzIxM2RhOTI4MTM0MzJkMjNlZjY3M2RiZWJiNWMwN3wxNzc1ODQzODcy&request=yes&_f=.png- o0 |6 N( Q+ Y
        http://3dportal.cn/discuz/forum.php?mod=attachment&aid=MjM0MDkxNnwwMTQ4NGUwYjVlNGVhMGRmMDZjODVhMGQwZjU0NGIzOHwxNzc1ODQzODcy&request=yes&_f=.png' R4 ^1 p" N; R1 K) ~! o# S0 Y: d
        http://3dportal.cn/discuz/forum.php?mod=attachment&aid=MjM0MDkxN3xjYzFkMmEzZGE4Y2QyNWE4ZmMzMjI2MmRmNjgzOGM5NnwxNzc1ODQzODcy&request=yes&_f=.png
5 j3 m9 i1 b6 ?        http://3dportal.cn/discuz/forum.php?mod=attachment&aid=MjM0MDkxOHxlZWVhMzBiMTIzZTQzNjJjYWEyMTVkMTg1ZTQyNDFlY3wxNzc1ODQzODcy&request=yes&_f=.png
2 m7 ]% q+ p0 J        
; e6 t6 F8 o0 Z8 h3 C4 F- A0 f3 I       (2)VBScript编辑器中的常用快捷键,可引导编程。2 J4 `% A, e% }

1 w3 `- j2 d1 |        http://3dportal.cn/discuz/forum.php?mod=attachment&aid=MjM0MDkxOXw4ODFlNGE5ZmIxYzcxMTRjNDY1MmY4MGVkYjVmNTY1MHwxNzc1ODQzODcy&request=yes&_f=.png+ {; v5 c( F5 z1 Q2 c5 Q+ j; M) k
        http://3dportal.cn/discuz/forum.php?mod=attachment&aid=MjM0MDkyMHw4ODJmZmEyYjIyMDRhMDQ5NGQ0MTZmNTJhMDJkNDFjY3wxNzc1ODQzODcy&request=yes&_f=.png
' c5 J+ Y+ j9 L  P
7 Y4 s" c! E! A5 t: M        5.2 下面,使用一个范例来熟悉VBScript,录入蓝色部分代码(单引号‘之后的内容可以不管)。  [或将附件a1.txt 下载后改扩展名为a1.vbs,在VBScript中调用]  . u; d9 ~: V+ g; Z, T1 K
  1. Sub Main()( S" k7 E! |  P" b8 J* J2 t3 M" ~
  2.   M! ]9 D+ n2 }1 A
  3.     Dim mcColor_Current                        '定义变量mcColor_Current(Dim 是关键字,定义变量)2 ~7 |: O% q/ c3 n% z
  4.     mcColor_Current=GetBackGroundColor        '获取当前MC背景颜色' ?4 B# f! n  }0 U

  5. # T6 B& ?6 r& i7 |: K
  6.     ShowString("现在我想把屏幕背景弄成白色.")          '显示对话框6 C5 s1 j7 Q2 H- o2 ?/ `; M9 w
  7.    
    7 h3 P! Z9 J! T1 F
  8.    Call SetBackGroundColor(mcCOLOR_WHITE)        '变更背景颜色为白色$ v& G, u- S  |) ?
  9.    Call RepaintScreen(False)                        '刷新屏幕: 一般更改屏幕内容后需要刷新屏幕
    + z0 P* H' h+ O2 t# ^" b
  10.    Call RunMastercamCommand("clipbrd")        '调用内置命令:截图
    ' W! w, c8 c& m. `5 O: c. j
  11.            $ J* F" t; B, {7 q
  12.    If askYesNo("是否恢复原有背景色?")=1 Then        '询问是否恢复原有MC背景颜色: =1(点击Yes)恢复( l: j: B2 f8 z, J
  13.       Call SetBackGroundColor(mcColor_Current)        $ m8 F2 x9 x" A6 _( w3 r# D* Q" ~
  14.       Call RepaintScreen(False)1 G8 Y9 s: [6 e( {/ x' U
  15.    End If
    4 W7 V! a  ^5 _8 ]
  16.         
    ; x, ]2 t' T+ f; |

  17. " t" j0 {+ U+ E0 ^' J* P. E- l
  18. End Sub
复制代码
% @5 i- H% F) f; y) J: L6 |
       存档后,调用并运行它,看看会发生什么?& }9 u. d; O' z  j% k3 U! T$ [

- b! x7 i, D9 u% e- g      首先弹出对话框,点击确定后,工作区屏幕背景会变成白色.7 h6 B) n) I9 v
      此时正在调用截图功能(看MC提示区信息),框选范围或按ESC键 可以部分或全屏截图到剪贴板中。(打开Excel或画图工具,按Ctrl+V可以粘贴出来截图。)
# @" V8 A* u1 y* V9 N      当上一个命令执行完毕,会再次弹出对话框,询问是否恢复背景颜色,选是则恢复,否则退出。
) d; e( f8 p- T# t$ Z. ]" u     
# b8 P6 S2 `( s4 l) Q9 F      从示例中来看,VBS相对而言是一种比较简易的语言,容易理解。) l! C8 u$ Y' F8 N

7 \6 a7 b, x6 \$ m  q  M6 X& [( N( P     6. 另外再提供一个VBScript示例:[附件a2.txt扩展名改为a2.vbs]  ! d1 p, m4 @% C- [
      此VBS用于自动将图档中指定直径的圆(整圆)设定为指定颜色,方便在编程时通过选定颜色的方式 一次性全部选择。
) e) F% O, v% h0 x7 Q/ t1 J( L/ r. {- z' `. a  z0 ?
. I" E) r. Y: a$ X% }8 k6 U
    题外话:
& o5 J% J  g5 Q* X; E, r9 M( o    (1) 本文仅为抛砖引玉,引导初学者了解VBScript这一工具,方便爱好者入门。期盼将来能有大票高手涌现,把编程弄得更简单点。' A( |' }0 o1 }) R! T  R
    (2) 作者本身有一些VB基础,也仅是花费了几天工夫了解VBScript。故如在文中发现错误,请不吝指出并共同探讨。
# \) K  W5 Z% r; ^' |
: I) ^* ?9 {8 Z+ M# ]9 T  v; g" o! j* a9 {# a2 v- R

% `9 R8 U) d9 ^7 j* O
& \, V" w8 _* l0 i! D- @& v# K  H) B6 R* {' }
  ?/ q" u8 ?, W% a  U! ]

  v: l; o9 r1 ?  {+ P% C
! T3 o) l2 U1 [2 Q2 R( O' s

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 | 显示全部楼层 来自: 中国江苏苏州
是太难还是大家对此不感兴趣?0 E" g/ d3 c+ z% B* t2 Z

" e6 R- P3 e, G! y* O% S1 [再贴一示例: 利用MC自带命令截3视图出来。+ d- f4 b# R1 i7 K% J6 l: [5 B
  1. '////////////////////////////////////////////////////////////////////////////////4 ]2 j* D: N% X% i( ?
  2. '//        Author:   zrs" o: O& t* F: z4 M/ e
  3. '//          Date:   25-05-2019 02:43 PM& ^: c) f1 {- d  t
  4. '//     File Name:   Get Gviwe Shot  b& b, R1 q3 `& ]* T: b
  5. '//   Description:   Mastercam VB Script
    ' l$ X: c; F+ ~& g
  6. '//      Comments:   利用MC自带命令DoBitmapfile截图多个视角的线框模型存档到 C:\ 根目录下.
    % A( g0 ?3 w+ g) k- p7 _
  7. '////////////////////////////////////////////////////////////////////////////////
    5 q0 e6 `0 Z* {" a

  8. ) n. Y, t7 r/ C$ L/ I$ \
  9. & m6 w" p! E# P. G! [* k8 }1 |
  10. '///////////////// My Constants ////////////////// Z: V1 W) O3 G+ z) e0 R' g) W
  11. Const Mydir="C:"               '保存路径
    + E( }  y! t. i* `! ?" f
  12. Const Bitmap_Name="Shot_"       '截图保存的名称前缀* }* {" l! n- E
  13. 3 d. }0 T( W; b  V! p
  14. '///////////////// My Global Variables //////////7 ~, X1 o1 `6 @9 c6 ^
  15. Dim ViewNum(2)                  '定义数组变量 () , 数组从0开始,所以数组有0,1,2共3个元素
    3 W8 s0 [1 E6 N; h
  16. ViewNum(0)="1"                  '分别指定3个元素的数值,其中1,2,7对应 MC视角1-TOP, 2-FRONT, 7-ISO& C( L# v4 K0 X. \
  17. ViewNum(1)="2"
    * O; F" k* c3 K" m4 N
  18. ViewNum(2)="7"
    : I' x$ E1 J6 q6 {9 c. O( M5 |
  19. 2 _0 J! c  z( F  |- k' N
  20. ' -- Start Script* _$ M) t3 n) T3 g+ O8 n. L! I
  21. Call Main(); |  b* }* e' J/ o0 A8 X. k+ ~4 P2 @

  22. 5 ]6 c& e9 B0 q9 l

  23. # i! ~; U7 j9 b' h' U/ W1 |
  24. ' ////////////////////- r& A7 m4 Z" s) m6 c
  25. ' Sub Declaration! L+ q2 P% |+ P
  26. ' ///////////////////// {% e* t2 x* A
  27. Sub Main()0 w; g) ^/ Q1 u( H2 ~" }! r
  28.     Dim i,Pnum' v! w0 k- l! ?* I" m, ~
  29.     Dim strBMP                                      '定义3个变量, i为序号, Pnum为元素, strBMP为字符串:要存档的名称4 D* h7 m) c3 u/ f% e8 E/ D2 T& q
  30.     For i=0 To UBound(ViewNum)                      '循环: 从0开始到数组ViewNum在最大数: 则i依次为0,1,2& S) w+ z( D9 ~0 E0 p2 Y9 `# p
  31.       Pnum=ViewNum(i)                               'i为0时,Pnum数值等于数组内第一个数值,即1# _, v7 q  e5 f; u# N
  32.       strBMP= Mydir& Bitmap_Name & i & ".bmp"       '存档的名字4 @  G& x" T% ?6 ]: h
  33. 0 ^8 n0 Z6 K, l# l
  34.       Call GetBitmap(Pnum)                          '呼叫函数GetBitmap, 在最下方/ X. a: B7 _( m
  35.       If DoBitmapfile(vbNullString,strbmp) Then     'MC自带命令DoBitmapfile截图
    3 V! X. P$ c' @
  36.       
    - C/ ?9 q! k6 X7 h# R" A0 I
  37.       Else
      s: V8 P& u, k/ u& N+ I
  38.          ShowString "Error!" & strBMP               '如果截图出错显示错误
    : ?3 N0 R6 d; J
  39.          Exit Sub                                   '并且退出程序$ Q. P, \: `9 J) |! E7 L2 u9 A
  40.       End If
      |: G( x9 k% H, _4 w
  41.     Next
    & f0 S! r$ v" O
  42.     Call RepaintScreen(False)                       '刷新屏幕6 M+ d1 K* j6 ?5 ?# W" y
  43. End Sub' a( l$ x3 Y6 Y8 k9 u
  44. 2 H6 e" f! T% `0 {9 }" v0 w  A
  45. % R# Q1 v5 O" [5 e  p
  46. Function GetBitmap(GViewNum)                        '自定义函数GetBitmap- ^/ W$ ]  D" _
  47.     Call SetGViewNumber(GViewNum)                   '设定MC视角为指定视角
    / M5 Z- W2 i! L; ]
  48.     Call RepaintScreen(False)                       '刷新屏幕7 I( P+ d5 {4 f: ^% s1 y( `
  49. End Function9 I/ O$ T+ H* \, s/ ]6 p
复制代码
( R- l5 a# u0 x' Z  Q* K
& W; H, v. X( R' B8 ]
效果如下:
8 N' w- c$ j: q% j& J5 `  B   运行后,会在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吗?
: p  T6 T& f( C$ }( f0 y2 y. x
发表于 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函数。。。& g2 t0 o# |- h  K( f+ f
& B; {! g* E  F7 d/ }* c1 C7 s
$ I, k9 {& _' J6 K" w1 `
6 c0 M( n) I  M
那们大神可以提取出来,,,5 Q, r" V, b% Q$ w4 G; s
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 | 显示全部楼层 来自: 中国四川成都
看不懂!!!% y* h+ s7 Y$ |
太高端了
发表于 2021-3-15 14:27:22 | 显示全部楼层 来自: 中国北京
绝对是精华贴, 在 ActiceReports 里面还可以用 C# 做脚本,估计 MC现在这支持。
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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