编辑:想通了这部分,但请参阅下面的第 2 篇文章了解另一个问题。
(这里有一些背景故事,请跳过 TLDR :) )
我目前正在尝试为 Blender 编写一些脚本,以帮助改进我玩的游戏(Natural Selection 2)的关卡创建工作流程。目前,要将几何体从关卡编辑器移动到 Blender,我必须 1) 将编辑器中的文件另存为 .obj 2) 将 obj 导入到 Blender 中,然后进行更改。然后我 3) 使用我编写的导出器脚本导出到游戏的关卡格式,以及 4) 在编辑器的新实例中重新打开文件。 5) 从新实例复制关卡数据。 6) 粘贴到主层文件中。这是一件非常痛苦的事情,而且很明显,除了主要编辑之外,甚至完全不鼓励使用该工具。我对改进工作流程的想法:1)在编辑器中将数据复制到剪贴板 2)在 Blender 中运行导入程序脚本以加载数据。 3)在 blender 中运行导出器脚本以保存数据。 4) 粘贴回原始文件。这不仅在繁琐的过程中减少了两个完整的步骤,而且还消除了让额外的文件弄乱我的桌面的需要。不过目前,我还没有找到一种方法可以将 Windows 剪贴板中的剪贴板数据读入 Blender 中……至少不需要经过一些非常复杂的安装步骤(例如安装 python 3.1、安装 pywin32、移动 x、y ,z到blender目录,卸载python 3.1...等...)
TLDR
我需要帮助找到一种在 Blender 中向/从剪贴板写入/读取二进制数据的方法。我不关心跨平台能力——游戏工具仅适用于 Windows。
理想情况下——虽然乞丐显然不能在这里选择——该解决方案不会让外行人安装脚本变得太困难。我(希望)不是唯一要使用它的人,所以我希望安装说明尽可能简单。如果 python 标准库中有可用的解决方案,那就太棒了!
我已经看过/正在看的东西
Pyperclip -- 纯文本。我需要能够从剪贴板读取二进制数据。
pywin32 -- 不断出现缺少 DLL 文件的错误,所以我确定我做错了什么。需要再试一次,但我必须采取的步骤非常复杂(请参阅 TLDR 部分上面的最后一句话 :))
TKinter -- 没有深入了解这个,因为它似乎只能读取纯文本。
ctypes——实际上是在写这篇文章的过程中才发现的。看起来很可怕,但我会试一试。
最佳答案
好吧,我终于搞定了。以下是感兴趣的代码:
from ctypes import *
from binascii import hexlify
kernel32 = windll.kernel32
user32 = windll.user32
user32.OpenClipboard(0)
CF_SPARK = user32.RegisterClipboardFormatW("application/spark editor")
if user32.IsClipboardFormatAvailable(CF_SPARK):
data = user32.GetClipboardData(CF_SPARK)
size = kernel32.GlobalSize(data)
data_locked = kernel32.GlobalLock(data)
text = string_at(data_locked,size)
kernel32.GlobalUnlock(data)
else:
print('No spark data in clipboard!')
user32.CloseClipboard()
关于python - 在 Blender (python) 中从 Windows 剪贴板读取二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26240373/
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
好的,所以我的目标是轻松地将一些数据保存到磁盘以备后用。您如何简单地写入然后读取一个对象?所以如果我有一个简单的类classCattr_accessor:a,:bdefinitialize(a,b)@a,@b=a,bendend所以如果我从中非常快地制作一个objobj=C.new("foo","bar")#justgaveitsomerandomvalues然后我可以把它变成一个kindaidstring=obj.to_s#whichreturns""我终于可以将此字符串打印到文件或其他内容中。我的问题是,我该如何再次将这个id变回一个对象?我知道我可以自己挑选信息并制作一个接受该信
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
我正在使用Ruby,我正在与一个网络端点通信,该端点在发送消息本身之前需要格式化“header”。header中的第一个字段必须是消息长度,它被定义为网络字节顺序中的2二进制字节消息长度。比如我的消息长度是1024。如何将1024表示为二进制双字节? 最佳答案 Ruby(以及Perl和Python等)中字节整理的标准工具是pack和unpack。ruby的packisinArray.您的长度应该是两个字节长,并且按网络字节顺序排列,这听起来像是n格式说明符的工作:n|Integer|16-bitunsigned,network(bi