Block can definitely be inserted proggrammatically without Jig, if it is not necessary for waiting user input. Mind you, jig is meant to provide visual hint when the process (inserting) is waiting for user input (position, rotation, scale...), thus the inserting can only be completed(or cancelled) after PropmtResult is returned, when jig is used.
So, I am not quite sure what you want: do you mean that your code can insert a block, but cannot rotate it to a known angle without jig? If the rotation angle is known (or any other inserting data, position, scale...) why there is need for jig?
For example, if all information about inserting a block is known, you can do the inserting like (pseudo-code)
public void InsertBlock(string blkName, Point3d position, double rotation, doubel scale)
{
//Find block definition id, based on block name. insert the block definition, if necessary
....
//Create block referenece
var bref=new BlockReference(blkdefId, position);
// add it to proper space (model or paper)
// add to transaction
//Add attributes, if necessary, based on block defeinition
//Roate it to the known angle (WITHOUT waiting for user input via jig!)
var mt = Matrix3D.Rotation(rotation, Vector3d.ZAxis, position);
Bref.Transform(mt)
Scale3d s=new Scale3d(scale, scale, scale);
Bref.ScaleFactors=s;
// whatever extra work you need to do with this block refernece
}
So, you might want to explain the process from user's point of view step by step and what information about the block is known prior to inserting, and why you think you have to use jig in that case.