SYCHRO 脚本问题

SYNCHRO中一条作业关联了多个3d资源,比如,作业“一层结构”关联了12根柱子,30根梁,10块板。
柱子、梁、板这三类3d资源都关联了自定义用户字段“清单编码”,只是值不同。

作业“一层结构”关联的3d资源包含3个不同的“清单编码”值。

需求:将作业关联的这三个“清单编码”值由资源类用户字段变为作业的作业类用户字段,并引用值。


为此,写脚本文件如下:

TASK( EXIST 3D.UF(NAME=="项目编码") ) ASSIGN_UF("项目编码" , STRING, 3D.UFV("项目编码"),EACH 3D.UFV("项目编码"))

运行之后,只能得到一个作业类用户字段和值,而不是三个用户字段。

问题,如何写脚本,可以得到作业关联的所有资源的清单编码值并生成匹配的多个用户字段和值。

  • Hi YJ,

    感谢您的提问.

    解答:

    方案一:

    脚本调整为如下:

    TASK( EXIST 3D.UF(NAME=="项目编码") ) ASSIGN_UF("项目编码" , STRING, SUM 3D.UFV("项目编码"))

    此方案下,您的3D对象中的项目编码会汇总到任务用户字段“项目编码”中。 

    有两个额外的问题,一是无法进行查重,二是汇总到任务字段的指,没有分隔符隔开。

    方案二:

    请新建一个任务用户字段"项目编码", 并在公式中填写如下计算公式。

    EXIST(3D.UFV("项目编码"))

    CONCAT(3D.UFV("项目编码"), " - ") 

    此方案,可以在方案一基础上,对赋予的值进行分隔符隔开。

    但依旧无法进行查重。

    建议可以通过synchro - 导出-excel ,导出excel清单,在excel中去重后,再导回到synchro 中(导入-excel)

    请参考。

    此敬

    Ted Zhang

    Principal AE- Construction Digital Twin
    Bentley Systems
    E-mail: Ted.Zhang@Bentley.com

    Answer Verified By: yj huang 

  • 谢谢张老师,我重写了以下脚本及运行结果。

    Answer Verified By: yj huang