Обсуждение скриптов в Системе Базис
Если вы не знаете, или не уверены, куда задавать вопрос по скриптам в Системе Базис, то эта тема для вас.
|
Цитата:
Код:
var artPos = panel.ArtPos; |
Цитата:
|
Цитата:
|
Цитата:
Код:
var obj = Model.Selected; |
Цитата:
Если данные о выбранной панели конструкции нельзя разместить в окне с моделью, какой смысл в дублировании панели "Свойства"? Дополню. Хотя вот сейчас получилось. Но всё же какое назначение данного скрипта? |
Цитата:
Цитата:
Единственное предположение о смысле этого скрипта: чтобы начинающий писатель скриптов мог понять, как достать из панели значения позиции и локальных габаритов. А уже на основе этих знаний можно писать скрипты посложнее и поосмысленней. |
Вложений: 1
Цитата:
Наверное, точность после запятой тоже можно свинтить какой-то командой. Вложение 125939 |
Цитата:
|
Цитата:
|
Как для кромки указать подрезку и размер припуска?
Butt.Material.Allowance = 0.5; Butt.Material.ClipPanel = true; пробую так, но результата нет вопрос закрыт. правильно так: Butt.Allowance = 0.5; Butt.ClipPanel = true; |
Цитата:
ПримерPHP код:
[свернуть] Этот код создает строковое поле, а список создается свойством DropDownMenu, в котором могут быть не только кнопки, но и группы (можно создавать иерархию), а также строковые, числовые и булевы поля. Каждый "элемент списка" имеет обработчик изменения элемента, в котором в строковое поле записывается название "элемента", сам "элемент" скрывается, а предыдущий выбранный (если был) снова становится видимым. |
Скрипты писать только начинаю.
Имею 2 переменные: DK.Hprm = Props.NewNumber("ВЫС ПРОЕМА"); и DK.Hdvr = Props.NewNumber("ВЫС ДВЕРИ"); DK.Hdvr.Value=DK.Hprm.Value-40; Как их связать так, чтобы при изменении значения в окне Hprm менялось значение в окне Hdvr? Пробовал через OnChange, но, видимо неправильно. Спасибо. |
Цитата:
Тут косяк с обновлением окна Hdvr. Если есть возможность, лучше делать на панели свойств, ибо они постабильнее работают. На самом деле OnChange - нормальный вариант, но OnValueChange - лучше. Вот примерный костыль для вашей ситуации: Код:
DK.Hprm.OnValueChange = function (){ |
Спасибо большое. Заработало.Как начинающему, с формами вообще не заморачиваться?
|
Цитата:
Подводя итоги: можете работать и со свойствами, и с формами - с чем нравится. А если что непонятно - пишите, вам расскажут, объяснят и помогут. |
Добрый день.В основной форме можно ли создать нов. диалог. окно(подформу),появляющееся при нажатии на
P.Button1 = Props.NewButton("Название"); P.Button1.SetLayout(10, 12, 100, 22); и пропадающее при нажатии OK, передавая изменения в основную форму? спасибо. |
Цитата:
ScriptMenu-Объект типа всплывающее или выпадающее меню PopupMenu-Всплывающее меню. DropDownMenu-Выпадающее меню. мозгов не хватает, как запустить |
Цитата:
PHP код:
|
Спасибо большое. 3 дня бился, но такое не осилил бы. Надеюсь, пока не осилил бы.
|
Редактирование контура скриптом
Не могу понять как редактировать панель через скрипт.
Выделить и определить какую сторону сделал, а как редактировать не пойму. В справке пример брал, но у меня выдает ошибку по функции. Спасибо https://ibb.co/d9hMZ7 |
Цитата:
|
Добрый день. В форме имею
Window1.Material1 = Props.NewMaterial("1я ДВЕРЬ"); и числовое окно,значение которого предполагалось будет зависеть от Window1.Material1.SetActive(); Window1.ThickMaterial1=Window1.AktiveMaterial.Thic kness; if(Window1.ThickMaterial1.Value==10){ Window1.BNapl1.Value=Window1.LGProf.Value+15; не получается.(не считает) Добавлено через 12 минут Другими словами, для выбора формулы мне нужно привязаться к толщине материала Спасибо. |
Цитата:
Код:
Window1.BNapl1.Layout.Top = Window1.BNapl1.Layout.Top |
Прошу прощения, еще раз прошу помощи.
Для выбора формулы мне нужно считать толщину активного материала из таблицы "используемый материал".При смене материала на материал с другой толщиной меняется формула. Добавлено через 4 минуты В моем коде Window1.Material1.OnChange=function(){ Window1.Material1.SetActive(); Window1.ThickMaterial1=Window1.ActiveMaterial.Thic kness; if(Window1.ThickMaterial1.Value==10){ Window1.BNapl1.Value=Window1.LGProf.Value+15; Window1.BNapl1.Layout.Top=Window1.BNapl1.Layout.To p; }; } указывает на ошибку в 3й строке Спасибо. Добавлено через 2 минуты Но, наверное,мой код вообще не то. |
Цитата:
Window1.ThickMaterial1 = ActiveMaterial.Thickness; И еще одна странная вещь в вашем коде. Это как раз то же самое присвоение. Судя по коду, Window1.ThickMaterial1 - это числовое поле. Но в "ошибочной" строке вы пытаетесь записать толщину материала в переменную этого поля, из-за чего скрипт будет работать неверно. Подробное пояснение, почемуПосле выполнения присвоения в третьей строке, в переменной Window1.ThickMaterial1 будет находиться число (16, например). Следующим шагом идет проверка на равенство значений Window1.ThickMaterial1.Value (то есть 16.Value) и 10. У переменной Window1.ThickMaterial1 числовое значение, у которого, в свою очередь, свойство Value отсутствует. В итоге Window1.ThickMaterial1.Value вернет undefined и условие будет выглядеть так: if (undefined == 10). В итоге, это условие не будет никогда верным, но из-за особенностей JS, оно не является ошибочным, поэтому скрипт продолжит работу. [свернуть] Выход из этой ситуации следующий: третью строку необходимо исправить, чтобы она выглядела так: Window1.ThickMaterial1.Value = ActiveMaterial.Thickness; P.S На будущее: если скрипт выдает ошибку, связанную с вашим вопросом, неплохо было бы и текст ошибки тоже добавлять, ведь в ней сказано почти все, что нужно для поиска ошибки и причин ее возникновения. |
Цитата:
Спасибо большое. С Вашими поправками Цитата:
Цитата:
Вообще-то, мне это поле не нужно и в своем варианте Window1.ThickMaterial1.=ActiveMaterial.Thickness; я предполагал, что ThickMaterial1-переменная, принимающая значение толщины активного материала.А уже от этой переменной зависило if(Window1.ThickMaterial1.Value==10){ Window1.BNapl1.Value=Window1.LGProf.Value+15; Window1.BNapl1.Layout.Top=Window1.BNapl1.Layout.To p; Возможно ли обойтись без поля? Если нет,я его скрою, присвоив Visible-false Еще раз позволю себе повторить задачу,которую хотелось бы решить. 1)Объявить переменную,принимающую значение толщины активного материала. 2)при изменении материала,если толщина активного материала=10,запустить формулу Window1.BNapl1.Value=Window1.LGProf.Value+15; Window1.BNapl1.Layout.Top=Window1.BNapl1.Layout.To p; которая выводит результат вычисления в окно BNapl1. |
Цитата:
Код:
var thick = ActiveMaterial.Thickness; |
Спасибо огромное. Все заработало как хотелось.
Теорию я читаю,не просто тупо прошу выдать ответ.Просто доходит не так быстро как хотелось бы. Еще раз спасибо. Удачи. |
Добрый день.
Есть ли возможность имортировать через скрипт в Базис 8 данные из формата csv, например артикул1;длина1;ширина1;колво1 артикул2;длина2;ширина2;колво2 ... После импорта будут созданы панели с этими параметрами. |
Цитата:
PHP код:
|
Цитата:
|
Цитата:
|
Огромное спасибо. *THUMBS UP*
Все работает на 99% - читает из файла и создает детали, но почему-то размером 2х2 :) Алерты перед AddVertPanel показывают правильные цифры, разбираюсь. |
Нашел проблему.
Значения размеров записывались в переменные как строка. Вот такой все заработало: PHP код:
|
Вложений: 1
Подскажите пож.(не нашел в мануале): как назначить ориентацию текстуры для создаваемой панели HPanel=AddHorizPanel(...) ?
и еще такой вопрос: кромку на панель ставлю так: for(var side_butt=0; side_butt < 4; side_butt++){ Butt_Material = arr[row][4+side_butt*3]; if (Butt_Material != '') { Butt = HPanel.Butts.Add(); Butt.Material = arr[row][4+side_butt*3]; Butt.Material.Allowance = 0.5; Butt.Material.ClipPanel = true; Butt.ElemIndex = side_butt; Butt.Sign = arr[row][6+side_butt*3]; Butt.Thickness = Number(arr[row][5+side_butt*3],10); } } } в итоге толщина кромки в БМ не попадает, хотя в исходнике(строка CSV) толщина присутствует соответственно, что делаю неправильно? |
Цитата:
Цитата:
1. Вот эти две строки мне не понятны: Код:
Butt.Material.Allowance = 0.5; Код:
Butt.Allowance = 0.5; Код:
alert(Number(arr[row][5+side_butt*3],10)) Кстати, с дробными числами есть еще одна неприятная вещь: если в строке разделитель дроби - запятая, а не точка, то такое преобразование вернет Nan. Возможно, в этом проблема. P.S. И, напоследок, пара советов:
|
Цитата:
Сбило с толку, что в материале толщина проставляется, а в кромке - нет. А там как раз целочисленное значение просто. |
Цитата:
|
Вложений: 1
это можно сделать в смете без скриптов назначив каждому материалу сопутствующий материал вес
добавил сопутствующий материал МАССА 1кг на 1кв м зеркала |
Текущее время: 08:47. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
© 2007-2023 PROMEBEL