Форум профессиональных мебельщиков PROMEBELclub

Форум профессиональных мебельщиков PROMEBELclub (https://промебельклуб.рф/forum/index.php)
-   Базис-мебельщик. Скрипты (https://промебельклуб.рф/forum/forumdisplay.php?f=273)
-   -   БАЗИС 10 - Скрипты (https://промебельклуб.рф/forum/showthread.php?t=12463)

seserg 29.08.2017 15:05

Подскажите добрые люди, как теперь в скриптах использовать схемы крепежа?

Letos 05.09.2017 16:19

Цитата:

Сообщение от seserg (Сообщение 431572)
Подскажите добрые люди, как теперь в скриптах использовать схемы крепежа?

Схемы крепежа используются также, как и в девятке.
Два варианта взаимодействия со схемами: создание с нуля и загрузка из старого формата (файла 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 для взаимодействия со схемами нужно поменять, поэтому подсказку для схем удалили, но старые функции, методы и свойства пока еще остались.

v22884 07.09.2017 08:33

Contour.Approximate()

Сообщите, пожалуйста, параметры.
Она, наверно, даёт отрезки, или точки.?

Briz 07.09.2017 10:03

PHP код:

// создадим контейнер для точек
var Edge Model.Edges.AddSpline();

// создадим контур
var ContourObject AddContour();
ContourObject.Contour.AddCircle(0010);
// разбиваем его на точки с отклонением не больше 0.1
ContourObject.Contour.Approximate(0.1Edge.VertList);


for (var 
0Edge.VertList.Count; ++k) {
  var 
Pos Edge.VertList[k];
  
system.log(Pos.' ' Pos.' ' Pos.z);
}

// удаляем контейнер для точек
Model.Edges.Delete(Model.Edges.IndexOf(Edge)); 


djobik 21.09.2017 15:49

Доброго вермени суток.
Уже отвечали про схемы крепежа, но не очень помогло.
В примерах скриптов базиса схема открывается через OpenScheme.
Закинул в папку примера свой Fasteners.config - не заработало, прописал до него путь, то же самое. Прописал путь до файла в фурнитуре, так же не заработало.
В мануале вычитал про OpenFurnitureScheme/OpenFurnitureSchemes - результат ровно такой же как и с OpenScheme.
Может кто кодом показать как установить схему крепежа между двух панелей в 10-ом базисе? Буду премного благодарен.

Letos 21.09.2017 16:37

Цитата:

Сообщение от djobik (Сообщение 433492)
Доброго вермени суток.
Уже отвечали про схемы крепежа, но не очень помогло.
В примерах скриптов базиса схема открывается через OpenScheme.
Закинул в папку примера свой Fasteners.config - не заработало, прописал до него путь, то же самое. Прописал путь до файла в фурнитуре, так же не заработало.
В мануале вычитал про OpenFurnitureScheme/OpenFurnitureSchemes - результат ровно такой же как и с OpenScheme.
Может кто кодом показать как установить схему крепежа между двух панелей в 10-ом базисе? Буду премного благодарен.

Нашел ошибку в своем предыдущем ответе. Файл старого формата схем - Schemes.config. Открытие схем производилось только из этого файла. После переноса настроек схем в файл Fasteners.config открытие из файла, по идее, уже не работало. На данный момент объект схемы можно получить либо из поля выбора фурнитуры (FurnitureInput и ScriptFurnitureProperty), либо создавать с нуля.

djobik 22.09.2017 09:41

Цитата:

Сообщение от Letos (Сообщение 433494)
Нашел ошибку в своем предыдущем ответе. Файл старого формата схем - Schemes.config. Открытие схем производилось только из этого файла. После переноса настроек схем в файл Fasteners.config открытие из файла, по идее, уже не работало. На данный момент объект схемы можно получить либо из поля выбора фурнитуры (FurnitureInput и ScriptFurnitureProperty), либо создавать с нуля.

Не совсем то что нужно.
При установки схем через FurnitureInput имеем выходные данные в виде InFurniture, в которой нет способа задать базу расстановки для схемы. В итоге схема ставится без растягивания, как в исходнике.
При ScriptFurnitureProperty в итоге то же самое.
Может быть есть какой-то вариант указать базу?

Letos 22.09.2017 11:26

Цитата:

Сообщение от djobik (Сообщение 433545)
Не совсем то что нужно.
При установки схем через FurnitureInput имеем выходные данные в виде InFurniture, в которой нет способа задать базу расстановки для схемы. В итоге схема ставится без растягивания, как в исходнике.
При ScriptFurnitureProperty в итоге то же самое.
Может быть есть какой-то вариант указать базу?

Я поковырял-поковырял, и вынужден огорчить: такого варианта нет. Обходных путей тоже не нашел.:(

R0mchik 24.09.2017 15:20

Очень нужна схема замены фурнитуры. Что то вроде того как реализована схема замены материалов. Очень часто произвожу замену одной и той же фурнитуры, выбирая каждую по отдельности. В скриптах я на уровне чайника, может кто поможет?

Letos 26.09.2017 13:57

Цитата:

Сообщение от R0mchik (Сообщение 433670)
Очень нужна схема замены фурнитуры. Что то вроде того как реализована схема замены материалов. Очень часто произвожу замену одной и той же фурнитуры, выбирая каждую по отдельности. В скриптах я на уровне чайника, может кто поможет?

В Базисе есть кнопка "Замена фурнитуры", похожая по реализации на "Замену материалов", которая может заменить всю фурнитуру в модели. Возможно, это и ответ на заданный вопрос. Если нет, то уточните, что в Вашем понимании означает "схема замены фурнитуры" - алгоритм замены фурнитуры, отличный от Базисного, или же нечто иное?


Текущее время: 23:39. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
© 2007-2023 PROMEBEL