There are many questions when we want to do one action using Synchro Script. First step is to learn from Synchro Help. Second, you can always search from Synchro Community page: SYNCHRO Construction Solution - Bentley Communities Here we have some example script that may help you to start your script learning journey. Create User Field and Calculation: Calculate from Resource to Task Level TASK ASSIGN_UF ("MHour" , FLOAT , 0 ) TASK ASSIGN_UF ("MHour" , FLOAT , SUM(RESOURCE.UFV ("MHour") ) Get Total MHour - WBS Level TASK (NUM_CHILDREN>0) ASSIGN_UF ("MHour" ,FLOAT, SUM (CHILD.UFV ("MHour") ) Copy UFV from String to Numeric RESOURCE ASSIGN_UF("[SYNC]Volume", FLOAT, UFV("Volume")) Copy UF to other UF 3D (EXIST UFV("WBS_A")) ASSIGN_UF ("WBS",STRING,STRING(UFV("WBS_A"))) Create UF for Group to get multi TASK using MODIFY_UF_NAME GROUP ASSIGN_UF(MODIFY_UF_NAME , "TASK NAME" , STRING , EACH (TASK.PROPERTY("Name"))) Create UF for Delayed days (planned date – baseline date) TASK ASSIGN_UF("Synchro Delay", FLOAT, (PROPERTY("Planned Start") - PROPERTY("BL Early Start")) / ( 3600*24 ) ) Compare duration TASK ( PROPERTY("Actual Duration") PROPERTY("Planned Duration") ) ASSIGN_UF ("ALERT" , STRING , "ON" ) Create UF = Sum of certain Status Name TASK(SELECTED) ASSIGN_UF("Task Complete Quantity ", DOUBLE, SUM(RESOURCE(STATUS_NAME("Default category")=="Status Name").UFV("Complete Quantity"))) To copy “Level” attribute from Parent to Child. RESOURCE(SELECTED AND NUM_CHILDREN == 0) ASSIGN_UF ("Level" ,STRING, PARENT.PARENT.UFV("Level")) RESOURCE(SELECTED AND NUM_CHILDREN == 0) ASSIGN_UF ("Level" ,STRING, PARENT.UFV("Level")) To copy “Level” attribute from Child to Parent. RESOURCE ASSIGN_UF ("Isometric", STRING, CHILD(NUM_CHILDREN == 0 AND EXIST UFV("Isometric") >= "").UFV("Isometric")) Set Resource Status: Update Resource Status from Task User Field TASK(SELECTED AND STRING(UFV("Material Status")) == "No Material" ).RESOURCE (NOT STATUS_HISTORY("Material Status") >="No Material") SET_PROPERTY (STATUS_NAME , "Material Status::Construction Component::"+ "No Material") TASK(SELECTED AND STRING(UFV("Material Status")) == "Partially Allocatted" ).RESOURCE (NOT STATUS_HISTORY("Material Status") >="Partially Allocatted") SET_PROPERTY (STATUS_NAME , "Material Status::Construction Component::"+ "Partially Allocatted") TASK(SELECTED AND STRING(UFV("Material Status")) == "Fully Allocated" ).RESOURCE (NOT STATUS_HISTORY("Material Status") >="Fully Allocated") SET_PROPERTY (STATUS_NAME , "Material Status::Construction Component::"+ "Fully Allocated") Update Resource Status from Task %Complete TASK(SELECTED AND PROPERTY("% Complete") = 0 ).RESOURCE (NOT STATUS_HISTORY("Installation Status") >="Not Started") SET_PROPERTY (STATUS_NAME , "Installation Status::Construction Component::"+ "Not Started") TASK(SELECTED AND PROPERTY("% Complete") >0 AND PROPERTY("% Complete") =">0% and 0% and 25 AND PROPERTY("% Complete") =">25% and 25% and 50 AND PROPERTY("% Complete") =">50% and 50% and 75 AND PROPERTY("% Complete") =">75% and 75% and ="Completed") SET_PROPERTY (STATUS_NAME , "Installation Status::Construction Component::"+ "Completed") Create Resource Group: Create Group from the Task TASK.RESOURCE ASSIGN_GROUP_BY_ID EACH TASK NAME Create Group from the User Field RESOURCE (EXIST UFV ("Work Package")) ASSIGN_GROUP_BY_ID (UFV ("Work Package")) Sync Group Data from Task GROUP UNASSIGN_OBJECT RESOURCE GROUP ASSIGN_OBJECT VAR TASK (NAME == $0.NAME).RESOURCE Set Property Rename Task name TASK SET_PROPERTY (NAME, "Install " + " - " + UFV("Category")) Actual Cost Form Budget Cost: TASK SET_PROPERTY(PROPERTY("Actual Direct Cost"),PROPERTY("Budgeted Direct Cost")*PROPERTY("% Complete")/100) Set Task – Resource Plan Unit quantity: RESOURCE(NAME=="Concrete").ASSIGNMENT SET_PROPERTY (PLANNED_WORK, TASK.UFV("[SYNC]Volume")) Set Task – Resource Actual Unit quantity: RESOURCE (NAME=="Concrete").ASSIGNMENT SET_PROPERTY (ACTUAL_WORK, PROPERTY("Planned Units") * TASK.PROPERTY("% Complete") / 100) Resource Actual Unit calculation TASK(SELECTED.ASSIGNMENT SET_PROPERTY(ACTUAL_WORK, PROPERTY("Planned Units") * TASK.PROPERTY("% Complete")/100) Change Appearance Profile TASK(SELECTED).ASSIGNMENT SET_PROPERTY (PROPERTY("Appearance Profile"), ALL_USE_PROFILE( NAME == "Concrete" )) TASK.ASSIGNMENT (RESOURCE.UFV("Structural Material")>="Concrete" OR RESOURCE.UFV("Type")>="Concrete" OR RESOURCE.UFV("Material")>="Concrete" ) SET_PROPERTY ( PROPERTY("Appearance Profile"), ALL_USE_PROFILE( NAME == "Concrete" )) Physical Quantity / Volume TASK SET_PROPERTY (PHYSICALVOL_SH, "Cubic metre", UFV("Total Volume")) TASK(SELECTED) SET_PROPERTY(PHYSICALVOL_SH, "Ton", SUM (3D.UFV("Weight.FLOAT")) /2000.0) Physical Quantity from 3D geometric volume RESOURCE ASSIGN_UF ("Volume", STRING,3D_CALCULATE_VOLUME(3D))) TASK ASSIGN_UF ("Volume", FLOAT , 3D_CALCULATE_VOLUME(3D)) TASK SET_PROPERTY(PHYSICALVOL_SH, "Cubic metre", UFV("Volume")) Calculate and set Task Duration TASK SET_PROPERTY(PROPERTY("Task_Duration”), STRING(SUM(RESOURCE.UFV("TheDuration"))) + "h")) Round the Task Duration to 8 hours TASK SET_PROPERTY(TASK_DURATION , ( (TASK_DURATION + "7.99h") / ( 3600*8 ) ) * (3600*8)) Or to 4 hours TASK SET_PROPERTY(TASK_DURATION , ((TASK_DURATION + "3.99h")/(3600*4 )*(3600*4))) Set Task Budgeted Direct Cost: TASK SET_PROPERTY(PROPERTY("Budgeted Direct Cost"), SUM(RESOURCE.UFV("Pris")))
↧