明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2453|回复: 3

COM用CreateObject能够自动创建一个dwg文件并打开Autocad环境,那么ObjectArx.Net用

[复制链接]
发表于 2009-11-6 18:25:00 | 显示全部楼层 |阅读模式
COM用CreateObject能够自动创建一个dwg文件并打开AutoCAD环境,那么ObjectArx.Net用什么方法实现同样的功能[br]COM用CreateObject能够自动创建一个dwg文件并打开Autocad环境,那么ObjectArx.Net用什么方法实现同样的功能
发表于 2009-11-8 15:32:00 | 显示全部楼层
<pre class="codeLine">[CommandMethod("ConnectToAcad")]</pre><pre class="codeLine">public static void ConnectToAcad()</pre><pre class="codeLine">{</pre><pre class="codeLine">
        </pre><pre class="codeLine">  AcadApplication acAppComObj = null;</pre><pre class="codeLine">  const string strProgId = "AutoCAD.Application.18";</pre><pre class="codeLine">
        </pre><pre class="codeLine">  // Get a running instance of AutoCAD</pre><pre class="codeLine">  try</pre><pre class="codeLine">  {</pre><pre class="codeLine">      acAppComObj = (AcadApplication)Marshal.GetActiveObject(strProgId);</pre><pre class="codeLine">  }</pre><pre class="codeLine">  catch // An error occurs if no instance is running</pre><pre class="codeLine">  {</pre><pre class="codeLine">      try</pre><pre class="codeLine">      {</pre><pre class="codeLine">          // Create a new instance of AutoCAD</pre><pre class="codeLine">          acAppComObj = (AcadApplication)Activator.CreateInstance(Type.GetTypeFromProgID(strProgId), true);</pre><pre class="codeLine">      }</pre><pre class="codeLine">      catch</pre><pre class="codeLine">      {</pre><pre class="codeLine">          // If an instance of AutoCAD is not created then message and exit</pre><pre class="codeLine">          System.Windows.Forms.MessageBox.Show("Instance of 'AutoCAD.Application'" +</pre><pre class="codeLine">                                               " could not be created.");</pre><pre class="codeLine">
        </pre><pre class="codeLine">          return;</pre><pre class="codeLine">      }</pre><pre class="codeLine">  }</pre><pre class="codeLine">
        </pre><pre class="codeLine">  // Display the application and return the name and version</pre><pre class="codeLine">  acAppComObj.Visible = true;</pre><pre class="codeLine">  System.Windows.Forms.MessageBox.Show("Now running " + acAppComObj.Name + </pre><pre class="codeLine">                                       " version " + acAppComObj.Version);</pre><pre class="codeLine">
        </pre><pre class="codeLine">  // Get the active document</pre><pre class="codeLine">  AcadDocument acDocComObj;</pre><pre class="codeLine">  acDocComObj = acAppComObj.ActiveDocument;</pre><pre class="codeLine">
        </pre><pre class="codeLine">  // Optionally, load your assembly and start your command or if your assembly</pre><pre class="codeLine">  // is demandloaded, simply start the command of your in-process assembly.</pre><pre class="codeLine">  acDocComObj.SendCommand("(command " + (char)34 + "NETLOAD" + (char)34 + " " +</pre><pre class="codeLine">                          (char)34 + "c:/myapps/mycommands.dll" + (char)34 + ") ");</pre><pre class="codeLine">
        </pre><pre class="codeLine">  acDocComObj.SendCommand("MyCommand ");</pre><pre class="codeLine">}</pre>
 楼主| 发表于 2009-11-8 19:45:00 | 显示全部楼层
lin0799发表于2009-11-8 15:32:00public static void ConnectToAcad(){   AcadApplication acAppComObj = null;  const string strProgId = \"AutoCAD.Application.18\";   // Get a

先生的这种方法必须是在autocad环境打开的情况下才能在命令行发"ConnectToAcad"命令,此时的autocad环境已经打开了,发这个命令是否多余啊

发表于 2009-11-9 11:04:00 | 显示全部楼层

NetApi只能在Cad环境内

不过,你可以用scr实现类似的功能

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 20:47 , Processed in 0.154005 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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