C#操作CAD-调用winform

个人认为用命令操作cad会比较便捷,但是鉴于好多人喜欢通过鼠标点击的方式操作cad,在此讲一下如何调用winform。前期准备请看上篇文章。

1、在新建好项目并引用接口dll的前提下,新建一个winform或者用户控件。

直接调用winform会在电脑上直接生成一个独立于cad的窗体,我感觉很不舒服,所以我直接讲解生成PaletteSet(内嵌入cad窗口)的方法流程。

2、调用过程其实就是执行一个函数而已,而函数的调用需要用户输入命令(当然也可以让调用自动执行),设计好用户控件后,我们在任意一个类里面写入以下代码:

public class Main : IExtensionApplication
    {
        [CommandMethod("show")]
        public void Initialize()
        {
            UserControl1 control1 = new UserControl1();
            PaletteSet ps = new PaletteSet("面板1");
            ps.Size = new System.Drawing.Size(120, 100);
            ps.Style = PaletteSetStyles.ShowCloseButton;
            ps.Add("用户控件", control1);
            ps.Visible = true;
        }
        public void Terminate()
        { }
    }

3、和执行一个普通命令一样,在cad命令窗口里面输入show就会在cad窗口左边生成一个内嵌入cad的panel,上面的按钮都可以正常使用。

附上一个button事件:

private void mi1_Click(object sender, EventArgs e)
        {
            Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
            doc.SendStringToExecute("Line ", true, false, true);//line后面有空格表示确定
        }

以上代码和在命令行输入line的效果一模一样,调用的是cad内部命名。

时间: 2024-12-19 15:00:20

C#操作CAD-调用winform的相关文章

powershell 调用winform dll

//1.加载dll,调用winform窗体,使用指定构造函数 param{ $filePath="" } [void][reflection.assembly]::LoadFile($filePath) $a=New-Object namespace.classctor(args) $a.DoSth()

WebKit.Net JS调用Winform后台方法

最近做winform嵌套WebKitBrowser遇到一些巨大的坑,WebKitBrowser页面内的JS方法调用winform后台方法,死活找不到,最后看到WebKitBrowser的 DocumentTitleChanged方法,这个也许可以将就一下. 前台JS更改WebKitBrowser页面title,而且每次更改都不一样,后台触发DocumentTitleChanged方法 前台页面JS方法 function go(str) { var now=new Date(); var numb

在WPF中调用Winform控件

最近在项目中用到了人脸识别和指纹识别,需要调用外部设备和接口,这里就用到了在WPF中调用Winform控件. 第一步,添加程序集引用.System.Windows.Forms和WindowsFormsIntegration 第二步,添加对Winform控件的引用(选中部分) 第三步,添加控件(包在WindowsFormsHost中)

[Winform-WebBrowser]-在html页面中js调用winForm类方法

在winform项目中嵌入了网页,想通过html页面调用后台方法,如何实现呢?其实很简单,主要有三部: 1.在被调用方法类上加上[ComVisible(true)]标签,意思就是当前类可以com组件的形式供外包调用 2.在webBrowser控件中设置可被html页面调用的类即:webBrowser1.ObjectForScripting = this;前端即可通过window.external访问this对象 3.html页面调用后台方法:window.external.方法名(); 此处的w

在C#中用COM操作CAD

一.介绍 AutoCAD的二次开发形式非常多, 有Autolisp,ObjectARX,VBA等,在本章我给大家介绍的是不太常用的COM方式操作CAD. 使用COM的方式有前期绑定和后期绑定2种. 二.示例代码 1.前期绑定 1 namespace ConsoleApplication2 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 Autodesk.AutoCAD.Interop.AcadApplication

在线转换网页版操作,CAD转换JPG格式

在线转换网页版操作,CAD转换JPG格式.在日常的CAD相关工作中,为了更好地绘图工作,总是会需要转换CAD图纸的格式.CAD转JPG是最常见的转换操作之一.有时候工作繁忙,使用CAD转换软件来转换可能非常麻烦.其实CAD转JPG可以在线转换,不使用任何CAD转换器也能完成.今天小编就给大家演示一下具体的转换方法.演示步骤如下: 步骤一:在浏览器里搜索迅捷CAD一词,找到网址进入官网界面. 步骤二:在迅捷CAD官网界面,移动光标到在线转换标签上,会看到下拉菜单显示的各种CAD转换按钮,我们点击C

dubbo中registry、route、directory、cluster、loadbalance、route的关系以及一个引用操作和调用操作到底干了啥

zk是比较典型场景,所以注册中心都是以zk作为例子的 1 对于registry,提供者没有这个,消费者才有.为什么? 因为只有消费者才需要去注册中心拿到provide的信息,而provider是不需要关注的,provider只需要去注册就好.在RegistryProtocol的export方法中,可以看到在registry方法里面直接在注册中心写信息就够了. 2 RegistryDirectory是啥意思?如果有三个zk,有几个directory?几个registry?一个目录其实就是很容易想到

JSP数据库操作和调用自己写的java类

作为新手在这卡了很久,其实是个小问题 调用数据库没有直接用jsp直接调用数据,因为不知道为什么那个drive总是配置不好 而是打算用java访问数据库,再让jsp调用Java的接口 java代码: java必须有个自己的包,不能用默认的包名 package test; import java.sql.*; public class Mysql { public Mysql(){ String driver = "com.mysql.jdbc.Driver"; // URL指向要访问的数

C# WeifenLuo.WinFormsUI.Docking.dll 应用之问题集 反射动态调用winform窗体

反射通过命名空间.窗体名称,调用窗体 public void OpenChildForm(string formName) { Type t = Type.GetType(formName); Assembly asm = Assembly.GetExecutingAssembly(); DockContent frm = asm.CreateInstance(formName) as DockContent; if (frm != null) { frm.Show(this.dockPanel