精华内容
下载资源
问答
  • 1.开发环境配置1.1 开发思路由于Creo没有提供专门用于Python的开发工具包,所以只能考虑借用现有的开发...Python可以使用一个第三方库win32com操作COM对象,故Python可以利用VB API二开发工具包进行二开发。1....

    1.开发环境配置

    1.1 开发思路

    由于Creo没有提供专门用于Python的开发工具包,所以只能考虑借用现有的开发工具包。VB API实际是对Creo二次开发函数的COM封装,所以一般Windows下可以调用COM组件的语言其实都可以利用VBAPI进行Creo的二次开发。Python可以使用一个第三方库win32com操作COM对象,故Python可以利用VB API二次开发工具包进行二次开发。

    1.2 VB API环境配置

    VB API按照之前的文章安装配置即可。

    1.3 Python环境配置

    主要是安装和配置win32com模块,关键步骤如下:

    安装win32com模块。在命令行中运行如下代码即可:

    1python -m pip install pypiwin32

    生成VB API工具包的中间层,保证python可以顺利调用VB API。首先运行Python安装目录下子目录“Lib\site-packages\win32com\client\”的makepy.py程序,选择“Creo VB API Type Library Creo Parametric”点击OK按钮即可生成。系统会提示在临时目录生成了形如“176453F2-6934-4304-8C9D-126D98C1700Ex0x1x0.py”的文件,一些关键的函数和变量、常量等信息均记录在此文件中。

    1.4 注意点

    开发过程其实与常规的开发流程一致,只是要注意使用python的语法调用对应的类和方法即可。Python为动态类型的语言,子类调用父类的属性方法无需进行类型转换,直接调用即可。此外,Python可以自动实现VB API中的多次类型转换。例如IpfcSolid的父类分别为IpfcModel和IpfcFamliyTableRow,当系统获得一个IpfcModel对象时,如果能够确定也是Ipfcsolid对象,则该对象可以直接调用IpfcFamliyTableRow类的属性和方法,无需像VB那样经过多次显式类转换。

    2. 实例

    拿批量保存族表文件到单独实例。将1.3节生产的文件重命名为VBAPI.py保存在当前目录下,编写第一个程序,代码如下:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    63

    64

    65

    66

    67

    68

    69

    70

    71

    72

    73

    74

    75

    76

    77

    78# -*- coding: utf8 -*-

    import win32com

    from win32com import client

    import VBAPI

    import tkinter

    from tkinter import scrolledtext, messagebox, filedialog, Tk, Button, Entry, Label

    import os

    CREO_APP = 'C:/PTC/Creo 2.0/Parametric/bin/parametric.exe'

    PART_DIR = 'D:/mydoc/creo_python/fin.prt'

    OUTPUT_DIR = 'D:/test/'

    win = Tk()

    win.title("批量将文件的族表对象导出到文件")

    win.resizable(0, 0)

    Label(win, text="Creo程序路径").grid(row=0, column=0, sticky='W')

    Label(win, text="要导出的文件").grid(row=1, column=0, sticky='W')

    Label(win, text="导出目录").grid(row=2, column=0, sticky='W')

    e1 = Entry(win, width="45")

    e2 = Entry(win, width="45")

    e3 = Entry(win, width="45")

    e1.grid(row=0, column=1, padx=5, pady=5)

    e2.grid(row=1, column=1, padx=5, pady=5)

    e3.grid(row=2, column=1, padx=5, pady=5)

    e1.insert(0, CREO_APP)

    e2.insert(0, PART_DIR)

    e3.insert(0, OUTPUT_DIR)

    def convert():

    cAC = client.Dispatch(VBAPI.CCpfcAsyncConnection)

    AsyncConnection = cAC.Start(CREO_APP + ' -g:no_graphics -i:rpc_input', '')

    ModelDescriptor = client.Dispatch(VBAPI.CCpfcModelDescriptor)

    descmodel = ModelDescriptor.Create(getattr(VBAPI.constants, "EpfcMDL_PART"), "", None)

    descmodel.Path = PART_DIR

    RetrieveModelOptions = client.Dispatch(VBAPI.CCpfcRetrieveModelOptions)

    options = RetrieveModelOptions.Create()

    options.AskUserAboutReps = False

    model = AsyncConnection.Session.RetrieveModelWithOpts(descmodel, options)

    AsyncConnection.Session.ChangeDirectory(OUTPUT_DIR)

    familyTableRows = model.ListRows()

    for i in range(0, familyTableRows.Count):

    familyTableRow = familyTableRows.Item(i)

    instmodel = familyTableRow.CreateInstance()

    instmodel.Copy("m_" + instmodel.InstanceName + ".prt", None)

    AsyncConnection.End()

    tkinter.messagebox.showinfo('提示', '文件已导出完毕')

    os.startfile(OUTPUT_DIR)

    def chooseapp():

    filename = tkinter.filedialog.askopenfilename()

    if filename != '':

    CREO_APP = filename

    e1.delete('0', 'end')

    e1.insert(0, CREO_APP)

    def choosepart():

    filename = tkinter.filedialog.askopenfilename()

    if filename != '':

    PART_DIR = filename

    e2.delete('0', 'end')

    e2.insert(0, PART_DIR)

    def choosedir():

    dirname = tkinter.filedialog.askdirectory()

    if dirname != '':

    OUTPUT_DIR = dirname

    e3.delete('0', 'end')

    e3.insert(0, OUTPUT_DIR)

    Button(win, text="选择文件", command=chooseapp).grid(row=0, column=2, padx=5, pady=5)

    Button(win, text="选择文件", command=choosepart).grid(row=1, column=2, padx=5, pady=5)

    Button(win, text="选择路径", command=choosedir).grid(row=2, column=2, padx=5, pady=5)

    Button(win, text="导出", command=convert).grid(row=3, column=0, sticky='W', padx=5, pady=5)

    Button(win, text="退出", command=win.quit).grid(row=3, column=2, sticky='E', padx=5, pady=5)

    win.mainloop()

    图 程序运行界面

    展开全文
  • VB课程设计俄罗斯方块

    热门讨论 2011-02-25 10:46:55
    前 言 visual basic继承了basic语言易学易用的特点,特别适合于初学者学习windows系统编程。随着21世纪信息社会的到来,计算机在人们的工作和生活...游戏得分的计算主要是根据消除的行数来决定的,当然每一同时消除的...
  • 友也象我一样利用CreateObject尝试了无数,却无功而返,不知微软公司是出于何种 考虑,动态加载ActiveX控件是扩展控件集合的方式实现,通过实际摸索,终于就如 何实现动态ActiveX控件找出了一条切实可行的方法,...
  • Private Type RECT '定义“区域”数据结构,但实际上并没有用到,因为仅需在函数InvalidateRect中传递一个空的RECT参数 left As Long top As Long right As Long bottom As Long End Type Dim rect1 As RECT ...
  • 实例044 利用CallByName函数对对象进行操作 实例045 打印住宿登记 第3章 数组与指针 3.1 数组的引用与算法 实例046 如何获取数组上限和下限 实例047 如何在数组中插入数组元素 实例048 如何删除数组元素 实例...
  • 实例044 利用CallByName函数对对象进行操作 实例045 打印住宿登记 第3章 数组与指针 3.1 数组的引用与算法 实例046 如何获取数组上限和下限 实例047 如何在数组中插入数组元素 实例048 如何删除数组元素 实例...
  • 咖啡报表组件可以用于VB、VC、DELPHI、PB、.NET等FOR WINDOWS语言的二开发报表组件。 也可以嵌入到jsp、asp中实现WEB方式的开发,报表CAB包只有800K多一点 请发邮件到:happymfc@sina.com 索取注册码 服务方式: ...
  • surfer 9.11汉化版.part2

    热门讨论 2011-03-23 08:44:20
    --可以,Surfer内建Surfer Script, 类似VB 13.可以在Excel上设计程序吗? --透过Excel的VBA,可以同时控制Surfer和Excel 14.Surfer的等高线动画是如何做的? --可运用Sufer2GIF的Windows模块,或whirlgif 程序Unix. ...
  • --可以,Surfer内建Surfer Script, 类似VB 13.可以在Excel上设计程序吗? --透过Excel的VBA,可以同时控制Surfer和Excel 14.Surfer的等高线动画是如何做的? --可运用Sufer2GIF的Windows模块,或whirlgif 程序Unix. ...
  • surfer 9.11 汉化.part1

    热门讨论 2011-03-23 08:46:07
    --可以,Surfer内建Surfer Script, 类似VB 13.可以在Excel上设计程序吗? --透过Excel的VBA,可以同时控制Surfer和Excel 14.Surfer的等高线动画是如何做的? --可运用Sufer2GIF的Windows模块,或whirlgif 程序Unix. ...
  • surfer9.11汉化.part3

    热门讨论 2011-03-23 08:47:20
    --可以,Surfer内建Surfer Script, 类似VB 13.可以在Excel上设计程序吗? --透过Excel的VBA,可以同时控制Surfer和Excel 14.Surfer的等高线动画是如何做的? --可运用Sufer2GIF的Windows模块,或whirlgif 程序Unix. ...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    10.3 构造函数和析构函数 .119 10.4 小 结 .122 第十一章 法 .124 11.1 方法的声明.124 11.2 方法中的参数.125 11.3 静态和非静态的方法.129 11.4 方法的重载.130 11.5 操作符重载.134 11.6 小 ...
  • C#微软培训资料

    2014-01-22 14:10:17
    10.3 构造函数和析构函数 .119 10.4 小 结 .122 第十一章 法 .124 11.1 方法的声明.124 11.2 方法中的参数.125 11.3 静态和非静态的方法.129 11.4 方法的重载.130 11.5 操作符重载.134 11.6 小 ...
  • vc++ 应用源码包_1

    热门讨论 2012-09-15 14:22:12
    p2p vb实例。 p2p+technology文档。 P2P视频技术源码(含开发文档) PcShare 内含远程控制、进程管理、文件操作、视频控制、注册表操作、客户端服务器端。 redui_src_v0.9.130(DirectUI 3D) DirectUI 3D界面库...
  • vc++ 应用源码包_2

    热门讨论 2012-09-15 14:27:40
    p2p vb实例。 p2p+technology文档。 P2P视频技术源码(含开发文档) PcShare 内含远程控制、进程管理、文件操作、视频控制、注册表操作、客户端服务器端。 redui_src_v0.9.130(DirectUI 3D) DirectUI 3D界面库...
  • vc++ 应用源码包_6

    热门讨论 2012-09-15 14:59:46
    p2p vb实例。 p2p+technology文档。 P2P视频技术源码(含开发文档) PcShare 内含远程控制、进程管理、文件操作、视频控制、注册表操作、客户端服务器端。 redui_src_v0.9.130(DirectUI 3D) DirectUI 3D界面库...
  • vc++ 应用源码包_5

    热门讨论 2012-09-15 14:45:16
    p2p vb实例。 p2p+technology文档。 P2P视频技术源码(含开发文档) PcShare 内含远程控制、进程管理、文件操作、视频控制、注册表操作、客户端服务器端。 redui_src_v0.9.130(DirectUI 3D) DirectUI 3D界面库...
  • vc++ 应用源码包_4

    热门讨论 2012-09-15 14:38:35
    p2p vb实例。 p2p+technology文档。 P2P视频技术源码(含开发文档) PcShare 内含远程控制、进程管理、文件操作、视频控制、注册表操作、客户端服务器端。 redui_src_v0.9.130(DirectUI 3D) DirectUI 3D界面库...
  • vc++ 应用源码包_3

    热门讨论 2012-09-15 14:33:15
    p2p vb实例。 p2p+technology文档。 P2P视频技术源码(含开发文档) PcShare 内含远程控制、进程管理、文件操作、视频控制、注册表操作、客户端服务器端。 redui_src_v0.9.130(DirectUI 3D) DirectUI 3D界面库...
  • FMLDATA的源码

    2014-06-02 15:57:42
    例如,要在DZH公式中读入第三方的数据并与DZH其它数据一起进行分析,我们可以首先将数据写入FMLDATA文件,然后在DZH公式中象引用DZH本身直接引用。 2)将DZH序列数据写入外部文件。例如,我们要将DZH现有数据或者...
  • Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
  • vc++ 开发实例源码包

    2014-12-16 11:25:17
    代码里用了备份dll的方法,因此在自定义的函数中可以直接调用在内存中备份的dll代码,而不需要再把函数头部改来改去。 IOCP反弹远控客户端模型,外加上线服务端,全部代码注释! 如题。这个是IOCP远程控制软件的...
  •  第三方支持库,由源代码作者按照静态编译技术文档(参见sdk\static_docs)完成自身改造并提供静态库后,可支持静态编译。外部OCX组件和COM组件,不支持静态编译。  此次重大版本升级不影响以前的源代码(.e)和模块...
  • 这些都预示着我们进入了一个新的互联网阶段web 2.0,它是相对web 1.0的新的一类互联网应用的总称,是一从核心内容到外部应用的革命[10]。这个阶段发展迅速,互联网应用趋于多样化,其中变化最大的是由web 1.0网站...
  • arcgis工具

    2012-10-22 22:37:31
    如:“AREA”,如果查询的是个人地理数据库数据,则需要将字段名包含在括号内,如:[AREA],如果查询的是ArcSDE地理数据库数据或是ArcIMS要素类或ArcIMS影象服务子层中的数据,则不需要将字段名括起,如:AREA ...

空空如也

空空如也

1 2
收藏数 28
精华内容 11
关键字:

vb三次方函数