gile 发表于 2022-7-6 12:46:26

你好
 
这似乎有效
 
(defun c:test (/ acdoc ss filename array n dbxdoc try)
(vl-load-com)
(setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object)))
(if (and
       (setq ss (ssget))
       (setq filename (getfiled "Target file" "" "dwg" 0))
   )
   (progn
   (setq n   (sslength ss)
         array (vlax-make-safearray vlax-vbObject (cons 0 (1- n)))
   )
   (vlax-for obj (setq ss (vla-get-ActiveSelectionSet acdoc))
       (vlax-safearray-put-element array (setq n (1- n)) obj)
   )
   (vla-delete ss)
   (setq dbxdoc
            (vlax-create-object
            (if (< (setq release (atoi (getvar "ACADVER"))) 16)
                "ObjectDBX.AxDbDocument"
                (strcat "ObjectDBX.AxDbDocument." (itoa release))
            )
            )
   )
   (if
       (vl-catch-all-error-p
         (setq try (vl-catch-all-apply 'vla-open (list dbxdoc filename)))
       )
      (princ (strcat "\nError: " (vl-catch-all-error-message try)))
      (progn
          (vla-CopyObjects acdoc array (vla-get-ModelSpace dbxdoc))
          (vla-SaveAs dbxdoc filename)
      )
   )
   (vlax-release-object dbxdoc)
   )
)
(princ)
)

gile 发表于 2022-7-6 12:52:08

还有vlax invoke:
 
6

Lee Mac 发表于 2022-7-6 12:55:42

啊,我不知道你必须获得新文档的模型空间。
 
很高兴知道,谢谢Gile。

gile 发表于 2022-7-6 13:00:48

我第一次回答得太快了,重点是对象变量的论点。
 
如开发人员帮助>ActiveX和VBA参考>对象模型中所示,图形实体始终拥有块对象,该块对象可以是块定义、模型SAPCE或图纸空间。
这就是为什么ModelSpace和PaperSpace拥有Block集合的原因。

haustab 发表于 2022-7-6 13:04:41

尊重,这是有效的。
太棒了谢谢
“这就是ModelSpace和PaperSpace拥有Block集合的原因。”这是一个原因,现在如果你这么说的话。
谢谢

Lee Mac 发表于 2022-7-6 13:07:30

谢谢Gile
页: 1 [2]
查看完整版本: 将对象复制到新dwg