VS2019 NX1946

UF_initialize();

string filepath = strDir + "\\";//拼接路径
//获取图层过滤
PropertyList* stringLayerProps = stringLayer->GetProperties();
NXString filelayer = stringLayerProps->GetString("Value");
delete stringLayerProps;
stringLayerProps = NULL;

string filelayer_Str = filelayer.GetLocaleText() ;
//int Num = (int)filelayer_Str.length();//找到过滤字符串长度
string filelayerBegin = filelayer_Str.substr( 0, filelayer_Str.find_first_of("-"));//分割部件名获取过滤字符串
string filelayerEnd = filelayer_Str.substr(filelayer_Str.find_first_of("-")+1, filelayer_Str.find_last_of(" "));//分割部件名获取过滤字符串
//theSession->ListingWindow()->WriteLine(filelayerBegin);
//theSession->ListingWindow()->WriteLine(filelayerEnd);

std::vector<string> partname;

for (int i = 0; i < listboxselectStrings.size(); i++)
{
partname.push_back(listboxselectStrings[i].GetLocaleText());
int Num = (int)partname[i].length();//找到文件名长度
string newpartName = partname[i].substr(0, Num - 4);//分割部件名获取过滤字符串

string ExportPatFilePath = filepath + listboxselectStrings[i].GetLocaleText();
string ExportX_TFilePath = filepath + newpartName + ".x_t";
//
//打开文件(没打开直接打开,已打开重新打开)
BasePart* basePart1;
PartLoadStatus* partLoadStatus1;
try
{
// 文件已存在
basePart1 = theSession->Parts()->OpenBaseDisplay(ExportPatFilePath, &partLoadStatus1);
}
catch (const NXException& ex)
{
ex.AssertErrorCode(1020004);
}

Part* part1(dynamic_cast<Part*>(theSession->Parts()->FindObject(listboxselectStrings[i].GetLocaleText())));
BasePart* basePart2;
PartReopenReport* partReopenReport1;
basePart2 = part1->Reopen(BasePart::CloseWholeTreeFalse, BasePart::CloseModifiedCloseModified, NULL, &partReopenReport1);

delete partReopenReport1;
Session::UndoMarkId markId1;
markId1 = theSession->SetUndoMark(Session::MarkVisibilityVisible, "Change Display Part");

Part* part2(dynamic_cast<Part*>(basePart2));
PartLoadStatus* partLoadStatus2;
PartCollection::SdpsStatus status1;
status1 = theSession->Parts()->SetDisplay(part2, true, true, &partLoadStatus2);

delete partLoadStatus2;

std::vector<int> BodyTagVector;//对象TAG容器
BodyTagVector.clear();

//遍历显示部件所有体的显示属性(包括装配体)
tag_t BodyTag = NULL_TAG;
UF_OBJ_cycle_objs_in_part(UF_PART_ask_display_part(), UF_solid_type, &BodyTag); // UF_component_type ,UF_MODL_SOLID_BODY, UF_solid_type , UF_solid_body_subtype
int Type, SubType, Body_Type;
while (BodyTag != NULL_TAG)
{
//查询对象的类型和子类型
UF_OBJ_ask_type_and_subtype(BodyTag, &Type, &SubType);
if (SubType == UF_solid_body_subtype)
{
//查询体的类型
UF_MODL_ask_body_type(BodyTag, &Body_Type);
if (Body_Type == UF_MODL_SOLID_BODY)//为实体
{
//获取对象的显示属性(图层,颜色,空白状态,线宽,字体,高亮状态)
UF_OBJ_disp_props_t DispProps;
UF_OBJ_ask_display_properties(BodyTag, &DispProps);
int PartBodyLayer = DispProps.layer;
if (PartBodyLayer > atoi(filelayerBegin.c_str()) && PartBodyLayer <= atoi(filelayerEnd.c_str())) //用图层过滤体
{
BodyTagVector.push_back(BodyTag);
//sprintf(msg, "%d", BodyTag);
//theSession->ListingWindow()->WriteLine("部件名字:" + newpartName + " 体的TAG:" + msg);
}
}
}

UF_OBJ_cycle_objs_in_part(UF_PART_ask_display_part(), UF_solid_type, &BodyTag);
}

//测试文件或目录是否存在
int STPPathStatus = 0;
UF_CFI_ask_file_exist(ExportX_TFilePath.c_str(), &STPPathStatus);
//如果文件已存在,先删除掉
if (STPPathStatus == 0) // 0表示文件存在 1表示文件不存在
{
DeleteFile(ExportX_TFilePath.c_str());
}

//导出
uf_list_p_t Bodylist = NULL;//定义链表
Bodylist = NULL;//定义链表
UF_MODL_create_list(&Bodylist); //创建链表
for (int j = 0; j < BodyTagVector.size(); j++)
{
tag_t tagBody = NULL_TAG;
tagBody = BodyTagVector[j];
UF_MODL_put_list_item(Bodylist, tagBody);
}
UF_MODL_delete_feature(Bodylist);
char szPartNameNewTemp[256];
sprintf_s(szPartNameNewTemp, "%s", ExportX_TFilePath.c_str());
UF_PS_export_data(Bodylist, szPartNameNewTemp);
UF_free(Bodylist);
Bodylist = NULL;
}
UF_terminate();

NX二次开发 批量导出X_T(包括部件里的装配体)的更多相关文章

  1. 【NX二次开发】导出x_t、导入x_t例子,UF_PS_export_data、UF_PS_import_data

    获取blockUI 体收集器选择的体,导出x_t: std::vector<TaggedObject*>objects = bodySelect0->GetSelectedObjec ...

  2. NX二次开发-NXOPEN导出STEP Step214Creator *step214Creator1;

    没有什么可以看的,NXOPEN直接录制一下导出STEP就可以了.录制出来自己挑需要的代码拿过来改一下. NX9+VS2012 #include <NXOpen/Part.hxx> #inc ...

  3. 【NX二次开发】导入x_t,UF_PS_import_data

    导入x_t,导入XT后要UF_DISP_regenerate_display(); 更新显示 否则不会显示 string strPaths ="D:\\1.x_t"; char s ...

  4. NX二次开发-UFUN获取NX系统默认导出CGM的选项设置UF_CGM_ask_default_export_options

    文章转载自唐康林NX二次开发论坛,原文出处: http://www.nxopen.cn/thread-126-1-1.html 刚才有同学问到这个问题,如果是用NXOpen来做,直接录制一下就可以了: ...

  5. NX二次开发-UFUN获取当前导出CGM选项设置UF_CGM_ask_session_export_options

    文章转载自唐康林NX二次开发论坛,原文出处: http://www.nxopen.cn/thread-126-1-1.html 刚才有同学问到这个问题,如果是用NXOpen来做,直接录制一下就可以了: ...

  6. NX二次开发-UFUN修改当前导出CGM文件选项设置UF_CGM_set_session_export_options

    文章转载自唐康林NX二次开发论坛,原文出处: http://www.nxopen.cn/thread-126-1-1.html 刚才有同学问到这个问题,如果是用NXOpen来做,直接录制一下就可以了: ...

  7. NX二次开发-UFUN将工程图转成CGM和PDF文件UF_CGM_export_cgm

    文章转载自唐康林NX二次开发论坛,原文出处: http://www.nxopen.cn/thread-126-1-1.html 刚才有同学问到这个问题,如果是用NXOpen来做,直接录制一下就可以了: ...

  8. C# NX二次开发环境搭建

    在网上看到一篇C#二次开发环境搭建的文章:NX二次开发-使用NXOPEN C#手工搭建开发环境配置 ,写得非常好.我按照文章操作,过程中遇到几个问题,把问题分享给大家,希望对各位有帮助. 注意三点: ...

  9. NX二次开发-C#使用DllImport调用libufun.dll里的UF函数(反编译.net.dll)调用loop等UF函数

    在写这篇文章的时候,我正在头晕,因为下班坐车回家,有些晕车了.头疼的要死.也吃不下去饭. 版本:NX11+VS2013 最近这一年已经由C++过度到C#,改用C#做应用程序开发和NX二次开发. C#在 ...

  10. NX二次开发-Block UI C++界面关于 在Block UI中UF_initialize();和UF_terminate();的使用

    关于 在Block UI中UF_initialize();和UF_terminate();的使用 用Block UI作NX二次开发的时候,不需要在使用UFUN函数的时候加UF_initialize() ...

随机推荐

  1. Java流程控制之while循环详解

    while循环 while循环 do...while循环 for循环 在Java5中引入了一种主要用于数组的增强型for循环 while循环 while循环是最基本的循环,它的结构为 while(布尔 ...

  2. maven工程运行环境修改 maven的java工程取mysql数据库数据

    maven工程运行环境修改  <plugins> <plugin> <!-- https://mvnrepository.com/artifact/org.apache. ...

  3. macOS完整安装包下载方法

    Python脚本下载 开源地址:macadmin-scripts 下载installinstallmacos.py到Mac,然后用python运行,如图: #    ProductID    Vers ...

  4. C/C++ 关键字 static 详细解析

    static关键字是一个修饰符,根const类似,被它修饰的变量和函数分别被称为静态变量和静态函数,根据修饰的对象的不同,static表现出来的作用也不同. 1. C语言中的 static 在C语言中 ...

  5. Filament初探,全场景性能测试

    一直很想研究下Filament在移动端全场景(大约20万Triangle,约120个渲染实体)的实时帧率.终于在今天有时间腾出来研究下Filament在Android上的全场景PBR渲染性能. 这里以 ...

  6. 学习lua-05,io.open 读取输出修改文件,以及io.read的参数运用,读所有,读一行多行

    -- 以附加的方式打开只写文件.若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留.(EOF符保留) file = io.open("D:\\Pr ...

  7. CSS中z-index的属性与使用

    z-index 属性指定一个元素的堆叠顺序. 拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面. Z-index 仅能在定位元素上奏效,z-index 进行定位元素(position:abso ...

  8. 【BOOK】正则表达式

    正则表达式 1. 开源中国-正则表达式测试工具:https://tool.oschina.net/regex/ 2. 匹配规则 3. match() 从字符串起始位置匹配正则表达式 若从起始位置匹配不 ...

  9. CIC滤波器

    CIC滤波器是滑动平均滤波器的非常高效的迭代实现,只需要一个减法和一个加法,而滑动平均需要N-1个加法. cic滤波器相当于一个梳状滤波器y(n)=x(n)-x(n-D),H(z)=1-z-D,和一个 ...

  10. python pip 下载库速度慢,2命令永久解决

    背景:pip 下载速度慢,超时 加速:永久性2条命令,拿去不谢 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/si ...