我在我的Mac上使用Blender 2.7(OS 10.9.2),控制台无法正常打开。如果我打开blender.app/Contents/MacOS/blender,我会得到一个新的终端窗口,但它充满了易读和难以理解的字符,如“œ˙Ì˛Ä&àÖÄH__PAGEZERO__TEXTÃÔ。 Blender也不会记录任何打印语句或错误。
任何人都知道发生了什么事?
谢谢!
编辑:我也是终端新手,并尝试使用/ Contents / MacOS目录中的“open blender”:P。如果您从父目录中键入“./blender”,它就可以正常工作。
如果有人能够了解正在发生的事情或输入“./filename”和“打开文件名”之间的区别,那就太棒了。
答案 0 :(得分:2)
Blender有需要运行的各种资源,它们与二进制文件位于同一个文件夹中,它从当前工作目录开始,以便在启动blender时找到它们。
在终端中输入命令,有一个序列(在PATH变量中定义)到搜索命令的位置,命令前缀为./
表示在当前工作目录中运行命令而不是在PATH列表中搜索它。
命令open意味着在合适的编辑器中打开可编辑文件,看起来它可以用终端处理它,但新终端将在你的主目录中启动,让blender无法找到它& #39; s资源。自从我使用OSX以来已经过了几年,但它也可能尝试将blender二进制文件作为shell脚本运行。无论哪种方式打开都不会处理可运行的二进制文件,并且没有设计为。
所以区别在于open blender
就像是要编辑文件,但./blender
实际上是从命令行运行应用程序。
您可能还会发现创建一个AppleScript非常容易,它告诉终端更改工作目录并启动blender。这可以很容易地保存为您可以从查找程序启动的应用程序。我认为(未经测试) -
tell application "Terminal"
do script "cd /Applications/blender/blender.app/Contents/MacOS && ./blender"
end tell
如果你想要的只是你运行脚本时的python输出,你可能想尝试the script here - 它允许你在blender的python控制台中运行一个脚本来捕获输出。
如果你想要blender特定的python脚本帮助,请在blender.stackexchange
询问答案 1 :(得分:0)
很抱歉,如果这个答案不是你的问题,而是与主题有关:
我自己的“烦恼”经验和this guy (sambler)的想法帮助我为了打开终端搅拌机而制作了一个简单的应用程序。
here是应用程序,如果你想要它,在这里...
..是如何使用它:
set myPath to ((path to current application) as string) --find the path to blenderOpen.app
set myPath to ((characters 1 through ((length of myPath) - 1) of myPath) as string) --rip off the last ":"
set charDelete to (last character of myPath) -- rip off the "blenderOpen.app"
repeat until charDelete = ":" -- rip off the "blenderOpen.app"
set myPath to ((characters 1 through ((length of myPath) - 1) of myPath) as string) -- rip off the "blenderOpen.app"
set charDelete to (last character of myPath) -- rip off the "blenderOpen.app"
end repeat
set myPath to myPath & "MacOS" --find the blender runtime by appending this path
set myPath to quoted form of the POSIX path of myPath -- convert path so terminal understands
(*
why this little if statement down below?
This if statement is here because if a user
opens terminal and runs some command,
then afterwards runs our script,
we want to use a new window so as not
to interfere with the user.
However, if WE open terminal,
than we want to use the window
that terminal just made for us.
*)
if testterminal() then
tell application "Terminal" to do script "cd " & myPath & " && ./blender" -- tell terminal to open new window, and open blender, Voila!!!
else
tell application "Terminal" to tell front window to do script "cd " & myPath & " && ./blender" -- tell terminal to open blender, in the current window, Voila!!!
end if
return myPath
on testterminal()
tell application "System Events" to (name of processes) contains "Terminal"
end testterminal