fn EExecO1 &OOO X Dx Att Sg1 Sg2 FM = ( local Df,Def,Dl,S1,C1,Result local T1=Complex 0. 0. local T2=Complex 0. 0. local Ax=Complex 0. 0. local Ay=Complex 0. 0. local Mx=Complex 0. 0. local My=Complex 0. 0. local Cx=Complex 0. 0. local Cy=Complex 0. 0. local Ex=Complex 0. 0. local Ey=Complex 0. 0. local Bx= Complex 0. 0. local Byy=Complex 0. 0. if (X==undefined) or (Dx==undefined) then return false if (Dx.OB=="C") and (X.OB=="P") and (IsSobstv X) then ( Df=Dx.C.Re*PI/180.*Sg2; AX.Im=0 AY.Im=0 BX.Im=0 BYY.Im=0 AX.Re=X.X.Re+100.; AY.Re=X.Y.Re; AX.Im=X.X.Im; AY.Im=X.Y.Im; Def= ((Abs X.X.Im)>Eps) or ((Abs X.Y.Im)>Eps) Def=true BX.Re=X.X.Re; BYY.Re=X.Y.Re; BX.Im=X.X.Im; BYY.Im=X.Y.Im; CX=CompSub AX BX CY=CompSub AY BYY Df=Df/Pi*180. Ex=CompSub (CompMul Cx (Complex (Cos Df) 0.)) (CompMul Cy (Complex (Sin Df) 0.)) Ey=CompSum (CompMul Cx (Complex (Sin Df) 0.)) (CompMul Cy (Complex (Cos Df) 0.)) Ax =CompSum Bx Ex Ay =CompSum Byy Ey if (Def) then ( TOLine_Create &OOO BX BYY 1 AX AY 1 brn_UnLimited "sobstv" Att AddInc &OOO &X ) else ( if (Att.Chk==1) then TOEmpty_Create &OOO Att ) ) else if (Dx.OB=="C") and (X.OB=="P") and not (IsSobstv X) and (IsReal X) then ( MX=Complex 0. 0. MY=Complex 0. 0. Dl=Sqrt (Sqr X.X.Re +Sqr X.Y.Re) if (Dl>0) then ( S1=X.Y.Re/Dl C1=X.X.Re/Dl ) Df=Fi 0. 1. S1 C1 if (Df<0) then Df=2.*Pi+Df AX.Re=100.*Cos (Df/Pi*180.) AY.Re=100.*Sin (Df/Pi*180.) TOLine_Create &OOO (Complex 0. 0.) (Complex 1. 0.) 0 (Complex 1. 0.) (Complex 0. 0.) 0 brn_UnLimited "nesobstv" Att5 AddInc &OOO &X Result=true ) else ( if (Att.Chk==1) then TOEmpty_Create &OOO Att ) return true ) -- EExecO1