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

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

Вадим Диктатор 05.04.2020 15:01

Всех приветствую, хотел уточнить как сделать в скрипте шкаф купе дно накладное функцией как у крыши заходил в редактор менял значения дна копировал функции крыши на дно толку нет и сам не понимаю как сделать, помогите кто в курсе как это сделать заранее Благодарю!!!

Вадим Диктатор 05.04.2020 15:13

сам скрипт
 
Вложений: 1
http://promebelclub.ru/forum/attachm...1&d=1586088791

Вадим Диктатор 05.04.2020 15:22

Так же хотел узнать есть ли скрипт для фасадов то есть создание самого фасада по габаритам изделия с установкой навесов на нем по формуле то есть если фасад до 800 мм ставится две петли если выше то по 3 петли и так далее и соответственно ручки 3 положения с сверху в центре и в низу в идеале если еще и фрагменты фрезеровки добавлять или сечения, заранее Благодарю!!!

Letos 06.04.2020 22:38

Цитата:

Сообщение от Вадим Диктатор (Сообщение 493610)
Всех приветствую, хотел уточнить как сделать в скрипте шкаф купе дно накладное функцией как у крыши заходил в редактор менял значения дна копировал функции крыши на дно толку нет и сам не понимаю как сделать, помогите кто в курсе как это сделать заранее Благодарю!!!

Не совсем понятно, что именно вам нужно. Если вы собираетесь сделать дно копией крышки с параметром "Крышка"=="Да", то вам нужен этот код из скрипта:

код


if (Крыша.Value == true) {
Krishka = AddHorizPanel(0 - SLKR.Value, 0, Dl.Value + SRKR.Value, Gl.Value + SPKR.Value, H.Value - Thick);
Krishka.Name = 'Крышка'; //Присваиваем панели имя
Krishka.AddButt(KrVidimKorp, 2);
Krishka.AddButt(KrVidimKorp, 3);
Krishka.TextureOrientation = TextureOrientation.Horizontal;
}
[свернуть]

И в нём достаточно поменять лишь последниий параметр в вызове AddHorizPanel (то есть вместо H.Value - Thick написать нужное вам значение положения панели по оси Y)

Letos 06.04.2020 22:41

Цитата:

Сообщение от Вадим Диктатор (Сообщение 493614)
Так же хотел узнать есть ли скрипт для фасадов то есть создание самого фасада по габаритам изделия с установкой навесов на нем по формуле то есть если фасад до 800 мм ставится две петли если выше то по 3 петли и так далее и соответственно ручки 3 положения с сверху в центре и в низу в идеале если еще и фрагменты фрезеровки добавлять или сечения, заранее Благодарю!!!

Поищите по разделу скриптов, если не найдёте, то можете оставить заявку в соответствующей теме, может откликнется кто-то.

Вадим Диктатор 25.04.2020 12:59

Спасибо, не получается там связки когда построение боковых угловых слева или справа а так идея была как вы говорите копия крыши с дном но мешает то что там есть то есть планка или нижний цоколь если удалить рухнет построение, в принципе он не нужен так как работаю крыша дно накладное почти всегда

Вадим Диктатор 03.05.2020 16:19

Приветствую, поделитесь годными скриптами фасады навесы базы кому не жалко

bars73 24.06.2020 18:51

Пользовательское свойство модели
 
Доброго времени суток. Подскажите как скриптом в салоне вытащить пользовательское свойство модели?

Bystry 26.07.2020 18:50

Цитата:

Сообщение от Letos (Сообщение 486359)
Вот небольшой пример по загрузке файлов из папки (без вложенных папок)

А из подкаталогов реально? Я пытаюсь сделать скрипт который бы открывал мне на редактирование файл фрагмента из модели. тоесть я в модели выделяю какойто фрагмент, скрипт считывает его имя, ищет файл в каталоге с фрагментами(и в подкаталогах а их там много...) с таким же именем и открывает его в новой вкладке.

Felix-m 04.08.2020 19:06

Добрый день. Надеюсь ветка еще жива. Подскажите ради бога,кто в теме,всю голову сломал. Устанавливаю скрипт с сайта вияр и ставится только (Экспорт проекта ViyarPro) как установить (Экспорт деталей Bazis2Viyar). Помогите.Век помнить буду!

Uncle 04.08.2020 19:22

Цитата:

Сообщение от Felix-m (Сообщение 499044)
ставится только (Экспорт проекта ViyarPro)

Так и есть. Они обновили конвертер. Теперь немного проще - запускаете скрипт, в окне свойств выбираете с каких параметров должно состоять наименование детали и присоединять ли фурнитуру и все - Экспортировать
http://f26.ifotki.info/thumb/8e47a39...f379218280.png

Felix-m 05.08.2020 10:22

А теперь до меня дошло.((( Проблема в том то и состоит.Если раньше я строил модель и перед созданием документации обрабатывал скриптом.(потому что скрипт менял позиции деталей в рандомном порядке)И потом с модели делал документацию для с сборки (сборочники и тд)То теперь скрипт меняет позиции не изменяя на модели. Получается путаница.У вас может сохранился предыдущий установщик.

Uncle 05.08.2020 10:58

Вложений: 1
Цитата:

Сообщение от Felix-m (Сообщение 499054)
То теперь скрипт меняет позиции не изменяя на модели.

Попробуйте этот же скрипт, но я его чуть чуть переделал : он к имени детали прибавляет Вашу позицию (по какой то причине он этого не делал, хотя согласно инструкции должен был). На бирках Вияра это и отображается. Удобно тем, что Вы можете расставить позиции по своему усмотрению на модели и они сохраняться после работы скрипта и будут на бирках:

http://f26.ifotki.info/thumb/7c727c0...4379273755.png

Вложение 137138

К сожалению, более ранние версии не сохранились

SsensusS 05.08.2020 13:34

Цитата:

Сообщение от Uncle (Сообщение 499055)
К сожалению, более ранние версии не сохранились

Есть 3.0 и 4.1
Могу кинуть на вайбер.

AlexBolton 05.08.2020 14:06

Цитата:

Сообщение от Felix-m (Сообщение 499054)
может сохранился предыдущий установщик.

http://s019.radikal.ru/i622/1711/c9/13b1d6593e79.png Bazis2Viyar 4.1 от 2018/11/19

Funman 08.08.2020 06:45

Цитата:

Сообщение от Максим Геннадьевич (Сообщение 454497)
Ошибка была банальная. Пример брался из справки Subtraction(contour) и в примере допущена ошибка c.Substraction(Hole).

Если бы еще сказали как ее исправить, вообще было бы блестяще. Какой чудо программист писал справку по скрипту :( Практически ни один пример не работает

АлКузнецов 16.09.2020 12:13

Коллеги доброго дня.

Нужна помощь (откровенно туплю после отпуска).
Вопрос: Как скритом удалить пластик с панели?

Как нанести, переименовать материл пластика, изменить ориентацию текстуры и пр... все понятно...
Как удалить пластик строчкой скрипта -- не соображу.

Meshok 17.09.2020 19:00

Всем доброго вечера.
При построении вспомогательных линий сразу высвечивается подсказка - "Укажите отрезок, параллельно которому проводить линию".
А теперь сам вопрос - можно ли скриптом аналогично выбирать такой отрезок на модели?
GetEdge - не подходит, так как при вызове функции во входных параметрах нужно указывать AxisX, AxisY или AxisZ.
Есть ли возможность обойти этот нюанс?
Интересует, в принципе, фронтальный вариант (вид спереди).
С Уважением, Михаил.

Augustus88 09.10.2020 02:23

Уважаемые коллеги, а есть ли конструктор для скриптов java по нашему направлению к примеру как joomla для HTML. Для решения моих задач не совсем подходят скрипты представленные на форуме. Суть в том что просматривая структуру скриптов они требуют глобальной переделки. Самому очень интересна тема но знаний маловато. Пытался читать Базис софт скрипт, но без практики нет четкого понимания структуры и иерархии кода. Качнул кухонная тумба v1.3-v1.5 автор MAXGVM, вроде даже начал понимать. Вот почему параметрические шканты наружу, а произвольные стают как родные понять не могу уважаемый Uncle сталкивался с той же проблемой... И куча других вопросов которые спать не дают.
Хотелось бы пошагово под микроскопом.

hseva 17.10.2020 00:02

Всем привет!
Подскажите, кто в курсе, почему нижеприведенный код у меня всегда выдает null?
А если убрать проверку на наличиие папки existSync так вообще модуля 'fs' не находит. Стоит Базис 11 с установленным node.
PHP код:

 var fs = require('fs');
var 
path = require('path');
// Папка, из которой считывать имена файлов
const folder ''d:\\'';
var 
names null;
if (
fs.existsSync(folder)) {names fs.readdirSync(folder);}
console.log(names); 


Meshok 17.10.2020 09:33

Цитата:

Сообщение от hseva (Сообщение 501359)
Всем привет!
Подскажите, кто в курсе, почему нижеприведенный код у меня всегда выдает null?
А если убрать проверку на наличиие папки existSync так вообще модуля 'fs' не находит. Стоит Базис 11 с установленным node.
PHP код:

 var fs = require('fs');
var 
path = require('path');
// Папка, из которой считывать имена файлов
const folder ''d:\\'';
var 
names null;
if (
fs.existsSync(folder)) {names fs.readdirSync(folder);}
console.log(names); 


Исправьте:

const folder = 'd:\\'

И проверьте, чтобы на диске D в корневом каталоге был файл с именем fs (такого файла не находит, вот и выдаёт null)

hseva 17.10.2020 19:08

Цитата:

Сообщение от Meshok (Сообщение 501364)
Исправьте:

const folder = 'd:\\'

И проверьте, чтобы на диске D в корневом каталоге был файл с именем fs (такого файла не находит, вот и выдаёт null)

Да в том то и дело что не могу найти файл fs. Он вроде бы входит в встроенную библиотеку node.
P/S/ Спасибо. все ок. Заработало

Meshok 17.10.2020 20:01

Цитата:

Сообщение от hseva (Сообщение 501383)
Да в том то и дело что не могу найти файл fs. Он вроде бы входит в встроенную библиотеку node.

Ну тогда не пойму Вашего поста.
Вопрос был, почему выдаёт null, а не где делся файл, с именем fs. Вся суть в том, что при проверке

fs.existsSync(folder)

выдаёт значение false, и пока Вы не укажете в строке

var fs = require('fs');

реально существующее имя файла, то у Вас не будет выводиться список файлов из заданной папки.

P.S. У меня винда 10, этот файл расположен по адресу:

C:\Users\ Ваше имя пользователя \.vscode\extensions\felixfbecker.php-intellisense-2.3.14\node_modules\mz

sergio1982 25.10.2020 19:47

http://promebelclub.ru/forum/showthr...294#post491294

Цитата:

Сообщение от Letos (Сообщение 491294)
Для возможности редактирования, блок должен создаваться с помощью функции BeginParametricBlock(). Тогда, если выделить этот блок, появится кнопка "Редактировать", которая вызовет скрипт, создавший блок.

Интересно. А возможно в скрипте узнать что он вызывается по кнопке "Редактировать"? Хочется чтобы при таком вызове скрипт взял инфо из блока и заполнил поля, иначе параметры будут по умолчанию, и особого смысла в такой фиче получается что нет?

Meshok 20.11.2020 21:41

Всем доброго вечера. Возник вопрос такого плана:
во встроенных скриптах (Параметрические блоки/Тумба/Редактируемая тумба) есть такая часть кода:

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

var CurBlock;
var CurPos = NewVector(0, 0, 0);
.....
function NewTumba() {
Make();
Action.Hint = 'Укажите положение тумбы';
Action.ShowPoints = true;
Action.OnMove = function() {
CurBlock.Position = Action.Pos3;
CurPos = Action.Pos3;
};
Action.OnClick = function() {
Action.OnMove = undefined;
Action.ShowPoints = false;
Action.Hint = 'Укажите параметры тумбы';
};
}
[свернуть]

А вот и сам вопрос - как сделать, чтобы CurBlock.Position не был в нижнем левом дальнем углу блока? Хочу, к примеру, верхний ближний левый угол блока? Как такое сделать, чего-то меня "танцы с бубнами" до финиша не довели :-\

Meshok 20.11.2020 23:41

Вложений: 1
Не знаю, обсуждалось это или нет, если что - просьба модераторам удалить топик.
Сейчас обнаружил такую вещь.
При монтировании фурнитуры с помощью процедуры Mount ();

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

/**
* Установить крепеж между двух панелей
* @param panel1
* @param panel2
* @param x
* @param y
* @param z
*/
Mount(panel1: Panel, panel2: Panel, x: number, y: number, z: number): Object3;
[свернуть]


параметр Y оказывается, в принципе, не нужен для моего конкретного случая (скрин прилагаю), устанавливал полкодержатели и еврики

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

....
Evrik.Mount(Dno, LevSt, ts.Value, 0, 50);
Evrik.Mount(Dno, PravSt, ts.Value, 0, 50);
Evrik.Mount(Dno, LevSt, ts.Value, 0, w.Value - 50);
Evrik.Mount(Dno, PravSt, ts.Value, 0, w.Value - 50);
Evrik.Mount(Krysha, LevSt, ts.Value, 0, 50);
Evrik.Mount(Krysha, PravSt, ts.Value, 0, 50);
Evrik.Mount(Krysha, LevSt, ts.Value, 0, w.Value - 50);
Evrik.Mount(Krysha, PravSt, ts.Value, 0, w.Value - 50);
....
Polkodergatel.Mount(Polka1, LevSt, ts.Value, 0, paz.Value + paz_ts.Value + 50);
Polkodergatel.Mount(Polka1, LevSt, ts.Value, 0, w.Value - 70);
Polkodergatel.Mount(Polka1, PravSt, ts.Value, 0, paz.Value + paz_ts.Value + 50);
Polkodergatel.Mount(Polka1, PravSt, ts.Value, 0, w.Value - 70);
....
Polkodergatel.Mount(Polka2, LevSt, ts.Value, 0, paz.Value + paz_ts.Value + 50);
Polkodergatel.Mount(Polka2, LevSt, ts.Value, 0, w.Value - 70);
Polkodergatel.Mount(Polka2, PravSt, ts.Value, 0, paz.Value + paz_ts.Value + 50);
Polkodergatel.Mount(Polka2, PravSt, ts.Value, 0, w.Value - 70);
....
[свернуть]

P.S. Это в 8-ке народной...
X и Z для других случаев ещё не проверил...

renegat24 18.03.2021 19:14

Скрипт создание из *.OBL модели
 
Доброго времени суток.
Существует ли такая возможность с помощью скрипта или каких либо импортов, из файла раскроя с расширением *.obl или *.oblx получить в базис мебельщике модель с объектами с кромками и материалами которые указаны в файлах *.obl или *.oblx?

sergio1982 20.03.2021 20:53

На первый взгляд с помощью скрипта это должно быть возможно.

renegat24 20.03.2021 21:58

Вложений: 1
Цитата:

Сообщение от sergio1982 (Сообщение 506407)
На первый взгляд с помощью скрипта это должно быть возможно.

-Поделились таким скриптом, проблема в том что он работает если файл сохранен в 8 версии раскроя. Кто-то может помочь чтобы скрипт работал на 11 и версии 2021?

sergio1982 20.03.2021 22:05

У меня нет 11, не смогу помочь, то чем вы поделились - работает в 8. Интересно что такой скрипт уже существует, а для чего это может быть полезно?

renegat24 21.03.2021 08:46

Цитата:

Сообщение от sergio1982 (Сообщение 506411)
У меня нет 11, не смогу помочь, то чем вы поделились - работает в 8. Интересно что такой скрипт уже существует, а для чего это может быть полезно?

Менеджеры принимают заказы на распил, кромление присадку, в разных версиях раскроя, чтобы посчитать материал и кромку и пишут сопроводительное письмо на какую деталь поставить какой крепеж петли или пазы. Пока как строить модели в базисе этих деталей, ставить к ним панели для установки крепежа, я ничего не придумал. При этих действиях когда разные материалы и кромки, частенько бывают ошибки. Т.к. менеджеры подписывают у клиента заказ и если клиент не заметил что менеджер не правильно набил размеры и кромки, то это проблема клиента. Т.К на пильный центр и ЧПУ выгружает технолог, то все ошибки, это его штрафы и удержания из ЗП.

renegat24 21.03.2021 09:58

Цитата:

Сообщение от DevDemi (Сообщение 455555)
Описание: расстановка полок: указываем левую и правую панель, верхнюю и нижнюю грань. Крепеж для левой и правой стороны. Потом в окне указываем количество полок, появятся интервалы. Если 0 - поле рассчитается автоматом, если поле указано - используется значение из него.
Для работы скрипта нужен как минимум БМ 10 версии от января 2018.

Скрипт интересный, но у меня в 11 базисе если оставить значение 0 то полки не появляются. Если ставить значения то все работает

DocAndre 26.03.2021 20:48

Здравствуйте, простите, скрипт запускается только из редактора, кто может помочь с отладкой?

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

PHP код:

var obj Model.Selected;
if (
obj){
var 
artPos obj.ArtPos;
var 
size obj.GSize;
var 
х 120
var xi х + (Math.round(size.z) + (12))
var 
xit xi + (Math.round(size.x) + (12))
var 
xits = (xit) +  (Math.round(size.z) + (12))
var 
xitst = ((xits)+120)
var 
xitsts = (Math.round(size.x) * Math.round(size.y) *  Math.round(size.z)/1000000000)
var 
= ((Math.round(size.z) + (6)) / (2))
var 
yi = (+ (Math.round(size.y) + (9)))
var 
yit = (yi + (Math.round(size.x) + (6)))
var 
yits =( (yit) +  (Math.round(size.y) + (9)))
var 
yitst = ((yits)+(y))
Prop Action.Properties;
var 
TextPa Prop.NewString('Введите текст'х);
var 
TPar Prop.NewString('Введите текст'xi);
var 
TePar Prop.NewString('Введите текст'xit);
var 
TexPar Prop.NewString('Введите текст'xits);
var 
TextPar Prop.NewString('Введите текст'xitst);
var 
TextPara Prop.NewString('Введите текст'xitsts);
var 
TPyr Prop.NewString('Введите текст'y);
var 
TePyr Prop.NewString('Введите текст'yi);
var 
TexPyr Prop.NewString('Введите текст'yit);
var 
TextPyr Prop.NewString('Введите текст'yits);
var 
TextPyry Prop.NewString('Введите текст'yitst);
var 
SizePar Prop.NewNumber('Размер текста'5);
var 
XPar Prop.NewNumber('X');
var 
YPar Prop.NewNumber('y');
var 
ZPar Prop.NewNumber('Z');
{
symbols JSON.parsesystem.readTextFile('Font.json') ).Font.Symbols.Symbol;
smbMap = {};
for (var 
0symbols.length; ++k) {
var 
symbol symbols[k];
smbMap[symbol.ID] = symbol;}
Text3D AddContour('Текст');
TextContour Text3D.Contour;
PosX 0;
var 
text TextPar.Value;
var 
scale SizePar.Value;
for (var 
0text.length; ++i) {
var 
id text.charCodeAt(i);
if (
id >= 1040) {
id id 1040 192;}
var 
symbol smbMap[id];
if (
symbol) {
if (
symbol.Lines) {
var 
lines symbol.Lines.Line;
for (var 
0lines.length; ++k) {
var 
line lines[k];
TextContour.AddLine(parseFloat(line.x1) * scale PosX,
 
parseFloat(line.y1) * scale,
parseFloat(line.x2) * scale PosX,
parseFloat(line.y2) * scale);}}
PosX += symbol.IncX scale;}}
Text3D.PositionX XPar.Value;
Text3D.PositionY YPar.Value;
Text3D.PositionZ ZPar.Value;
Text3D.Build();
Action.Commit();}
{
symbols JSON.parsesystem.readTextFile('Font.json') ).Font.Symbols.Symbol;
smbMap = {};
for (var 
0symbols.length; ++k) {
var 
symbol symbols[k];
smbMap[symbol.ID] = symbol;}
Text3D AddContour('Текст');
TextContour Text3D.Contour;
PosX 0;
var 
text TexPar.Value;
var 
scale SizePar.Value;
for (var 
0text.length; ++i) {
var 
id text.charCodeAt(i);
if (
id >= 1040) {
id id 1040 192;}
var 
symbol smbMap[id];
if (
symbol) {
if (
symbol.Lines) {
var 
lines symbol.Lines.Line;
for (var 
0lines.length; ++k) {
var 
line lines[k];
TextContour.AddLine(parseFloat(line.x1) * scale PosX,
parseFloat(line.y1) * scale,
parseFloat(line.x2) * scale PosX,
parseFloat(line.y2) * scale);}}
PosX += symbol.IncX scale;}}
Text3D.PositionX = -6;
Text3D.PositionY 8;
Text3D.PositionZ ZPar.Value;
Text3D.Build();
Action.Commit();}
{
symbols JSON.parsesystem.readTextFile('Font.json') ).Font.Symbols.Symbol;
smbMap = {};
for (var 
0symbols.length; ++k) {
var 
symbol symbols[k];
smbMap[symbol.ID] = symbol;}
Text3D AddContour('Текст');
TextContour Text3D.Contour;
PosX 0;
var 
text TePar.Value;
var 
scale SizePar.Value;
for (var 
0text.length; ++i) {
var 
id text.charCodeAt(i);
if (
id >= 1040) {
id id 1040 192;}
var 
symbol smbMap[id];
if (
symbol) {
if (
symbol.Lines) {
var 
lines symbol.Lines.Line;
for (var 
0lines.length; ++k) {
var 
line lines[k];
TextContour.AddLine(parseFloat(line.x1) * scale PosX,
parseFloat(line.y1) * scale,
parseFloat(line.x2) * scale PosX,
parseFloat(line.y2) * scale);}}
PosX += symbol.IncX scale;}}
Text3D.PositionX = -8;
Text3D.PositionY 16;
Text3D.PositionZ ZPar.Value;
Text3D.Build();
Action.Commit();}
{
symbols JSON.parsesystem.readTextFile('Font.json') ).Font.Symbols.Symbol;
smbMap = {};
for (var 
0symbols.length; ++k) {
var 
symbol symbols[k];
smbMap[symbol.ID] = symbol;}
Text3D AddContour('Текст');
TextContour Text3D.Contour;
PosX 0;
var 
text TPar.Value;
var 
scale SizePar.Value;
for (var 
0text.length; ++i) {
var 
id text.charCodeAt(i);
if (
id >= 1040) {
id id 1040 192;}
var 
symbol smbMap[id];
if (
symbol) {
if (
symbol.Lines) {
var 
lines symbol.Lines.Line;
for (var 
0lines.length; ++k) {
var 
line lines[k];
TextContour.AddLine(parseFloat(line.x1) * scale PosX,
parseFloat(line.y1) * scale,
parseFloat(line.x2) * scale PosX,
parseFloat(line.y2) * scale);}}
PosX += symbol.IncX scale;}}
Text3D.PositionX = -55;
Text3D.PositionY 24;
Text3D.PositionZ ZPar.Value;
Text3D.Build();
Action.Commit();}
{
symbols JSON.parsesystem.readTextFile('Font.json') ).Font.Symbols.Symbol;
smbMap = {};
for (var 
0symbols.length; ++k) {
var 
symbol symbols[k];
smbMap[symbol.ID] = symbol;}
Text3D AddContour('Текст');
TextContour Text3D.Contour;
PosX 0;
var 
text TextPa.Value;
var 
scale SizePar.Value;
for (var 
0text.length; ++i) {
var 
id text.charCodeAt(i);
if (
id >= 1040) {
id id 1040 192;}
var 
symbol smbMap[id];
if (
symbol) {
if (
symbol.Lines) {
var 
lines symbol.Lines.Line;
for (var 
0lines.length; ++k) {
var 
line lines[k];
TextContour.AddLine(parseFloat(line.x1) * scale PosX,
parseFloat(line.y1) * scale,
parseFloat(line.x2) * scale PosX,
parseFloat(line.y2) * scale);}}
PosX += symbol.IncX scale;}}
Text3D.PositionX = -55;
Text3D.PositionY 32;
Text3D.PositionZ ZPar.Value;
Text3D.Build();
Action.Commit();}}
{
symbols JSON.parsesystem.readTextFile('Font.json') ).Font.Symbols.Symbol;
smbMap = {};
for (var 
0symbols.length; ++k) {
var 
symbol symbols[k];
smbMap[symbol.ID] = symbol; }
Text3D AddContour('Текст');
TextContour Text3D.Contour;
PosX 0;
var 
text TextPara.Value;
var 
scale SizePar.Value;
for (var 
0text.length; ++i) {
var 
id text.charCodeAt(i);
if (
id >= 1040) {
id id 1040 192;}
var 
symbol smbMap[id];
if (
symbol) {
if (
symbol.Lines) {
var 
lines symbol.Lines.Line;
for (var 
0lines.length; ++k) {
var 
line lines[k];
TextContour.AddLine(parseFloat(line.x1) * scale PosX,
parseFloat(line.y1) * scale,
parseFloat(line.x2) * scale PosX,
parseFloat(line.y2) * scale); }}
PosX += symbol.IncX scale;}}
Text3D.PositionX = -50;
Text3D.PositionY 181;
Text3D.PositionZ ZPar.Value;
Text3D.Build();
Action.Commit();}
{
BeginBlock("Размеры");
{
symbols JSON.parsesystem.readTextFile('Font.json') ).Font.Symbols.Symbol;
smbMap = {};
for (var 
0symbols.length; ++k) {
var 
symbol symbols[k];
smbMap[symbol.ID] = symbol;}
Text3D AddContour('Текст');
TextContour Text3D.Contour;
PosX 0;
var 
text TPyr.Value;
var 
scale SizePar.Value;
for (var 
0text.length; ++i) {
var 
id text.charCodeAt(i);
if (
id >= 1040) {
id id 1040 192;}
var 
symbol smbMap[id];
if (
symbol) {
if (
symbol.Lines) {
var 
lines symbol.Lines.Line;
for (var 
0lines.length; ++k) {
var 
line lines[k];
TextContour.AddLine(parseFloat(line.x1) * scale PosX,
parseFloat(line.y1) * scale,
parseFloat(line.x2) * scale PosX,
parseFloat(line.y2) * scale);}}
PosX += symbol.IncX scale; }}
Text3D.PositionX 44;
Text3D.PositionY = -62;
Text3D.PositionZ ZPar.Value;
Text3D.Build();
Action.Continue();}
{
symbols JSON.parsesystem.readTextFile('Font.json') ).Font.Symbols.Symbol;
smbMap = {};
for (var 
0symbols.length; ++k) {
var 
symbol symbols[k];
smbMap[symbol.ID] = symbol;}
Text3D AddContour('Текст');
TextContour Text3D.Contour;
PosX 0;
var 
text TePyr.Value;
var 
scale SizePar.Value;
for (var 
0text.length; ++i) {
var 
id text.charCodeAt(i);
if (
id >= 1040) {
id id 1040 192;}
var 
symbol smbMap[id];
if (
symbol) {
if (
symbol.Lines) {
var 
lines symbol.Lines.Line;
for (var 
0lines.length; ++k) {
var 
line lines[k];
TextContour.AddLine(parseFloat(line.x1) * scale PosX,
parseFloat(line.y1) * scale,
parseFloat(line.x2) * scale PosX,
parseFloat(line.y2) * scale);}}
PosX += symbol.IncX scale; }}
Text3D.PositionX 48;
Text3D.PositionY = -70;
Text3D.PositionZ ZPar.Value;
Text3D.Build();
Action.Continue(); }
{
symbols JSON.parsesystem.readTextFile('Font.json') ).Font.Symbols.Symbol;
smbMap = {};
for (var 
0symbols.length; ++k) {
var 
symbol symbols[k];
smbMap[symbol.ID] = symbol; }
Text3D AddContour('Текст');
TextContour Text3D.Contour;
PosX 0;
var 
text TexPyr.Value;
var 
scale SizePar.Value;
for (var 
0text.length; ++i) {
var 
id text.charCodeAt(i);
if (
id >= 1040) {
id id 1040 192;}
var 
symbol smbMap[id];
if (
symbol) {
if (
symbol.Lines) {
var 
lines symbol.Lines.Line;
for (var 
0lines.length; ++k) {
var 
line lines[k];
TextContour.AddLine(parseFloat(line.x1) * scale PosX,
parseFloat(line.y1) * scale,
parseFloat(line.x2) * scale PosX,
parseFloat(line.y2) * scale);}}
PosX += symbol.IncX scale;}}
Text3D.PositionX 79;
Text3D.PositionY = -78;
Text3D.PositionZ ZPar.Value;
Text3D.Build();
Action.Continue();}
{
symbols JSON.parsesystem.readTextFile('Font.json') ).Font.Symbols.Symbol;
smbMap = {};
for (var 
0symbols.length; ++k) {
var 
symbol symbols[k];
smbMap[symbol.ID] = symbol;}
Text3D AddContour('Текст');
TextContour Text3D.Contour;
PosX 0;
var 
text TextPyr.Value;
var 
scale SizePar.Value;
for (var 
0text.length; ++i) {
var 
id text.charCodeAt(i);
if (
id >= 1040) {
id id 1040 192;}
var 
symbol smbMap[id];
if (
symbol) {
if (
symbol.Lines) {
var 
lines symbol.Lines.Line;
for (var 
0lines.length; ++k) {
var 
line lines[k];
TextContour.AddLine(parseFloat(line.x1) * scale PosX,
parseFloat(line.y1) * scale,
parseFloat(line.x2) * scale PosX,
parseFloat(line.y2) * scale);}}
PosX += symbol.IncX scale;}}
Text3D.PositionX 83;
Text3D.PositionY = -86;
Text3D.PositionZ ZPar.Value;
Text3D.Build();
Action.Continue();}
{
symbols JSON.parsesystem.readTextFile('Font.json') ).Font.Symbols.Symbol;
smbMap = {};
for (var 
0symbols.length; ++k) {
var 
symbol symbols[k];
smbMap[symbol.ID] = symbol;}
Text3D AddContour('Текст');
TextContour Text3D.Contour;
PosX 0;
var 
text TextPyry.Value;
var 
scale SizePar.Value;
for (var 
0text.length; ++i) {
var 
id text.charCodeAt(i);
if (
id >= 1040) {
id id 1040 192; }
var 
symbol smbMap[id];
if (
symbol) {
if (
symbol.Lines) {
var 
lines symbol.Lines.Line;
for (var 
0lines.length; ++k) {
var 
line lines[k];
TextContour.AddLine(parseFloat(line.x1) * scale PosX,
parseFloat(line.y1) * scale,
parseFloat(line.x2) * scale PosX,
parseFloat(line.y2) * scale);}}
PosX += symbol.IncX scale;}}
Text3D.PositionX 9;
Text3D.PositionY = -94;
Text3D.PositionZ ZPar.Value;
Text3D.Build();
Action.Commit();}
Model.forEach(function (obj) {
if (
obj.Name == "Размеры"){
obj.Visible = !obj.RotateZ(90);}}) 

[свернуть]

4kkuhnii 30.03.2021 12:56

Здравствуйте, объясните пожалуйста, почему при внесения изменении в окне параметров, например выбираю фурнитуру или отказываюсь от дополнительной, в скрипте (в редакторе) появляется сообщение об ошибке. При повторном запуске сообщение об ошибке нет. Сообщение об ошибке появляется только после изменении в окне параметров во время работы скрипта.

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

FileOptions = 'Крепеж.xml'; //файл с параметрами
MakeProperties(); // окно с параметрами

Action.Properties.Load(FileOptions); // смотрим что в файле 'Крепеж.xml'
Action.OnFinish = function() {
Action.Properties.Save(FileOptions); // а здесь сохраняем изменения в 'Крепеж.xml'
}

NewKrep();
Action.Continue();

function NewKrep() {
SetCamera(p3dIsometric);
Polk = GetPanel("Укажите Полку");
Botton = Polk.GabMin.y;
Top = Polk.GabMax.y;
TP = Polk.Thickness;

Bok = GetPanel("Укажите Бок");
Back = Bok.GabMin.z;
Front = Bok.GabMax.z;
TB = Bok.Thickness;

Make();
}

function MakeProperties() {
Prop = Action.Properties;
Krep = Prop.NewGroup('Крепеж'); //группа крепеж
OsKrep = Krep.NewFurniture('Основной крепеж');
Poz = Krep.NewCombo('Замок эксцентрика', 'Снизу\nСверху');
SHK = Krep.NewCombo('Установить доп.крепеж', 'Нет\nДа');
DopKrep = Krep.NewFurniture('Выбор крепежа');
KB = Krep.NewNumber('Крепеж сзади', 37);
KF = Krep.NewNumber('Крепеж спереди', 37);
Step = Krep.NewNumber('Шаг Доп.Крепежа', 32);

OkBtn = Prop.NewButton('Установить');
OkBtn.OnClick = function() {
//Make();
Action.Commit();
Action.AsyncExec(NewKrep);
}
OkBtn = Prop.NewButton('Закончить');
OkBtn.OnClick = function() {
Make();
Action.Finish();
}
Prop.OnChange = function() {
Make();
}
}

function Make() {
DeleteNewObjects();
OSKrep = OsKrep.Value;
DPKrep = DopKrep.Value;
if (Poz.ItemIndex == 0) {
OSKrep.Mount(Polk, Bok, TB, Botton, Back + KB.Value);
OSKrep.Mount(Polk, Bok, TB, Botton, Front - KF.Value);

if (SHK.ItemIndex == 1) {
DPKrep.Mount(Polk, Bok, TB, Botton, Back + KB.Value + Step.Value);
DPKrep.Mount(Polk, Bok, TB, Botton, Front - KF.Value - Step.Value);
}
}
if (Poz.ItemIndex == 1) {
OSKrep.Mount(Polk, Bok, TB, Top, Back + KB.Value);
OSKrep.Mount(Polk, Bok, TB, Top, Front - KF.Value);
if (SHK.ItemIndex == 1) {
DPKrep.Mount(Polk, Bok, TB, Top, Back + KB.Value + Step.Value);
DPKrep.Mount(Polk, Bok, TB, Top, Front - KF.Value - Step.Value);
}
//system.log(OSKrep.Mount);
}

UnSelectAll();

}
[свернуть]

skromvit 10.04.2021 11:37

Цитата:

Сообщение от Uncle (Сообщение 507065)
Нужен скрипт по типу функции в Excel "Найти/Заменить" для замены символов (отдельные знаки, буквы, цифры, слова, словосочетания) в наименованиях профилей и панелей.

Возможно этот вам подойдет:

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


PHP код:

function FindAll(){
    var 
textToFind textToSearch.Value;
    
alert(textToFind);
    if(
textToFind != undefined || textToFind != null){
        
Model.forEach(function(obj){
            if(
obj.Name.indexOf(textToFind) >= 0){
                
obj.Selected true;
            }
        });
    }
}

function 
ReplaceAll(){
    
Undo.RecursiveChanging(Model);
    var 
textToFind textToSearch.Value;
    var 
replaceText textForReplace.Value;
    
//alert(textToFind);
    //alert(replaceText);
    
Model.forEach(function(obj){
        
obj.Name obj.Name.replace(textToFindreplaceText);
    });
    
Action.Commit();
}

var 
props Action.Properties;
var 
textToSearch props.NewString('Найти:');
var 
textForReplace props.NewString('Заменить на:');
props.NewSeparator();
var 
FindAllButton props.NewButton('Найти все');
FindAllButton.OnClick = function(){
    
FindAll();
};
props.NewSeparator();
var 
ReplaceAllButton props.NewButton('Заменить все');
ReplaceAllButton.OnClick = function(){
    
ReplaceAll();
};
props.NewSeparator();
var 
FinishButton props.NewButton('Закончить');
FinishButton.OnClick = function(){
    
Action.Finish();
};

Action.Continue(); 

[свернуть]

Uncle 10.04.2021 11:54

Цитата:

Сообщение от skromvit (Сообщение 507084)
Возможно этот вам подойдет:

Не совсем понял как оно работает. Можете инструкцию какую нибудь или видео показать?

skromvit 10.04.2021 12:09

Вложений: 1
Цитата:

Сообщение от Uncle (Сообщение 507087)
Не совсем понял как оно работает. Можете инструкцию какую нибудь или видео показать?

Там просто.
1. В поле "Найти" ввести текст который нужно найти, нажать ENTER.
2. Нажать "Найти все" - всё с эти названием подсветится.
3. В поле "Заменить на" ввести текст на который нужно заменить найденное, нажать ENTER.
4. Нажать "Заменить все".
5. Нажать закончить "Закончить".

Uncle 10.04.2021 12:26

Цитата:

Сообщение от skromvit (Сообщение 507088)
Там просто.

Да, вроде все отлично работает! Спасибо! Сколько я Вам должен? ). Можно в личку..

skromvit 10.04.2021 13:51

Цитата:

Сообщение от Uncle (Сообщение 507091)
Да, вроде все отлично работает! Спасибо! Сколько я Вам должен? ). Можно в личку..

Да о чем речь? Автор скрипта не я, откуда скачал уже и не помню:) Пользуйтесь на здоровье!

Uncle 10.04.2021 14:03

Цитата:

Сообщение от skromvit (Сообщение 507097)
Пользуйтесь на здоровье!

Спасибо! ). В любом случае, с Вашего позволения, перенесу в общую копилку


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

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