vla将命令发送到非活动状态
如何识别非活动图形?vla获取ActiveDocument?
如果是这样。。。vla sendcommand的目的是什么?
我想在一个非活动图形中运行lisp例程
对于这两种情况,正确的语法是什么?
我已经能够激活当前图形以外的另一个图形。甚至将屏幕更改为另一个屏幕,但我无法在最后一个屏幕上运行lisp例程,我的意思是从我调用新屏幕的那一个开始:
vla激活
提前感谢
斯沃戈德内
你好
您可以调用系统变量“dwgname”并将其与所需的图形名称进行比较,因此如果匹配,则它处于活动状态,否则不处于活动状态。
要检查文档对象是否为活动图形,请执行以下操作:
(= :vlax-true (vla-get-active <document-object>)) 谢谢李。。。只是我不明白vla sendcommand有什么用,因为我无法在非活动图形上运行命令。。。
有简单的样品吗?
我有一幅画。。。想打开另一个
(vla打开)
获取所有打开的文档
(setq docs(vla get documents(vlax get acad object)))
第二次运行命令
(vla sencommand)
关闭第二个
(vla关闭)
回到原点
(vla项目文件0)
这就是它应该工作的方式吗?或者我应该停止这个过程吗。我需要坚持这个过程。
再次提前感谢
塞尔吉奥 更简单。。。我想在非活动图形中运行lisp例程。
只有这个。 使用sendcommand方法将导致目标图形成为活动图形,并且由于AutoLISP只能在活动图形中运行,因此使另一个图形成为活动图形将导致停止对活动AutoLISP程序的评估。
某些Visual LISP ActiveX方法能够在非活动图形上操作(与您可以使用ObjectDBX在另一个图形上操作而无需在AutoCAD编辑器中打开图形的方式相同),但是,这种方法的可行性将取决于您希望使用AutoLISP程序执行的操作。 再次感谢李,
我会尽可能清楚地解释我的问题。
我有一个按每个建筑项目的视图划分的系统
平面布置图
_A(工作进度阶段)
_B(清洁图纸)
_C(布局、演示图\u B外部参照)
小节
_A(工作进度阶段)
_B(清洁图纸)
_C(布局、演示图\u B外部参照)
立面图
_A(工作进度阶段)
_B(清洁图纸)
_C(布局、演示图\u B外部参照)
等
在每个视图上从A到B的传输需要运行一些命令,这些命令基本上删除了C中所有不需要的信息。例如,不是“Help Layers”、“all Layers on”“No xref attached”,或者客户端可能需要的任何类型的过程。
这确保了布局始终处于上次清理的状态,并允许用户在A阶段继续工作,而不必“手动清理”图形来打印。
到目前为止,我已经能够成功地从每个a编写一个脚本来编写/覆盖B。我知道我有点挑剔,但这还不够。如果用户可能打开了一些图形,并在第一个图形中运行此脚本,则在脚本结束时,我无法返回到启动该过程的原始文件。
这是唯一公开的问题。
因此,我认为可以通过VLA\uAutoLISP命令来实现。
我重新编写了动态编写的脚本,使用vla open和vla close,我打开和关闭了来自\u A的相应的\u B,但在这两者之间,我无法在\u B内执行任何操作。这就是为什么我询问如何使用这三个autolisp命令的示例。
vla打开
vla发送命令
vla关闭
这就是问题所在,它从后面把它甩了,只是
从当前图形制作副本
打开副本
在上面运行一些命令
关闭副本
并激活原始图形(如果有更多打开的图形)
有什么建议吗?
再次感谢
塞尔吉奥
在开发批处理属性编辑器程序时,我遇到了一个相同的问题——我的解决方案是将打开的图形排除在处理之外,并通知用户这样做。
页:
[1]