Two ways to copy a component (subtle differences)
A channel partner reported that
comp = GetRootPart().Components[0]
compCopy1 = ComponentHelper.CopyToRoot(comp)
compCopy2 = Copy.Execute(ComponentSelection.Create(comp))
CompCopy1 is faster, but creates the component with a very small offset.
Michael Janes reply was:
The component has a transform, and ComponentHelper.CopyToRoot creates a new component without a transform. Personally, I think the transform should be copied to the new component, but I’m hesitant to change it because it could break existing scripts. Instead, I added an example to the documentation.
For your case, try the following:
comp = GetRootPart().Components[0]
compCopy1 = ComponentHelper.CopyToRoot(comp)
transform = comp.Content.GetTransformToMaster().Inverse
compCopy1.Transform(transform)
The channel partner confirmed this.
I have posted this here for future reference.