NX11+VS2013 /***************************************************************************** ** ** NX11_Open_Wizard1.cpp ** ** Description: ** Main file for the application. ** *****************************************************************************/ /* Include files */ #include <stdarg.h> #include <strstream> #include <iostream> using std::ostrstream; using std::endl; using std::ends; using std::cerr; #include <uf.h> #include <uf_ui_types.h> //头文件 #include <afxwin.h> #include <windows.h> #include <uf.h> #include <uf_part.h> #include <uf_defs.h> #include <NXOpen/NXException.hxx> #include <NXOpen/Session.hxx> #include <NXOpen/BasePart.hxx> #include <NXOpen/Builder.hxx> #include <NXOpen/Drawings_DrawingSheet.hxx> #include <NXOpen/Drawings_DrawingSheetCollection.hxx> #include <NXOpen/NXObject.hxx> #include <NXOpen/Part.hxx> #include <NXOpen/PartCollection.hxx> #include <NXOpen/PlotManager.hxx> #include <NXOpen/PlotSourceBuilder.hxx> #include <NXOpen/PrintPDFBuilder.hxx> #include <NXOpen/Session.hxx> using namespace NXOpen; /* Main routine */ extern void main( char argc, char *argv[] ) { /* Initialize the API environment */ UF_initialize(); /* TODO: Add your application code here */ //调exe传入参数 LPWSTR *szArglist = NULL; int nArgs = 0; szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs); if (nArgs > 1) { CString str1 = szArglist[1]; //打开prt tag_t PartTag = NULL_TAG; UF_PART_load_status_t ErrorStatus; UF_PART_open("D:\\2\\1.prt", &PartTag, &ErrorStatus); NXOpen::Session *theSession = NXOpen::Session::GetSession(); NXOpen::Part *workPart(theSession->Parts()->Work()); NXOpen::Part *displayPart(theSession->Parts()->Display()); NXOpen::PrintPDFBuilder *printPDFBuilder1; printPDFBuilder1 = workPart->PlotManager()->CreatePrintPdfbuilder(); printPDFBuilder1->SetScale(1.0); printPDFBuilder1->SetSize(NXOpen::PrintPDFBuilder::SizeOptionScaleFactor); printPDFBuilder1->SetUnits(NXOpen::PrintPDFBuilder::UnitsOptionEnglish); printPDFBuilder1->SetXDimension(8.5); printPDFBuilder1->SetYDimension(11.0); printPDFBuilder1->SetOutputText(NXOpen::PrintPDFBuilder::OutputTextOptionPolylines); printPDFBuilder1->SetRasterImages(true); printPDFBuilder1->SetWatermark(""); std::vector<NXOpen::NXObject *> sheets1(1); NXOpen::Drawings::DrawingSheet *drawingSheet1(dynamic_cast<NXOpen::Drawings::DrawingSheet *>(workPart->DrawingSheets()->FindObject("Sheet 1"))); sheets1[0] = drawingSheet1; printPDFBuilder1->SourceBuilder()->SetSheets(sheets1); char msg[256]; sprintf_s(msg, "D:\\2\\%s.pdf", (LPSTR)(LPCTSTR)str1); printPDFBuilder1->SetFilename(msg); NXOpen::NXObject *nXObject1; nXObject1 = printPDFBuilder1->Commit(); printPDFBuilder1->Destroy(); //关闭prt UF_PART_close(PartTag, 1, 1); } //取得参数后,释放CommandLineToArgvW申请的空间 LocalFree(szArglist); /* Terminate the API environment */ UF_terminate(); } /***************************************************************************** ** Utilities *****************************************************************************/ Caesar卢尚宇 2020年10月24日
VS2013 #include <stdio.h> #include <windows.h> DWORD WINAPI ThreadProc1(LPVOID lpParameter) { printf("线程1开始\n"); int* p = (int*)lpParameter;//传入参数转换 for (int i = 0; i < 10; i++) { printf(".\n"); char msg[256]; sprintf_s(msg, "D:\\2\\1.exe %d", *p); system(msg); (*p)++; } printf("线程1结束\n"); return 0; } DWORD WINAPI ThreadProc2(LPVOID lpParameter) { printf("线程2开始\n"); int* p = (int*)lpParameter;//传入参数转换 for (int i = 0; i < 10; i++) { printf(".\n"); char msg[256]; sprintf_s(msg, "D:\\2\\1.exe %d", *p+10); system(msg); (*p)++; } printf("线程2结束\n"); return 0; } void main() { int a = 0;//传入线程函数的参数,不需传递参数时为NULL int b = 0; //创建线程1 DWORD lpThreadId1 = 0;//传出参数,用于获得线程ID,如果为NULL则不返回 HANDLE hThread1 = CreateThread(NULL, 0, ThreadProc1, &a, 0, &lpThreadId1); //WaitForSingleObject(hThread1, INFINITE);//等待单个对象 //创建线程2 DWORD lpThreadId2 = 0; HANDLE hThread2 = CreateThread(NULL, 0, ThreadProc2, &b, 0, &lpThreadId2); getchar(); } Caesar卢尚宇 2020年10月24日
VS2013 #include <stdio.h> #include <windows.h> /* HANDLE WINAPI CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, //线程安全相关的属性,常置为NULL SIZE_T dwStackSize, //新线程的初始化栈在大小,可设置为0 LPTHREAD_START_ROUTINE lpStartAddress, //被线程执行的回调函数,也称为线程函数 LPVOID lpParameter, //传入线程函数的参数,不需传递参数时为NULL DWORD dwCreationFlags, //控制线程创建的标志 LPDWORD lpThreadId //传出参数,用于获得线程ID,如果为NULL则不返回线程ID ); */ DWORD WINAPI ThreadProc1(LPVOID lpParameter) { int* p = (int*)lpParameter;//传入参数转换 for (int i = 0; i < 10; i++) { printf("%d\n", *p); (*p)++; Sleep(1000); } return 0; } DWORD WINAPI ThreadProc2(LPVOID lpParameter) { for (int i = 0; i < 10; i++) { printf("%d\n", i); Sleep(1000); } return 0; } void main() { int a = 0;//传入线程函数的参数,不需传递参数时为NULL //创建线程1 DWORD lpThreadId1 = 0;//传出参数,用于获得线程ID,如果为NULL则不返回 HANDLE hThread1 = CreateThread(NULL, 0, ThreadProc1, &a, 0, &lpThreadId1); //WaitForSingleObject(hThread1, INFINITE);//等待单个对象 //创建线程2 DWORD lpThreadId2 = 0; HANDLE hThread2 = CreateThread(NULL, 0, ThreadProc2, &a, 0, &lpThreadId2); getchar(); } Caesar卢尚宇 2020年10月24日