计算化学公社

 找回密码 Forget password
 注册 Register
Views: 8322|回复 Reply: 6
打印 Print 上一主题 Last thread 下一主题 Next thread

[CASTEP/Dmol3/MS] 运行help里面的一段script程序,出错

[复制链接 Copy URL]

610

帖子

2

威望

4409

eV
积分
5059

Level 6 (一方通行)

跳转到指定楼层 Go to specific reply
楼主
#!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的规则,请高手帮忙看一看,多谢了。。。

124

帖子

0

威望

2779

eV
积分
2903

Level 5 (御坂)

2#
发表于 Post on 2020-2-18 14:06:00 | 只看该作者 Only view this author
本帖最后由 hxd_yi 于 2020-2-18 14:09 编辑

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

610

帖子

2

威望

4409

eV
积分
5059

Level 6 (一方通行)

3#
 楼主 Author| 发表于 Post on 2020-2-18 16:06:33 | 只看该作者 Only view this author
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.
我直接运行本文件夹下面的两个文件,貌似程序找不到。

124

帖子

0

威望

2779

eV
积分
2903

Level 5 (御坂)

4#
发表于 Post on 2020-2-18 20:10:42 | 只看该作者 Only view this author
你在windows下使用的话,建议使用绝对路径,这样程序就能找到了。

610

帖子

2

威望

4409

eV
积分
5059

Level 6 (一方通行)

5#
 楼主 Author| 发表于 Post on 2020-2-18 21:22:12 | 只看该作者 Only view this author
hxd_yi 发表于 2020-2-18 20:10
你在windows下使用的话,建议使用绝对路径,这样程序就能找到了。

怎么使用绝对路径,这个还真不知道

3097

帖子

29

威望

1万

eV
积分
17098

Level 6 (一方通行)

6#
发表于 Post on 2020-2-18 22:40:05 | 只看该作者 Only view this author
zyj19831206 发表于 2020-2-18 21:22
怎么使用绝对路径,这个还真不知道

例:"question\mark.xsd" --> "C:\cant\you\use\google\before\you\ask\question\mark.xsd"
另外不要在路径中有空格(“new folder”)避免不必要的麻烦。

610

帖子

2

威望

4409

eV
积分
5059

Level 6 (一方通行)

7#
 楼主 Author| 发表于 Post on 2020-2-19 09:59:15 | 只看该作者 Only view this author
liyuanhe211 发表于 2020-2-18 22:40
例:"question\mark.xsd" --> "C:\cant\you%use\google\before\you\ask\question\mark.xsd"
另外不要在 ...

好的,多谢。。

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2025-8-16 19:38 , Processed in 0.172344 second(s), 20 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list