|
|
|
|
|
13.01.2014, 13:22
|
|
Скрипты. Готовые решения для БМ8-2024
Igor_482
VIP
Регистрация: 03.09.2008
Сообщений: 174
Сказал(а) спасибо: 34
Поблагодарили 794 раз(а) в 113 сообщениях
13.01.2014, 13:22
Рейтинг:
()
Этот раздел предназначен для размещения готовых скриптов.
Здесь находятся ТОЛЬКО готовые скрипты. Для обсуждения есть отдельная тема: Обсуждение готовых скриптов.
Авторам: - Давать уникальные названия скриптам (не совпадающие с названием уже выложенных скриптов, за исключением обновлений скрипта)
- Указывать работоспособность в разных версиях БМ.
- Общее описание работы скрипта.
- Если презентованный скрипт платный указывать стоимость, условия и контакты для приобретения.
Версии, указанные модератором, как прошедшие проверку:
8 - Демо-версия 8.0.7.9649
8н - "народная" 8.0.12.12765
9 - Демо-версия 9.0.8.18908
10 - Демо-версия 10.0.0.21602
Последний раз редактировалось AlexBolton; 03.03.2023 в 21:03..
|
Просмотров: 553832
|
13 пользователя(ей) сказали cпасибо:
|
|
30.08.2022, 01:58
|
#241
|
Пользователь
Регистрация: 19.02.2019
Адрес: На юге
Сообщений: 35
Сказал(а) спасибо: 21
Поблагодарили 154 раз(а) в 24 сообщениях
Вес репутации: 98
|
Поиск объектов в модели 1.7
Скрытый текст
v 1.0
Скрытый текст
Принцип работы: вводим в строку слово\букву\спец символы\цифры и жмем интер.Результат поиска: выделение объектов.
Галочки критериев поиска всегда включены, отключение\включение - обновляет список.
Нечувствителен к регистру.
(Есть косяк со скроллом, не обнуляется состояние, не критично)
Ищет:
Фурнитуру\сборки, панели, профиля.
Ищет по:
Имени, артикулу, длине, ширине, позиции.
В каком-то смысле может заменить штатный поисковик.
[свернуть]
v 1.3
Скрытый текст
+ Поиск по пользовательским свойствам(отключено по дефолту) - Из поиска по свойствам исключены булевые (true\false) - Свойство с булевым содержанием отображаются в найденных + Скрытие невыделенных объектов(отключено по дефолту) [свернуть]
[свернуть]
Обновление скрипта
+ Поиск тел по траектории(относится к профилям) - реализован поиск профилей(так и не понял почему не искал до этого) и тел по траектории по длине
Исправил механизм поиска свойств и выделения объектов
Приятного пользования!
Последний раз редактировалось Станислав Станилевич; 30.08.2022 в 03:02.
Причина: Оформление
|
|
|
12 пользователя(ей) сказали cпасибо:
|
|
05.09.2022, 13:39
|
#242
|
Пользователь
Регистрация: 19.02.2019
Адрес: На юге
Сообщений: 35
Сказал(а) спасибо: 21
Поблагодарили 154 раз(а) в 24 сообщениях
Вес репутации: 98
|
Буфер вершин
Смысл скрипта: Включение\отключение буфера вершин.
По факту - костыль, направлен на обход проблем(связаны напрямую с буфером) с:-отображение линий эластичности
-отображение лицевой стороны у материала
Скрипт поможет только пользователям beta-версии Базис.Мебельщик 2022
Принцип: выносим на панель скриптов, "таканье" меняет состояние буфера(вкл\выкл). В историю попадает запись о состоянии.
Никак не связан с настройками программы, при отключенном буфере скрипт работает, настройки программы возращают только состояние.
Скрипт - временный (в ТП обещали исправить эту проблему)
|
|
|
3 пользователя(ей) сказали cпасибо:
|
|
14.09.2022, 19:16
|
#243
|
VIP
Регистрация: 03.09.2008
Сообщений: 174
Сказал(а) спасибо: 34
Поблагодарили 794 раз(а) в 113 сообщениях
Вес репутации: 367
|
Advanced tools for professionals
Скрипт задания отступов от габаритной рамки эластичного фрагмента-фурнитуры. Унифицирован для всех версий БМ.
Код
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 30 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.
|
[свернуть]
Цитата:
Сообщение от demanus
Не могу докумекать как применять)
|
Видео применения скрипта и небольшое обновление кода.
Последний раз редактировалось Igor_482; 14.09.2022 в 21:01.
Причина: Размещение ссылки на видеоинструкцию и обновление кода скрипта.
|
|
|
6 пользователя(ей) сказали cпасибо:
|
|
17.10.2022, 07:24
|
#244
|
Местный
Регистрация: 11.04.2018
Адрес: г.Маркс
Сообщений: 166
Сказал(а) спасибо: 57
Поблагодарили 246 раз(а) в 46 сообщениях
Вес репутации: 140
|
Контур 3D (отрезок)
Поднималась тема, построение контура 3D (отрезок). Думаю решение нашлось. И информация, что можно сделать с векторами.
PHP код:
let p1 = GetPoint('Укажите первую точку');
let p2 = GetPoint('Укажите вторую точку');
let cont = AddContour();
cont.Name = 'Контур 3D';
let pV1 = new Vector(p1.x.toFixed(1), p1.y.toFixed(1), p1.z.toFixed(1)),
pV2 = new Vector(p1.x.toFixed(1), p2.y.toFixed(1), p1.z.toFixed(1)),
pV3 = new Vector(p2.x.toFixed(1), p2.y.toFixed(1), p2.z.toFixed(1)),
pV4 = new Vector(p2.x.toFixed(1), p1.y.toFixed(1), p2.z.toFixed(1));
v1 = pV1.subtract(pV2),
v2 = pV1.subtract(pV3);
let normal = v2.cross(v1);
cont.Orient(normal, v1);
cont.Position = pV1;
let pVector1 = cont.ToObject(pV1);
let pVector3 = cont.ToObject(pV3);
cont.Contour.AddLine(pVector1.x, pVector1.y,pVector3.x, pVector3.y);
cont.Build();
/////Это для информации какие есть варианты
/* Vector.prototype = {
negative: function () {
return new Vector(-this.x, -this.y, -this.z);
},
add: function (v) {
if (v instanceof Vector) return new Vector(this.x + v.x, this.y + v.y, this.z + v.z);
else return new Vector(this.x + v, this.y + v, this.z + v);
},
subtract: function (v) {
if (v instanceof Vector) return new Vector(this.x - v.x, this.y - v.y, this.z - v.z);
else return new Vector(this.x - v, this.y - v, this.z - v);
},
multiply: function (v) {
if (v instanceof Vector) return new Vector(this.x * v.x, this.y * v.y, this.z * v.z);
else return new Vector(this.x * v, this.y * v, this.z * v);
},
divide: function (v) {
if (v instanceof Vector) return new Vector(this.x / v.x, this.y / v.y, this.z / v.z);
else return new Vector(this.x / v, this.y / v, this.z / v);
},
equals: function (v) {
return this.x == v.x && this.y == v.y && this.z == v.z;
},
dot: function (v) {
return this.x * v.x + this.y * v.y + this.z * v.z;
},
cross: function (v) {
return new Vector(
this.y * v.z - this.z * v.y,
this.z * v.x - this.x * v.z,
this.x * v.y - this.y * v.x
);
},
length: function () {
return Math.sqrt(this.dot(this));
},
unit: function () {
return this.divide(this.length());
},
min: function () {
return Math.min(Math.min(this.x, this.y), this.z);
},
max: function () {
return Math.max(Math.max(this.x, this.y), this.z);
},
toAngles: function () {
return {
theta: Math.atan2(this.z, this.x),
phi: Math.asin(this.y / this.length())
};
},
toArray: function (n) {
return [this.x, this.y, this.z].slice(0, n || 3);
},
clone: function () {
return new Vector(this.x, this.y, this.z);
},
init: function (x, y, z) {
this.x = x; this.y = y; this.z = z;
return this;
}
}*/
|
|
|
3 пользователя(ей) сказали cпасибо:
|
|
29.11.2022, 13:55
|
#245
|
Пользователь
Регистрация: 03.12.2019
Сообщений: 88
Сказал(а) спасибо: 28
Поблагодарили 115 раз(а) в 34 сообщениях
Вес репутации: 85
|
Вертикальная фрезеровка на панелях (полоски, волны и т.п.)
Кому свежий скрипт, налетай, разбирай )
https://cloud.mail.ru/public/P7DG/iQtAf2Vwe
https://ibb.co/qjFQLmM
ЗЫ контуры можно использовать любые, в рамках разумного. выкладываю свой один, у всех они разные
Последний раз редактировалось Артем Валерьевич; 29.11.2022 в 14:42.
|
|
|
38 пользователя(ей) сказали cпасибо:
|
|
07.01.2023, 06:12
|
#246
|
Пользователь
Регистрация: 17.03.2014
Адрес: Санкт-Петербург
Сообщений: 34
Сказал(а) спасибо: 5
Поблагодарили 31 раз(а) в 13 сообщениях
Вес репутации: 133
|
Цитата:
Сообщение от sergio1982
8н
v3.70
Добил все свои хотелки.
+ Поле поддерживает ввод табуляций
+ Текст поддерживает начальные и конечные табуляции и пробелы
+ Текст поддерживает пустые строки
+ Шаблоны в поле ввода, а не в свойствах
+ Сноски - указатели на текст
+ Привязки сохраняются и редактируются
+ Авто повтор
+ Ракурс камеры можно вернуть к изначальному
+ Оформление - Крест
Текст.zip
https://youtu.be/8W37aCOGZrw
|
здравствуйте. не могли бы перезалить скрипт? ссылка не рабочая
|
|
|
25.02.2023, 13:32
|
#247
|
Местный
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 454
Сказал(а) спасибо: 243
Поблагодарили 1,097 раз(а) в 210 сообщениях
Вес репутации: 387
|
Решётка
Клиенты зачастили с заказом решёток на батареи. Йисесено каждому надо чо нить эдакое. Прямоугольнику вручную запарился рисовать.
В школу делали буквы в разброс.
В папку "DXF_Буквы" разными ТРАФАРЕТНЫМИ шрифтами написал буквы из арткама в dxf.
Конечно в папку можно сохранить любые dxf.
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 5 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.
|
Чуть не забыл: dxfы прогнать через базис и сохранить скриптом в архиве.
Сохраняет dxf панели в папку ЧПУ папки модели.
Последний раз редактировалось AlexBolton; 26.02.2023 в 12:27.
Причина: оформление - тег [php]
|
|
|
12 пользователя(ей) сказали cпасибо:
|
|
05.03.2023, 21:15
|
#248
|
Новичок
Регистрация: 22.12.2022
Сообщений: 13
Сказал(а) спасибо: 11
Поблагодарили 5 раз(а) в 1 сообщении
Вес репутации: 0
|
Цитата:
Сообщение от Slav
Цитата:
Сообщение от aov27
Очень странно нигде, не могу найти скрипт для выреза под ручку Gola. Подскажите где скачать можно ?
|
1. Бесплатно
2. Платно
ИМХО: Лично мне даром оно не нужно. Стандартными средствами я все делаю быстрее. Плюс рулят фрагменты -параметрические и заменяемые. Корпуса сделаны заранее с прорезями..
|
Спасибо, всё сам собрал по урокам из сети. вот пользуйтесь кому надо. Есть не доделки, такие как вырез паза, надо добавить на дно и левую боковину, кромка на фасаде не идёт. Но в любом случае, кому интересно сам добавит.
PHP код:
FileOptions = 'Настройки кухонный модуль.xml'; MakeProperties();
Action.Properties.Load(FileOptions); Action.OnFinish = function(){ Action.Properties.Save(FileOptions); }
function MakeProperties(){ // "Кнопки" Prop = Action.Properties; W = Prop.NewNumber('Ширина', 600); H = Prop.NewNumber('Высота', 820); OtstupSzadi = Prop.NewNumber('Отступ сзади', 20); OtstupSperedi = Prop.NewNumber('Отступ спереди', 20); HC = Prop.NewNumber('Высота цоколя',100); ZS = Prop.NewCombo('Задняя стенка','Да\nНет')
Materialy = Prop.NewGroup('Материалы') KromkaF = Materialy.NewButt('Кромка фасад'); KromkaV = Materialy.NewButt('Кромка внутри'); Konfirmat = Materialy.NewFurniture('Конфирмат') Matkorp = Materialy.NewMaterial('Материал корпуса'); FasadGroup = Prop.NewGroup('Фасад'); TipFasada = FasadGroup.NewCombo('Фасад', 'нет\nОбычный\nGola\nФасад TW5'); OtstupTop = FasadGroup.NewNumber('Отступ фасада сверху',3); OtstupLeft = FasadGroup.NewNumber('Отступ фасада слева',1.5); OtstupRight = FasadGroup.NewNumber('Отступ фасада справа',1.5);
CargaSperedi = Prop.NewCombo('Передняя царга', 'Горизонтально\nВертикально\nБез царги') CargaSzadi = Prop.NewCombo('Задняя царга', 'Горизонтально\nВертикально\nБез царги') PolkaVnutri = Prop.NewCombo('Полка', 'Да\nНет') OkBtn = Action.Properties.NewButton('построить'); };
OkBtn.OnClick = function(){ Make(); Action.Finish(); };
Prop.OnChange = function(){ Make(); };
function Make(){
DeleteNewObjects(); Matkorp.SetActive(); Thick = ActiveMaterial.Thickness; // "толщина панели"
LevBok = AddVertPanel (OtstupSzadi.Value,HC.Value+Thick,600-OtstupSperedi.Value,H.Value,0); LevBok.Name = "НМ Левая боковина" LevBok.TextureOrientation = TextureOrientation.Vertical LevBok.AddButt(KromkaF, 1) LevBok.AddButt(KromkaV,3) LevBok.AddButt(KromkaV, 2)
switch (TipFasada.ItemIndex){ // вырез под Gola левый бок case 2: { LBC = LevBok.Contour; VirezGolaLB = NewContour (); VirezGolaLB.AddRoundRect(LevBok.ContourWidth - 25.8, LevBok.ContourHeight-57, LevBok.ContourWidth+5, LevBok.ContourHeight+5,5); LBC.Subtraction(VirezGolaLB); break;
} } CutLevBok = LevBok.AddCut('Паз под ZS (4x6)'); CutLevBok.Trajectory.AddLine(10, 0, 10, H.Value - Thick); CutLevBok.Contour.AddRectangle(-10, 0, -6, 6)
LevBok.Build();
PravBok = AddVertPanel (OtstupSzadi.Value,HC.Value+Thick,600-OtstupSperedi.Value,H.Value,W.Value-Thick); PravBok.Name = "НМ Правая боковина" PravBok.TextureOrientation = TextureOrientation.Vertical PravBok.AddButt(KromkaF, 1) PravBok.AddButt(KromkaV, 3) PravBok.AddButt(KromkaV, 2)
switch (TipFasada.ItemIndex){ // вырез под Gola правый бок case 2: { PBC = PravBok.Contour; VirezGolaPB = NewContour (); VirezGolaPB.AddRoundRect(PravBok.ContourWidth - 25.8, PravBok.ContourHeight-57, PravBok.ContourWidth+5, PravBok.ContourHeight+5,5); PBC.Subtraction(VirezGolaPB); break;
} } PravBok.Build();
Dno = AddHorizPanel (0,OtstupSzadi.Value,W.Value,600-OtstupSperedi.Value,HC.Value); // "Дно" Dno.Name = "НМ Дно" Dno.TextureOrientation = TextureOrientation.Horizontal Dno.AddButt(KromkaV, 0) Dno.AddButt(KromkaV, 1) Dno.AddButt(KromkaF, 2) Dno.AddButt(KromkaV, 3) Dno.Build();
switch(PolkaVnutri.ItemIndex){ case 0:{ Polka = AddHorizPanel (Thick,OtstupSzadi.Value+20,W.Value-Thick,600-OtstupSperedi.Value-10,H.Value/2-Thick+50+Thick/2); // "полка" Polka.Name = "НМ Полка"; Polka.TextureOrientation = TextureOrientation.Horizontal; Polka.AddButt(KromkaF, 2); if(ZS.ItemsIndex == 1){Polka.AddButt(KromkaV, 0)}; //тогда кромка добавляется. Polka.Build(); break; }
}
switch(CargaSzadi.ItemIndex){ case 0:{ CargaZad = AddHorizPanel (Thick,OtstupSzadi.Value+20,W.Value-Thick,OtstupSzadi.Value+120,H.Value-Thick); // "царга задняя" CargaZad.Name = "НМ Царга передняя" CargaZad.TextureOrientation = TextureOrientation.Horizontal; CargaZad.AddButt(KromkaV, 2); CargaZad.AddButt(KromkaV, 0); CargaZad.Build(); break; } case 1:{ CargaZad = AddFrontPanel (Thick,H.Value,W.Value-Thick,H.Value-100,OtstupSzadi.Value+20); //"царга задняя" CargaZad.Name = "НМ Царга передняя" CargaZad.TextureOrientation = TextureOrientation.Horizontal; CargaZad.AddButt(KromkaV, 2); CargaZad.AddButt(KromkaV, 0); CargaZad.Build(); break; }
}
Nogka = OpenFurniture('C:\\Users\\admin\\Documents\\Bazis10\\Фурнитура\\Опоры и подпятники\\Сборки\\Ножка кух. 100мм клипса универсальная.fr3d'); Nogka.Mount1(Dno, 51.5, HC.Value, OtstupSzadi.Value+65.5, -90) Nogka.Mount1(Dno, 51.5, HC.Value, 600-OtstupSperedi.Value-83.5, -90) Nogka.Mount1(Dno, W.Value-51.5, HC.Value, OtstupSzadi.Value+65.5, 90) Nogka.Mount1(Dno, W.Value-51.5, HC.Value, 600-OtstupSperedi.Value-83.5, 90)
switch(CargaSperedi.ItemIndex){ case 0:{
// if(условие){код1}esle{код2}; // условие? код1; код2; TipFasada.ItemIndex == 2? CargaPered = AddHorizPanel (Thick,600-OtstupSperedi.Value-127,W.Value-Thick,600-OtstupSperedi.Value-25.8,H.Value-Thick): //"царга передняя отступ зп голу" CargaPered = AddHorizPanel (Thick,600-OtstupSperedi.Value-100,W.Value-Thick,600-OtstupSperedi.Value,H.Value-Thick); //"царга передняя горизонтально" CargaPered.Name = "НМ Царга задняя" CargaPered.TextureOrientation = TextureOrientation.Horizontal CargaPered.AddButt(KromkaF, 2) CargaPered.AddButt(KromkaV, 0) CargaPered.Build(); break; } case 1:{ CargaPered = AddFrontPanel (Thick,H.Value,W.Value-Thick,H.Value-100,600-OtstupSperedi.Value-Thick); //"царга фронтально" CargaPered.Name = "НМ Царга задняя" CargaPered.TextureOrientation = TextureOrientation.Horizontal CargaPered.AddButt(KromkaF, 2) CargaPered.AddButt(KromkaV, 0) CargaPered.Build(); break; }
}
switch(CargaSperedi.ItemIndex){ case 0:{
if(TipFasada.ItemIndex == 2){ Konfirmat.Value.Mount(CargaPered,LevBok,0,H.Value-Thick/2,600-OtstupSperedi.Value-76.4); Konfirmat.Value.Mount(CargaPered,PravBok,600,H.Value-Thick/2,600-OtstupSperedi.Value-76.4); }else{ Konfirmat.Value.Mount(CargaPered,LpevBok,0,H.Value-Thick/2,600-OtstupSperedi.Value-50); Konfirmat.Value.Mount(CargaPered,PravBok,600,H.Value-Thick/2,600-OtstupSperedi.Value-50); }
break; } case 1:{ Konfirmat.Value.Mount(CargaPered,LevBok,0,H.Value-50,600-OtstupSperedi.Value-50); Konfirmat.Value.Mount(CargaPered,PravBok,600,H.Value-50,600-OtstupSperedi.Value-50); break; }
}
switch(CargaSzadi.ItemIndex){ case 0:{ Konfirmat.Value.Mount(CargaZad,LevBok,0,H.Value-50,OtstupSzadi.Value+70); Konfirmat.Value.Mount(CargaZad,PravBok,W.Value-Thick,H.Value-Thick/2,OtstupSzadi.Value+70); break; } case 1:{ Konfirmat.Value.Mount(CargaZad,LevBok,0,H.Value-50,OtstupSzadi.Value+70); Konfirmat.Value.Mount(CargaZad,PravBok,W.Value-Thick,H.Value-50,OtstupSzadi.Value+70); break; }
}
switch(PolkaVnutri.ItemIndex){ case 0:{ Konfirmat.Value.Mount(Polka,LevBok,0,452,OtstupSzadi.Value+70); Konfirmat.Value.Mount(Polka,LevBok,0,452,600-OtstupSperedi.Value-50); Konfirmat.Value.Mount(Polka,PravBok,600,452,600-OtstupSperedi.Value-50); Konfirmat.Value.Mount(Polka,PravBok,600,452,OtstupSzadi.Value+70); break; } case 1:{ } }
switch(TipFasada.ItemIndex) { case 1:{ Fasad = AddFrontPanel(OtstupLeft.Value,HC.Value,W.Value-OtstupRight.Value,H.Value - OtstupTop.Value,600-OtstupSperedi.Value); Fasad.Name = 'Фасад'; // не работает Fasad.AddButt(Kromka2mm, 0); // не работает Fasad.AddButt(Kromka2mm, 1); // не работает Fasad.AddButt(Kromka2mm, 2); // не работает Fasad.AddButt(Kromka2mm, 3); Fasad.TextureOrientation = TextureOrientation.Vertical; Fasad.Build(); break; }
case 2:{
Fasad = AddFrontPanel(OtstupLeft.Value,HC.Value,W.Value-OtstupRight.Value,H.Value - OtstupTop.Value-36,600-OtstupSperedi.Value); Fasad.Name = 'Фасад'; // не работает Fasad.AddButt(Kromka2mm, 0); // не работает Fasad.AddButt(Kromka2mm, 1); // не работает Fasad.AddButt(Kromka2mm, 2); // не работает Fasad.AddButt(Kromka2mm, 3); Fasad.TextureOrientation = TextureOrientation.Vertical; Fasad.Build();
ActiveMaterial.Make('Профиль L-образный, горизонтальный KB92 A00-Серебро,100'); GolaL = AddExtrusion(); GolaL.Contour.Load('C:\\Users\\admin\\Documents\\Bazis10\\Контуры\\Gola L KB 92.frw'); GolaL.RotateY(90); //TW5.Thickness = 1000 GolaL.PositionX = OtstupLeft.Value; GolaL.PositionY = H.Value - OtstupTop.Value - 54; GolaL.PositionZ = 608 - OtstupSperedi.Value - 8; GolaL.Thickness = W.Value - OtstupRight.Value- OtstupLeft.Value; GolaL.Build();break;
}
case 3:{ Fasad = AddFrontPanel(OtstupLeft.Value,HC.Value,W.Value-OtstupRight.Value,H.Value - OtstupTop.Value - 31,600-OtstupSperedi.Value); Fasad.Name = 'Фасад'; // не работает Fasad.AddButt(Kromka2mm, 0); // не работает Fasad.AddButt(Kromka2mm, 1); // не работает Fasad.AddButt(Kromka2mm, 2); // не работает Fasad.AddButt(Kromka2mm, 3); Fasad.TextureOrientation = TextureOrientation.Vertical; Fasad.Build();
} CutFasad = Fasad.AddCut('Паз под TW5 (3x14)'); CutFasad.Trajectory.AddLine(0, Fasad.ContourHeight, Fasad.ContourWidth, Fasad.ContourHeight); CutFasad.Contour.AddRectangle(0, 10.5, -14, 7.5)
Fasad.Build();
ActiveMaterial.Make('Профиль-ручка TW5 A00 - Серебро', 1); TW5 = AddExtrusion(); TW5.Contour.Load('C:\\Users\\admin\\Documents\\Bazis10\\Контуры\\TW5.frw'); TW5.RotateY(90); //TW5.Thickness = 1000
TW5.PositionX = OtstupLeft.Value; TW5.PositionY = H.Value - OtstupTop.Value - 31; TW5.PositionZ = 608 - OtstupSperedi.Value; TW5.Thickness = W.Value - OtstupRight.Value- OtstupLeft.Value; TW5.Build(); break;
}
if(ZS.ItemIndex == 0){ // Установка задней стенки ActiveMaterial.Make('ХДФ лакированная Белая (2800*2070*3мм) Kronospan', 3) Zadst = AddFrontPanel (10, HC.Value+10, W.Value-10,H.Value,OtstupSzadi.Value+17); Zadst.Name = 'Задняя стенка'; Zadst.TextureOrientation = TextureOrientation.Vertical; };
Konfirmat.Value.Mount(LevBok,Dno,0,HC.Value,OtstupSzadi.Value+70); Konfirmat.Value.Mount(LevBok,Dno,0,HC.Value,600-OtstupSperedi.Value-50); Konfirmat.Value.Mount(PravBok,Dno,W.Value-Thick/2,HC.Value,600-OtstupSperedi.Value-50); Konfirmat.Value.Mount(PravBok,Dno,W.Value-Thick/2,HC.Value,OtstupSzadi.Value+70);
}; Make(); Action.Continue();
Никогда не плачу за то, что могу взять бесплатно.
Последний раз редактировалось AlexBolton; 05.03.2023 в 21:33.
Причина: Выбирайте соотвествующие темы раздела при публикации сообщений
|
|
|
5 пользователя(ей) сказали cпасибо:
|
|
06.03.2023, 03:07
|
#249
|
Местный
Регистрация: 30.11.2013
Адрес: Кишинев
Сообщений: 734
Сказал(а) спасибо: 1,529
Поблагодарили 884 раз(а) в 376 сообщениях
Вес репутации: 404
|
Замена материала панелей на произвольный
Скрипт может заменять наименование и толщину выделенных панелей (если есть выделенные) или всех панелей.
Если нет необходимости в замене толщины, то нужно изменить значение константы CHANGE_THICKNESS на false.
PHP код:
Undo.RecursiveChanging(Model);
let NewMaterialName; //новое наименование материала
let NewThickness; //новая толщина материала
const CHANGE_THICKNESS = true; //выводить запрос о смене толщины материала?
//функция запроса нового наименования материала
function AskMaterialName() {
NewMaterialName = prompt('Введите НАЗВАНИЕ материала:');
}
//функция запроса и проверки значения новой толщины панелей
function AskThickness() {
NewThickness = Number(prompt('Введите ТОЛЩИНУ материала (только положительное число):'));
if (!NewThickness || NewThickness < 0) {
AskThickness();
}
}
//функция перебора структурных объектов, кроме покупных изделий (сборок)
function GoThru(array, count) {
for (let i = 0; i < count; i++) {
let element = array[i];
if (element.List && !(element instanceof TFurnAsm)) {
GoThru(element, element.Count);
} else if (element instanceof TFurnPanel) {
element.MaterialName = NewMaterialName;
if (CHANGE_THICKNESS) element.Thickness = NewThickness;
if (element.Plastics.Count > 0) {
for (let i = 0; i < element.Plastics.Count; i++) {
let plastic = element.Plastics.Plastics[i];
plastic.Material = NewMaterialName;
if (CHANGE_THICKNESS) plastic.Thickness = NewThickness;
}
}
}
}
}
//замена наименования и толщины материала (при необходимости)
if (Model.SelectionCount > 0) {
AskMaterialName();
if (CHANGE_THICKNESS) AskThickness();
GoThru(Model.Selections, Model.SelectionCount);
//следующий строку кода необходимо закомментировать, если не нужно выводить запрос о снятии выделения после работы скрипта
if (confirm('Снять выделение?')) UnSelectAll();
} else {
let changeForAll = confirm('Нет выделенных объектов.\nЗаменить материал у всех панелей?');
if (changeForAll) {
AskMaterialName();
if (CHANGE_THICKNESS) AskThickness();
GoThru(Model, Model.Count);
} else {
Action.Cancel();
}
}
Model.Build();
Action.Finish();
|
|
|
10 пользователя(ей) сказали cпасибо:
|
|
14.03.2023, 14:23
|
#250
|
Местный
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 454
Сказал(а) спасибо: 243
Поблагодарили 1,097 раз(а) в 210 сообщениях
Вес репутации: 387
|
Линии
(ля тока не вручную эту фигню.)
1) выбираем несколько панелей( желательно лежащий в одной плоскости)
2) запускаем скрипт.
3) меняем количество линии.
4) по желанию тыкаем "ЕЩЁ".
Не идеально, но вроде сносно. Кто доделает буду признателен.
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 5 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.
|
|
|
|
8 пользователя(ей) сказали cпасибо:
|
|
|
|
|
Нижняя навигация
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Текущее время: 12:41. Часовой пояс GMT +3.
|