|
高级会员
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
|
【转帖】sendstringtoexecute字符串参数的设置(autocad: off 输入要关闭的图层名列表或 <选择对象>: * 确实希望关闭图层“0”(当前图层)
sendstringtoexecute字符串参数的设置(autocad: off 输入要关闭的图层名列表或 <选择对象>: * 确实希望关闭图层“0”(当前图层)? y 输入选项 [?/生成(m)/设定(s)/新建(n)/开(on)/关(off)/颜色(c)/线型(l)/线宽(lw)/材质(mat)/打印(p)/冻结(f)/解冻(t)/锁定(lo)/解锁(u)/状态(a)]:(此处实际是一回车)命令: 如果按照下面执行: doc.sendstringtoexecute("-layer off * y", false, false, true) 命令行文本窗口显示如下:命令: -layer 当前图层: 0 输入选项 [?/生成(m)/设定(s)/新建(n)/开(on)/关(off)/颜色(c)/线型(l)/线宽(lw)/材质(mat)/打印(p)/冻结(f)/解冻(t)/锁定(lo)/解锁(u)/状态(a)]: off 输入要关闭的图层名列表或 <选择对象>: * y 此时执行到上面一行后光标就在y之后闪烁,没有执行完毕。可以估计,sendstringtoexecute执行字符串参数时,把字符串参数的第1项(即"-layer")作为命令,把第2项(即"off")作为第1项的参数,第1项和第2项后面的空格都能识别为回车,但在第2项后的空格之后的字符串都只作为1个参数传递到命令行(无论包含空格与否),即整个字符串参数的第2个空格之后的空格都不再识别为回车,要让命令行识别回车,就要用代表回车的转义字符chr(13)。这样代码可以改为(注意引号内没有空格): doc.sendstringtoexecute("-layer" & chr(13) & "off" & chr(13) & "*" & chr(13) & "y" & chr(13) & chr(13), false, false, true) 命令行文本窗口显示如下:命令: -layer 当前图层: 0 输入选项 [?/生成(m)/设定(s)/新建(n)/开(on)/关(off)/颜色(c)/线型(l)/线宽(lw)/材质(mat)/打印(p)/冻结(f)/解冻(t)/锁定(lo)/解锁(u)/状态(a)]: off 输入要关闭的图层名列表或 <选择对象>: * 确实希望关闭图层“0”(当前图层)? y 输入选项 [?/生成(m)/设定(s)/新建(n)/开(on)/关(off)/颜色(c)/线型(l)/线宽(lw)/材质(mat)/打印(p)/冻结(f)/解冻(t)/锁定(lo)/解锁(u)/状态(a)]: 命令: 但上面的显示较正常显示(手动执行-layer)时多了几行空行,这是因为sendstringtoexecute的最后一个参数设置为true,将字符串参数中的每一项都显示了出来(包括回车),如果设为false的话就不会有空行出现了。当然还可以改写如下: doc.sendstringtoexecute("-layer off *" & chr(13) & "y" & chr(13) & chr(13), false, false, true) 其结果与前一次的结果一样,只是"-layer"和"off"后没有多余的空行。在dotnetarx4.0中有sendcommand方法,其参数为 tools.sendcommand("_circle","2,2,0","4");(c#)可以简化输入,其中原理还请admin指点(难道该方法自动在各项后面加chr(13)?)。至于字符串参数中有其他非文本输入,如move命令,字符串参数中需要包含要移动的对象以及基点等,本人就无能为力了,还请高人指点;以上如有谬误也请一并斧正。
你可以使用lisp命令,就可以带参数了。 dim comstr as string = "(command " & chr(34) & "_.zoom" & chr(34) & " " & chr(34) & "_a " & chr(34) & " )" doc.sendstringtoexecute(comstr, false, false, false)
|