00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 #include <stdio.h>
00042 #include "mensagem.h"
00043 #include "memvirtu.h"
00044 #include "lowparam.h"
00045 #include "lowmacro.h"
00046 #include "lowsolid.h"
00047 #include "vectorop.h"
00048 #include "eulerops.h"
00049 #include "mancommd.h"
00050 #include "hiegroup.h"
00051
00052 #ifdef __Extended_Version
00053 void MSD_execNameRemoveAxis(void)
00054 {
00055 char aname[30];
00056
00057 while (1 != sscanf(restbuf, "%s", aname))
00058 {
00059 printf("RemAxis: axis\n");
00060 if (!lineins("? "))
00061 {
00062 return;
00063 }
00064 }
00065 MSD_highNameRemoveAxis(aname);
00066 }
00067
00068 #endif
00069
00070 int MSD_highNameRemoveAxis(char *name)
00071 {
00072 int an;
00073
00074 if ((an = MSD_getAxisIdFromName(name)) == -1)
00075 {
00076 fprintf(stderr, MEN_NaoEncontrouAxisNome, NAM_RemoveAxis, name);
00077 return(ERROR);
00078 }
00079 return(MSD_highRemoveAxis(an));
00080 }
00081
00082 #ifdef __Extended_Version
00083 void MSD_execRemoveAxis(void)
00084 {
00085 int an;
00086
00087 while (1 != sscanf(restbuf, "%d", &an))
00088 {
00089 printf("RemAxis: axis\n");
00090 if (!lineins("? "))
00091 {
00092 return;
00093 }
00094 }
00095 MSD_highRemoveAxis(an);
00096 }
00097
00098 #endif
00099
00100 int MSD_highRemoveAxis(int an)
00101 {
00102 APTYPE aptr;
00103
00104 if ((aptr = MSD_getAxis(an)) == ANIL)
00105 {
00106 fprintf(stderr, MEN_NaoEncontrouAxisId, NAM_RemoveAxis, an);
00107 return(ERROR);
00108 }
00109 return(MSD_lowRemoveAxis(aptr));
00110 }
00111
00112 int MSD_lowRemoveAxis(APTYPE aptr)
00113 {
00114 real fd1, fd2, fd3, fd4;
00115 Id an;
00116
00117 MSD_lowAxisName(aptr, "");
00118 if (Gdoinversion)
00119 {
00120 if (AxsMode(aptr) == AxisOfTranslation)
00121 {
00122 an = AxsAxisNo(aptr);
00123 fd1 = AxsVector(aptr)[0];
00124 fd2 = AxsVector(aptr)[1];
00125 fd3 = AxsVector(aptr)[2];
00126 fd4 = AxsVector(aptr)[3];
00127 MSD_lowAddEulerOp(SNIL, CRTAXSTRS, an, 0, 0, 0, 0, 0, 0, 0,
00128 fd1, fd2, fd3, fd4);
00129 }
00130 if (AxsMode(aptr) == AxisOfRotation)
00131 {
00132 an = AxsAxisNo(aptr);
00133 fd1 = AxsVector(aptr)[0];
00134 fd2 = AxsVector(aptr)[1];
00135 fd3 = AxsVector(aptr)[2];
00136 fd4 = AxsVector(aptr)[3];
00137 MSD_lowAddEulerOp(SNIL, CRTAXSROT, an, 0, 0, 0, 0, 0, 0, 0,
00138 fd1, fd2, fd3, fd4);
00139 fd1 = AxsVector(aptr)[0];
00140 fd2 = AxsVector(aptr)[1];
00141 fd3 = AxsVector(aptr)[2];
00142 fd4 = AxsVector(aptr)[3];
00143 MSD_lowAddEulerOp(SNIL, CRTAXSROT, -1, 0, 0, 0, 0, 0, 0, 0,
00144 fd1, fd2, fd3, fd4);
00145 }
00146 }
00147
00148 --axsused;
00149 MSD_lowDelElement(AXIS, (NPTYPE)aptr, NNIL);
00150 return(SUCCESS);
00151 }
00152
00153 int MSD_execStructRemoveAxis(EulerOp *op)
00154 {
00155 return(MSD_highRemoveAxis(op->ip1));
00156 }
00157
00158 void MSD_printStructRemoveAxis(FILE *f, EulerOp *op)
00159 {
00160 Id sid, ip1;
00161
00162 sid = op->solidno;
00163 ip1 = op->ip1;
00164 fprintf(f, "axsdel %d %d\n", sid, ip1);
00165 }
00166
00167 int MSD_readStructRemoveAxis(FILE *f, EulerOp *op)
00168 {
00169 int solidno, ip1;
00170
00171 if (fscanf(f, "%d %d", &solidno, &ip1) != 2)
00172 {
00173 return(ERROR);
00174 }
00175 op->solidno = solidno;
00176 op->ip1 = ip1;
00177 op->ip2 = 0;
00178 op->ip3 = 0;
00179 op->ip4 = 0;
00180 op->ip5 = 0;
00181 op->ip6 = 0;
00182 op->ip7 = 0;
00183 op->ip8 = 0;
00184 op->fp1 = 0.0;
00185 op->fp2 = 0.0;
00186 op->fp3 = 0.0;
00187 op->fp4 = 0.0;
00188 return(SUCCESS);
00189 }
00190
00191 int MSD_modifyStructRemoveAxis(EulerOp *op)
00192 {
00193 int axisno;
00194
00195 axisno = MSD_lowCheckTranslatorTable(op->ip1, AXIS);
00196 op->ip1 = axisno;
00197 return(SUCCESS);
00198 }