本帖最后由 Qwer1243 于 2025-4-9 21:11 编辑
我想用源泉插件中的“yq_dim_pline”命令(闭合多段线自动标注),运行命令后,想自动键入关键“B”,在自动完成回车;紧接着运行探索者中的“CHDCHL”(重叠标注处理),处理多段线中重叠的标注,我自己试了好几方法都不行,都无法实现,大家有没有什么好方法可以实现?
用(command)和(vl-cmdf)都无法直接调用“yq_dim_pline”命令
 - (defun c:66 (/ ss)
- (setvar "cmdecho" 0)
- (setq lastent (entlast))
- (setq ss (ssget))
- (command-s "change" ss "" "p" "la" "0" "")
- (command-s "change" ss "" "p" "c" "BYLAYER" "")
- (vla-sendcommand (vla-get-activedocument (vlax-get-acad-object)) (strcat "ddzz\n" "B\n" "p\n" " "))
- (setq ss1 (ssadd))
- (while (setq lastent (entnext lastent))
- (ssadd lastent ss1)
- )
- (Sssetfirst nil ss1)
- (vla-sendcommand (vla-get-activedocument (vlax-get-acad-object)) (strcat "CHDCHL\n" " "))
- (prin1)
- )
这种方法,vla-sendcommand和vlisp代码执行不同步,会在所有vlisp代码都执行完以后再执行vla-sendcommand里面的代码
 - (defun c:test()
- (setvar "cmdecho" 0)
- (setq WshShell (Vlax-Get-Or-Create-Object "WScript.Shell" ))
- (c:yq_dim_pline)
- (Vlax-Invoke-Method WshShell 'Sendkeys "B")
- (vlax-release-object WshShell)
- (princ "\n运行结束")
- (setvar "cmdecho" 1)
- )
用Sendkeys也不行,只有全部执行完yq_dim_pline命令后,才会执行Sendkeys
|