吾爱光设

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

[求助] [已解决]Python读取Zemax非序列物体的表面数据问题(NSC)

[复制链接]
  • TA的每日心情

    2025-1-18 14:02
  • 签到天数: 260 天

    [LV.8]以坛为家I

    26

    主题

    237

    回帖

    12

    积分

    小白

    积分
    12
    发表于 2024-12-13 17:16 | 显示全部楼层 |阅读模式
    想用Python读取非序列物体的参数,问题是用同样的语法,只能读出材料和注释,曲率和厚度都读不出来
    啃了一天了,序列模式下是可以读出曲率、厚度的,真是想不通

    报错如下图



    最佳答案
    2024-12-14 16:11
    amateur 发表于 2024-12-14 15:58
    Par1也不行...我怀疑是不是要用GetObjectCell



    参考下


    TheNCE = TheSystem.NCE
    object_ = TheNCE.GetObjectAt(2)  # Object 2
    radius1 = float(
            object_.GetCellAt(object_.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par1).Col).Value)

    print('Raidus1 = ',radius1)


    本帖子中包含更多资源

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

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

    使用道具 举报

  • TA的每日心情
    擦汗
    2025-1-18 10:40
  • 签到天数: 783 天

    [LV.10]以坛为家III

    11

    主题

    1330

    回帖

    682

    积分

    初级

    积分
    682
    发表于 2024-12-14 13:28 | 显示全部楼层
    Material后面开始,对应的是Par1……,把Radius1改成Par1,厚度改为Par5,Radius2改成Par6

    本帖子中包含更多资源

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

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

    使用道具 举报

  • TA的每日心情

    2025-1-18 14:02
  • 签到天数: 260 天

    [LV.8]以坛为家I

    26

    主题

    237

    回帖

    12

    积分

    小白

    积分
    12
     楼主| 发表于 2024-12-14 15:58 | 显示全部楼层
    本帖最后由 amateur 于 2024-12-14 16:06 编辑
    dpstt 发表于 2024-12-14 13:28
    Material后面开始,对应的是Par1……,把Radius1改成Par1,厚度改为Par5,Radius2改成Par6 ...

    Par1也不行...我怀疑是不是要用GetObjectCell
    1. #Comment
    2. print(TheSystem.NCE.GetObjectAt(2).Comment)
    3. #Radius 1
    4. print(TheSystem.NCE.GetObjectAt(2).Par1)
    复制代码

    本帖子中包含更多资源

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

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

    使用道具 举报

  • TA的每日心情
    擦汗
    2025-1-18 10:40
  • 签到天数: 783 天

    [LV.10]以坛为家III

    11

    主题

    1330

    回帖

    682

    积分

    初级

    积分
    682
    发表于 2024-12-14 16:11 | 显示全部楼层    本楼为最佳答案   
    amateur 发表于 2024-12-14 15:58
    Par1也不行...我怀疑是不是要用GetObjectCell



    参考下


    TheNCE = TheSystem.NCE
    object_ = TheNCE.GetObjectAt(2)  # Object 2
    radius1 = float(
            object_.GetCellAt(object_.GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par1).Col).Value)

    print('Raidus1 = ',radius1)


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

    使用道具 举报

  • TA的每日心情

    2025-1-18 14:02
  • 签到天数: 260 天

    [LV.8]以坛为家I

    26

    主题

    237

    回帖

    12

    积分

    小白

    积分
    12
     楼主| 发表于 2024-12-14 16:22 | 显示全部楼层
    本帖最后由 amateur 于 2024-12-14 16:23 编辑
    dpstt 发表于 2024-12-14 16:11
    参考下
    是的是的,要用ObjectCell的语法
    1. print(TheSystem.NCE.GetObjectAt(2).GetObjectCell(ZOSAPI.Editors.NCE.ObjectColumn.Par1).Value)
    复制代码
    这样就可以了
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2025-1-19 03:25 , Processed in 0.109375 second(s), 24 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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