terrycadd 发表于 2014-5-14 18:21:02

打开图形命令

我有一个小程序,用户可以在所有打开的图形中发出几个命令。
它在AutoCAD到2012版本中已经工作了多年。
在更新制图部门之前,我正在AutoCAD 2015中测试我们的程序。
加载OpenDwgsCmds.lsp后,下面是一个使用它的示例。
命令:ODC
ZOOM E
END
命令甚至可以是需要在所有打开的图形中运行的AutoLISP程序,例如MyCode或(c:MyCode)或(MyCode)。
使用VBA代码中的send命令,OpenDwgsCmd在AutoCAD 2015中不起作用。
Autodesk的一名程序员帮助我编写了代码,他在VBA代码中将“SendCommand”替换为“SendKeys”。
通过用SendKeys替换SendCommand,程序将工作,
但是在它执行命令之前,我必须切换到每个打开的绘图。
我使用Ctrl+Tab切换到每个绘图,但这不是它应该工作的方式。
在以前的AutoCAD版本中,它会在所有打开的图形中自动执行代码。
我附上了我正在处理的代码,看看是否有人可以帮助我。若要测试OpenDwgsCmdsOriginal.dvb,请将其重命名为OpenDwgsCmds.dvb
谢谢,
TerryCadd a . k . a . Terry Miller
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ opendwgscmds . dvb原始版本,带有send command
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Option Explicit
Sub Main()
Dim objDwg As acad document
Dim objAcad As acad applicationapplication
intDwgCnt = 0
strhisdwg = this drawing。objAcad中每个objDwg的全名。文件
如果objAcad。Documents.Item(intDwgCnt)。全名 strThisDwg,然后
objAcad。Documents.Item(intDwgCnt)。激活objDwg。send command "(load " " OpenDwgsCmds . LSP " ")" & vbCr & " OpenDwgsCmds " & vbCr
Else
intThisDwg = intDwgCnt
End If
intDwgCnt = intDwgCnt+1
Next objDwg
objAcad。Documents.Item(intThisDwg)。激活此绘图。send command "(load " " OpenDwgsCmds . LSP " ")" & vbCr & " OpenDwgsCmds " & vbCr
End Sub
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
OpenDwgsCmds . dvb修订版,带有SendKeys
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Public Sub Main()
Dim initial DWG As acad document
Set initial DWG = Application。active document initial DWG。send command "(load " " OpenDwgsCmds . LSP " ")OpenDwgsCmds "
Dim objDwg As acad document
,用于应用程序中的每个objDwg。文件
如果不是objDwg是initialDwg,则
objDwg。activate
do events
SendKeys " {(} load " " OpenDwgsCmds . LSP " " {)} OpenDwgsCmds ",True
do events
End If
Next
initial DWG。激活
结束Sub
**** Hidden Message *****

IBIEINIID 发表于 2014-8-15 13:13:22

我不熟悉SendCommand以前的参数是什么,但当前(2015)的帮助文件显示参数格式如下:“对象。SendCommand命令“
我认为这可能只是您正在发送的命令的格式。我已经使用这一行通过vba通过命令行重新生成模型空间,所以尝试使用这种格式,看看它是否有帮助:“acaddoc。SendCommand ("RE ")"。(acaddoc基本上就是这个图....我通过Excel VBA运行该程序)引号内的空格就像您在命令行中键入时按enter按钮或空格键一样。如果我知道更多关于LISP的知识,我可以完全重新格式化你的输入字符串,但是恐怕我没有。
祝你好运。
页: [1]
查看完整版本: 打开图形命令