When using the Apartment Typology plugin, a number of parameters containing the results of the plugin are created in the project.
In order to display the areas obtained with the "Apartment Typology" plugin using ModPlus parameters in the marker, you should perform the following actions:
- In the plugin window on the Parameters tab, open the list of ModPlus parameters in Notepad
- These parameters can be added to an existing shared parameter file (SPF) or a new SPF can be created with ModPlus parameters only
- Next, open the brand family and for each brand replace the existing parameters with the corresponding ModPlus parameters.
- Load the brand family into the project
Let's consider the above steps on the example of editing ADSK_Марка_Помещение_Квартира.
Как оказалось, в Revit API нет методов, позволяющих разделить кривую Curve на части заданной длины. Именно такая задача недавно у меня при разработке плагина. В AutoCAD API есть хороший метод GetPointAtDist, который позволяет решить данную задачу, но в Revit API пришлось решать её самому.
В моем случае мне нужно было получить точки деления кривой на части заданной длины. Для решения задачи нам понадобятся параметры кривой. Получаем начальный и конечный параметр и через интерполяцию находим шаг параметризации, равнозначный длине части. Далее просто делаем цикл, прибавляя шаг параметризации, до тех пор, пока сумма шагов не достигнет конечного параметра. Если шаг по длине не делит кривую на равнозначные части (в конце остается участок меньшей длины, чем заданная длина части), берем ещё конечную точку. Если заданная длина части вдруг оказалась меньше длины кривой, берем конечные точки:
/// <summary>
/// Возвращает точки деления кривой на части указанной длины
/// </summary>
/// <param name="curve">Кривая</param>
/// <param name="step">Шаг деления</param>
public static IEnumerable<XYZ> Divide(this Curve curve, double step)
{
if (curve.Length > step)
{
var startParameter = curve.GetEndParameter(0);
var endParameter = curve.GetEndParameter(1);
var parameterStep = (endParameter - startParameter) / (curve.Length / step);
var parameterSum = startParameter;
do
{
yield return curve.Evaluate(parameterSum, false);
parameterSum += parameterStep;
}
while (parameterSum < endParameter);
if (Math.Abs(parameterSum - endParameter) > 0.0001)
yield return curve.GetEndPoint(1);
}
else
{
yield return curve.GetEndPoint(0);
yield return curve.GetEndPoint(1);
}
}
Данную идею можно реализовать и для других схожих задач: взять точку на определенном расстоянии, поделить кривою на заданное количество частей и т.д. Главное, что нужно понять из данной записи – все подобные задачи необходимо решать через параметры кривой.
При использовании плагина Квартирография в проекте создается ряд параметров, содержащих результаты работы плагина.
Для того чтобы в марке помещения отображались площади, полученные с помощью плагина Квартирография c использованием параметров ModPlus, необходимо выполнить следующие действия:
- В окне плагина на вкладке Параметры открыть список параметров ModPlus в блокноте
- Данные параметры можно добавить в существующий файл общих параметров (ФОП), либо создать новый ФОП только с параметрами ModPlus
- Далее необходимо открыть семейство марки помещения и для каждой метки заменить существующие параметры на соответствующие параметры ModPlus
- Загрузить семейство марки в проект
Рассмотрим вышеперечисленные шаги на примере редактирования марки ADSK_Марка_Помещение_Квартира.
Иногда некоторые пользователи могут столкнуться с неприятной проблемой – основное меню AutoCAD зависает при открытии. Точнее – оно очень долго открывается.
Как в случае с AutoCAD, так и в случае с Revit вы можете столкнуться с проблемой зависания главного меню при открытии.
Методы, описанные в данной статье, эволюционариовали в более лучшее и удобное решение, в дальнейшем описанное на Хабре
В моём плагине ModPlus все функции (плагины) имеют свою версию сборки под каждую версию поддерживаемого продукта. Т.е. для AutoCAD, на момент написания статьи, это 7 проектов на каждую функцию. Конечно, копипастить одно и тоже во всех проектах муторно и долго. Благо, есть несколько лайфкахов как свести все проблемы к минимуму и работать только с одним проектом. И сегодня я хотел бы рассказать о том, как менять версию сборки сразу во всех проектах. Как ни странно, но для многих новичков это может оказаться неизвестной фичей. Да что таить – я сам недавно только начал использовать этот метод =)