Перейти к содержимому

Как в случае с AutoCAD, так и в случае с Revit вы можете столкнуться с проблемой зависания главного меню при открытии.

Иногда некоторые пользователи могут столкнуться с неприятной проблемой – основное меню AutoCAD зависает при открытии. Точнее – оно очень долго открывается.

При разработке плагинов для Revit сталкиваюсь с различными неожиданными результатами, которые больше похожи на обычные баги. О таких багах желательно знать заранее.

Сегодня расскажу о ориентации витража.

При разработке плагина, работающего с штриховками, столкнулся с интересной ситуацией - в Revit API нет методов определения типа штриховки. Речь идет не о типе "Условный" или "Моделирующий", а о типе "Основная" или "Пользовательская". Исследовав несколько различных штриховок я создал метод определения типа штриховки.

Возможно многие разработчики приложений сталкивались с проблемой неверного отображения содержимого Dockable Panel в случае, если в параметрах дисплея установлен масштаб, отличный от 100%. В этой статье я покажу пример решения этой проблемы.

Методы, описанные в данной статье, эволюционариовали в более лучшее и удобное решение, в дальнейшем описанное на Хабре

В моём плагине ModPlus все функции (плагины) имеют свою версию сборки под каждую версию поддерживаемого продукта. Т.е. для AutoCAD, на момент написания статьи, это 7 проектов на каждую функцию. Конечно, копипастить одно и тоже во всех проектах муторно и долго. Благо, есть несколько лайфкахов как свести все проблемы к минимуму и работать только с одним проектом. И сегодня я хотел бы рассказать о том, как менять версию сборки сразу во всех проектах. Как ни странно, но для многих новичков это может оказаться неизвестной фичей. Да что таить – я сам недавно только начал использовать этот метод =)

Являясь разработчиком уже достаточно объемного продукта и задумывая об официальности (т.е. о регистрации ИП или ООО и всём сопутствующем) я начал задумываться над тем, что одному такое очень тяжело тянуть. И есть в таком случае два варианта – наём постоянных сотрудников или наём фрилансеров. А так как я сам являюсь постоянным сотрудником и имею небольшой опыт обращения к фрилансерам, я сделал вывод – фриланс в этом случае – в случае начинающей небольшой фирмы - лучше! По крайней мере плюсы перевешивают минусы (не по количеству, а по весомости своей).

Вот какие плюсы и минусы я выделил:

Маленькая заметка для всех программистов, использующих в своих проектах WPF. Наверняка многие из вас задавались вопросом «как увеличить время отображения подсказок?» или «как сделать так, чтобы подсказка выскочила сразу при наведении мышки на элемент?»

Как оказалось, в WPF есть целая служба, которая предоставляет свойства и события для управления отображением и поведением подсказок – ToolTipService. Единственная проблема использования этого сервиса заключается в том, что IntelliSense не показывает нам наличие этого сервиса, и поэтому многие о нём просто не знают!

Самые полезные (лично для меня) свойства, которые предоставляет сервис:

  • InitialShowDelay - получает или задает интервал времени до открытия подсказки.
  • ShowDuration - получает или задает количество времени отображения подсказки.
  • ShowOnDisabled - получает или задает значение, указывающее, отображается ли всплывающая подсказка для объекта, который не активен.

Со всеми остальными свойствами и примером использования Вы можете ознакомиться в справке на MSDN. Берите себе на заметку!

Листая блог Джереми Таммика наткнулся на статью FilterRule Use and Retrieving Exterior Walls одной из тем которой была тема поиска наружных стен. Там приводится несколько вариантов решения. При этом есть важное условие – наружные стены обязательно должны образовывать замкнутый контур. И даже при этом предложенные варианты могут не дать нужного варианта.

В нескольких моих плагинах решалась похожая задача и был придуман алгоритм поиска наружных стен. Скорее всего и мой алгоритм не идеален, но при тестировании показал высокие результаты. В самой статье я не буду выкладывать частей кода – в конце статьи вы найдете ссылку на репозиторий GitHub.

Итак, мой алгоритм состоит из двух частей:

Будет такая небольшая рубрика - Вы могли не знать как это работает. Буду в этой рубрике писать о случаях, когда какое-то свойство или метод оказались не тем, что я предполагал. Записей возможно будет немного

Сегодня в этой рубрике рассмотрим свойство Origin у типа PlanarFace. Сама PlanarFace - это грань тела или оболочки, ограниченная контуром. У PlanarFace есть контуры, которые мы можем получить из свойства EdgeLoops родительского класса Face. Т.е. зрительно мы себе можем представить как выглядит PlanarFace - некоторая ограниченная плоскость, расположенная в пространстве.

А вот самое интересное - у PlanarFace есть свойство Origin - т.е. начало плоскости - которое НЕ ОБЯЗАТЕЛЬНО НАХОДИТСЯ ВНУТРИ КОНТУРА ПЛОСКОСТИ! Графически такой случай будет выглядеть примерно так:

Так что прежде чем использовать свойство Origin в своих целях, учтите, что эта точка может лежать достаточно далеко от самой PlanarFace!