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日

NX二次开发-C++多线程技术做exe外部开发(批量导出PDF图纸例子)

 

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日

NX二次开发-C++多线程技术做exe外部开发(批量导出PDF图纸例子)

 

相关文章: