为更多ac启用ObjectDBX
大家好,最近我在试验ObjectDBX,我发现我无法为一些非常简单的任务启用它:这就是问题所在,我想将所有十几个DWG中的当前层设置为“0”层,然后将线pt1-pt2。。。
(defun CLAYTO0+LIN ( doc adoc / 0lay msp pt1 pt2 ) (vl-load-com)
(setq *lay (vla-get-layers adoc))
(vlax-for lay *lay
(if (= (vla-get-name lay) "0") (setq 0lay lay))
)
(vla-put-activelayer adoc 0lay)
(setq msp (vla-get-modelspace adoc))
(setq pt1 '(0.0 0.0 0.0))
(setq pt2 '(100.0 100.0 100.0))
(vla-addline msp (vlax-3d-point pt1) (vlax-3d-point pt2))
t ;; Success for layer 0
)
(defun C:TEST ( )
(LOAD (findfile "ObjectDBX Wrapper.lsp"))
(LM:ODBX 'CLAYTO0+LIN nil t)
)
Here was my modified ObjectDBX Wrapper.lsp witch was wrong so it was removed...
我一直得到%catch all apply error%,我不太明白为什么。。。
如果有可能以其他方式完成此简单任务或修复我的错误,请回复。。。
谢谢,M.R。 当与ObjectDBX接口时,文档对象的“ActiveLayer”属性不可用;系统变量函数(如setvar/vla setvariable)也不是-因此需要使用脚本在多个图形中设置当前图层。
修改我的函数以使用ActiveDocument对象是没有意义的,因为当使用ObjectDBX时,您是在ObjectDBX文档对象而不是ActiveDocument对象上操作的。如果您删除错误代码,我将不胜感激。 李,谢谢你的回复,我只是在试验,所以我想看看这是否可行。。。太遗憾了,它不是。。。正确的代码可以在你的网站上找到,我不知道我应该删除什么-这只是我的问题,而不是你的代码修订,虽然看起来是这样。。。
告诉我,我应该删除什么?
M、 R。 修改后的ObjectDBX包装器,因为它可能会误导其他人。 我已经解决了这个问题。。。
仍然无法在所有DWG中将当前层设置为0,但新创建的线已成功更改为“0”层:
(defun LIN-0-LAYER ( doc / msp obj ) (vl-load-com)
(setq msp (vla-get-modelspace doc))
(setq obj (vla-addline msp (vlax-3d-point '(0.0 0.0 0.0)) (vlax-3d-point '(100.0 100.0 100.0))))
(vla-put-layer obj "0")
t ;; Success for at least one of the objects
)
(defun C:TEST ( )
(LOAD (findfile "ObjectDBX Wrapper.lsp"))
(LM:ODBX 'LIN-0-LAYER nil t)
)
M、 R。
好啊Lee现在它可以与原始的ObjectDBX包装器一起使用。lsp,所以我将删除修改后的版本。。。 好东西,谢谢Marko
页:
[1]