问题描述: 

客户反馈sld找不到接口输出sld文件,SendStringToExecute发送命令的方式会弹对话框中断命令输出。

步骤指引:

经过研究可以使用C++的zcedCmd接口发送“MSLIDE”命令可以导出sld文件:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ZwSoft.ZwCAD.Runtime;
using ZwSoft.ZwCAD.ApplicationServices;
using ZwSoft.ZwCAD.Geometry;
using ZwSoft.ZwCAD.DatabaseServices;
using ZwSoft.ZwCAD.EditorInput;
using System.Runtime.InteropServices;

[assembly: CommandClass(typeof(ZrxDotNetCSProject185.Commands))]

namespace ZrxDotNetCSProject185
{
    class Commands
    {

        [DllImport("zwcad.exe", EntryPoint = "zcedCmd", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
        private static extern int zcedCmd(System.IntPtr vlist);

        [CommandMethod("Test")]
        static public void HelloCS()
        {
            ResultBuffer rb2 = new ResultBuffer
            {
                new TypedValue((int)LispDataType.Text, "MSLIDE"),
                new TypedValue((int)LispDataType.Text, "test_slide.sld"),
                new TypedValue((int)LispDataType.Text, "")
            };
            zcedCmd(rb2.UnmanagedObject);
        }
    }
}


拓展:

SendStringToExecute发送命令是异步执行,发送后会直接往下执行代码,无法做到中断执行完命令再执行后续代码,也可以参考示例代码使用“zcedCmd”来发送命令。


英文空间链接


★★中望CAD 如何用代码输出sld幻灯片文件?https://confluence.zwcad.com/pages/viewpage.action?pageId=303728841

  • No labels