Операции над моделями проекта

Главная Форум Средства разработки Топоматик Robur Операции над моделями проекта

Просмотр 1 сообщения - с 1 по 1 (всего 1)
  • Автор
    Сообщения
  • #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;
    }

    }

Просмотр 1 сообщения - с 1 по 1 (всего 1)
  • Для ответа в этой теме необходимо авторизоваться.