首页 > 编程语言 >Python 通过 COM 调用 ChemDraw 实践

Python 通过 COM 调用 ChemDraw 实践

时间:2024-08-30 14:15:55浏览次数:10  
标签:ChemDraw Python Data Objects doc COM

COM

Component Object Model (COM) 是由 Microsoft 提供的一种二进制接口技术,用于软件组件间的交互。它支持在不同编程语言、编程环境、进程和计算机之间以语言中立的方式使用对象。

使用 Python 通过 COM 接口调用 ChemDraw 绘制分子及获取文档中的对象

Python 提供了一些常用的库,如 pywin32comtypes,可以用来与 COM 进行交互。

以下是一个使用 Python 通过 COM 接口调用 ChemDraw 绘制分子结构并获取文档中对象数据的示例:

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,Python,Data,Objects,doc,COM
From: https://www.cnblogs.com/with15yh/p/18388671

相关文章

  • PHP和Composer做语法转换工具
    原文地址:https://www.mengze2.cn/post/5/最近不是把博客的一些文章从和HTML转到Markdown了吗,因为之前换到了wordpress所以是HTML,但是这些文章再typecho无法被解析,于是就打算开发一个Markdown2HTML工具下面使我的开发笔记,可能比较含糊项目结构一般情况下,我不会这么干,但是为了......
  • 基于python+flask框架的某研发型企业知识管理系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在知识经济时代,企业核心竞争力越来越依赖于其知识资源的有效管理和利用。特别是对于研发型企业而言,知识是企业创新发展的源泉,是保持竞争优......
  • 基于python+flask框架的美食(风情)展示系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在全球化日益加深的今天,美食不仅是满足人们味蕾享受的重要方式,更成为了文化传播的重要载体。不同地区的美食承载着各自独特的历史、文化和......
  • 基于python+flask框架的教务管理系统设计与实现(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着教育信息化进程的加速,传统的手工教务管理方式已难以满足现代高等教育复杂多变的管理需求。教务管理作为学校日常运营的核心环节,涉及学......
  • 基于python+flask框架的完美上岸推免服务系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在高等教育日益普及的今天,研究生教育成为众多优秀本科生深造的首选途径。而推免(推荐免试)作为研究生招生的重要方式之一,其竞争日益激烈。学......
  • 修改 Linux 默认 Shell 用 chsh -s /bin/zsh 命令不生效,提示 chsh: Shell not changed
    我想现在应该有很多人都已经使用zsh作为默认的Shell了,尤其是搭配oh-my-zsh之后,真是好用得飞起。一般,我们在切换系统默认的Shell的时候,都会使用 chsh-s/bin/zsh 命令来进行修改。今天我遇到一个问题,在某台老服务器上,使用这个命令无法修改,具体原因未知。始终提示——chsh:She......
  • python使用 pyshark 库捕获数据包,附示例
    以下为您提供使用Python的pcap库捕获网络数据包的示例及相关信息:在Python中,可以使用pcap库来实现网络数据包的捕获。例如:importpcap#创建pcap实例pc=pcap.pcap()#设置过滤条件,例如捕获TCP端口为80的数据包pc.setfilter('tcpport80')#开始抓......
  • python使用 pcap 库捕获网络数据包,附示例
    以下为您提供使用Python的pcap库捕获网络数据包的示例及相关信息:在Python中,可以使用pcap库来实现网络数据包的捕获。例如:importpcap#创建pcap实例pc=pcap.pcap()#设置过滤条件,例如捕获TCP端口为80的数据包pc.setfilter('tcpport80')#开始抓......
  • 如何使用python抓包,附代码
    以下为您介绍多种使用Python进行抓包的方法及代码示例:使用Scapy库进行抓包:首先确保已经安装了Scapy库。如果没有安装,可以使用以下命令安装:pipinstallscapy。创建一个名为packet_sniffer.py的Python文件,并输入以下代码:fromscapy.allimport*defpacket_call......
  • 【使用python实现多目标批量ping】附案例
    以下为使用Python实现批量ping的多种方法及代码示例:方法一:importsubprocessfilepath='E:\\Python\\tools\\AutoMatic\\hosts.txt'withopen(filepath,'r')asf:hosts=f.readlines()forhostinhosts:result=subprocess.check_output((......