576603204
技术员
技术员
  • 最后登录2020-10-22
  • 发帖数135
  • 金币315枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
阅读:513回复:4

各位能帮忙转一下,VB代码转成C#

楼主#
更多 发布于:2020-03-05 11:32

Function FunctionValue(ByVal Model As Microsoft.SolverFoundation.Services.INonlinearModel, ByVal rowVid As Integer, ByVal Values As Microsoft.SolverFoundation.Services.ValuesByIndex, ByVal newValues As Boolean) As Object
        Dim vTransX, vTransY, vAngle As Double

        vTransX = Values(Model.GetIndexFromKey("xtrans"))
        vTransY = Values(Model.GetIndexFromKey("ytrans"))
        vAngle = Values(Model.GetIndexFromKey("angle"))

        For i = 1 To vNumPins
            'calculate new locations
            aNewX(i) = aActualX(i) * Math.Cos(vAngle) - aActualY(i) * Math.Sin(vAngle) + vTransX
            aNewY(i) = aActualX(i) * Math.Sin(vAngle) + aActualY(i) * Math.Cos(vAngle) + vTransY
            'calculate distance from new locations to spec limits
            aUSLX(i) = (aNomX(i) + aLTX(i)) - aNewX(i)
            aOSLX(i) = aNewX(i) - (aNomX(i) + aUTX(i))
            aUSLY(i) = (aNomY(i) + aLTY(i)) - aNewY(i)
            aOSLY(i) = aNewY(i) - (aNomY(i) + aUTY(i))
        Next i

        'calculate maximum distance from new locations to spec limits
        FunctionValue = -1000000000 'initialize value
        For i = 1 To vNumPins
            If aUSLX(i) > FunctionValue Then FunctionValue = aUSLX(i)
            If aOSLX(i) > FunctionValue Then FunctionValue = aOSLX(i)
            If aUSLY(i) > FunctionValue Then FunctionValue = aUSLY(i)
            If aOSLY(i) > FunctionValue Then FunctionValue = aOSLY(i)
        Next i
        TextBox6.Text = TextBox6.Text + 1
        Return FunctionValue

    End Function

以下是我转的,好像不对劲,Functionvalue函数定义里有Functionvalue,这种函数里面调函数啥意思?不知道在C#如何实现,变量我已经在程序里定义好了,先不管。

public int FunctionValue(Microsoft.SolverFoundation.Services.INonlinearModel Model, int rowVid,
            Microsoft.SolverFoundation.Services.ValuesByIndex Values, bool newValues)
        {
            double vTransX, vTransY, vAngle;

            vTransX = Values[Model.GetIndexFromKey("xtrans")];
            vTransY = Values[Model.GetIndexFromKey("ytrans")];
            vAngle = Values[Model.GetIndexFromKey("angle")];

            for (int i = 0; i < Convert.ToInt32(vNumPins); i++)
            {
                //calculate new locations
                aNewX = aActualX * Math.Cos(vAngle) - aActualY * Math.Sin(vAngle) + vTransX;
                aNewY = aActualX * Math.Sin(vAngle) + aActualY * Math.Cos(vAngle) + vTransY;
                //calculate distance from new locations to spec limits
                aUSLX = (aNomX + aLTX) - aNewX;
                aOSLX = aNewX - (aNomX + aUTX);
                aUSLY = (aNomY + aLTY) - aNewY;
                aOSLY = aNewY - (aNomY + aUTY);
            }

            //calculate maximum distance from new locations to spec limits
            int value = -1000000000; //initialize value 这个地方好像不对,不知道如何转换
            for (int j = 0; j < Convert.ToInt32(vNumPins); j++)
            {
                if (aUSLX[j] > value) { value = Convert.ToInt32(aUSLX[j]); }
                if (aOSLX[j] > value) { value = Convert.ToInt32(aOSLX[j]); }
                if (aUSLY[j] > value) { value = Convert.ToInt32(aUSLY[j]); }
                if (aOSLY[j] > value) { value = Convert.ToInt32(aOSLY[j]); }
            }
            textBox6.Text = textBox6.Text + 1;
            return value;
        }
喜欢0

最新打赏:0人

sc6231565
管理员
管理员
  • 最后登录2020-10-22
  • 发帖数1079
  • 金币26024枚
  • 贡献勋章0枚
  • 社区明星
  • 最爱沙发
  • 原创写手
  • 喜欢达人
  • 忠实会员
  • 社区居民
沙发#
发布于:2020-03-05 17:46
自己百度,有转么的网站可以转换
576603204
技术员
技术员
  • 最后登录2020-10-22
  • 发帖数135
  • 金币315枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
板凳#
发布于:2020-03-06 10:08
sc6231565:自己百度,有转么的网站可以转换回到原帖
Solver.FunctionEvaluator = FunctionValue;


这句话转的不对,试了


图片:e.JPG

576603204
技术员
技术员
  • 最后登录2020-10-22
  • 发帖数135
  • 金币315枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
地板#
发布于:2020-03-10 08:52
自己转了下已经成功了,原来是类型不对。
zhuyikang
初学者
初学者
  • 最后登录2020-09-03
  • 发帖数128
  • 金币24枚
  • 贡献勋章0枚
4楼#
发布于:2020-06-06 10:42
路过看看 学习了。。。。。
游客

返回顶部
支付

欢迎打赏,请选择打赏金额

  • 1元
  • 6元
  • 10元
  • 66元
  • 100元

支付即代表同意《本站支付协议》 有疑问请联系客服