Перейти к содержанию
swell{d}

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

Рекомендуемые сообщения

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

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

вот так делал

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

Чертеж1.dwg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Изменено пользователем doctorraz

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

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

Drawing2.dwg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

img-2019-06-24-16-54-59.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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 для имитации выпадающего списка из исходников.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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;}

};

};

 

 

};

Изменено пользователем Ruyke

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Строка 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шт.)

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

ага

 

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

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

Изменено пользователем doctorraz

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

ага

 

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

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

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

 

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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


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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Изменено пользователем Mитька

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

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

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

Изменено пользователем dromandon

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Часто задают вопросы как заполнять список в 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

 

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

----

 

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

Изменено пользователем doctorraz

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...

×
×
  • Создать...