static int funobj(int *MODE, int *N, double *X, double *F, double *G, int *NSTATE, char *cu, int *lencu, int *iu, int *leniu, double *ru, int *lenru, ftnlen cu_len) { Optimizer1 *D; Snopt_Details *T; int asv_req; T = snopt_details; D = T->D; if (eval_check(&asv_req, MODE, X)) { *MODE = -2; return 0; } if (asv_req & 1) GetFuncs(D, 0, 1, F); if (asv_req & 2) GetGrads(D, 0, 1, T->n, T->n, 1, G); return 0; }
static void WriteDrillDataToReport(const AcDbObjectId& objId) { CString GEType = _T("DrillGE"); AcStringArray funcs; AcDbObjectIdArray objIds; if(!GetFuncs(GEType,funcs,objIds)) { //AfxMessageBox(_T("系统中未发现钻孔!")); MyWord->WriteText(_T("系统中未发现钻孔!!"),wdAlignParagraphJustify); MyWord->TypeParagraph(); return; } funcs.remove(_T("高位钻孔参数计算")); funcs.remove(_T("孔口负压参数")); if (objId.isNull()) { ReportAllDrill(objIds,GEType,funcs); } else { ReportOneDrill(objId,GEType,funcs); } }
static int funcon(int *MODE, int *M1, int *N, int *NJAC, double *X, double *F, double *G, int *NSTATE, char *CU, int *LENCU, int *IU, int *LENIU, double *RU, int *LENRU, ftnlen len_cu) { Optimizer1 *D; Snopt_Details *T; int asv_req, co, nnlc; T = snopt_details; D = T->D; nnlc = T->nnlc; if (eval_check(&asv_req, MODE, X)) { *MODE = -2; return 0; } co = T->co; if (asv_req & 1) GetFuncs(D, co, co + nnlc, F); if (asv_req & 2) GetGrads(D, co, co + nnlc, T->n, 1, T->m, G); return 0; }