- 积分
- 3589
- 明经币
- 个
- 注册时间
- 2011-5-4
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
楼主 |
发表于 2011-10-29 21:12:15
|
显示全部楼层
自已顶一下,build2屏幕计算器功能说明:
屏幕计算器功能
原理介绍:
屏幕计算器就是从aotuCad的屏幕上选中图元,并从图元中提取相应的属性值(比如单行文字的字串内容,直线、曲线的长度、面积等)代入提前定义好的公式中进行计算,并将计算结果输出为一行或多行单行文字。现在以如下公式为例介绍屏幕计算器的算法:
@a1/@l2/$n3*sin($n4*3.141592653/180)
@a1中@表示选取多个对象;a表示选取面积对象;1表示第1次提示选取的对象;
@l2中@表示选取多个对象;l表示选取面积对象;2表示第2次提示选取的对象;
$n3中$表示选取单个对象;n表示选取数值字符串;3表示第3次提示选取的对象;
$n4中$表示选取单个对象;n表示选取数值字符串;4表示第4次提示选取的对象;
/为除号;
*为乘号;
Sin()为正弦函数,参数值为弧度;可以输入其它合适的函数,比如int()之类的也可以。乘方为**, 比如2**3则为2的3次方。
在输入的文字中程序会自动消去文字中的前导的及后缀的非数字字符。
如果选中了前缀、后缀程序会在输出的文字中加上对应的前缀和后缀。选中了精度则按相应的小数位数输出计算值。
输出计算值的字高和字体样式为最后一次输入的单行文字的字高和字体样式。
注意:各次选取多个对象后取得的值的个数必须一样。比如第一次选中了20个对象,其中只有8个图元有面积属性,第二次选中了50个图元其中只有8个图元有长度属性则输出8行计算值,否则出错。
如果选中”输出为单行文字”的单选框,则在CAD中从上到下一列输出多个单行文字;输出的单行文字的格式是你最后一次在cad中输入的单行文字的格式,行与行之间的行距为1.5倍字高。
如果选中”输出到系统剪贴板”的单选框,则将输出的值粘贴到windows剪贴板,这样就可以直接向word或excel里面粘贴了。只是目前输出到剪贴板中的中文是”utf8”编码,可能显示有些不正常,算是一个bug吧。
操作方法:
屏幕计算器的工具条为:
第一个按钮 为设置计算公式;
第二个按钮 为进行屏幕计算器计算;
按了 按钮后会出现如下对话框:
该对话框的上半部份用来选择已经定义好的了公式,下半部分用来新定义公式,定义好了公式点添加按钮就可以将下面定义好了的公式增加到公式列表中去了。对话框的其它用法就不用多解释了吧。
确定以后点选 按钮就可以按提示选图元进行计算了。
公式说明:
首字符:
以”$”打头的变量表示只选择一个变量进行计算,以”@”打头的变量表示选择多个变量进行计算;
第二个字符:
“l”表示选择图元长度;
“n”表示选择字符串;
“a”表示选择图元面积;
“t”表示选择属性块的属性,属性的名称紧跟在”t”字符后面;
“p”表示选择图元属性:比如名称、图层等。属性名称紧跟在”p”字符后面;
最后一个字符:
最后一个字符为选择顺序字符,为数字序号,从1向上累加,不同的变量应有不同的字符。
比如: $l2 —— 第二次选择的单个图元长度;
@l2 —— 第二次选择的多个图元长度;
$n1 —— 第一次选择的单个单行文字内容;
@n1 —— 第一次选择的多个单行文字内容;
$a3 —— 第三次选择的单个图元面积;
@a3 —— 第三次选择的多个图元面积;
$tX2 —— 第二次选择的单个参照块的“X”属性值;
@tX2 —— 第二次选择的多个参照块的“X” 属性值;
$pObjectName5 ——第5次选择的单个图元的”ObjectName”属性(也即该图元的对象名称);
@pObjectName5 ——第5次选择的多个图元的”ObjectName”属性;
注意:如果提取值为字符串并且直接参与数学运算,刚其取值为0;
$n1, @n1自动消去字符串中的前缀和后缀,如想保留前缀和后缀则就用$pTextString1 和 @pTextString1来代替。
函数说明:
支持通用的函数,比如:abs, atan2, cos, exp, int, log, sin, sqrt, gmtime, localtime, time, times, sinh, cosh, tanh, csch, cosech, sech, coth, cotanh, asinh, acosh, atanh, acsch, acosech, asech, acoth, acotanh, deg2rad, grad2rad, rad2deg, grad2deg, deg2grad, rad2grad, rad2rad, deg2deg, grad2grad;
以上函数如果你不明白是什么意思,那么你就多半用不着。注意:三角函数以弧度为角度单位。
特殊函数:
输入为多个值,输出为单个值
sum 求和
count 总数
max 最大值
min 最小值
特殊函数内只能输入变量而不能输入表达式。
支持的运算符:
+加,-减, *乘, /除, %求余,**乘方。
< 小于
> 大于
<= 小于或等于
>= 大于或等于
lt 字符串小于
gt 字符串大于
le 字符串小于或等于
ge 字符串大于或等于
== 相等
!= 不等于
eq 字符串相等
ne 字符串不等
& 按位与
| 按位或
&& 与
|| 或
! 非
not 非
. 字串联接(可用来加前缀后缀、或形成复杂的输出)
= 赋值
支持条件表达式:
if (条件判断){真值执行语句;}else{假值执行语句}
while(条件判断){真值执行语句循环体;}
return 输出在屏幕上打印值
支持临时变量:
临时变量格式为以$打头,后跟大小写26个字符及”_”,不含数字。所有临时变量前加my 作私有声明。
下面是一个简单的复杂表达式例子:
my $abc = @a1; if ($abc > 10){$abc = 10;}return $abc;#输出面积小于10值的面积,大于10的输出为10。
选择多个面积,面积小于10的在屏幕上打印出面积数值,面积大于10的在屏幕上打印出10;
首次自已定义的变量前面一定要加my 作用域限定符。
支持正则表达式:
如:
辅入的字符串为12φ12@20(这里的@n1),钢筋长度为6m(这里的$n2)的话
my $abc = “@n1”; $abc =~ /(\d+).(\d+).(\d+)/; my $weight = $1 * $2*$2*3.14159/4/1000/1000*$n2*7.9*1000; return $weight;
(如果φ为%%130的话,就为: my $abc = “@n1”; $abc =~ /(\d+)%%130(\d+).(\d+)/; my $weight = $1 * $2*$2*3.14159/4/1000/1000*$n2*7.9*1000; return $weight;)
这样你就得到了12根钢筋的总重量了,以Kg计。
|
|