Маленькая заметка для всех программистов, использующих в своих проектах WPF. Наверняка многие из вас задавались вопросом «как увеличить время отображения подсказок?» или «как сделать так, чтобы подсказка выскочила сразу при наведении мышки на элемент?»
Как оказалось, в WPF есть целая служба, которая предоставляет свойства и события для управления отображением и поведением подсказок – ToolTipService. Единственная проблема использования этого сервиса заключается в том, что IntelliSense не показывает нам наличие этого сервиса, и поэтому многие о нём просто не знают!
Самые полезные (лично для меня) свойства, которые предоставляет сервис:
- InitialShowDelay - получает или задает интервал времени до открытия подсказки.
- ShowDuration - получает или задает количество времени отображения подсказки.
- ShowOnDisabled - получает или задает значение, указывающее, отображается ли всплывающая подсказка для объекта, который не активен.
Со всеми остальными свойствами и примером использования Вы можете ознакомиться в справке на MSDN. Берите себе на заметку!
Листая блог Джереми Таммика наткнулся на статью FilterRule Use and Retrieving Exterior Walls одной из тем которой была тема поиска наружных стен. Там приводится несколько вариантов решения. При этом есть важное условие – наружные стены обязательно должны образовывать замкнутый контур. И даже при этом предложенные варианты могут не дать нужного варианта.
В нескольких моих плагинах решалась похожая задача и был придуман алгоритм поиска наружных стен. Скорее всего и мой алгоритм не идеален, но при тестировании показал высокие результаты. В самой статье я не буду выкладывать частей кода – в конце статьи вы найдете ссылку на репозиторий GitHub.
Итак, мой алгоритм состоит из двух частей:
Подробнее: Revit: Алгоритм поиска наружных стен
Будет такая небольшая рубрика - Вы могли не знать как это работает. Буду в этой рубрике писать о случаях, когда какое-то свойство или метод оказались не тем, что я предполагал. Записей возможно будет немного
Сегодня в этой рубрике рассмотрим свойство Origin у типа PlanarFace. Сама PlanarFace - это грань тела или оболочки, ограниченная контуром. У PlanarFace есть контуры, которые мы можем получить из свойства EdgeLoops родительского класса Face. Т.е. зрительно мы себе можем представить как выглядит PlanarFace - некоторая ограниченная плоскость, расположенная в пространстве.
А вот самое интересное - у PlanarFace есть свойство Origin - т.е. начало плоскости - которое НЕ ОБЯЗАТЕЛЬНО НАХОДИТСЯ ВНУТРИ КОНТУРА ПЛОСКОСТИ! Графически такой случай будет выглядеть примерно так:

Так что прежде чем использовать свойство Origin в своих целях, учтите, что эта точка может лежать достаточно далеко от самой PlanarFace!
Стояла передо мной задача - проставить марки для 2D-семейств, представляющих собой арматурный каркас. Основная загвоздка при этом - нужно создать несколько марок, которые будут расположены в одной точке. По картинке, думаю, понятнее:

Подробнее: Создание марок и что нужно помнить при создании семейства