首页/文章/ 详情

使用Python调用Python-pptx模块对幻灯片进行复制

1月前浏览147

复 制幻灯片

使用tcl语言基于twapi模块,或者使用Python-Python调用win32com模块,是非常容易实现的功能,怎么在pptx上就要兜兜转转这么久。

之前所遇到的一个问题,花费了一天时间解决,遂记录一下。

由于开发环境的限制,只能把写报告的模块限制在Python-pptx,所以才有接下来的问题。

最开始都没考虑到算是一个问题,认为就是调用一个方法就能搞定的事情。

不就是调用insert方法复制slide吗。

但是当执行完程序后,你会惊奇的发现,PPT的页数并没有增加,复 制没有效果,这就花了大部分时间去找解决的办法。






def duplicate_slide(prs, slide_index, insert_index):    """复 制指定索引的幻灯片到指定位置"""    template_slide = prs.slides[slide_index]    copied_slide = copy.deepcopy(template_slide._element)    prs.slides._sldIdLst.insert(insert_index, copied_slide)

然而花了半天时间依然没找到解决方案,才修改为新建slide,再应用样式,再逐个复制shape的方式实现。

复盘后才察觉是以前的惯性思维作祟,认为幻灯片是可以直接复 制粘贴的。花费这么长的时间耗费在找解决办法上,是自己把问题想复杂了(也是对这个模块不熟悉),最终需要的是解决问题,这才是最核心的问题。采用哪种技术路线,择优选取即可,应用到仿真工作中也是同样的道理。

同理,还会面临复 制表格行和表格列的问题。

直接能复 制幻灯片的功能,在互联网上还没找到有现成的,就在这里分享一下。

需要源码的小伙伴,分享本篇文章后,后台回复关键字,"幻灯片复 制"


往期精彩,点击下方合集链接哦

👇👇👇👇👇👇👇👇👇👇👇


来源:TodayCAEer
python
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-08-14
最近编辑:1月前
TodayCAEer
本科 签名征集中
获赞 16粉丝 9文章 164课程 0
点赞
收藏
作者推荐

binout结果解析-使用Python对binout文件进行解析与可视化

新开一个系列,如何通过Python来解析不同求解器的结果。后处理的结果种类比较多,可以分为数值类,曲线类,动画类,动画类包含了图片类,动画可以理解为很多祯的图片。按照维度来说就是,一维,二维,三维的结果。我们这里通过Python语言实现,以解析DYNA的binout结果为例,作为简单的演示。同样的,对于解析Nastran,ABAQUS,ANSYS等求解器的计算结构文件均能找到合适的Python包。在哪里找,当然是GitHub或者浏览器了。当然对于不常用的求解器,如果结果是纯文本文件,即使是没有对应的模块,我们也可以基于第三方模块,例如numpy等进行解析。我们最终目的是解析结果,相信小伙伴们所在的公司都有购买软件。那么,既然有功能更完善的商业软件,为什么不选择用呢,钱都花了,就要利用起来。商业软件提供了一整套的API,在解析结果的性能方面也是进行了优化,速度也能更快。不要本末倒置,为了使用开源库而使用开源库。并且在商业软件安装的时候Python的环境也一并安装完成,免去了配置环境的问题了。还一个疼点,就是可移植性,了解编程的小伙伴可以在自己电脑上可以配置好环境,但是不能要求每一个都掌握如何配置环境。更多的小伙伴是需要这样一个工具,只需要关注如何使用,提高工作效率即可。所以基于软件自身框架开发会减少很多工作,更近一步打包成可执行文件也是可以的。当然了,哪种方法孰强孰弱就看各位小伙伴自己的实际工作需求了。如果是需要对结果进行数据分析,或者训练模型,建议还是使用单独的python环境,因为软件可能对于python版本有特殊要求,或者是重编译的,两者之间最好隔离开来。如果说自研软件就可以忽略上面的话,可以从0开始构建自有的代码库。步骤如下:1、找到解析binout文件的第三方模块,一般这种主流的,原厂都会提供解析的包,具体的可以在github上搜索求解器的关键字获取,越是主流的求解器,对应的模块越容易找到。2、这里使用的第三方包是lasso.dyna,能解析Binout文件和D3plot文件。具体的功能介绍可以访问在线帮助文档。3、查看关于lasso.dyna的帮助文档,了解模块的逻辑,因为程序返回的数据结构,基本上和商业软件返回的是不一致的。商业软件为了兼顾不同求解器的格式,返回的结果是基于自己软件逻辑返回的,所以有自己的风格。并且商业软件之间的数据结构也存在差异,比如HyperWorks的后处理模块与META都存在不同差异。对于第一次接触的小伙伴,建议把返回的结果打印出来,便于了解所调用模块解析文件所返回的格式。4、根据需求编写代码,实现binout文件的读取功能。这里以读取bndout的结果为例,并将三个方向的计算结果进行了汇总,得到新的曲线,商业软件是直接有allforce和alltotal结果的component,而调用lasso.dyna还得通过计算生成。下图是通过matplotlib模块和HyperGraph显示的结果。matplotlibHyperGraph可以看到,通过lasso.dyna绘制的曲线和hypergraph绘制的是一致的。5、这里仅做简单的演示。更复杂的功能,也能实现,对于D3Plot的结果显示同样没有问题。来源:TodayCAEer

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈