Python 通过 COM 调用 ChemDraw 实践
|
COM
Component Object Model (COM) 是由 Microsoft 提供的一种二进制接口技术,用于软件组件间的交互。它支持在不同编程语言、编程环境、进程和计算机之间以语言中立的方式使用对象。
使用 Python 通过 COM 接口调用 ChemDraw 绘制分子及获取文档中的对象
Python 提供了一些常用的库,如 pywin32 和 comtypes,可以用来与 COM 进行交互。
以下是一个使用 Python 通过 COM 接口调用 ChemDraw 20 绘制分子结构并获取文档中对象数据的示例:- import time
- import comtypes.client as w32
- import win32clipboard
- smiles = 'CC1=Nc2ccccc2[NMe]1'
- def set_clipboard_text(text: str):
- win32clipboard.OpenClipboard()
- win32clipboard.EmptyClipboard()
- win32clipboard.SetClipboardText(text)
- win32clipboard.CloseClipboard()
- # 创建 ChemDraw 实例
- ChemDraw = w32.CreateObject("ChemDraw.Application")
- # 新建文档
- doc = ChemDraw.Documents.Add()
- # 将 SMILES 粘贴到到剪贴板
- set_clipboard_text(smiles)
- # 将剪贴板中的 SMILES 粘贴到 ChemDraw 文档页面中
- doc.Paste()
- # way2: 直接 set 对象
- # 此操作不一定成功,如该操作无效,则使用“复制-粘贴”的方法
- # doc.Objects.Data.fset(doc.Objects.Data.instance, pVal=smiles)
- # 等待粘贴操作完成 过于频繁的复制粘贴操作可能会报错
- time.sleep(0.5)
- # 获取标准化的 SMILES
- canonical_smiles = doc.Objects.Data('chemical/x-smiles')
- # 获取 CDXML 文件内容
- cdxml_file = doc.Objects.Data('chemical/x-cdxml')
- # 获取 MOL 文件内容
- mol_block = doc.Objects.Data('chemical/x-mdl-molfile')
- # 清空文档中的对象,为下一次操作做准备
- doc.Objects.Clear()
- # 关闭文档以清理资源
- doc.Close()
- ChemDraw.Quit()
复制代码 注意:确保 Python 和 ChemDraw 的位数一致。如果 ChemDraw 是 32 位的,则需要在 32 位的 Python 环境下运行该脚本。此外,不同的 ChemDraw 接口可能不一致,需要根据实际情况修改。
来源:https://www.cnblogs.com/with15wm/p/18388671
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
|
|
|
发表于 2024-8-30 16:36:11
举报
回复
分享
|
|
|
|