随便的C# 发表于 2022-10-31 14:31:09

怎么调用AutoCad里面自带的命令?

比如我想实现删除重复多段线的功能,但AutoCad2016版本里已经自带一个overkill的命令,
那我怎么通过二次开发来直接调用overkill命令呢?

xj6019 发表于 2022-10-31 14:42:32

(defun C:NM ( / )
        (Vlax-Invoke-Method (Vlax-Get-Or-Create-Object "WScript.Shell" ) 'Sendkeys "overkill ")
        (princ)
)

nyistjz 发表于 2022-11-1 09:15:21

xj6019 发表于 2022-10-31 14:42
(defun C:NM ( / )
        (Vlax-Invoke-Method (Vlax-Get-Or-Create-Object "WScript.Shell" ) 'Sendkeys "over ...

好像和这个功能是一样的

(setq *ACAD* (vlax-get-acad-object))
(setq *DOC* (vla-get-ActiveDocument *ACAD*))
(vla-sendcommand *doc* "overkill ")

随便的C# 发表于 2022-10-31 14:50:36

xj6019 发表于 2022-10-31 14:42
(defun C:NM ( / )
        (Vlax-Invoke-Method (Vlax-Get-Or-Create-Object "WScript.Shell" ) 'Sendkeys "over ...

如何在VS里用C#描写?

caoliu023 发表于 2022-10-31 20:41:02

随便的C# 发表于 2022-10-31 14:50
如何在VS里用C#描写?

他是发送字符串到命令行

随便的C# 发表于 2022-10-31 22:56:31

caoliu023 发表于 2022-10-31 20:41
他是发送字符串到命令行

也就是说二次开发只能做到往命令栏里发字符串,而不能直接使用内建命令

ytianxia 发表于 2022-11-1 09:49:21

随便的C# 发表于 2022-10-31 14:50
如何在VS里用C#描写?



Editor.Command(new object[]{"overkill"});

随便的C# 发表于 2022-11-1 13:52:20

ytianxia 发表于 2022-11-1 09:49
Editor.Command(new object[]{"overkill"});

感谢大佬!!

cjt472017713 发表于 2022-11-4 08:14:24

找到了,一个是doc.SendStringToExecute(),一个是ed.Command(),ed.Command()老版本2008不支持,doc.SendStringToExecute()是异步方法,老版本(2008)能发送的命令条数有限,新版本可以一直发。

myhomer 发表于 2022-11-5 17:02:13

ytianxia 发表于 2022-11-1 09:49
Editor.Command(new object[]{"overkill"});

感谢大佬!!
页: [1] 2
查看完整版本: 怎么调用AutoCad里面自带的命令?