private void StreckenThread_Click(object sender, System.EventArgs e)
{
SldWorks.ModelDoc2 Model = swApp.IActiveDoc2;
SldWorks.AssemblyDoc Assembly = (SldWorks.AssemblyDoc) Model;
SldWorks.DragOperator DragOp = (SldWorks.DragOperator) Assembly.GetDragOperator();
SldWorks.SelectionMgr SelMgr = (SldWorks.SelectionMgr) Model.SelectionManager;
SldWorks.Component2 Comp = null;
Comp = SelMgr.IGetSelectedObjectsComponent2(1);
SldWorks.MathUtility MathUtil = (SldWorks.MathUtility) swApp.GetMathUtility();
SldWorks.MathTransform Xform = null;
int Strecke = 100;
double [] MATRIX = new double [16];
// Rotation
MATRIX [0] = 1; MATRIX [1] = 0; MATRIX [2] = 0;
MATRIX [3] = 0; MATRIX [4] = 1; MATRIX [5] = 0;
MATRIX [6] = 0; MATRIX [7] = 0; MATRIX [8] = 1;
// Transform
MATRIX [9] = 0; MATRIX [10] = 0; MATRIX [11] = 0;
// Skalierung
MATRIX [12] = 1;
// unused
MATRIX [13] = 0; MATRIX [14] = 0; MATRIX [15] = 0;
//double [] TempMatrix ={1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0};
System.Array Data = MATRIX;
DragOp.CollisionDetectionEnabled = false;
DragOp.DynamicClearanceEnabled = false;
DragOp.TransformType = 2;
TimerState2 s = new TimerState2(Model, Assembly,DragOp, SelMgr, Comp, MathUtil, Xform, MATRIX, Data, Strecke);
TimerCallback timerDelegate = new TimerCallback(ChangeValues);
s.Model = Model;
s.Assembly = Assembly;
s.DragOp = DragOp;
s.SelMgr = SelMgr;
s.Comp = Comp;
s.MathUtil = MathUtil;
s.Xform = Xform;
s.MATRIX = MATRIX;
s.Data = Data;
s.Strecke = Strecke;
System.Threading.Timer timer = new System.Threading.Timer(timerDelegate, s, 0, 1000);
s.tmr = timer;
while(s.tmr != null)
Thread.Sleep(1000);
}
class TimerState2
{
public SldWorks.ModelDoc2 Model = null;
public SldWorks.AssemblyDoc Assembly = null;
public SldWorks.DragOperator DragOp = null;
public SldWorks.SelectionMgr SelMgr = null;
public SldWorks.Component2 Comp = null;
public SldWorks.MathUtility MathUtil = null;
public SldWorks.MathTransform Xform = null;
public double [] MATRIX = new double [16];
public System.Array Data = null;
public int Strecke = 100;
public System.Threading.Timer tmr;
public TimerState2( SldWorks.ModelDoc2 Model, SldWorks.AssemblyDoc Assembly, SldWorks.DragOperator DragOp, SldWorks.SelectionMgr SelMgr, SldWorks.Component2 Comp, SldWorks.MathUtility MathUtil, SldWorks.MathTransform Xform, double [] MATRIX, System.Array Data, int Strecke )
{
this.Model = Model;
this.Assembly = Assembly;
this.DragOp = DragOp;
this.SelMgr = SelMgr;
this.Comp = Comp;
this.MathUtil = MathUtil;
this.Xform = Xform;
this.MATRIX = MATRIX;
this.Data = Data;
this.Strecke = Strecke;
}
}
static void ChangeValues(Object state)
{
TimerState2 s =(TimerState2) state;
s.Strecke --;
//MessageBox.Show(s.Comp.Name.ToString()); vorher schon abschiss
s.MATRIX [9] = 0.01 / 100; // ( MaxIterations )
s.MATRIX [10] = 0.01 / 100;
s.MATRIX [11] = 0.01 / 100;
s.Xform = (SldWorks.MathTransform) s.MathUtil.CreateTransform( s.Data );
s.DragOp.Drag(s.Xform);
if( s.Strecke <= 0 )
{
s.tmr.Dispose();
s.tmr = null;
}
}
Es ist leider n bischen viel
und auch bestimmt viel schrott dabei...
Gruß Robin
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP