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.
TASK ASSIGN_UF ("MHour" , FLOAT , 0 ) TASK ASSIGN_UF ("MHour" , FLOAT , SUM(RESOURCE.UFV ("MHour") )
TASK (NUM_CHILDREN>0) ASSIGN_UF ("MHour" ,FLOAT, SUM (CHILD.UFV ("MHour") )
RESOURCE ASSIGN_UF("[SYNC]Volume", FLOAT, UFV("Volume"))
3D (EXIST UFV("WBS_A")) ASSIGN_UF ("WBS",STRING,STRING(UFV("WBS_A")))
GROUP ASSIGN_UF(MODIFY_UF_NAME , "TASK NAME" , STRING , EACH (TASK.PROPERTY("Name")))
TASK ASSIGN_UF("Synchro Delay", FLOAT, (PROPERTY("Planned Start") - PROPERTY("BL Early Start")) / ( 3600*24 ) )
TASK ( PROPERTY("Actual Duration") <= PROPERTY("Planned Duration") ) ASSIGN_UF ("ALERT" , STRING , "OFF" ) TASK ( PROPERTY("Actual Duration") > PROPERTY("Planned Duration") ) ASSIGN_UF ("ALERT" , STRING , "ON" )
TASK(SELECTED) ASSIGN_UF("Task Complete Quantity ", DOUBLE, SUM(RESOURCE(STATUS_NAME("Default category")=="Status Name").UFV("Complete Quantity")))
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"))
RESOURCE ASSIGN_UF ("Isometric", STRING, CHILD(NUM_CHILDREN == 0 AND EXIST UFV("Isometric") >= "").UFV("Isometric"))
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")
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") <=25 ).RESOURCE (NOT STATUS_HISTORY("Installation Status") >=">0% and <=25%") SET_PROPERTY (STATUS_NAME , "Installation Status::Construction Component::"+ ">0% and <=25%")
TASK(SELECTED AND PROPERTY("% Complete") >25 AND PROPERTY("% Complete") <=50 ).RESOURCE (NOT STATUS_HISTORY("Installation Status") >=">25% and <=50%") SET_PROPERTY (STATUS_NAME , "Installation Status::Construction Component::"+ ">25% and <=50%")
TASK(SELECTED AND PROPERTY("% Complete") >50 AND PROPERTY("% Complete") <=75 ).RESOURCE (NOT STATUS_HISTORY("Installation Status") >=">50% and <=75%") SET_PROPERTY (STATUS_NAME , "Installation Status::Construction Component::"+ ">50% and <=75%")
TASK(SELECTED AND PROPERTY("% Complete") >75 AND PROPERTY("% Complete") <=100 ).RESOURCE (NOT STATUS_HISTORY("Installation Status") >=">75% and <=100%") SET_PROPERTY (STATUS_NAME , "Installation Status::Construction Component::"+ ">75% and <=100%")
TASK(SELECTED AND PROPERTY("% Complete") == 100).RESOURCE (NOT STATUS_HISTORY("Installation Status") >="Completed") SET_PROPERTY (STATUS_NAME , "Installation Status::Construction Component::"+ "Completed")
TASK.RESOURCE ASSIGN_GROUP_BY_ID EACH TASK NAME
RESOURCE (EXIST UFV ("Work Package")) ASSIGN_GROUP_BY_ID (UFV ("Work Package"))
GROUP UNASSIGN_OBJECT RESOURCE GROUP ASSIGN_OBJECT VAR TASK (NAME == $0.NAME).RESOURCE
TASK SET_PROPERTY (NAME, "Install " + " - " + UFV("Category"))
TASK SET_PROPERTY(PROPERTY("Actual Direct Cost"),PROPERTY("Budgeted Direct Cost")*PROPERTY("% Complete")/100)
RESOURCE(NAME=="Concrete").ASSIGNMENT SET_PROPERTY (PLANNED_WORK, TASK.UFV("[SYNC]Volume"))
RESOURCE (NAME=="Concrete").ASSIGNMENT SET_PROPERTY (ACTUAL_WORK, PROPERTY("Planned Units") * TASK.PROPERTY("% Complete") / 100)
TASK(SELECTED.ASSIGNMENT SET_PROPERTY(ACTUAL_WORK, PROPERTY("Planned Units") * TASK.PROPERTY("% Complete")/100)
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" ))
TASK SET_PROPERTY (PHYSICALVOL_SH, "Cubic metre", UFV("Total Volume"))
TASK(SELECTED) SET_PROPERTY(PHYSICALVOL_SH, "Ton", SUM (3D.UFV("Weight.FLOAT")) /2000.0)
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"))
TASK SET_PROPERTY(PROPERTY("Task_Duration”), STRING(SUM(RESOURCE.UFV("TheDuration"))) + "h"))
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)))
TASK SET_PROPERTY(PROPERTY("Budgeted Direct Cost"), SUM(RESOURCE.UFV("Pris")))
Hi Indrawan Wijaya,These are some really good scripts, I just had one request here. Can you please edit this script (mentioned below) so that it can copy the task's Finish date as Status Date, instead of putting Data date by default to all the resources?Script - TASK(SELECTED AND PROPERTY("% Complete") == 100).RESOURCE (NOT STATUS_HISTORY("Installation Status") >="Completed") SET_PROPERTY (STATUS_NAME , "Installation Status::Construction Component::"+ "Completed")Thanks
hi Sagar,
I checked, Looks like it is not possible to bring the Task Finished Date to Resource Status Date,
The Resource Status will use Data Date or Latest Date of the Resource Status.
Others, please share if you have solution.
Best regards,
Indrawan Wijaya