var project = ActiveProject.path;
NewScene(false,false);

// create objects
CreatePrim("Cylinder", "MeshSurface");
Create2DSkeleton(0, 3, 0, 0, 0, 0.5);
AppendBone("eff", 0, -3, 0);

// create models
CreateModel("root", "_0rig");
CreateModel("cylinder", "_1geo");

// reset the transform of the models so
// they are in the center of the world
SetUserPref("SI3D_NODETRANSFORM_CHILD_COMPENSATE", 1);
ResetTransform("_0rig", siObj, siSRT, siXYZ);
SetUserPref("SI3D_NODETRANSFORM_CHILD_COMPENSATE", 0);

// create the envelope (connect the rig)
ApplyFlexEnv(
	"_1geo.cylinder;"+
	"_0rig.bone,_0rig.bone1"
);

// export to files
ExportModel("_1geo", project+"\\Models\\geo.emdl");
ExportModel("_0rig", project+"\\Models\\rig.emdl");

// new scene
NewScene(false,false);

// import both as referenced
SICreateRefModel(project+"\\Models\\rig.emdl", "_0rig");
SICreateRefModel(project+"\\Models\\geo.emdl", "_1geo");

// create a new model including both
CreateModel("_0rig,_1geo", "fullmodel");

// export this model again
ExportModel("fullmodel", project+"\\Models\\fullmodel.emdl");

// new scene
NewScene(false,false);

// import the fully rigged, separated model as referenced
SICreateRefModel(project+"\\Models\\fullmodel.emdl", "fullmodel");

// change the geometry while maintaining the connection
MakeModelLocal("_0rig", null);
MakeModelLocal("_1geo", null);
Translate("_1geo.cylinder.edge[67]", 0,0, -1.5);
ConvertToRefModel("_1geo", project + "\\Models\\geo.emdl");

// reload the full model
UpdateReferencedModel("fullmodel");
