C# NX二次开发--通过内部函数调用进度条

 //调内部函数 创建进度条
    [DllImport("libdisp.dll", CallingConvention = CallingConvention.ThisCall, EntryPoint = "?MT_create_progress_bar@@YA_NH_NPEAJ@Z")]
    private static extern void MT_create_progress_bar(IntPtr v1, bool v2, out long v3);

    //调内部函数 设置进度条的当前位置
    [DllImport("libdisp.dll", CallingConvention = CallingConvention.ThisCall, EntryPoint = "?MT_set_progress_pos@@YAXPEAJH@Z")]
    private static extern void MT_set_progress_pos(out long v1, int v2);

    //调内部函数 显示进度条
    [DllImport("libdisp.dll", CallingConvention = CallingConvention.ThisCall, EntryPoint = "?MT_show_progress_bar@@YAXPEAJ@Z")]
    private static extern void MT_show_progress_bar(out long v1);

    //调内部函数 设置进度条的起始值和终止值
    [DllImport("libdisp.dll", CallingConvention = CallingConvention.ThisCall, EntryPoint = "?MT_set_progress_range@@YAXPEAJHH@Z")]
    private static extern void MT_set_progress_range(out long v1, int v2, int v3);

    //调内部函数 获得提示环境句柄(输出long*指针)
    [DllImport("libdisp.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "?MT_ask_progress_cue_context@@YAHXZ")]
    private static extern IntPtr MT_ask_progress_cue_context();

    //调内部函数 删除进度条
    [DllImport("libdisp.dll", CallingConvention = CallingConvention.ThisCall, EntryPoint = "?MT_delete_progress_bar@@YAXPEAJ@Z")]
    private static extern IntPtr MT_delete_progress_bar(out long v1);

    //调内部函数 进度条显示文本---不支持中文
    [DllImport("libdisp.dll", CallingConvention = CallingConvention.ThisCall, EntryPoint = "?MT_set_progress_text@@YAXPEAJPEAD_N@Z")]
    private static extern IntPtr MT_set_progress_text(out long v1, string v2, bool v3);

    

    private void 进度条()
    {
        UFSession theUfSession = UFSession.GetUFSession();//UF获取UG 
        //获得提示环境句柄
        IntPtr cc = IntPtr.Zero;
         cc = MT_ask_progress_cue_context();
        //创建进度条
        long aa = 0;
        MT_create_progress_bar(cc, true, out aa);//true和false控制是否显示百分比数字
        //显示进度条
        MT_show_progress_bar(out aa);

        //进度条显示文本
        MT_set_progress_text(out aa, "Running", true);//此处用中文不支持

        //设置进度条的起始值和终止值
        int num = 150;
        MT_set_progress_range(out aa, 0, num);

        for (int i = 0; i < num; i++)
        {
            theUfSession.Ui.SetStatus("测试" + i.ToString());//状态区显示一行文本
            //创建块
           FeatureSigns sign=FeatureSigns.Nullsign;//设置布尔
           double[] corner_pt=new double[]{i * 150, 0.0, 0.0};
           string[] edge_len=new string[]{"100", "100", "100"};
           Tag blk_obj_id=Tag.Null;
           theUfSession.Modl.CreateBlock1(sign, corner_pt, edge_len, out blk_obj_id);
           //设置进度条的当前位置
           MT_set_progress_pos(out aa, i);
        }
        //删除进度条
        MT_delete_progress_bar(out aa);
        //获得工作视图的tag
        Tag work_view = Tag.Null;
        theUfSession.View.AskWorkView(out work_view);
        //适合窗口
        theUfSession.View.FitView(work_view, 1);
  
}

效果演示


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值