Главная › Форум › Средства разработки Топоматик Robur › Операции над моделями проекта
- В этой теме 0 ответов, 1 участник, последнее обновление 1 год, 2 месяца назад сделано Авдейчук Борис.
-
АвторСообщения
-
19.09.2023 в 11:10 #6371Авдейчук БорисУчастник
Здравствуйте!
В продолжении темы «Добавление новой модели в проект». Хотел бы собрать и поделиться наработками (собрать в одном месте ответы разработчиков)1) Добавление новой модели в проект:
public class Module : Topomatic.ApplicationPlatform.Plugins.PluginInitializator
{
public static IProjectModel ActiveIProjectModel
{
get
{
var activeModel = PlanModelEditor.FindActiveModel(ApplicationHost.Current.ActiveProject as ModelProject, out bool ro);
return activeModel;
}
}[cmd(«test1»)]
public void Test1()
{
//Создание новой модели ЦММ и добавление её в проект
var model = AddNewModelToProject(«Модели/ЦММ», «Тестовые модели/Моя модель», «dtm», «.sfcx»);
}/// <summary>
/// Метод для создание и добавление новой модели в структуру проекта. Путь родительской папки задается относительно директории файла проекта (Например «Модели/ЦММ»).
/// Чтобы добавить подпапку, нужно перед именем модели через «/» прописать название папки (например, «Моя папка/Моя модель»)
/// </summary>
/// <param name=»relativeParentsFolderPath»></param>
/// <param name=»modelName»></param>
/// <param name=»modelType»></param>
/// <param name=»modelExtension»></param>
/// <returns></returns>
public static IProjectModel AddNewModelToProject(String relativeParentsFolderPath, String modelName, String modelType, String modelExtension)
{
//Добавление новой папки в структуру проекта (Если данная папка отсутствует в проекте)
var folder = PluginCoreOps.CreateFolder(new string[] { relativeParentsFolderPath }).Uri.AsAbsoluteUri;//Добавление новой модели в проект
var filePath = folder + «/» + modelName + modelExtension;return ApplicationHost.Current.Plugins.Execute(
Consts.FunctionAddItem, new object[] { filePath, modelType }) as IProjectModel;
}}
2) Дублирование существующей модели
public class Module : Topomatic.ApplicationPlatform.Plugins.PluginInitializator
{
public static IProjectModel ActiveIProjectModel
{
get
{
var activeModel = PlanModelEditor.FindActiveModel(ApplicationHost.Current.ActiveProject as ModelProject, out bool ro);
return activeModel;
}
}[cmd(«test1″)]
public void Test1()
{
//Дублирование существующей модели
var duplicateModel = CloneProjectModel(ActiveIProjectModel);
}/// <summary>
/// Метод для создания дубликата выбранной модели
/// </summary>
/// <param name=»projectModel»></param>
/// <returns></returns>
public static IProjectModel CloneProjectModel(IProjectModel projectModel)
{
var pathId = PluginCoreOps.FindModelPathId(projectModel);
return ApplicationHost.Current.Plugins.Execute(«dublicate», new object[] { pathId }) as IProjectModel;
}}
3) Перемещение модели в другое место структуры проекта
public class Module : Topomatic.ApplicationPlatform.Plugins.PluginInitializator
{
public static IProjectModel ActiveIProjectModel
{
get
{
var activeModel = PlanModelEditor.FindActiveModel(ApplicationHost.Current.ActiveProject as ModelProject, out bool ro);
return activeModel;
}
}[cmd(«test1»)]
public void Test1()
{
var removedModel = MoveProjectModel(ActiveIProjectModel, «Наша новая папка/Дублированная.sfcx»);
}/// <summary>
/// Метод для перемещения модели в другое место структуры проекта. Параметр «relativePathAndNewModelName» новый относительный путь модели и новое имя с расширением.
/// Например, «/Тестовая папка/585.sfcx», в этом случае программа переместит нашу модель ЦММ относительно текущей в подкаталог «Тестовая папка» и даст ей имя «585.sfcx»
/// </summary>
/// <param name=»projectModel»></param>
/// <param name=»relativePathAndNewModelName»></param>
/// <returns></returns>
public static IProjectModel MoveProjectModel(IProjectModel projectModel, String relativePathAndNewModelName)
{
var pathId = PluginCoreOps.FindModelPathId(projectModel);
return ApplicationHost.Current.Plugins.Execute(«mvitem», new object[] { pathId, relativePathAndNewModelName }) as IProjectModel;
}}
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.