计算化学公社

标题: 运行help里面的一段script程序,出错 [打印本页]

作者
Author:
zyj19831206    时间: 2020-2-18 11:20
标题: 运行help里面的一段script程序,出错
#!perl

use strict;
use Getopt::Long;
use MaterialsScript qw(:all);

Tools->PolymerBuilder->RandomCopolymer->ClearRepeatUnits;
Tools->PolymerBuilder->RandomCopolymer->AddRepeatUnit($repeat1);
Tools->PolymerBuilder->RandomCopolymer->AddRepeatUnit($repeat2);
my $rcp = Tools->PolymerBuilder->RandomCopolymer->Build($randomCopolymerDoc,
                                                  10,$endUnit,$endUnit);


运行help里面的这段程序,为啥会出现错误?
Global symbol "$repeat1" requires explicit package name (did you forget to declare "my $repeat1"?) at -e line 8.
Global symbol "$repeat2" requires explicit package name (did you forget to declare "my $repeat2"?) at -e line 9.
Global symbol "$randomCopolymerDoc" requires explicit package name (did you forget to declare "my $randomCopolymerDoc"?) at -e line 10.
Global symbol "$endUnit" requires explicit package name (did you forget to declare "my $endUnit"?) at -e line 11.
Global symbol "$endUnit" requires explicit package name (did you forget to declare "my $endUnit"?) at -e line 11.
-e had compilation errors.
不太懂perl的规则,请高手帮忙看一看,多谢了。。。


作者
Author:
hxd_yi    时间: 2020-2-18 14:06
本帖最后由 hxd_yi 于 2020-2-18 14:09 编辑

$repeat1等五个变量没有定义,另外MS的Help文件也只是意思一下,很多时候不能直接拿来用。你要构建一个高分子,你可以直接在图形界面把需要的选项选择完,然后又一个script按钮,把里面的scipt复制出来,这样你就能看懂它的逻辑了。
MS的script是很强大的,要做什么处理,先在图形界面做一遍,然后再找到相关的api,写成程序。

作者
Author:
zyj19831206    时间: 2020-2-18 16:06
hxd_yi 发表于 2020-2-18 14:06
$repeat1等五个变量没有定义,另外MS的Help文件也只是意思一下,很多时候不能直接拿来用。你要构建一个高分 ...

#!perl


use Getopt::Long;
use MaterialsScript qw(:all);
     
my $blockCopolymer = Tools->PolymerBuilder->BlockCopolymer;
my $repeatUnit0 = $Documents{"New Folder/repeat1.xsd"};
my $repeatUnit1 = $Documents{"New Folder/repeat2.xsd"};
$blockCopolymer->ClearRepeatUnits();
$blockCopolymer->AddRepeatUnit($repeatUnit0, 5);
$blockCopolymer->AddRepeatUnit($repeatUnit1, 5);
my $polymer = $blockCopolymer->Build($doc, 1);
貌似直接copy script也不行,出现错误:
Unable to open the project document 'New Folder/repeat1.xsd'.
The file "C:\ProgramData\BIOVIA\Materials Studio\19.1\Gateway-x64\root_default\dsd\jobs\8GMW7\Perl%20Script_Files\Documents\New Folder\repeat1.xsd" does not exist (function/property "Item") at -e line 8.
我直接运行本文件夹下面的两个文件,貌似程序找不到。

作者
Author:
hxd_yi    时间: 2020-2-18 20:10
你在windows下使用的话,建议使用绝对路径,这样程序就能找到了。
作者
Author:
zyj19831206    时间: 2020-2-18 21:22
hxd_yi 发表于 2020-2-18 20:10
你在windows下使用的话,建议使用绝对路径,这样程序就能找到了。

怎么使用绝对路径,这个还真不知道
作者
Author:
liyuanhe211    时间: 2020-2-18 22:40
zyj19831206 发表于 2020-2-18 21:22
怎么使用绝对路径,这个还真不知道

例:"question\mark.xsd" --> "C:\cant\you\use\google\before\you\ask\question\mark.xsd"
另外不要在路径中有空格(“new folder”)避免不必要的麻烦。
作者
Author:
zyj19831206    时间: 2020-2-19 09:59
liyuanhe211 发表于 2020-2-18 22:40
例:"question\mark.xsd" --> "C:\cant\you%use\google\before\you\ask\question\mark.xsd"
另外不要在 ...

好的,多谢。。




欢迎光临 计算化学公社 (http://ccc.keinsci.com/) Powered by Discuz! X3.3