xiaxiang 发表于 2011-4-12 11:33:43

已解决!vla-get-activeselectionset报错的问题

本帖最后由 xiaxiang 于 2011-4-13 10:16 编辑

为何我一运行这个代码段就报错? (vlax-for obj (vla-get-activeselectionset(vla-get-activedocument(vlax-get-acad-object)))
    (vla-offset obj dist)
    (vla-offset obj (* dist -1))
    )
报错:错误: Automation 错误。 调用方法 Clear (接口 IAcadSelectionSet) 失败

xiaxiang 发表于 2011-4-13 10:13:57

首先感谢gu_xl版主的回复。
问题已解决!阐述如下:
很多同仁用如下方法操作当前选择集,都是相同的问题。
(vlax-for obj (vla-get-activeselectionset(vla-get-activedocument(vlax-get-acad-object)))
...
)使用第一次很成功,第二次则报错
错误: Automation 错误。 调用方法 Clear (接口 IAcadSelectionSet) 失败
为何?
没有及时清空选择集!
所以都请在之前执行此函数,以保证程序顺利执行。

(defun Clearcset (/ cset)
(if (not (vl-catch-all-error-p   
(setq cset (vl-catch-all-apply 'vla-item (list(vlax-get-property (vlax-get-property (vlax-get-acad-object) 'activedocument ) 'selectionsets)"CURRENT")))
            )      
      )   
(vla-delete cset)
)
(princ)
)

Gu_xl 发表于 2011-4-12 11:40:41

本帖最后由 Gu_xl 于 2011-4-12 11:41 编辑

回复 xiaxiang 的帖子

不是所有的物体都能offset,有些物体即使可以offset,但因偏移距离不满足要求,也可能导致offset失败!请用vl-catch-apply执行,以避免程序暴尸街头!

zark 发表于 2011-4-26 07:41:36

回复 xiaxiang 的帖子

你的程序也缺少条件,为什么不判断一个类型再OFFSET呢
页: [1]
查看完整版本: 已解决!vla-get-activeselectionset报错的问题