Диалоговое окно плагина AutoCAD «Создание макета и логики»

Совершенно новый для разработки плагинов AutoCAD. Я пытаюсь создать плагин, который загружается в AutoCAD как пункт главного меню целиком (назовем это меню меню «Fizzbuzz», и когда пользователь выбирает один из пунктов меню (скажем, Fizzbuzz >> Foobar), мне нужен простой диалог /window для отображения на экране в верхнем левом углу AutoCAD.

Я пытаюсь выяснить, куда должна идти логика презентации/макета для этого диалогового/всплывающего окна (в каком файле он находится и как его создать/отредактировать?), и, что не менее важно: где управляемый событиями Логика графического интерфейса должна уйти (опять же: какой файл я редактирую и на каком языке?). Под «логикой графического интерфейса пользователя» я имею в виду: скажем, в моем диалоговом окне есть флажок или кнопка... когда пользователь щелкает или взаимодействует с этими компонентами пользовательского интерфейса, мне нужна пользовательская логика для выполнения.

Есть идеи, какие файлы содержат логику этого типа представления/графического интерфейса для новых подключаемых модулей AutoCAD и как их создавать/редактировать? Заранее спасибо!


person smeeb    schedule 08.12.2017    source источник
comment
Посмотрите в WPF MVVM. Палитры AutoCAD — это простой способ получить немодальный пользовательский интерфейс, как и лента — если вы ее не ненавидите. Прочтите тему вики для получения дополнительных ресурсов.   -  person CAD bloke    schedule 11.12.2017


Ответы (1)


Я добавил палитру с элементом управления winform следующим образом:

using System.Windows.Forms;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.Windows;

namespace AMU.AutoCAD.BlockTool
{
  public class MyPalette : IExtensionApplication
  {

  private PaletteSet palette;
  private Control paletteControl;

  public void Initialize()
  {
    //This is called when AutoCAD loads your assembly
    this.palette = new PaletteSet("Name")
    {
      TitleBarLocation = PaletteSetTitleBarLocation.Left,
      Style = PaletteSetStyles.Snappable //Your Styles
    };
    this.paletteControl = new Control(); //Instance of your Control that will be visible in AutoCAD
    this.palette.Add("HEADER", this.paletteControl);
    this.palette.Visible = true;

  }

  public void Terminate()
  {
    //cleanup
    this.palette.Dispose();
    this.paletteControl.Dispose();
  }
}
}

Предоставляя класс, реализующий IExtensionApplication, вы можете выполнять пользовательский код при загрузке dll без явного вызова метода. Теперь вы можете создать так называемый PaletteSet и добавить к нему Winform или WPF Control.

person feal    schedule 31.12.2017