Creo 二次开发-清理历史版本

2023-12-21 17:08

本文主要是介绍Creo 二次开发-清理历史版本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

利用自带的 purge.bat 可靠性更高,自己写的程序从逻辑上应该是没有问题的,没有仔细研究过自带的 purge.bat,不知道里面是否带有文件校验。
理论上来说,清理历史版本只是根据文件最后一个后缀的大小来确定保留那个文件,这一逻辑是否存在 bug 还需要继续测试。

方法一:利用 powershell 优化 Creo 自带 purge.bat

该方法在代码上很简单,先利用 purge 清理历史版本,然后再重命名小版本为 1。
印象中 Creo2.0 自带的 purge.bat 是可以直接复制到相应目录双击运行来清理小版本的,不知道 6.0 的为什么不行了。然后就用 powershell 给它套了个壳,顺便把所有小版本都改为 1。

Get-ChildItem *.* | ForEach-Object {$file = $_$file.IsReadOnly = $false
}
&'C:\Program Files\PTC\Creo 6.0.4.0\Parametric\bin\purge'
Get-ChildItem *.[0-9]* | Rename-Item -NewName {$_.fullname -replace '\.[0-9]*$' ,'.1'}

方法二:使用 c++编写可执行程序

  1. 遍历目录,将所有文件初始化为_FileExt 实例,存入 vector 中,按文件名顺序排序。
    实际测试过程中发现,_findnext()就是按照文件名顺序,不进行手动排序也没有问题。这里为了保险,增加一步排序。
void ListFileByType(const char *path, const char *match, vector<_FileExt> &files)
{//文件句柄intptr_t hFile = 0;//文件信息struct _finddata64i32_t fileinfo; //包含中文目录,使用宽字符string p;if ((hFile = _findfirst(p.assign(path).append("\\").append(match).c_str(), &fileinfo)) != -1) //查找目录下文件,并将信息存入fileinfo{do{//排除目录if (strcmp(fileinfo.name, ".") == 0 || strcmp(fileinfo.name, "..") == 0)continue;p.assign(path).append("\\").append(fileinfo.name);_FileExt file(p.c_str());files.push_back(file); //_FileExt自建类,包含绝对路径和扩展名} while (_findnext(hFile, &fileinfo) == 0);_findclose(hFile);}sort(files.begin(), files.end(), sortbyname);
}
  1. 将后缀转化为数字,如后缀不是数字,返回值为 0
int str2int(const string istr)
{istringstream ss;ss.str(istr);int ret = 0;ss >> ret;return ret;
}
  1. 遍历文件列表,比较文件名相同的两个文件的后缀,即小版本号,删除版本号较小的一个。
  2. 对清理后的文件重新名,将小版本号改为 1。
  3. 可执行程序后面可接受一个目录作为参数,实现清理指定目录。可将该可执行程序目录放入系统环境变量中方便使用

问题及解决方案

  1. 源码字符集和执行字符集
    如果是纯英文,也就是纯 ASCII 字符,完全不用考虑编码问题,一旦涉及中文就变得非常麻烦。
    按照下面文章的说法,源码文件中涉及中文时,把编码改为 utf-8 with BOM,并添加"#pragma execution_character_set(“utf-8”)",实际测试中发现,不添加#pragma 也没有异常,可能是默认的 locale 字符集就是 utf-8。测试中还发现,将源码文件改为 Unicode 也是没有问题的。
    参考:C++ 编译器对字符编码的要求和处理方式
  2. 字符串的处理
    为了简化和统一字符串的处理,当前程序第一次尝试了尽量采用 char 数组,非必要情况下不使用宽字符。

源代码

0.2purge

这篇关于Creo 二次开发-清理历史版本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/520821

相关文章

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

从希腊神话到好莱坞大片,人工智能的七大历史时期值得铭记

本文选自historyextra,机器之心编译出品,参与成员:Angulia、小樱、柒柒、孟婷 你可能听过「技术奇点」,即本世纪某个阶段将出现超级智能,那时,技术将会以人类难以想象的速度飞速发展。同样,黑洞也是一个奇点,在其上任何物理定律都不适用;因此,技术奇点也是超越未来理解范围的一点。 然而,在我们到达那个奇点之前(假设我们能到达),还存在另一个极大的不连续问题,我将它称之

PostgreSQL中的多版本并发控制(MVCC)深入解析

引言 PostgreSQL作为一款强大的开源关系数据库管理系统,以其高性能、高可靠性和丰富的功能特性而广受欢迎。在并发控制方面,PostgreSQL采用了多版本并发控制(MVCC)机制,该机制为数据库提供了高效的数据访问和更新能力,同时保证了数据的一致性和隔离性。本文将深入解析PostgreSQL中的MVCC功能,探讨其工作原理、使用场景,并通过具体SQL示例来展示其在实际应用中的表现。 一、

InnoDB的多版本一致性读的实现

InnoDB是支持MVCC多版本一致性读的,因此和其他实现了MVCC的系统如Oracle,PostgreSQL一样,读不会阻塞写,写也不会阻塞读。虽然同样是MVCC,各家的实现是不太一样的。Oracle通过在block头部的事务列表,和记录中的锁标志位,加上回滚段,个人认为实现上是最优雅的方式。 而PostgreSQL则更是将多个版本的数据都放在表中,而没有单独的回滚段,导致的一个结果是回滚非

JeecgBoot 升级springboot版本到2.6.0

1. 环境描述 Jeecgboot 3.0,他所依赖的springboot版本为2.3.5Release,将springboot版本升级为2.6.0。过程全纪录,从2开始描述。 2. 修改springboot版本号 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-pare

Cmake之3.0版本重要特性及用法实例(十三)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+AOSP14系统攻城狮入门视频实战课 🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧

Windows 10 各版本

对应于服务选项的 Windows 10 当前版本 Version服务选项上市日期OS build最后修订日期1803半年频道7/10/201817134.1917/24/2018Microsoft 建议使用1803半年频道(定向)4/30/201817134.1917/24/20181709半年频道1/18/201816299.5797/24/20181709半年频道(定向)10/17/2017

hector_quadrotor编译总结 | ubuntu 16.04 ros-kinetic版本

hector_quadrotor编译总结 | ubuntu 16.04 ros-kinetic版本 基于Ubuntu 16.04 LTS系统所用ROS版本为 Kinetic hector_quadrotor ROS包主要用于四旋翼无人机的建模、控制和仿真。 1.安装依赖库 所需系统及依赖库 Ubuntu 16.04|ros-kinetic|Gazebo|gazebo_ros_pkgs|ge

hector_quadrotor编译总结 | ubuntu 14.04 ros-indigo版本

hector_quadrotor编译总结 | ubuntu 14.04 ros-indigo版本 基于Ubuntu 14.04 LTS系统所用ROS版本为 Indigo hector_quadrotor ROS包主要用于四旋翼无人机的建模、控制和仿真。 备注:两种安装方式可选:install the binary packages | install the source files