MC控件及脚本2 例
mathcad吧
全部回复
仅看楼主
level 15
月城翁 楼主
在MC中的控件有两类:MC自带的控件和Web控件。常用的是Web控件,因为对它不用编写脚本就可直接使用。但是,也有不利的一面,就是手工操作的环节太麻烦,而且每遇到一个新的相同的问题,仍然要手工输入相关内容。如果项目太多,工作量还是不小的。但是,使用MC自带的控件,就不同了。虽然,它需要编写脚本才能运行,但是若编写脚本时给予注意,同样的脚本对于相同的问题,只要改动一下数据的交接界面,便可通用。这样,就省事多了。而且,有些问题是Web控件无法或者不易实现的。所以,学会使用MC控件,是大有裨益的事情。问题是MC的资料相当稀少,对于编写脚本的资料更是凤毛麟角。我在这方面做了一些探索,是初步的、幼稚的,还有许多问题还没有搞清楚,还需继续努力。现在,把我编写的两个控件脚本写出来,和大家探讨。
在编写脚本过程中,发现有两个奇怪的现象。一是,MC会随机地自己退出MC。这大多发生在编写的脚本发生错误时。但是还有些的退出原因就不清楚了。二是,在检测出脚本中的错误时会给出出错消息。但是,尽管已经把出错的问题修改了,MC仍然报告先前的出错消息,甚至拒绝运行脚本。而且很可能自行退出MC。只好保存文件,退出MC,再重新打开MC。
下面的两组控件都是根据贴吧中原来的帖子提出的问题来做的。这两个问题,我认为用Web控件都不易实现。但是,用MC控件却能完美地解决。
第一个,是2017-10-16的帖子,https://tieba.baidu.com/p/4942162522,要求:在左侧的框中随意选择,“钢”还是“铝”,右侧的框中会弹出相对应的材料的规格。我在上述帖子中已经用组合框做了一个,但是是专门针对这个问题的,不能通用。现在重新用列表框编写了通用的脚本,类似的问题只要更换数据源,不需再重新编写新的脚本。
第二个,是2017-08-24的帖子,https://tieba.baidu.com/p/5288663229,要求:在二维表格中查找数据。除了能根据表格所列出的搜索值查找出相应的数据外,在介于表格列出的两个搜索值之间的值,要能用插值的方法得到相应的数据。这个问题用MC能便捷地得到所要求的结果。但是,如果使用文本框来实现,会更方便更漂亮。
下面,我把这两个控件及其脚本貼出来。有很多问题,我还没有搞清楚。所以,其中一定会有不少的毛病。抛砖引玉而已。
我用的是MC15 ,脚本用VBScript语言编写。
2019年11月29日 22点11分 1
level 15
月城翁 楼主
编写脚本时,使用的是MC自带的脚本编辑器。
2019年11月29日 22点11分 2
level 15
月城翁 楼主
第一个例子。
数据源是一个嵌套矩阵,用MC编程把它转换为非嵌套矩阵。
2019年11月29日 23点11分 3
level 15
月城翁 楼主
2019年11月29日 23点11分 4
有这个编程的时间,用手工早就把这简单的矩阵改写了。但是考虑到长期处理复杂得多的嵌套矩阵的通用性 ,编写个简单的程序还是必要的。
2019年11月30日 00点11分
level 15
月城翁 楼主
为了使两列矩阵的元素数量相等,使用了“-”符占据空位。在脚本的程序中,又将这
占空的多余的符号删掉了。【图片】
2019年11月29日 23点11分 6
level 15
月城翁 楼主
2019年11月29日 23点11分 7
level 15
月城翁 楼主
控件及其脚本使用相同的颜色,以避免混淆。
2019年12月01日 05点12分 8
level 15
月城翁 楼主
2019年12月01日 05点12分 9
左侧列表框用于选择“钢材”还是”铝材”;右侧列表框显示与左侧框所选的对应的材料的规格。
2019年12月01日 05点12分
两个框下面的数值是所选对象在该向量序列中的序列号。
2019年12月01日 05点12分
level 15
月城翁 楼主
与列表框颜色相同的脚本的内容。
2019年12月01日 05点12分 10
脚本中多余的函数项目是MC脚本编辑器中原有的,没有作删除处理。
2019年12月01日 05点12分
这个绿色的列表框可能是最简单的了,只有数值的输入和输出,没有中间的程序的数据处理的环节。
2019年12月01日 05点12分
level 15
月城翁 楼主
2019年12月02日 01点12分 11
level 15
月城翁 楼主
第2个例子的数据源矩阵
2019年12月06日 11点12分 12
图右侧的look1()函数是MC页面上自定义的函数。见原帖。
2019年12月06日 11点12分
level 15
月城翁 楼主
文本框控件外观
2019年12月06日 11点12分 13
level 15
月城翁 楼主
2019年12月06日 22点12分 14
level 15
月城翁 楼主
前两个框只是接受数据,y 竖列的索引值;x 横行的索引值。黄色的文本框,接受前两个框的数值,在脚本内进行检索或插值计算,然后把结果输出到框格中显示,并把结果传递给变量result ,以供MC的后续计算使用。
如果在前两个框的下面再增加一个单选按钮和两个列表框,列表框中列入源表中的索引值,用下拉菜单检索,使用更方便。
这一组控件,对于单纯的二维表的检索是通用的,只要把源数据矩阵tab,换成自己的就可以使用了。
图中的变量u 是要检索的数值位于横行的检索值第u 列或在这之后的位置;变量v 是要检索的数值位于竖列的检索值第v 行或在这之后的位置。
2019年12月06日 22点12分 15
1