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 "memvirtu.h"
00043 #include "lowparam.h"
00044 #include "lowmacro.h"
00045 #include "lowsolid.h"
00046 #include "hiegroup.h"
00047 #include "genfunc_.h"
00048 #include "disdispl.h"
00049 #include "mancommd.h"
00050
00051 void MSD_execShow(void)
00052 {
00053 SPTYPE optr;
00054 int n, opt, np;
00055 char name[20];
00056
00057 for (optr = SNIL; ; np = 0)
00058 {
00059 if (((opt = optin()) == 'v') || (opt == 'e') || (opt == 'f'))
00060 {
00061 if ((np = sscanf(restbuf, "%d", &n)) == 1)
00062 {
00063 switch (opt)
00064 {
00065 case 'v':
00066 MSD_lowShowListVertex(MSD_lowShowFindVertex(optr, n));
00067 break;
00068
00069 case 'e':
00070 MSD_lowShowListEdge(MSD_lowShowFindEdge(optr, n));
00071 break;
00072
00073 case 'f':
00074 MSD_lowShowListFace(MSD_getFace(optr, n));
00075 break;
00076 }
00077 }
00078 }
00079 if ((opt == 'c') || (opt == 'g') || (opt == 'a') || (opt == 'o'))
00080 {
00081 if ((np = sscanf(restbuf, "%s", name)) == 1)
00082 {
00083 switch (opt)
00084 {
00085 case 'c':
00086 MSD_lowNameListCameraName(MSD_lowFindCameraByName(name));
00087 break;
00088
00089 case 'g':
00090 MSD_lowListGroup(MSD_lowFindGroupByName(name));
00091 break;
00092
00093 case 'a':
00094 MSD_lowListAxisName(MSD_lowFindAxisByName(name));
00095 break;
00096
00097 case 'o':
00098 MSD_lowShowListSolid(optr = MSD_lowFindSolidByName(name));
00099 break;
00100 }
00101 }
00102 }
00103 if (np != 1)
00104 {
00105 switch (opt)
00106 {
00107 case 'c':
00108 MSD_lowListAllCamera( );
00109 break;
00110
00111 case 'g':
00112 MSD_lowListAllGroup( );
00113 break;
00114
00115 case 'a':
00116 MSD_lowListAllAxis( );
00117 break;
00118
00119 case 'o':
00120 MSD_lowListAllSolid( );
00121 break;
00122
00123 case 'v':
00124 MSD_lowListAllVertex(optr);
00125 break;
00126
00127 case 'e':
00128 MSD_lowListAllEdge(optr);
00129 break;
00130
00131 case 'f':
00132 MSD_lowListAllFace(optr);
00133 break;
00134 }
00135 }
00136 printf("-cgao [Nome] -vef[No.] \n");
00137 if (!lineins("? "))
00138 {
00139 return;
00140 }
00141 }
00142 }
00143
00144 EPTYPE MSD_lowShowFindEdge(SPTYPE s, Id en)
00145 {
00146 DPTYPE d;
00147 EPTYPE e;
00148
00149 for (AllShellsSolid(s, d))
00150 {
00151 for (AllEdgesShell(d, e))
00152 {
00153 if (EdgEdgeNo(e) == en)
00154 {
00155 return(e);
00156 }
00157 }
00158 }
00159 return(ENIL);
00160 }
00161
00162 VPTYPE MSD_lowShowFindVertex(SPTYPE s, Id vn)
00163 {
00164 DPTYPE d;
00165 VPTYPE v;
00166
00167 for (AllShellsSolid(s, d))
00168 {
00169 for (AllVerticesShell(d, v))
00170 {
00171 if (VerVertexNo(v) == vn)
00172 {
00173 return(v);
00174 }
00175 }
00176 }
00177 return(VNIL);
00178 }
00179
00180 void MSD_lowListAllSolid(void)
00181 {
00182 SPTYPE optr;
00183
00184 for (AllSolids(optr))
00185 {
00186 MSD_lowShowListSolid(optr);
00187 }
00188 }
00189
00190 void MSD_lowListAllVertex(SPTYPE optr)
00191 {
00192 DPTYPE dptr;
00193 VPTYPE vptr;
00194
00195 if (optr != SNIL)
00196 {
00197 for (AllShellsSolid(optr, dptr))
00198 {
00199 for (AllVerticesShell(dptr, vptr))
00200 {
00201 MSD_lowShowListVertex(vptr);
00202 }
00203 }
00204 }
00205 }
00206
00207 void MSD_lowListAllEdge(SPTYPE optr)
00208 {
00209 DPTYPE dptr;
00210 EPTYPE eptr;
00211
00212 if (optr != SNIL)
00213 {
00214 for (AllShellsSolid(optr, dptr))
00215 {
00216 for (AllEdgesShell(dptr, eptr))
00217 {
00218 MSD_lowShowListEdge(eptr);
00219 }
00220 }
00221 }
00222 }
00223
00224 void MSD_lowListAllFace(SPTYPE optr)
00225 {
00226 DPTYPE dptr;
00227 FPTYPE fptr;
00228
00229 if (optr != SNIL)
00230 {
00231 for (AllShellsSolid(optr, dptr))
00232 {
00233 for (AllFacesShell(dptr, fptr))
00234 {
00235 MSD_lowShowListFace(fptr);
00236 }
00237 }
00238 }
00239 }
00240
00241 void MSD_lowShowListSolid(SPTYPE optr)
00242 {
00243 static char nul[1] = { 0 };
00244 char *grnamptr, *axnamptr;
00245 STYPE *ss;
00246
00247 #ifdef __VIRTUAL_MEM
00248 ss = SSTYPE(optr);
00249 #else
00250 ss = optr;
00251 #endif
00252
00253 if (optr == SNIL)
00254 {
00255 return;
00256 }
00257 grnamptr = SolGroup(optr) == GNIL ? nul : GrpName(SolGroup(optr));
00258 axnamptr = SolOAxs(optr) != ANIL ? AxsName(SolOAxs(optr)) :
00259 SolGroup(optr) == GNIL ? nul :
00260 GrpGAxs(SolGroup(optr)) != ANIL ? AxsName(GrpGAxs(SolGroup(optr))) :
00261 nul;
00262 printf("Objeto Nome=%-17s group=%-17s axis=%-17s\n", SolName(optr),
00263 grnamptr, axnamptr);
00264 printf(" Cor=%-3d N_Vert=%4d N_Edge=%4d N_Face=%4d\n",
00265 SolColor(optr), ss->eucoef.vertexn,
00266 ss->eucoef.edgen,
00267 ss->eucoef.facen);
00268 }
00269
00270 void MSD_lowShowListVertex(VPTYPE vptr)
00271 {
00272 if (vptr == VNIL)
00273 {
00274 return;
00275 }
00276 printf("Vertex %-4d", VerVertexNo(vptr));
00277 printf("v3(%12.5f,%12.5f,%12.5f)\n", VerVCoord(vptr)[0],
00278 VerVCoord(vptr)[1],
00279 VerVCoord(vptr)[2]);
00280 }
00281
00282 void MSD_lowShowListEdge(EPTYPE eptr)
00283 {
00284 if (eptr == ENIL)
00285 {
00286 return;
00287 }
00288 printf("Edge %-4d", EdgEdgeNo(eptr));
00289 printf("vertex(%3d,%3d) face(%3d,%3d) wing(%3d,%3d,%3d,%3d)",
00290 VerVertexNo(HalVtx(EdgHe1(eptr))),
00291 VerVertexNo(HalVtx(EdgHe2(eptr))),
00292 FacFaceNo(LooLFace(HalWLoop(EdgHe1(eptr)))),
00293 FacFaceNo(LooLFace(HalWLoop(EdgHe2(eptr)))),
00294 EdgEdgeNo(HalEdg(HalNxt(EdgHe1(eptr)))),
00295 EdgEdgeNo(HalEdg(HalPrv(EdgHe1(eptr)))),
00296 EdgEdgeNo(HalEdg(HalNxt(EdgHe2(eptr)))),
00297 EdgEdgeNo(HalEdg(HalPrv(EdgHe2(eptr)))));
00298 printf(" angle(%7.4g)\n", EdgAngle(eptr));
00299 }
00300
00301 void MSD_lowShowListFace(FPTYPE fptr)
00302 {
00303 HPTYPE eptr;
00304 HPTYPE efim;
00305
00306 if (fptr == FNIL)
00307 {
00308 return;
00309 }
00310 printf("Face %-4d", FacFaceNo(fptr));
00311 printf("normal(%8.5f,%8.5f,%8.5f)", FacFeq(fptr)[0],
00312 FacFeq(fptr)[1],
00313 FacFeq(fptr)[2]);
00314 printf(" dis(%9.5f) nv(%4d)\n", -FacFeq(fptr)[3], LooLength(FacFLOut(fptr)));
00315 eptr = efim = LooLEdg(FacFLOut(fptr));
00316 do
00317 {
00318 printf(">%3d <---%3d ---", EdgEdgeNo(HalEdg(eptr)),
00319 VerVertexNo(HalVtx(eptr)));
00320 } while (efim != (eptr = HalNxt(eptr)));
00321 printf("\n");
00322 }