吾爱光设

 找回密码
 注册
会员须知
会员须知
实用帮助
实用帮助
查看: 9930|回复: 16

[求助] [已解决]AUT里的命令编写请教

[复制链接]
  • TA的每日心情
    无聊
    2024-5-29 14:24
  • 签到天数: 209 天

    [LV.7]常住居民III

    14

    主题

    56

    回帖

    0

    积分

    小白

    积分
    0
    发表于 2022-3-1 18:23 | 显示全部楼层 |阅读模式
    各位专家好,请教,问题如下:
    比如我想写个优化宏,针对所有镜片的口径控制:
    那我写成
    for ^i 1 (num s)
    sd s^I <10
    end for
    实测可行;
    然后我很皮,我又想控制每个镜片的矢高,那我写成这样
    for ^i 1 (num s)
    @abs == absf(sagf(^i,1,0,(sd s^i)));@abs <5

    end for

    然后优化报错,这是为啥呢,是因为sagf是个函数吗?
    。。。
    我也试过在命令窗口直接输入,比方说
    num ^i;^i == 1
    eva(absf(sagf(^i,1,0,(sd s^i)))) 这个时候计算这个值是没有问题的,so。。。我真菜,搞不懂
    最佳答案
    2022-3-2 11:05
    可以先定义一个函数保存为FSAGF.SEQ,把这个文件放在镜头所在的文件夹,然后打开镜头文件,在命令行输入IN FSAGF运行一次这个函数,再在优化文件中定义@SAGF123_1_99 == @SAGF123(1,99)
    @SAGF123_1_99 >-5 < 5
    应该就可以了
    ================================================
    函数内容为:
    FCT  @SAGF123(NUM ^first_surf, NUM ^last_surf)
    LCL NUM ^surf ^sum
    ^sum == 0.0
    FOR ^surf ^first_surf ^last_surf  
    ^sum == SAGF(^surf,1,0,(SD S^surf))
    END FOR
    END FCT ^sum



    评分

    参与人数 1金币 +5 收起 理由
    后来lat + 5

    查看全部评分

    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-11-22 18:15
  • 签到天数: 642 天

    [LV.9]以坛为家II

    17

    主题

    757

    回帖

    116

    积分

    入门

    积分
    116
    发表于 2022-3-2 08:50 来自手机 | 显示全部楼层
    @不能进循环
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-11-22 18:15
  • 签到天数: 642 天

    [LV.9]以坛为家II

    17

    主题

    757

    回帖

    116

    积分

    入门

    积分
    116
    发表于 2022-3-2 08:53 来自手机 | 显示全部楼层
    要么你就每个面写一遍分别控制,要么循环里面用^变量取最大最小值再用@约束保存并控制
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-11-22 18:15
  • 签到天数: 642 天

    [LV.9]以坛为家II

    17

    主题

    757

    回帖

    116

    积分

    入门

    积分
    116
    发表于 2022-3-2 08:55 来自手机 | 显示全部楼层
    或者提前定义一个function跑循环,然后@调用
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-9-15 17:47
  • 签到天数: 436 天

    [LV.9]以坛为家II

    66

    主题

    585

    回帖

    88

    积分

    入门

    积分
    88
    发表于 2022-3-2 09:07 | 显示全部楼层
    循环里面不能用ABSF,你想控制一个值的绝对值,比如| x | < 3 ,在CODEV循环里面最好这样写,X < 3 > -3
    又是美好的一
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2024-5-29 14:24
  • 签到天数: 209 天

    [LV.7]常住居民III

    14

    主题

    56

    回帖

    0

    积分

    小白

    积分
    0
     楼主| 发表于 2022-3-2 09:23 | 显示全部楼层
    cq20150401 发表于 2022-3-2 09:07
    循环里面不能用ABSF,你想控制一个值的绝对值,比如| x | < 3 ,在CODEV循环里面最好这样写,X < 3 > -3

    同样会出错,而且出错的原因貌似是识别不了sagf
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-9-15 17:47
  • 签到天数: 436 天

    [LV.9]以坛为家II

    66

    主题

    585

    回帖

    88

    积分

    入门

    积分
    88
    发表于 2022-3-2 09:24 | 显示全部楼层
    sakura 发表于 2022-3-2 09:23
    同样会出错,而且出错的原因貌似是识别不了sagf

    嗯,我也试了,sagf和absf都不行,@符号好像在循环没问题,那就是循环里面不能调用函数
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-9-15 17:47
  • 签到天数: 436 天

    [LV.9]以坛为家II

    66

    主题

    585

    回帖

    88

    积分

    入门

    积分
    88
    发表于 2022-3-2 11:05 | 显示全部楼层    本楼为最佳答案   
    可以先定义一个函数保存为FSAGF.SEQ,把这个文件放在镜头所在的文件夹,然后打开镜头文件,在命令行输入IN FSAGF运行一次这个函数,再在优化文件中定义@SAGF123_1_99 == @SAGF123(1,99)
    @SAGF123_1_99 >-5 < 5
    应该就可以了
    ================================================
    函数内容为:
    FCT  @SAGF123(NUM ^first_surf, NUM ^last_surf)
    LCL NUM ^surf ^sum
    ^sum == 0.0
    FOR ^surf ^first_surf ^last_surf  
    ^sum == SAGF(^surf,1,0,(SD S^surf))
    END FOR
    END FCT ^sum



    评分

    参与人数 1金币 +5 收起 理由
    后来lat + 5

    查看全部评分

    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2024-11-22 09:18
  • 签到天数: 691 天

    [LV.9]以坛为家II

    20

    主题

    456

    回帖

    34

    积分

    新手

    积分
    34
    发表于 2022-4-11 10:41 | 显示全部楼层
    cq20150401 发表于 2022-3-2 11:05
    可以先定义一个函数保存为FSAGF.SEQ,把这个文件放在镜头所在的文件夹,然后打开镜头文件,在命令行输入IN  ...

    我试了下,这个好像没用。只能控制最后循环的数值,就是最后那个面的。
    写了abfs(rdy s^i)<100的,试了下只能控制循环里面最后那个面,其他面都控制不了。
    再用户自定义约束那里计算出来的也是最后那个循环的数值
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-9-15 17:47
  • 签到天数: 436 天

    [LV.9]以坛为家II

    66

    主题

    585

    回帖

    88

    积分

    入门

    积分
    88
    发表于 2022-4-11 11:30 | 显示全部楼层
    Leslie 发表于 2022-4-11 10:41
    我试了下,这个好像没用。只能控制最后循环的数值,就是最后那个面的。
    写了abfs(rdy s^i)

    这个我测试过没问题啊,不过也有可能是这里@SAGF123_1_99 == @SAGF123(1,99),我写成(1,99),是想表达从第一个面到最后一个面,实际使用的时候要把(1,99)的99改成最后一个面的序号

    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    联系我们|本论坛只支持PC端注册|手机版|小黑屋|吾爱光设 ( 粤ICP备15067533号 )

    GMT+8, 2024-11-23 17:07 , Processed in 0.125000 second(s), 25 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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