python模块win32com中的early-bind与lazy-bind(以Autocad为例)

摘要:
Python使用makepy支持早期绑定模式。Makepy是位于win32com模块中的.py文件。直接运行该文件并弹出以下控件。需要注意的是,Pycomcad库直接内置了“TurnOnEarlyBind”方法。您可以直接调用此方法来生成makepy。py运行,并弹出以下控件:选择Autocad2007TypeLibrary[1.0],然后单击OK。显示如上图所示,表示makepy.py运行成功,并启用了早期绑定模式。Help()进一步验证早期绑定模式是否提前知道对象的所有属性和方法。

1.什么是Lazy-bind模式,Early-bind模式?

win32com中,Lazy-bind 模式指的是程序事先不知道对象的任何方法和属性,当对象属性,方法被调用时,程序才向对象发出一个询问(query),如果对方法和属性的询问成功,则调用成功,而Early-bind则是指程序事先知道对象的方法,属性。Python 用makepy 来支持early-bind 模式。makepy是一个位于win32com模块中的一个.py文件(位于python的site-packages/win32com/client/makepy.py),直接运行该文件,弹出下面的控件,需要说明的是Pycomcad库直接内置了'TurnOnEarlyBind'方法,可直接调用该方法来使得该makepy.py运行,弹出下面控件:

python模块win32com中的early-bind与lazy-bind(以Autocad为例)第1张

选择Autocad2007 Type Library[[1.0],点击ok。

python模块win32com中的early-bind与lazy-bind(以Autocad为例)第2张

显示如上图,则表明makepy.py运行成功,此时已开启early-bind模式。

2.Autocad下的两种模式。

运用pycomcad(该模块是自己包裹win32com的Autocad便捷接口库,见https://github.com/JohnYang1210/PycomCAD)。

(1)Lazy-bind模式

python模块win32com中的early-bind与lazy-bind(以Autocad为例)第3张

拾取对象test是一个元祖,index 0 是拾取的实体对象,Index 1是拾取点的坐标,这里可见,test[0]的类型是CDispatch。

(2)Early-bind 模式

python模块win32com中的early-bind与lazy-bind(以Autocad为例)第4张

在该模式下,test[0]的类型是IAcadLine。

python模块win32com中的early-bind与lazy-bind(以Autocad为例)第5张

help()进一步验证了early-bind模式事先知道该对象的所有属性和方法。

3.early-bind在打包后受不受影响?可移植么?

为此,在early-bind模式下将如下代码进行打包:

from pycomcad import *
acad=Autocad()
print('Connect successfully...')
test=acad.GetEntity()
input('entry to exit...')

形成test.exe文件

python模块win32com中的early-bind与lazy-bind(以Autocad为例)第6张

将该文件在另一台电脑上运行,拾取cad上的线实体,得到如下:

python模块win32com中的early-bind与lazy-bind(以Autocad为例)第7张

所以,答案是不受影响,并且可移植(如果在64位电脑上打包,则可以在其他64位电脑上运行,对于32位不行)。

免责声明:文章转载自《python模块win32com中的early-bind与lazy-bind(以Autocad为例)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ldap + kerberos 整合PHP date("Y-m-d H:i:s");获取当前时间 差8小时解决办法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python测试开发django-31.admin后台一对多操作ForeignKey

前言 平常的网页上有很多一对多的场景,比如填写银行卡信息的时候,会从银行列表下拉框选择对应的银行信息。一般会建两张表,一张表放银行的信息,一张表放银行卡信息。 每个银行可以对应多个银行卡,每个银行卡只能是一家银行的。那么银行名称和银行卡就是一对多的关系,反之,银行卡和银行名称就是多对一的关系 一对多表设计 准备两张表,银行信息(Bank)和卡号信息(Ca...

python GUI界面编程 口算题生成系统

问题描述 口算题生成系统 功能: (1)口算:题目显示在界面上(除法必须是整除),逐个显示题目,用户通过输入框输入计算结果。系统能实时统计正确率,将错误题目打印到文件里。 (2)生成题目:用户选择生成的题目数量,打印时的列数,运算符的数量,将题目生成到docx文件里。 设计说明 (1)拟设计的功能及实现思路、需要用到的知识功能(1)的实现思路: 1.初始化...

Python下opencv库的安装过程与一些问题汇总

本文主要内容是python下opencv库的安装过程,涉及我在安装时遇到的问题,并且,将从网上搜集并试用的一些解决方案进行了简单的汇总,记录下来。 由于记录的是我第一次安装opencv库的过程,所以内容涵盖可能不全面,如果有出错的地方请务必指正。下面进入主题。 关于python的下载安装不再赘述,python的版本号是我们在opencv库的安装过程中需要用...

python 根据二维数组画出彩色图像

方法:采用seaborn中的heatmap importseabornimport numpy as npimport pandas as pdimport matplotlib.pyplot as pltnew_show=pd.DataFrame(new_show) fig=plt.figure seaborn.heatmap(new_show) plt...

【python系统学习10】布尔值

python的数据类型有好多个,前边写过字符串、整数和浮点数这三种。 本节来整理另一种简单数据类型--布尔值 布尔值(bool) 布尔值和其数据值 计算机可以用数据进行判断,若判断为真则执行特定条件中的代码块。若不为真则执行相反的指定条件内的代码块或不执行任何内容。 这种数据就是布尔值。其数据类型在python中标记为bool。 布尔值其值比较特殊,不像字...

【Python】批量查询-提取站长之家IP批量查询的结果加强版本v3.0

1、工具说明 写报告的时候为了细致性,要把IP地址对应的地区给整理出来。500多条IP地址找出对应地区复制粘贴到报告里整了一个上午。 为了下次更好的完成这项重复性很高的工作,所以写了这个小的脚本。 某个项目每次改需求都是这么突然。 应 XX 每天要求各种省份域名统计,再加强下Domain to IP to 地区的脚本。 Domain2ip2locality...