找回密码 注册 QQ登录
一站式解决方案

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 18823|回复: 1
打印 上一主题 下一主题

请教UG OPEN三维图转二维图的问题

[复制链接]
跳转到指定楼层
1
发表于 2007-9-5 21:40:15 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
请高手指教。
在MFC下进行UG Open API三维图转二维图时结果中不是自己想要的。我的方法如下:

主要由两个函数实现:
//生成工程图
void CDn_1Dlg::Create_DxfDwg_File(CString file_path, CString prt_File, CString process_name)

//将生成的工程图后转成Dxf/Dwg文件
void CDn_1Dlg::Create_DxfDwg_File(CString file_path, CString prt_File, CString process_name)

对话框中两个按钮,
一个生成生成工程图,的响应函数为
void CDn_1Dlg::OnBnClickedButton2()
{
        // TODO: 在此添加控件通知处理程序代码
        Create_2D_Drawing(1000,500);
}
一个转化为dwg图纸,响应函数为
void CDn_1Dlg::OnBnClickedButton3()
{
        // TODO: 在此添加控件通知处理程序代码
        CString file_path, prt_file,process_name;
        file_path="C:\\YTTest\\dwg";
        prt_file="C:\\YTTest\\dwg\\caculate.prt";
        process_name="lashen";
        Create_DxfDwg_File(file_path, prt_file,process_name);
}
结果是会报错UF_VIEW_INVALID_VIEW_TAG,但能生成了一个.prt的ug二维视图和一个dwg二维图,但是都不是我想要的,应为我希望得到的是二维图的俯视图(TOP),而得到的却总是斜视的(Trimetric)。

错误应该是设置视图角度UF_VIEW_add_to_view_set,但我始终不知道该如何解决。请大侠帮忙,谢谢!
相关代码如下:

//将生成的工程图后转成Dxf/Dwg文件
void CDn_1Dlg::Create_DxfDwg_File(CString file_path, CString prt_File, CString process_name)
{
        int ifail = 0;
        tag_t drawing_sheet;
        CString cmg_file, dwg_file;
        cmg_file.Format(file_path + "\\drawing");
        if( !ifail )
        {
                ifail = UF_DRAW_ask_current_drawing( &drawing_sheet );
                //UF_CGM_export_options_p_t export_options;
                UF_CGM_export_cgm (drawing_sheet, NULL, (LPSTR)(LPCTSTR)cmg_file);

                int count;
                tag_t * part_list;
                int * error_list ;
                UF_PART_save_all (&count, &part_list,&error_list );
                UF_PART_close_all();

                CString cmdfilename, UG_Dxf_filename, Dxf_filename;

                UG_Dxf_filename.Format(file_path +"\\convert_part.prt");
                Dxf_filename.Format(file_path +"\\" + process_name + ".dwg");
                cmdfilename.Format(file_path +"\\convert.cmd");

                CFileFind finder;
                BOOL bWorking = finder.FindFile(UG_Dxf_filename);
                if(bWorking==1)
                {
                        CFile::Remove((LPSTR)(LPCTSTR)UG_Dxf_filename);//如果存在就删除
                }

                tag_t part_tag = NULL_TAG;
                UF_PART_new ((LPSTR)(LPCTSTR)UG_Dxf_filename,1, &part_tag);
            UF_PART_save();

                cmg_file.Format(file_path + "\\drawing.cgm");
                //UF_CGM_import_options_p_t import_options;
                UF_CGM_import_cgm ((LPSTR)(LPCTSTR)cmg_file, NULL);
                UF_VIEW_fit_view (NULL_TAG, 1.0);

                tag_t  work_view;
                int reee=UF_VIEW_ask_work_view(&work_view);
                if(reee==0)
                        AfxMessageBox("ok");
                       
reee=UF_VIEW_add_to_view_set (
work_view,
UF_VIEW_STANDARD_ORIENTATION_TOP );
if(reee==ERROR_OK)
                        AfxMessageBox("set ok");
                else if(reee==UF_VIEW_INVALID_OBJECT)
                        AfxMessageBox("UF_VIEW_INVALID_OBJECT");
                else if(reee==UF_VIEW_INVALID_VIEW_TAG)
                        AfxMessageBox("UF_VIEW_INVALID_VIEW_TAG");
                else if(reee==UF_VIEW_INVALID_ORIENTATION_TYPE)
                        AfxMessageBox("UF_VIEW_INVALID_ORIENTATION_TYPE");


                UF_VIEW_save_all_active_views ( );


                UF_PART_save_all (&count, &part_list,&error_list );
                UF_PART_close_all();
               
                UF_PART_export_options_t export_options;
                export_options.new_part = TRUE;
                export_options.params_mode = UF_PART_remove_params;
                export_options.expression_mode = UF_PART_copy_exp_shallowly;
          
                //判断文件是否存在,删除已有的文件
                bWorking = finder.FindFile(Dxf_filename);
                if(bWorking==1)
                {
                        CFile::Remove((LPSTR)(LPCTSTR)Dxf_filename);//如果存在就删除
                }
                CString cmdtext;
                CStdioFile cmdfile;

                bWorking = finder.FindFile(cmdfilename);
                if(bWorking==1)
                {
                        CFile::Remove((LPSTR)(LPCTSTR)cmdfilename);//如果存在就删除
                }
                if(cmdfile.Open(cmdfilename,CFile::modeCreate|CFile::modeWrite|CFile::typeText)==0)
                {
                        MessageBox("创建转换控制文件失败");
                        return;
                }
                cmdtext = "@echo off \n";
                cmdfile.WriteString(cmdtext);

                char *libvar;
                libvar = getenv( "UGII_BASE_DIR" );
                CString temp5 = "\"";
                temp5 = temp5 + libvar;

                CString temp1 = _T("\\dxfdwg\\dxfdwg\" ");
                CString temp2 = _T("\"");
                CString temp3 = _T(" o=\"");
                CString temp4 = _T("\" d=");
                CString temp6 = _T("\\dxfdwg\\dxfdwg.def\" l=\"convert.log\"");
               
                cmdtext= temp5 + temp1 + temp2 + UG_Dxf_filename + temp2 +  temp3 + Dxf_filename + temp4 + temp5 + temp6;
                cmdfile.WriteString(cmdtext);
                cmdfile.SetLength(cmdfile.GetPosition());
                cmdfile.Close();

                CString cmd_line = "\"" + cmdfilename + "\" -L -S";
                WinExec(cmd_line,SW_SHOW);               
        }
        else
        {
                ::AfxMessageBox("请选择UG工程图!");
        }
}




void CDn_1Dlg::OnBnClickedButton2()
{
        // TODO: 在此添加控件通知处理程序代码
        Create_2D_Drawing(1000,500);
}

void CDn_1Dlg::OnBnClickedButton3()
{
        // TODO: 在此添加控件通知处理程序代码
        CString file_path, prt_file,process_name;
        file_path="C:\\YTTest\\dwg";
        prt_file="C:\\YTTest\\dwg\\caculate.prt";
        process_name="yadi";
        Create_DxfDwg_File(file_path, prt_file,process_name);
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
 楼主| 发表于 2007-9-5 21:57:21 | 只看该作者

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2024-11-28 21:16 , Processed in 0.023826 second(s), 14 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

快速回复 返回顶部 返回列表