通过脚本设置MAP角色你好,
我正在制作一个脚本来帮助初学者在数据表中设置一些参数,例如表变量和地图角色。
问题是当我设置地图角色时,文件路径未记录在列属性中
path = pick file ();
dt0:my_column << set property ("Map Role", Map Role ("Shape Name Use" (path), "My_column") ) ) ;有什么想法导致这个吗?
回复:通过脚本设置 MAP 角色好吧,我的脚本终于可以工作了:)
出于某种原因,当我写道:
dt0:my_column << set property ("Map Role", Map Role (Shape Name Use (path, "my_column" ) ) ;它不会将变量路径中包含的字符串传输到列属性中。 当我尝试使用 Eval(path) 和其他解决方法时它仍然无法工作。 我猜测 JSL 不支持评估此消息内的变量。
所以这是我找到的解决方法:
My_expression = Eval Expr ( dt0:my_column << set property ("Map Role", Map Role (Shape Name Use (Expr(path), "my_column" ) ) );
Eval (My_expression); 这终于成功了!
最终不需要将路径从 posix 转换为 Windows 的步骤,因为列属性接受这两种格式。
回复:通过脚本设置 MAP 角色很简单。 以下是不同论点的示例。
文字参数、数字或字符串:
x = Sqrt( 5 );
x = Num( "5" );
变量参数:
x = 5;
y = Sqrt( x );
命名参数:
dt << Bivariate( Y( :weight ), X( :height ), Fit Line );
最后一个示例包括命名参数(Y、X 和拟合线)和文字参数(:weight 和:height)。 您的原始代码将 Shape Name Use() 命名参数包含在字符串分隔符中,这使其成为字符串参数。
回复:通过脚本设置 MAP 角色那么我是否设法从文本字符串设置此属性?
你说这是“一个命名参数,而不是一个字符串”。 这是什么意思 ? 我想这是 JSL 的一个缺点,该系统是如此简单和灵活,用户不知道他们正在操纵的内容的确切性质
我尝试了以下语法但无济于事:
dt0:my_column << Set Property ( "Map Role", Map Role( Shape Name Use(Eval( path) ), "My_column" ) );
dt0:my_column << Set Property ( "Map Role", Map Role( Shape Name Use(Expr( path) ), "My_column" ) );
Eval Expr (dt0:my_column << Set Property ( "Map Role", Map Role( Shape Name Use(Expr( path) ), "My_column" ) ) );
回复:通过脚本设置 MAP 角色谢谢@马克贝利,
我在这里学到了一些东西。 我不知道 Posix 是什么:)
在脚本索引中搜索 POSIX,我找到了转换函数:
path = pick file () ;
converted_path= Convert File Path (path, windows) ;
与使用 <
回复:通过脚本设置 MAP 角色这条路线有点绕,而且没有必要。 看到这个功能。
回复:通过脚本设置 MAP 角色另外,我认为带有路径的参数是命名参数,而不是字符串,所以它看起来像这样:
dt0:my_column << Set Property ( "Map Role", Map Role( Shape Name Use( path ), "My_column" ) ) ) ;
顺便说一句,JMP 默认使用 POSIX 路径格式,而不是 Windows 格式。 但通常它会自动转换,或者您可以显式调用内置函数在两种格式之间进行转换。
回复:通过脚本设置 MAP 角色好吧,看来我找到了解决方案:
dt= open (pick file (), invisible ) ;
path = dt<< get path;
dt<<CLOSE></CLOSE>
这似乎可以解决它:)
回复:通过脚本设置 MAP 角色好吧,摆弄了一段时间后,我明白了问题所在:
Windows 中的文件路径如下所示 C:\user\file.txt
当您使用 pick file() 提取 jmp 中的路径时,它会将其转换为“C:/user/file.txt”。 我猜这是因为 JMP 认为 '\' 是一个特殊字符。 奇怪的是,在其他 JSL 指令中,您只能对文件路径使用 JMP 语法,但由于某种原因,Map Role 使用正常的 Windows 语法。
现在我的问题是:是否有一种简单的方法将 JMP 文件路径转换为 Windows 文件路径? 可以避免这样写的事情:
“C:\!\用户\!\文件.txt”
或者,可以直接访问列属性并打开提示以在地图角色窗格中选择文件的脚本也很有用。
谢谢