明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1276|回复: 11

[基础] 怎么调用AutoCad里面自带的命令?

[复制链接]
发表于 2022-10-31 14:31 | 显示全部楼层 |阅读模式
比如我想实现删除重复多段线的功能,但AutoCAD2016版本里已经自带一个overkill的命令,
那我怎么通过二次开发来直接调用overkill命令呢?
发表于 2022-10-31 14:42 | 显示全部楼层
(defun C:NM ( / )
        (Vlax-Invoke-Method (Vlax-Get-Or-Create-Object "WScript.Shell" ) 'Sendkeys "overkill ")
        (princ)
)
回复 支持 0 反对 1

使用道具 举报

发表于 2022-11-1 09:15 | 显示全部楼层
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 ")
 楼主| 发表于 2022-10-31 14:50 | 显示全部楼层
xj6019 发表于 2022-10-31 14:42
(defun C:NM ( / )
        (Vlax-Invoke-Method (Vlax-Get-Or-Create-Object "WScript.Shell" ) 'Sendkeys "over ...

如何在VS里用C#描写?
发表于 2022-10-31 20:41 | 显示全部楼层
随便的C# 发表于 2022-10-31 14:50
如何在VS里用C#描写?

他是发送字符串到命令行
 楼主| 发表于 2022-10-31 22:56 | 显示全部楼层
caoliu023 发表于 2022-10-31 20:41
他是发送字符串到命令行

也就是说二次开发只能做到往命令栏里发字符串,而不能直接使用内建命令
发表于 2022-11-1 09:49 | 显示全部楼层
随便的C# 发表于 2022-10-31 14:50
如何在VS里用C#描写?



Editor.Command(new object[]{"overkill"});
 楼主| 发表于 2022-11-1 13:52 | 显示全部楼层
ytianxia 发表于 2022-11-1 09:49
Editor.Command(new object[]{"overkill"});

感谢大佬!!
发表于 2022-11-4 08:14 | 显示全部楼层
找到了,一个是doc.SendStringToExecute(),一个是ed.Command(),ed.Command()老版本2008不支持,doc.SendStringToExecute()是异步方法,老版本(2008)能发送的命令条数有限,新版本可以一直发。
发表于 2022-11-5 17:02 | 显示全部楼层
ytianxia 发表于 2022-11-1 09:49
Editor.Command(new object[]{"overkill"});

感谢大佬!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-3 03:13 , Processed in 0.258185 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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