这似乎有效
(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)
) 还有vlax invoke:
6 啊,我不知道你必须获得新文档的模型空间。
很高兴知道,谢谢Gile。 我第一次回答得太快了,重点是对象变量的论点。
如开发人员帮助>ActiveX和VBA参考>对象模型中所示,图形实体始终拥有块对象,该块对象可以是块定义、模型SAPCE或图纸空间。
这就是为什么ModelSpace和PaperSpace拥有Block集合的原因。 尊重,这是有效的。
太棒了谢谢
“这就是ModelSpace和PaperSpace拥有Block集合的原因。”这是一个原因,现在如果你这么说的话。
谢谢 谢谢Gile
页:
1
[2]