|
|
|
|
|
06.06.2017, 08:56
|
|
БАЗИС 10 - Скрипты
systland
VIP
Регистрация: 30.10.2007
Адрес: Москва
Сообщений: 565
Сказал(а) спасибо: 303
Поблагодарили 451 раз(а) в 189 сообщениях
06.06.2017, 08:56
Рейтинг:
()
Обмениваемся , задаем вопросы, отвечаем... Все, что касается скриптов в БМ 10 в этой теме.
Последний раз редактировалось systland; 26.12.2017 в 11:52..
|
Просмотров: 425336
|
21.03.2019, 17:52
|
#381
|
Новичок
Регистрация: 26.02.2019
Сообщений: 14
Сказал(а) спасибо: 7
Поблагодарили 3 раз(а) в 2 сообщениях
Вес репутации: 0
|
Кому интересно, вроде нашел параметр отвечающий за отрезки. Тут подсчет и решение для сметы.
Скрытый текст
PHP код:
if (Panel.Butts) { n=Panel.Butts.Count; //Количество кромок, но если кромка нанесена одним отрезком на радиусную деталь, считаем отдельно отрезки for (i=0; i<Panel.Butts.Count; i++){ //Анализ по кромкам на панели var butt = Panel.Butts.Butts[i]; var elem = Panel.Contour.Objects[butt.ElemIndex];//элемент контура, на котором кромка Result += (elem.ObjLength() + butt.Overhung)/1000;//Длина элемента контура + Значение свеса кромки if (Panel.Butts.Butts[i].CutIndex>=0) { //Поиск отрезков кромки otr=Panel.Butts.Butts[i].CutIndex+1; otr_cnt +=1; } } }
Result = Result/(n-(otr_cnt-otr));
[свернуть]
Последний раз редактировалось Miracle01; 22.03.2019 в 12:34.
|
|
|
2 пользователя(ей) сказали cпасибо:
|
|
25.03.2019, 15:19
|
#382
|
Новичок
Регистрация: 26.02.2019
Сообщений: 14
Сказал(а) спасибо: 7
Поблагодарили 3 раз(а) в 2 сообщениях
Вес репутации: 0
|
Подскажите, как на панели найти длину фрезерованных резов (завалов), как внутренних так и по контуру ?
|
|
|
04.04.2019, 19:04
|
#383
|
Пользователь
Регистрация: 02.12.2016
Сообщений: 84
Сказал(а) спасибо: 21
Поблагодарили 55 раз(а) в 27 сообщениях
Вес репутации: 109
|
Цитата:
Сообщение от Letos
Эластичность записана в параметрах объекта, но там дофига в отладчике покопаться надо, чтобы разобраться, откуда что доставать.
Вот пример, как получить ноду с описанием плоскостей эластичности:
PHP код:
var node = block.ParamSectionNode('Elastic', False); var planesNode = node.Find('Planes');
|
там какая то мазафака) большой и сложный объект и я не понял где и как искать. Поковырялся - безрезультатно(.
Если есть советы/решение:
- как найти параметры "эластика" (min/max по осям и шаг)?
- как найти сколько плоскостей на "координате"? (к примеру мне нужно определять на все ли три оси "навешан" эластик у модуля).
напишите пожалуйста.
P.S вопросы для интереса:
planesNode - это какой то большой класс через API видно ?
Базис на Дельфи написан? или C++ ?
Последний раз редактировалось IStiv; 04.04.2019 в 20:43.
|
|
|
05.04.2019, 10:51
|
#384
|
Местный
Регистрация: 30.11.2013
Адрес: Кишинев
Сообщений: 734
Сказал(а) спасибо: 1,529
Поблагодарили 884 раз(а) в 376 сообщениях
Вес репутации: 402
|
Цитата:
Сообщение от IStiv
Базис на Дельфи написан? или C++ ?
|
Насколько я знаю, написан на Дельфи.
Кто-нибудь знает как получить материал облицовки пласти? Второй день пытаюсь в отладчике найти и безрезультатно.
|
|
|
05.04.2019, 11:27
|
#385
|
Местный
Регистрация: 02.07.2011
Сообщений: 191
Сказал(а) спасибо: 93
Поблагодарили 105 раз(а) в 44 сообщениях
Вес репутации: 196
|
Цитата:
Сообщение от Ovsyanicov
Насколько я знаю, написан на Дельфи.
Кто-нибудь знает как получить материал облицовки пласти? Второй день пытаюсь в отладчике найти и безрезультатно.
|
obj.Plastics.Plastics[0].Material
|
|
|
3 пользователя(ей) сказали cпасибо:
|
|
05.04.2019, 12:40
|
#386
|
Местный
Регистрация: 30.11.2013
Адрес: Кишинев
Сообщений: 734
Сказал(а) спасибо: 1,529
Поблагодарили 884 раз(а) в 376 сообщениях
Вес репутации: 402
|
Цитата:
Сообщение от wizardpnz
obj.Plastics.Plastics[0].Material
|
Огромное спасибо! А я зациклился на PlasticsList.
|
|
|
08.04.2019, 19:07
|
#387
|
Пользователь
Регистрация: 02.12.2016
Сообщений: 84
Сказал(а) спасибо: 21
Поблагодарили 55 раз(а) в 27 сообщениях
Вес репутации: 109
|
Всем привет.
подскажите как правильно фурнитуру(ручку) на панели спозиционировать?
я так понимаю "ноль" панели зависит от того как ее технолог "крутил"?
Вообщем у меня есть X,Y и я знаю что их надо отмерять от нижнего левого угла.
нашел метод. но "ноль" то в панели , весьма условен..
может есть какой то правильный способ позиционирования ?)
PHP код:
/**
* Установить крепеж на плоскость панели
* @param panel
* @param x
* @param y
* @param z
* @param angle Угол (В градусах)
*/
Mount1(panel: Panel, x: number, y: number, z: number, angle: number): Object3;
Добавлено через 2 минуты
P.S. еще раз на всякий случай спрошу. есть ли тут кто писал скрипты под Салон?
|
|
|
09.04.2019, 10:00
|
#388
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
|
Цитата:
Сообщение от IStiv
Всем привет.
подскажите как правильно фурнитуру(ручку) на панели спозиционировать?
я так понимаю "ноль" панели зависит от того как ее технолог "крутил"?
Вообщем у меня есть X,Y и я знаю что их надо отмерять от нижнего левого угла.
нашел метод. но "ноль" то в панели , весьма условен..
может есть какой то правильный способ позиционирования ?)
PHP код:
/**
* Установить крепеж на плоскость панели
* @param panel
* @param x
* @param y
* @param z
* @param angle Угол (В градусах)
*/
Mount1(panel: Panel, x: number, y: number, z: number, angle: number): Object3;
|
Координаты x, y, z - глобальные координаты, куда, в теории, должен установиться крепёж. По факту, Базис корректирует координаты установки, чтобы крепёж ставился ровно.
Нижний левый угол фронтальной панели (в ГСК):
Код:
var corner = {
x: panel.GabMin.x,
y: panel.GabMin.y,
z: panel.GabMax.z //GabMax - спереди, GabMin - сзади
}
И, я так понял, вам останется только прибавить отступы по Х и У для получения точки позиционирования крепежа.
|
|
|
09.04.2019, 16:58
|
#389
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
|
Цитата:
Сообщение от IStiv
там какая то мазафака) большой и сложный объект и я не понял где и как искать. Поковырялся - безрезультатно(.
Если есть советы/решение:
- как найти параметры "эластика" (min/max по осям и шаг)?
- как найти сколько плоскостей на "координате"? (к примеру мне нужно определять на все ли три оси "навешан" эластик у модуля).
напишите пожалуйста.
|
Написал скрипт, который показывает чуть более расширенную информацию по эластичности:
Код
PHP код:
var props = Action.Properties;
var objName = props.NewString('Имя объекта');
var width = props.NewGroup('Ширина');
var height = props.NewGroup('Высота');
var depth = props.NewGroup('Глубина');
// Два массива для перебора значений по осям
var fields = [
'x',
'y',
'z'
]
var sizeProps = [
width,
height,
depth
]
var planes = props.NewGroup('Плоскости');
var vert = planes.NewNumber('Вертикальные');
vert.Tag = 0
var hor = planes.NewNumber('Горизонтальные');
hor.Tag = 1
var front = planes.NewNumber('Фронтальные');
front.Tag = 2
var axisGroups = [
vert,
hor,
front
];
// function CheckNode(node) {
// for (var i = 0; i < node.Count; i++) {
// var name = node.Nodes[i].Name;
// if (name) {
// }
// }
// }
//Добавление информации о плоскости
function AddPlane(node) {
var axis = node.FindNode('Axis');
var axisValue = axis ? axis.Value : 0;
//Ось плоскости
var planeGroup = axisGroups[axisValue].NewGroup('');
var pos = node.FindNode('Pos');
posValue = pos ? pos.Value : 0;
//Положение плоскости
planeGroup.NewNumber('Позиция', pos.Value);
var weight = node.FindNode('Weight');
if (weight) {
// вес плоскости
planeGroup.NewNumber('Вес', weight.Value);
}
}
// запись размера в числовое свойство оси
function AddSize(number, node, field){
var fieldNode = node.FindNode(field);
if (fieldNode){
number.Value = fieldNode.Value;
}
else
number.Value = 0;
}
//запись размера в числовые свойства осей
function AddSizes(node, name){
for (var i = 0; i < sizeProps.length; i++){
var num = sizeProps[i].NewNumber(name);
AddSize(num, node, fields[i]);
}
}
// заполнение информации об объекте
function FillObjectInfo(obj){
objName.Value = '';
width.Clear();
height.Clear();
depth.Clear();
vert.Clear();
hor.Clear();
front.Clear();
if (obj){
objName.Value = obj.Name;
var elastic = obj.ParamSectionNode('Elastic');
if (elastic){
var node = elastic.FindNode('AreaMin');
if (node){
AddSizes(node, 'Минимум');
}
node = elastic.FindNode('AreaMax');
if (node){
AddSizes(node, 'Максимум');
}
node = elastic.FindNode('AreaStep');
if (node){
AddSizes(node, 'Шаг');
}
var planes = elastic.FindNode('Planes');
if (planes){
for (var i = 0; i < planes.Count; i++){
AddPlane(planes.Nodes[i]);
}
}
}
else
alert('Объект не является эластичным блоком');
}
for (var i = 0; i < axisGroups.length; i++){
axisGroups[i].Value = axisGroups[i].Count;
axisGroups[i].Expanded = false;
}
}
props.NewButton('Исследовать').OnClick = function(){
FillObjectInfo(Model.Selected);
}
{
var obj = Model.Selected;
if (obj)
FillObjectInfo(obj);
}
Action.Continue();
Action.Hint = 'Выберите объект в структуре модели и нажмите кнопку "Исследовать"';
[свернуть]
Есть один косяк - если в TXBSNode содержится стандартное значение (0, false, ''), то этой ноды не существует.
|
|
|
5 пользователя(ей) сказали cпасибо:
|
|
10.04.2019, 15:38
|
#390
|
Пользователь
Регистрация: 02.12.2016
Сообщений: 84
Сказал(а) спасибо: 21
Поблагодарили 55 раз(а) в 27 сообщениях
Вес репутации: 109
|
Цитата:
Сообщение от Letos
Написал скрипт, который показывает чуть более расширенную информацию по эластичности
|
в очередной раз большое спасибо. без Ваших подсказок, я бы не продвинулся в решении задач.
|
|
|
|
|
|
Нижняя навигация
|
|
Опции темы |
|
Опции просмотра |
Линейный вид
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Текущее время: 02:21. Часовой пояс GMT +3.
|