明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2693|回复: 5

请大侠帮忙winform程序如何调用dll 谢谢

[复制链接]
发表于 2011-10-13 15:13:14 | 显示全部楼层 |阅读模式
我想实现在winform点一个按钮,在AutoCAD中就画出图形的功能。
一个简单的类,我在winf里面调用就是报错
Class1 c1=new Class1() ;
            c1.Welcome();
提示未能加载文件或程序集“acmgd, Version=17.1.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。系统找不到指定的文件。

类具体如下:
public class Class1 //: IExtensionApplication
    {
        public void Initialize()
        {
            
            Welcome();
        }
        [CommandMethod("LoadCad")]
        public void LoadCad()
        {
            System.Diagnostics.Process p = new System.Diagnostics.Process();
            p.StartInfo.FileName = "C:\\Program Files\\AutoCAD 2008\\acad.exe";//需要启动的程序名      
            p.StartInfo.Arguments = "/nologo /b start.scr";//启动参数      
            p.Start();//启动      
            //ExtensionLoader.Load("CAGAcad.dll");
            
        }
        
        public void Terminate()
        {
            Debug.WriteLine("程序结束,你可以在里做一些程序的清理工作,如关闭AutoCAD文档");
        }

        [CommandMethod("Welcome")]
        public void Welcome()
        {
            //ExtensionLoader.Load("");
            Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
            ed.WriteMessage("CAG绘图功能加载!");
            
        
        }
        [CommandMethod("FirstLine")]
        public void FirstLine()
        {
            Database db = HostApplicationServices.WorkingDatabase;
            Point3d pt1 = new Point3d(0, 0, 0);
            Point3d pt2 = new Point3d(0, 500, 0);
            Line lineEnt = new Line(pt1, pt2);
            using (Transaction ta = db.TransactionManager.StartTransaction())
            {
                BlockTable bt = (BlockTable)ta.GetObject(db.BlockTableId, OpenMode.ForRead);
                BlockTableRecord btr = (BlockTableRecord)ta.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
                btr.AppendEntity(lineEnt);
                ta.AddNewlyCreatedDBObject(lineEnt, true);
                ta.Commit();
            }
        }

    }
发表于 2011-10-13 15:52:40 | 显示全部楼层
1,建议先把C#再学一下
2,你没有引用acmgd.dll
3, public class Class1 //: IExtensionApplication 你把关键的东西注析掉了
 楼主| 发表于 2011-10-13 16:28:12 | 显示全部楼层
本帖最后由 DB思 于 2011-10-13 16:29 编辑

acmgd.dll
已经引用进来了,如果那个不注释掉的话,报另外一个错误
提示 Application.Run(new Form1());  找不到模块
发表于 2011-10-13 16:37:00 | 显示全部楼层
1,建议先把C#再学一下
2,Application.Run(new Form1()); 你的工程里面没有Form1,自然找不到这个模块
3,编译输出的应该是dll,而不是exe
 楼主| 发表于 2011-10-14 08:13:52 | 显示全部楼层
sieben 发表于 2011-10-13 16:37
1,建议先把C#再学一下
2,Application.Run(new Form1()); 你的工程里面没有Form1,自然找不到这个模块
3,编 ...

有form1啊!!
发表于 2012-5-29 20:30:11 | 显示全部楼层
我也遇到这样的问题,楼主解决了没有?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 17:21 , Processed in 0.186063 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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