ADN Open CIS
Сообщество программистов Autodesk в СНГ

26/04/2014

Новости Revit API 2015 - Материалы DevDays

Список материалов, представленных на дне разработчика Revit 2015 в декабре 2013 года (на англ.):

Текстовая презентация (23 Мб)

Видео презентация с содержанием (354 Мб)

Комментарии к презентации (198 Кб)

Примеры кода с моделями (45 Мб)

Примеры кода без моделей (1,5 Мб)

 

Концепция дизайна пользовательского интерфейса для Revit

На форуме Autodesk пользователь Ryan предложил очень интересную идею дизайна пользовательского интерфейса.

Ryan предлагает разработать еще один вариант пользовательского интерфейса, на подобие того как это происходит в Fusion 360 или Inventor: по щелчку правой кнопкой мыши отображать штурвал с некоторыми предопределенными командами.

В этом случае интерфейс Revit мог бы выглядеть, например, вот так:

 

Команды, располагающиеся на штурвале:

 

Настройки команд:

 

Пользователь Brett представил 20-ти секундное видео концепции. Реализация основана на PostCommand API.

С его собственных слов:

Надеюсь, вы не возражаете, но я взял вашу идею и попробовал ее реализовать.

Первым делам я создал форму штурвала с командами. Она содержит пбуличное свойство, представляющее собой команду для выполнения:

Код - VB.NET: [Выделить]
  1.   Public CommandToIssue As RevitCommandId

Затем я создал на форме прозрачные контейнеры для изображения (PictureBox) с различными иконками. Кликнув на иконке, вызывается соответствующая команда и форма закрывается:

Код - VB.NET: [Выделить]
  1.   Private Sub PictureBox2_Click( _
  2.     ByVal sender As Object, _
  3.     ByVal e As EventArgs) _
  4.   Handles PictureBox2.Click
  5.     CommandToIssue _
  6.       = RevitCommandId.LookupPostableCommandId( _
  7.         PostableCommand.StructuralColumn)
  8.     Close()
  9.   End Sub

На событие отображения формы я добавил код, чтобы расположить форму в том месте, где находится курсор мыши:

Код - VB.NET: [Выделить]
  1.   Private Sub WheelForm_Shown( _
  2.     ByVal sender As Object, _
  3.     ByVal e As EventArgs) _
  4.   Handles Me.Shown
  5.     Location = New System.Drawing.Point( _
  6.       CInt(MousePosition.X - (Me.Width / 2)), _
  7.       CInt(MousePosition.Y - (Me.Width / 2)))
  8.   End Sub

Ну, и наконец команда, для отображения формы со штурвалом:

Код - VB.NET: [Выделить]
  1. Option Strict On
  2. Option Explicit On
  3.  
  4. Imports Autodesk.Revit.Attributes
  5. Imports Autodesk.Revit.UI
  6.  
  7. Imports BrevitTools.UI.Wheel
  8.  
  9. <Transaction(TransactionMode.Manual)> _
  10. Public Class Wheel
  11.   Implements IExternalCommand
  12.  
  13.   Public Function Execute( _
  14.     ByVal cmdData As ExternalCommandData, _
  15.     ByRef message As String, _
  16.     ByVal elements As Autodesk.Revit.DB.ElementSet) _
  17.   As Result Implements IExternalCommand.Execute
  18.  
  19.     Dim form As New WheelForm
  20.     form.ShowDialog()
  21.  
  22.     If form.CommandToIssue IsNot Nothing Then
  23.       cmdData.Application.PostCommand(
  24.         form.CommandToIssue)
  25.     End If
  26.  
  27.     Return Result.Succeeded
  28.  
  29.   End Function
  30.  
  31. End Class

Для отобржаения формы я назначил «горячую клавишу» (ww).

Думаю, у этой идеи неплохой потенциал.

Большое спасибо Ryan за идею и Brett за реализацию идеи.

Источник: http://thebuildingcoder.typepad.com/blog/2014/04/revit-2015-api-news-devdays-online-recording.html

Обсуждение: http://adn-cis.org/forum/index.php?topic=702

Опубликовано 26.04.2014
Отредактировано 27.04.2014 в 21:08:06