明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 144|回复: 2

[提问] vla选择集activeselectionset如何使用?

[复制链接]
发表于 昨天 08:39 | 显示全部楼层 |阅读模式
;为什么这个vla-get-activeselectionset有时候会失灵?
例如:原因:Automation 错误。未提供说明。
Automation 错误。 调用方法 AddItems (接口 IAcadSelectionSet) 失败
  1. (defun c:dc(/ doc objss ss)
  2.         (vl-load-com)
  3.         (if(setq ss(ssget))
  4.                 (progn
  5.                         (setq doc(vla-get-ActiveDocument(vlax-get-acad-object)))
  6.                         (setq objss(vla-get-activeselectionset doc))
  7.                         (vla-wblock doc "D:/Temp.dwg" objss)
  8.                         (print "文件导出成功!")
  9.                 )
  10.         )
  11.         (princ)
  12. )
"觉得好,就打赏"
还没有人打赏,支持一下
回复

使用道具 举报

发表于 2 小时前 | 显示全部楼层
(defun c:dc(/ ssa doc ssetObj objss ni)
    (vl-load-com)
     (if (setq ssa (ssget))
         (progn
             (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
             (setq ssetObj (vla-Add (vla-get-SelectionSets doc) "WBLOCKSET"))
             (setq objss (vlax-make-safearray vlax-vbObject (cons 0 (1- (sslength ssa)))))
             (repeat (setq ni (sslength ssa))
                 (setq ni (1- ni))
                 (vlax-safearray-put-element objss ni (vlax-ename->vla-object (ssname ssa ni)))
             )
             (vla-AddItems ssetObj objss)
             (vla-wblock doc "D:\\Temp.dwg" ssetObj)
             (vla-Delete ssetObj)
             (print "文件导出成功!")
          )
     )
     (princ)
)
回复 支持 反对

使用道具 举报

发表于 2 小时前 | 显示全部楼层
本帖最后由 yshf 于 2025-5-6 10:02 编辑

或者
  1. <div class="blockcode"><blockquote>(defun c:dca(/ ssa doc setss ents objss ssetObj)
  2.     (vl-load-com)
  3.      (if (setq ssa (ssget))
  4.          (progn
  5.        (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
  6.        (setq setss (vla-get-SelectionSets doc))
  7.        (setq ents (vl-remove-if 'listp (mapcar 'cadr (ssnamex ssa))))
  8.        (setq objss (vlax-make-safearray vlax-vbObject (cons 0 (1- (length ents)))))
  9.        (vlax-safearray-fill objss (mapcar 'vlax-ename->vla-object ents))
  10.        (if (vl-catch-all-error-p (setq ssetObj (vl-catch-all-apply 'vla-Add (list setss "WBLOCKSET"))))
  11.            (vla-Delete (vla-item setss "WBLOCKSET"))
  12.        )
  13.        (setq ssetObj (vla-Add setss "WBLOCKSET"))
  14.        (vla-AddItems ssetObj objss)
  15.              (vla-wblock doc "D:\\Temp.dwg" ssetObj)
  16.              (vla-Delete ssetObj)
  17.        (print "文件导出成功!")
  18.           )
  19.      )
  20.      (princ)
  21. )

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-6 11:44 , Processed in 0.175515 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表