博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Map 3D开发实战系列] Map Resource Explorer 之三-- 添加AutoCAD风格的Palette界面
阅读量:6826 次
发布时间:2019-06-26

本文共 3141 字,大约阅读时间需要 10 分钟。

目录

 

在前面的文章中介绍了如何在Visual Studio中建立项目开发Map 3D的应用程序,并且编写了一个非常简单的命令行命令。在Map 3D中通过netload命令加载我们的自定义程序集后,输入自定义命令即可调用相关的自定义函数还实现我们的功能。通过这种形式,我们可以写很多自定义命令来开发更多的自定义的功能来扩展Map 3D。但实际项目过程中,不光会用的自定义的命令,还经常会有界面,比如还可能会有一个对话框等等可视化的元素。这一节主要讲一下如果在AutoCAD Map 3D开发中来添加用户界面。

 

前文我们说过,Map 3D是基于AutoCAD基础之上的产品,AutoCAD.NET API提供的丰富的API来创建与AutoCAD风格一致的界面。在Map 3D中创建界面,主要是应用AutoCAD.NET API来完成。.Net framework 3.0的发布,让WPF技术也如火如荼的发展起来。AutoCAD 的Ribbon界面也是采用的WPF技术。为了使得我们的程序界面也和AutoCAD界面风格一致,我们也采用WPF技术来做界面。

 

在AutoCAD中添加一个WPF的Palette其实还是挺简单的。首先在我们的工程中添加一个基于WPF的用户控件。

你可以在这个WPF用户控件中来使用XAML来定义你的界面,也可以用Microsoft Blend等工具来设计你的用户界面,这不是我们讨论的重点,如果你对WPF界面设计感兴趣,可以参考MSDN或者其他资料。现在我们关心的是有了这样的WPF界面之后,如何在AutoCAD 中调用。

 

在AutoCAD中,我们可以利用AutoCAD.NET API来创建一个Palette,并把这个WPF用户控件加入到Palette中。请看下面的代码:

 

 

// (C) Copyright 2002-2009 by Autodesk, Inc. //// Permission to use, copy, modify, and distribute this software in// object code form for any purpose and without fee is hereby granted, // provided that the above copyright notice appears in all copies and // that both that copyright notice and the limited warranty and// restricted rights notice below appear in all supporting // documentation.//// AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS. // AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF// MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC. // DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE// UNINTERRUPTED OR ERROR FREE.//// Use, duplication, or disclosure by the U.S. Government is subject to // restrictions set forth in FAR 52.227-19 (Commercial Computer// Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)// (Rights in Technical Data and Computer Software), as applicable.//using System;using Autodesk.AutoCAD.Runtime;using Autodesk.AutoCAD.ApplicationServices;using Autodesk.AutoCAD.DatabaseServices;using Autodesk.AutoCAD.Geometry;using Autodesk.AutoCAD.EditorInput;using Autodesk.AutoCAD.Windows;namespace MyPaletteWebcast{  public class MyPlugin : IExtensionApplication  {    public void Initialize()    {      // Initialize your plug-in application here    }    public void Terminate()    {      // Do plug-in application clean up here    }    // create a reference to the modeless paletteset window    static PaletteSet ps = null;    static UserControl1 myUserControl = null;    // Define Command "MyCommand"    [CommandMethod("MyCommand")]    static public void MyCommand() // This method can have any name    {      // check to see if the ps is created      if (ps == null)      {        // create an instance of the ps        ps = new PaletteSet("MyCommand");        myUserControl = new UserControl1();        ps.AddVisual("MyPalette", myUserControl);      }      // show the paletteset      ps.Visible = true;    }  }}
 
启动AutoCAD,Map 3D或者Civil 3D,通过netload命令加载自定义程序集,然后输入自定义命令MyCommand即可调出AutoCAD 风格的自定义的Palette。

 

通过这样简单的代码,我们就可以定义一个自定义命令MyCommand,在这个命令执行时,创建一个Palette加载WPF用户控件,并显示出来。是不是很简单?你也可以试试看。

 

好了,今天先到这里,以后我们将继续记录Map 3D开发实战的进展情况。

 

Cheers,

Daniel

作者:
邮箱:junqilian@163.com 
出处:  
转载请保留此信息。
本文转自峻祁连. Moving to Cloud/Mobile博客园博客,原文链接:http://www.cnblogs.com/junqilian/archive/2011/01/30/1948012.html
,如需转载请自行联系原作者
你可能感兴趣的文章
JavaScript函数_函数作用域
查看>>
深度解析大快DKadoop大数据运维管理平台功能
查看>>
2019年深圳招揽VC/PE:新落户一次性最高奖励1500万 ...
查看>>
1月8日云栖精选夜读 | 克拉克拉:基于阿里云PAI实现渠道ROI投放预测系统 ...
查看>>
RTMP/RTSP直播播放器选择
查看>>
基于Spark的机器学习实践 (七) - 回归算法
查看>>
让你提高效率的 Linux 技巧
查看>>
企业级 SpringBoot 教程 (一)构建第一个SpringBoot工程
查看>>
阿里云有奖调查结果公布,赠送10个阿里巴巴logo胸针
查看>>
Golang学习笔记之WEB框架(gin)基本使用
查看>>
SAP人工智能服务Recast.AI的一个简单例子
查看>>
云栖科技评论90期:有两种“前沿科技”
查看>>
From 192.168.25.133 icmp_seq=238 Destination Host Unreachable 虚拟机ping主机不通
查看>>
上交所回应“科创板受理企业科技含量不高”:会在审核问询环节对企业进行多轮问询...
查看>>
教你如何用python操作数据库mysql ! !
查看>>
全栈必备 Log日志
查看>>
阿里云服务器企业该如何选择
查看>>
Nginx性能优化
查看>>
SQL与NoSQL数据库入门基础知识详解
查看>>
Redis命令——键(key)
查看>>