栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

autocad.net 用acedCmd发送命令如何等待用户输入

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

autocad.net 用acedCmd发送命令如何等待用户输入

//用acedCmd发送命令如何等待用户输入
//参考:https://adndevblog.typepad.com/autocad/2012/04/synchronously-send-and-wait-for-commands-in-autocad-using-c-net.html
//qq群:720924083
//2020-11-17
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;

using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.Windows;
namespace AcadDemo
{
    public class SendSyncCommand
    {
    // call the insert command and wait until the user has finished, by Fenton Webb, DevTech
    
        [DllImport("acad.exe", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl, EntryPoint = "acedCmd")]
        private static extern int acedCmd(System.IntPtr vlist);
     
        [CommandMethod("Test7")]
        public void Test7()
        {
            ResultBuffer rb = new ResultBuffer();
            // RTSTR = 5005
            rb.Add(new TypedValue(5005, "_.INSERT"));
            // start the insert command

            acedCmd(rb.UnmanagedObject);
            bool quit = false;
            // loop round while the insert command is active
            while (!quit)
            {
            // see what commands are active

                string cmdNames = (string)Autodesk.AutoCAD.ApplicationServices.Application.GetSystemVariable("CMDNAMES");

                // if the INSERT command is active

                if (cmdNames.ToUpper().IndexOf("INSERT") >= 0)
                {
                    // then send a PAUSE to the command line
                    rb = new ResultBuffer();
                    // RTSTR = 5005 - send a user pause to the command line

                    rb.Add(new TypedValue(5005, "\"));

                    acedCmd(rb.UnmanagedObject);
                }
                else
                    // otherwise quit
                    quit = true;

                }

        }
   
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/909886.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号