zoukankan      html  css  js  c++  java
  • Civil 3D 中使用COM API导入DEM数据创建曲面

    Civil 3D提供的基于.net的API和基于COM的API,现在推荐大家使用.net API,但有时也需要使用COM API。 这个例子演示如何使用COM API来导入DEM数据生成Civil 3D曲面。 Civil 3D开发中使用COM API需要添加的引用比较啰嗦,建议使用向导创建项目简化操作,向导能帮助你添加大部分引用,如果还缺什么,自己再添加就简单多了。注意使用COM API,需要勾选AutoCAD 和Civil 3D的interOp相关引用。

    imageimage

    下面是使用COM API导入DEM数据的代码:

    // (C) Copyright 2013 by Autodesk 
    //

    using System;
    using Autodesk.AutoCAD.Runtime;
    using Autodesk.AutoCAD.ApplicationServices;
    using Autodesk.AutoCAD.DatabaseServices;
    using Autodesk.AutoCAD.Geometry;
    using Autodesk.AutoCAD.EditorInput;
    using System.Windows.Forms;
    using Autodesk.AECC.Interop.UiLand;
    using Autodesk.AutoCAD.Interop;
    using
    Autodesk.Civil.ApplicationServices;


    // This line is not mandatory, but improves loading performances
    [assembly: CommandClass(typeof(LoadDEM_demo.MyCommands
    ))]

    namespace
    LoadDEM_demo
    {


       
    public class MyCommands
        {
     


           
    // COM objects:
            private Autodesk.AutoCAD.Interop.IAcadApplication m_oAcadApp = null
    ;
           
    private Autodesk.AECC.Interop.UiLand.IAeccApplication m_oAeccApp = null
    ;
           
    private Autodesk.AECC.Interop.UiLand.IAeccDocument m_oAeccDoc = null
    ;
           
    private Autodesk.AECC.Interop.Land.IAeccDatabase m_oAeccDb = null
    ;
           
    string m_sAcadProdID = "AutoCAD.Application"
    ;
           
    string m_sAeccAppProgId = "AeccXUiLand.AeccApplication.10.0"; //Civil 3D 2013
            //string m_sAeccAppProgId = "AeccXUiLand.AeccApplication.9.0"; //Civil 3D 2012
            private string m_sMessage = ""
    ;


            [
    CommandMethod("LoadDemSurfaceop"
    )]
           
    public void
    LoadDemSurface()
            {

               
    try
                {
                   
    OpenFileDialog ofd = new OpenFileDialog
    ();
                    ofd.Filter =
    "USGS DEM( *.DEM) |*.dem|GEOTIFF(*.tif)|*.tif|ESRI ASCII 栅格(*.asc)|*.asc|ESRI ASCII 栅格(*.txt)|*.txt|ESRI 二进制栅格(*.adf)|*.adf"
    ;
                    ofd.FilterIndex = 0;
                   
    if (ofd.ShowDialog() == DialogResult
    .OK)
                    {
                       
    //use COM
                        m_oAcadApp = (IAcadApplication)System.Runtime.InteropServices.Marshal
    .GetActiveObject(m_sAcadProdID);
                       
    if (m_oAcadApp != null
    )
                        {
                            m_oAeccApp = (
    IAeccApplication
    )m_oAcadApp.GetInterfaceObject(m_sAeccAppProgId);
                            m_oAeccDoc = (
    IAeccDocument
    )m_oAeccApp.ActiveDocument;

                            m_oAeccDoc.Surfaces.ImportDEM(ofd.FileName);
                        }

                        m_oAeccDoc.Regen(Autodesk.AutoCAD.Interop.Common.
    AcRegenType
    .acActiveViewport);


                    }
                   
    else
                    {

                    }
                }
               
    catch (System.Exception
    e)
                {
                   
    MessageBox
    .Show(e.Message);
                }
               
    finally
                {

                }
            }
          
      


        }

    }

  • 相关阅读:
    Linux C编程之十二 信号
    折腾vue--vue自定义组件(三)
    折腾vue--使用vscode创建vue项目(二)
    折腾vue--环境搭建(一)
    .net生成PDF文件的几种方式
    星星评分-依赖jquery
    组织机构树
    Newtonsoft--自定义格式化日期
    .net mvc 自定义错误页面
    js模拟form提交 导出数据
  • 原文地址:https://www.cnblogs.com/junqilian/p/2881124.html
Copyright © 2011-2022 走看看