Jump to content

параметрические объекты СПДС


Recommended Posts

>>А там логика какая тогда должна быть? 2 исполнения объеденить в одном объекте? линия и круг?

зачем так усложнять? одно исполнение, выноску таскаешь (как трубу) а координаты пересечения вычисляются в скрипте и по ним строится.

вот так делал

что должна уметь твоя выноска, кроме того, что она выноска?

Чертеж1.dwg

  • Like 2
Link to comment
Share on other sites

По сути это параметрический объект, в котором будут табличные параметры датчиков и позиция, только с графикой не могу разобраться.

Должен быть круг, по середине убираемая палочка во весь диаметр. и палочка (линия выноска) которая будет не от центра а от края круга, но направление может быть от разных сторон, как бы я за нее тяну она меняет длину и направление, но как бы то что в пределах круга ее не видно, только снаружи.

Link to comment
Share on other sites

По сути это параметрический объект, в котором будут табличные параметры датчиков и позиция, только с графикой не могу разобраться.

Должен быть круг, по середине убираемая палочка во весь диаметр. и палочка (линия выноска) которая будет не от центра а от края круга, но направление может быть от разных сторон, как бы я за нее тяну она меняет длину и направление, но как бы то что в пределах круга ее не видно, только снаружи.

табличные параметры будут храниться в выноске или руками или с другого объекта?

взаимодействие с другими объектами?

маркер из #776 не устраивает?

Edited by doctorraz
Link to comment
Share on other sites

По сути это параметрический объект, в котором будут табличные параметры датчиков и позиция, только с графикой не могу разобраться.

Должен быть круг, по середине убираемая палочка во весь диаметр. и палочка (линия выноска) которая будет не от центра а от края круга, но направление может быть от разных сторон, как бы я за нее тяну она меняет длину и направление, но как бы то что в пределах круга ее не видно, только снаружи.

табличные параметры будут храниться в выноске или руками или с другого объекта?

взаимодействие с другими объектами?

маркер из #776 не устраивает?

У него выносная линия не такая как мне нужна (она только слева или справа)

Гляньте как я хочу реалиовать (см. файл).

Drawing2.dwg

Link to comment
Share on other sites

Слаб я в арифметике.

Работает нормально только от "0" до Pi. Дальше надо исполнение менять если Y

Все примерно понял, Спасибо. Правда не понимаю как работает подавление той невидимой части.

  • Like 1
Link to comment
Share on other sites

На линию назначен "Рабочий объект"

Мой коллега, отягощённый знаниями арифметики, подверг меня обструкции.

Всё гениальное просто и не нужны никакие "рабочие объекты"

img-2019-06-24-17-46-52.png

Соответственно:

function SetGripPoint {
NGrip = 2;
pntGrip0 = pntOrigin;

pntGrip1 = pntGrip0+vecDirection*(l*cos(alfa))+vecPlane*(l*sin(alfa));
};
function OnMoveGripPoint{
if (NMovingGrip == 0)
 pntOrigin = pntGrip0;
if ( NMovingGrip==1) {

  x=-(pntGrip1-Plane(pntOrigin,Vector(WP1)))/rScl;
  y=-(pntGrip1-Plane(pntOrigin,Vector(WP2)))/rScl;
l=sqrt(x*x+y*y);
if x>0 {
alfa=atg(y/x)
};
if x==0{
if y>0 {alfa=90}
else {alfa=-90}
};
if x<0{
if y<0
{alfa=-180+atg(y/x)}
else {alfa=180+atg(y/x)}
};
};

И для удовлетворения внутреннего "Перфекциониста"

function OnInitSelect {
 strPromt="Укажите положение звена";
};

Кривошип.zip

  • Like 2
Link to comment
Share on other sites

На линию назначен "Рабочий объект"

Мой коллега, отягощённый знаниями арифметики, подверг меня обструкции.

Всё гениальное просто и не нужны никакие "рабочие объекты"

post-23-0-56191000-1561376831.png

Соответственно:

function SetGripPoint {
NGrip = 2;
pntGrip0 = pntOrigin;

pntGrip1 = pntGrip0+vecDirection*(l*cos(alfa))+vecPlane*(l*sin(alfa));
};
function OnMoveGripPoint{
if (NMovingGrip == 0)
 pntOrigin = pntGrip0;
if ( NMovingGrip==1) {

  x=-(pntGrip1-Plane(pntOrigin,Vector(WP1)))/rScl;
  y=-(pntGrip1-Plane(pntOrigin,Vector(WP2)))/rScl;
l=sqrt(x*x+y*y);
if x>0 {
alfa=atg(y/x)
};
if x==0{
if y>0 {alfa=90}
else {alfa=-90}
};
if x<0{
if y<0
{alfa=-180+atg(y/x)}
else {alfa=180+atg(y/x)}
};
};

И для удовлетворения внутреннего "Перфекциониста"

function OnInitSelect {
 strPromt="Укажите положение звена";
};

 

А для пущего удовольствия ещё и контекстную менюшку из #723 для имитации выпадающего списка из исходников.

  • Like 1
Link to comment
Share on other sites

На линию назначен "Рабочий объект"

Мой коллега, отягощённый знаниями арифметики, подверг меня обструкции.

Всё гениальное просто и не нужны никакие "рабочие объекты"

img-2019-06-24-17-46-52.png

Соответственно:

function SetGripPoint {
NGrip = 2;
pntGrip0 = pntOrigin;

pntGrip1 = pntGrip0+vecDirection*(l*cos(alfa))+vecPlane*(l*sin(alfa));
};
function OnMoveGripPoint{
if (NMovingGrip == 0)
 pntOrigin = pntGrip0;
if ( NMovingGrip==1) {

  x=-(pntGrip1-Plane(pntOrigin,Vector(WP1)))/rScl;
  y=-(pntGrip1-Plane(pntOrigin,Vector(WP2)))/rScl;
l=sqrt(x*x+y*y);
if x>0 {
alfa=atg(y/x)
};
if x==0{
if y>0 {alfa=90}
else {alfa=-90}
};
if x<0{
if y<0
{alfa=-180+atg(y/x)}
else {alfa=180+atg(y/x)}
};
};

И для удовлетворения внутреннего "Перфекциониста"

function OnInitSelect {
 strPromt="Укажите положение звена";
};

Огоо вот это класс. Спасибо.

Пробую в этом скрипте реализовать шаг для угла, alfastep = 45;

Вписываю в скрипт шаг и он не хочет на 90, 270 градусах останавливаться.

 

function OnMoveGripPoint{

if (NMovingGrip == 0)

pntOrigin = pntGrip0;

if ( NMovingGrip==1) {

 

x=-(pntGrip1-Plane(pntOrigin,Vector(WP1)))/rScl;

y=-(pntGrip1-Plane(pntOrigin,Vector(WP2)))/rScl;

l=sqrt(x*x+y*y);

if x>0 {

alfa=int(atg(y/x)/alfastep)*alfastep;

};

if x==0{

if y>0 {alfa=90}

else {alfa=-90}

};

if x

if y

{alfa=-180+int(atg(y/x)/alfastep)*alfastep;}

else {alfa=180+int(atg(y/x)/alfastep)*alfastep;}

};

};

 

 

};

Edited by Ruyke
Link to comment
Share on other sites

Вот у меня есть таблица с отчетом параметрических объектов, и допустим собирает следующее:

(столбцы обозначены скобками)

Строка 1: (QF-1) (Автоматический выключатель 6 А) (1шт.)

Строка 2: (QF-2) (Автоматический выключатель 6 А) (1шт.)

Строка 3: (QF-3) (Автоматический выключатель 10 А) (1шт.)

 

Если я группирую по второму столбцу то у меня получается следующее:

Строка 1: (QF-1QF-2) (Автоматический выключатель 6 А) (2шт.)

Строка 2: (QF-3) (Автоматический выключатель 10 А) (1шт.)

 

А нужно чтобы через запитую он прописывал первый столбец если там различаются позиции.

Так можно сделать?

Link to comment
Share on other sites

>>Так можно сделать?

ага

 

=sum(Object.POZIC +iff(index==Count();"";",
"))

POZIC -это свойство... QF-1 QF-2 итд

Edited by doctorraz
  • Like 1
Link to comment
Share on other sites

>>Так можно сделать?

ага

 

=sum(Object.POZIC +iff(index==Count();"";",
"))

POZIC -это свойство... QF-1 QF-2 итд

Ого, вот спасибо! Класс.

 

P.S. Знаю что запросы слишком велики, но за спрос же не поджарят))))

А можно ли сделать чтобы например если у меня их 8 штук подряд? чтобы было QF-1 - QF-8? :)

Я понимаю что тут логика более сложная, но вдруг кто делал так :)

Link to comment
Share on other sites

чтобы было QF-1 - QF-8? :)

А по факту нужно получить такое?

QF-1 - QF-8; QF-11 - QF-18; QF-21 - QF-28 и т.д.

Я так не умею. Похоже что существующие алгоритмы этого не смогут реализовать.


Вот зря вы все инструменты в одной теме обсуждаете. Уже и до таблиц добрались

  • Like 1
Link to comment
Share on other sites

Вот зря вы все инструменты в одной теме обсуждаете. Уже и до таблиц добрались

 

Их давно пора объединить в отдельном форуме или теме под грифом "Автоматизация". Они ж все связаны друг с другом часто. Часто ж тут как бывает: есть вопрос - есть 3-4 варианта решения: параметрика, маркеры, таблицы и, допустим, VBA. Нет же смысла разбивать диалог на 4 отдельных темы... Всё в любом случае обсуждается там, где поднялась тема. А поднимается она чаще всего тут. :rolleyes:

Edited by Mитька
  • Like 4
Link to comment
Share on other sites

Ребят, такого рода вопрос, может я чего не знаю,

Параметрический объект возможно завязать на полилинии/отрезке/штриховке?

Т.е. вот у меня есть параметрический объект армирования по площади. В нём форма, где есть пункт - площадь. Там я жму кнопочку - взять с объекта - и выбираю полилинию нужную.

Всё хорошо, цифра нужная ставится, всё считаются.

Но я, допустим, хочу поменять контур полилинии. Площадь полилинии меняется, но площадь в объекте приходится менять вручную..

Может как-то можно реализовать эту связь, чтобы было автоматически?

Через группы такое возможно? Или может где-то внутри самого объекта можно что-то прописать?)

Link to comment
Share on other sites

Но я, допустим, хочу поменять контур полилинии. Площадь полилинии меняется, но площадь в объекте приходится менять вручную..

Может как-то можно реализовать эту связь, чтобы было автоматически?

Такая связь реализована в Универсальном маркере. Его можно вставлять в группе объектов.

http://www.youtube.com/watch?v=yJIxJu25hHY&feature=youtu.be

  • Like 1
Link to comment
Share on other sites

Такая связь реализована в Универсальном маркере. Его можно вставлять в группе объектов.

ну меня интересуют параметрические объекты)

Не делать же мне параметрический объект, на него маркер, и это всё в группу)

Link to comment
Share on other sites

ну меня интересуют параметрические объекты)

Под объектами Базы Данных подразумеваются объектв которые легко и просто поддаются "параметризации". Идеологически - это инструменты для "Проектирования". "Кубики", из которых можно складывать конструкцию.

Маркеры, Шаблоны Таблицы, это инструменты оформления и сбора информации.

Тащить в мастер объектов инструмент описания зависимостей между свойствами объекта и свойствами примитивово платформы? Сложно и не востребовано оправдано.

Сугубо личное мнение.

  • Like 1
Link to comment
Share on other sites

Под объектами Базы Данных подразумеваются объектв которые легко и просто поддаются "параметризации". Идеологически - это инструменты для "Проектирования". "Кубики", из которых можно складывать конструкцию.

Маркеры, Шаблоны Таблицы, это инструменты оформления и сбора информации.

Тащить в мастер объектов инструмент описания зависимостей между свойствами объекта и свойствами примитивов платформы? Сложно и не востребовано оправдано.

Сугубо личное мнение.

Так я и не спорю)

Просто спросил, может есть способ как-то завязать объект базы на примитиве платформы)

Просто группами мало пользовался, но, как показалось, через группы нельзя)

На нет и суда нет, как говорится))

Edited by dromandon
  • Like 1
Link to comment
Share on other sites

  • 1 month later...

Часто задают вопросы как заполнять список в comboBox из скрипта. Как правило на вопрос: "Зачем нужно именно так" - ответа нет, но вот один пользователь захотел "Управлять содержимым списка" в зависимости от "Управляющего параметра".

 

Есть разные возможности для заполнения списка.

 

http://www.youtube.com/watch?v=pQ7OQIb5wuY&list=PLxzNmJ3Maam7pWN5KD8NbMmYrZQbNRlhD

 

с помощью Мастера скриптов. Одновременно создаем сам список (radio) и приравниваем значение параметра.

Скрипт получается автоматически и в нужных разделах uniDialog появятся нужные comboBox (radio1 & radio2)
//Список comboBox1
if(radio1 == 0) { T=275; }
if(radio1 == 1) { T=290; }
if(radio1 == 2) { T=310; }
if(radio1 == 3) { T=650; }
//Список comboBox2
if(radio2 == 0) { P1=200; }
if(radio2 == 1) { P1=400; }
if(radio2 == 2) { P1=665; }
if(radio2 == 3) { P1=800; }[/font][/color]
[color=#0D0D0D][font=Roboto, Arial, sans-serif]

 

RADIO,
 //comboBox1
radio1,"Худая", "Нормальная", "Пышная", "Да ну её нафиг:-)",
 //comboBox2
radio2,"Mini", "Midle", "Maxi", "IGIL", [/font][/color]
[color=#0D0D0D][font=Roboto, Arial, sans-serif]

Есть возможность создавать значение списка из скрипта (дословно: как в Excel).

Для этого, в function OnDialogChanged добавляем Form.combobox1.Count = и добавляем список нужных значений Form.combobox1.Items[1]

При этом сам список и количество строк в нем может вычисляться от другой переменной

Поля со списком (comboBox2, combobox2, combobox4) заполнены обычным способом и им всем присвоена та же переменная rT1 что и для combobox1

В зависимости от значения переменной rT, значение Form.combobox2.Visible = TRUE; для comboBox2, combobox2, combobox4 меняется.
function OnDialogChanged
{
If rT=="Материал" {  [/font][/color]
[color=#0D0D0D][font=Roboto, Arial, sans-serif]Form.combobox1.Count = 5;

Form.combobox1.Items[1] = "Чугун";
Form.combobox1.Items[2] = "Бронза";
Form.combobox1.Items[3] = "Латунь";
Form.combobox1.Items[4] = "Медь";
Form.combobox1.Items[5] = "Сталь";
Form.combobox2.Visible = TRUE;
Form.combobox3.Visible = FALSE;
Form.combobox4.Visible = FALSE;
};
If rT=="Состояние" {
Form.combobox1.Count = 3;

Form.combobox1.Items[1] = "Твёрдый";
Form.combobox1.Items[2] = "Жидкий";
Form.combobox1.Items[3] = "ГАЗООБРАЗНЫЙ";
Form.combobox2.Visible = FALSE;
Form.combobox3.Visible = TRUE;
Form.combobox4.Visible = FALSE;
};
If rT=="Цвет" {
Form.combobox1.Count = 7;[/font][/color]
[color=#0D0D0D][font=Roboto, Arial, sans-serif]Form.combobox1.Items[1] = "Красный";
Form.combobox1.Items[2] = "Оранжевый";
Form.combobox1.Items[3] = "Жёлтый";
Form.combobox1.Items[4] = "Зелёный";
Form.combobox1.Items[5] = "Голубой";
Form.combobox1.Items[6] = "Синий";
Form.combobox1.Items[7] = "Фиолетовый";
Form.combobox2.Visible = FALSE;
Form.combobox3.Visible = FALSE;
Form.combobox4.Visible = TRUE;

};
};[/font][/color]
[color=#0D0D0D][font=Roboto, Arial, sans-serif]

Проверяем работу контролов на пользовательской форме и на чертеже

Выравниваем comboBox2, combobox2, combobox4 на пользовательской форме

ComboBox ListValue.zip

  • Like 5
Link to comment
Share on other sites

И, что б два раза не вставать, еще про использование списков в разных объектах.

  • Универсальный маркер

  • Переменные на пользовательской форме табличного отчёта

  • Пользовательская сортировка по колонке

http://www.youtube.com/watch?v=rIrYCotafFU

  • Like 4
Link to comment
Share on other sites

  • 2 weeks later...

Подскажите кто-нибудь пожалуйста.

Хочу в одном из объектов создать возможность ввода площади либо в м2, либо в мм2. Но чтобы обе величины отображались и менялись в зависимости друг от друга.

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

С формой вроде получилось разобраться, как сделать подобное.

У меня затуп в OnChangeParameters - что там надо написать?

 

Может запутано написал..

Короче: две строчки, обе активные - меняешь одну, должна меняться и вторая (и быть равной = первая*1000000)

и наоборот - меняешь вторую, меняется и первая (и становится равной = вторая/1000000)

В форме я данное реализовал, помогите пожалуйста теперь реализовать это, при смене значения через свойства..)

Перевод единиц 1.zip

Link to comment
Share on other sites

в OnChangeParameters делаешь проверку на new первого параметра.. если изменился присваиваешь ему значение new и идешь на пересчет для второго аналогично

----

 

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

Edited by doctorraz
  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Tell a friend

    Love Официальный форум компании Нанософт Разработка? Tell a friend!
×
×
  • Create New...