Показать сообщение отдельно
Старый 05.09.2017, 16:19   #22
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от seserg Посмотреть сообщение
Подскажите добрые люди, как теперь в скриптах использовать схемы крепежа?
Схемы крепежа используются также, как и в девятке.
Два варианта взаимодействия со схемами: создание с нуля и загрузка из старого формата (файла fasteners.config).
Нашел еще один хак: Можно через поле выбора фурнитуры выбрать схему и у поля вызвать метод Mount. Вот упрощенный пример:
Код:
  var furnSel = NewFurnitureInput("схема");
  furnSel.OnChange = ()=>{
    furnSel.Mount(panel1, panel2, x, y, z);
  }
Если создавать схему с нуля, то там нужно прописывать кучу параметров схемы. Если вы пишите скрипты через VSCode, можно добавить в файл определений d.ts следующие строки, которые упростят поиск нужного параметра:

Скрытый текст

Код:
/**
 * Позиция фурнитуры при установке крепежа
 */
declare enum FurniturePosition {
    /**
     * Установка фурнитуры внутри стыка
     */
    Inside,
    /**
     * Установка фурнитуры снаружи стыка
     */
    Outside,
    /**
     * Установка фурнитуры вверху стыка (только для стыков с горизонтальной панелью)
     */
    Up,
    /**
     * Установка фурнитуры внизу стыка (только для стыков с горизонтальной панелью)
     */
    Down

}

/**
 * Тип схемы установки крепежа
 */
declare enum SchemeType {
    /**
     * Тип схемы с фиксированным отступом
     */
    WithBase,
    /**
     * Симметричный тип схемы
     */
    Symmetric,
    /**
     * Тип схемы с переменным шагом
     */
    VariableStep

}

declare class FurnitureScheme{
    /**
     * Установка крепежа в стык 2-х панелей
     * @param panel1
     * @param panel2
     */
    Mount(panel1: Panel, panel2: Panel);
    /**
     * Задать количество крепежа для схемы
     * @param count
     */
    SetFurnitureCount(count: number);
    /**
     * Название схемы
     */
    Name: String;
    /**
     * Основная фурнитура
     */
    Furniture: InfFurniture;
    /**
     * Дополнительная фурнитура
     */
    AdditionalFurn: InfFurniture;
    /**
     * Тип схемы
     */
    SchemeType: SchemeType;
    /**
     * Минимальный отступ (для симметричной схемы)
     */
    MinSymmetricIndent: Number;
    /**
     * Отступ в процентах (для симметричной схемы)
     */
    Percent: Boolean;
    /**
     * Фиксировать отступ (для симметричной схемы)
     */
    FixSymmetricIndent: Boolean;
    /**
     * Фиксированный отступ (для схемы с фиксированным отступом)
     */
    FixBaseIndent: Number;
    /**
     * Минимальный отступ от противоположного края (для схемы с фиксированным отступом)
     */
    MinBaseIndent: Number;
    /**
     * Кратность шага основной фурнитуры
     */
    FurnitureStep: Number;
    /**
     * Кратность шага Дополнительной фурнитуры
     */
    AdditionalFurnStep: Number;
    /**
     * Положение фурнитуры в стыке
     */
    FurniturePosition: FurniturePosition;

}

declare class FurnitureSchemes{
    /**
     * Сохранить список схем в файл
     * @param filename
     */
    SaveTo(filename: string);
    /**
     * Добавить список схем из файла
     * @param filename
     */
    AddFromFile(filename: string);
    /**
     * Найти схему по имени
     * @param SchemeName
     */
    GetScheme(SchemeName: string): FurnitureScheme;
    /**
     * Получить номер схемы в списке
     * @param Scheme
     */
    IndexOf(Scheme: FurnitureScheme): Number;
    /**
     * Наличие схемы в списке
     * @param Scheme
     */
    Exists(Scheme: FurnitureScheme): Boolean;
    /**
     * Добавить схему в список
     * @param  FurnScheme
     */
    AddScheme(FurnScheme: FurnitureScheme);
    /**
     * Удалить схему по имени
     * @param SchemeName
     */
    DeleteScheme(SchemeName: string);
    /**
     * Удалить схему по номеру
     * @param  index
     */
    DeleteIndex(index: number);
    /**
     * Принять изменения в схеме
     * @param Scheme
     */
    AcceptScheme(Scheme: FurnitureScheme);
    /**
     * Создать новую схему
     * @param SchemeName
     */
    NewScheme(SchemeName: string): FurnitureScheme;
    /**
     * Список схем
     */
    Schemes: Array<FurnitureScheme>;
    /**
     * Количество схем в списке
     */
    Count: Number;

}

/**
 * Открыть схему установки крепежа
 * @param filename
 * @param  schemeGroup
 * @param  schemeName
 */
declare function OpenFurnitureScheme(filename: string, schemeGroup: string, schemeName: string): FurnitureScheme;

/**
 * Открыть группу схем установки крепежа
 * @param filename
 * @param  schemeGroup
 */
declare function OpenFurnitureSchemes(filename: string, schemeGroup: string): FurnitureSchemes;

/**
 * Создать схему установки крепежа
 * @param schemeName
 */
declare function NewFurnitureScheme(schemeName: string): FurnitureScheme;
[свернуть]

P.S. Так как схемы крепежа со времен девятки изменились, то, скорее всего, часть API для взаимодействия со схемами нужно поменять, поэтому подсказку для схем удалили, но старые функции, методы и свойства пока еще остались.
Letos вне форума   Ответить с цитированием Вверх
3 пользователя(ей) сказали cпасибо:
maxgmv (11.09.2017), Ovsyanicov (06.09.2017), seserg (06.09.2017)