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

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

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

А в теле самой функции тогда что писать?

Наверное можно там и вычислить

Rsumm = Rsumm_old + R;

Xsumm = Xsumm_old + X;

Я же не вижу всего скрипта :-(

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


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

>>В форме получается настроить правильное отображение, если я из OnMakeParameter скопирую ту же формулу в OnChangeDialog

вынеси формулу в отдельную функцию и из функций OnMakeParameter , "OnChangeDialog" вызывай ее

посмотри в справке какие стандартные функции по какому событию вызываются и в каком порядке

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

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


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

Спасибо попробую!

А еще не подскажете, как именно передать параметр при подключаеии (не взять зависимость а передать чтоли)?

Ну вот подключаю я гайку к блоту (а не наоборот, и вот если у меня гайка большего диаметра то при присоединении её к болту,она передавать должна свой диаметр и болт соответственно подстраивает себя на такой же диаметр.

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


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

но один маленький затык... какое событие в скрипте будет обновлять координату при зеркалировании?

 

В моём неподтвержденном экспериментами представлении - абсолютно любое редактирование. Пока объект не редактируется, его зеркальность меня не колышет, для себя самого он по-прежнему неотзеркаленный. Как только он начинает редактироваться (будь то ручки, диалог, форма или перевставка), происходит проверка и как следствие - изменение геометрии. Как-то так... Но это я ещё потестирую.

 

В итоге жизнь заставила что-то с этим сделать, кто-то у нас понарисовал отраженными объектами с текстом хренову гору материала, и пришлось убить вопрос.

Не стал морочиться с автоматикой, сделал вручную:

Добавил 2 переменные "Отзеркалить по X" и "По Y" для работы из Свойств и 2 рабочих плоскости из точки вставки. При смене значения 0 на любое другое, объект зеркалится вокруг оси, а переменная возвращается обратно в 0.

Поскольку целевые объекты подразумевают только расположение по X и Y без поворотов, то проверка на то "отражен объект сейчас извне или нет" простая: по значению угла между рабочими плоскостями и осями чертежа. Да, можно и усложнить, но для локального исправления ошибок одной кнопкой мне пока хватит:

function OnChangeParameters {
	if(new.mirx!=mirx){
xPnt1=pntOrigin:x;
vecDirection=-vecDirection;
WP1=Plane(pntOrigin,vecDirection);
q=angleTwoPi(vector(1,0,0);vector(WP1));
if (q==0) pntOrigin:x = xPnt1-x;
if (q==180) pntOrigin:x = xPnt1+x;
mirx=0
};

if(new.miry!=miry){
xPnt1=pntOrigin:y;
vecPlane=-vecPlane;
WP2=Plane(pntOrigin,vecPlane);
q=angleTwoPi(vector(0,1,0);vector(WP2));
if (q==0) pntOrigin:y = xPnt1-y;
if (q==180) pntOrigin:y = xPnt1+y;
miry=0
};
};

 

Вдруг кому пригодится.

 

UPD: Хотя сейчас понимаю, что именно для исправления ошибок, проверку "отражен объект сейчас извне или нет" надо проводить ДО отзеркаливания, и если проверка проходит, то просто НЕ зеркалить объект. Это позволит не искать кривые объекты, а просто выделить всё и нажав 2 кнопки одну кнопку, исправить ошибки там, где они есть.

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

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


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

И на выходе получить вот такое:

if(new.mirx!=mirx){
 xPnt1=pntOrigin:x;
 yPnt1=pntOrigin:y;
 q1=angleTwoPi(vector(1,0,0);vector(WP1));
 if (q1==180) {
  pntOrigin:x = xPnt1-x;
  vecDirection=-vecDirection;
  WP1=Plane(pntOrigin,vecDirection)
  };
 q2=angleTwoPi(vector(0,1,0);vector(WP2));
 if (q2==180) {
  pntOrigin:y = yPnt1-y;
  vecPlane=-vecPlane;
  WP2=Plane(pntOrigin,vecPlane)
  };
 mirx=0;

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


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

А не подскажете, как привязать таблицу к Объекту спдс? Ну вот при вставке какого нибудь шаблона таблицы из базы (Экспликации например) она может жестко привязаться к формату, так что потом не удалишь без удаления формата. Как сделать так же только к какому то другому объекту? Не нашел видео о привязке таблице геометрически при вставке.

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


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

так что потом не удалишь без удаления формата.

Выбрать в таблицу и в контекстном меню указать "Отвязать формат"

img-2019-06-17-10-30-35.png

Как сделать так же только к какому то другому объекту?

Нельзя.

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


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

так что потом не удалишь без удаления формата.

Выбрать в таблицу и в контекстном меню указать "Отвязать формат"

img-2019-06-17-10-30-35.png

Как сделать так же только к какому то другому объекту?

Нельзя.

Ясно спасибо.

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


Ссылка на сообщение
Поделиться на другие сайты
Спасибо попробую! А еще не подскажете, как именно передать параметр при подключаеии (не взять зависимость а передать чтоли)? Ну вот подключаю я гайку к блоту (а не наоборот, и вот если у меня гайка большего диаметра то при присоединении её к болту,она передавать должна свой диаметр и болт соответственно подстраивает себя на такой же диаметр.

 

Сам себе отвечу :)

Для этого необходимо использовать функцию OnAddObject (стандартная функция). И там прописать какие параметры взять из объекта, который подключается к данному. (Вдруг кому пригодится, очень полезная как оказалась функция).

 

И второй вопрос. Не могу понять зачем нужна функция OnUpdateGraphics. В описании в справке, ни в вордовском документе про нее ни слова.

 

И третий. Как можно в скрипте вытянуть индекс плоскости, к которой совершено подключение? Вот у меня есть объект у него есть плоскости WP2, WP3, WP4, WP5, WP6. И к нему подключаются несколько других объектов. Подключаются к плоскостям WP3, WP4, WP6. И вот как мне вытянуть названия плоскостей этих. Если выбрать объект и нажать "Управление зависимостями" там будет список состоявшихся зависимостей и к каким его плоскостям какие объекты подключены. Вот мне нужно вытянуть номера (или хотяб названия) этих плоскостей.

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

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


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

Еще раз доброго дня. Подскажите не могу сообразить.

Есть 2 файла (1 - шина (Bus) к которая создает подключаемые плоскости и массив переменных Pn), (2 - коннектор (Connector), который подключается к одной из плоскостей шины, коннекторов можно подключить несколько).

Так вот когда к шине подключаются коннекторы, она с них считывает переменную Pn и записывает в свой массив в соответствии с индексом подключенной плоскости Pn. В итоге в объекте Bus формируется массив из чисел, взятых из подключенных объектов либо нулей, в случае если ничего не подключено. То есть примерно имеем следующий масси Pn[25, 0, 13, 250, 113, 225] и.т.д, в зависимости какое значение будет в Connector ах.

И вот теперь дилема как сложить все эти числа.

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

В функции OnMakeParam вписывыаю следующее:

Pns = Pn[1]+Pn[2]+Pn[3]+Pn[4]+Pn[5]+Pn[6]+Pn[7]+Pn[8]+Pn[9]+Pn[10]

Но результат получается не совсем корректный, а именно допустим у меня сформировался массив Pn[0,0,0,5,0,5,0,5,0], то по логике должно быть 15, но получается 14,85612312. Я не понимаю почему.

Ну или можно как то изящнее это сделать чтобы работало?

 

Файлы в приложении.

 

P.S. Я там после этой суммы забыл добавить точку с запятой, но добавил и все осталось без изменений.

Bus v2.rar

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


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

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

В функции OnMakeParam вписывыаю следующее:

Pns = Pn[1]+Pn[2]+Pn[3]+Pn[4]+Pn[5]+Pn[6]+Pn[7]+Pn[8]+Pn[9]+Pn[10]

Но результат получается не совсем корректный, а именно допустим у меня сформировался массив Pn[0,0,0,5,0,5,0,5,0], то по логике должно быть 15, но получается 14,85612312. Я не понимаю почему.

Ну или можно как то изящнее это сделать чтобы работало?

 

Помнится что вот тут пост #605 было сложение после цикла.

 

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

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


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

Ну я там глянул у него все переменные не через массив определены, а просто, и сумма высоты слоев выполняется вручную так сказать (h1+h2+h3...+...hn).

И я попробовал объявить Pn по отдельности, и вроде получилось. Сумма теперь корректно считается. Странно, видимо с массивами как то криво работает программа. Очень неудобно, придется 50 переменных прописывать и описывать вручную :(

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


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

В общем проблема. У меня несколько объектов в цепи подсоеденины, есть прямые зависимости в OnConnect, так и обратные в OnAddObject, и допустим мне нужно произвести перевставку первого объекта в цепи, соответственно остальная цепь от него отваливается, чтобы проицепить обратно я использую команду "Соединить объекты". Он почему то соединяет все то что указанно в OnConnect, А у меня же еще есть обратные зависимости в OnAddObject. И он их не соединяет почему то.

В ролике я увидел что в этих трубных блоках и отводах обратная зависимость то же работает (когда там менялся диаметр перехода, все объекты до него тоже поменялись, То есть объекты становятся опять связанные и двигаются при перемещении одного из них, и зависимости прямые восстанавливаются, а обратные нет почему то :(

Как при присоединении обновить OnAddObject?

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

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


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

В общем проблема. У меня несколько объектов в цепи подсоеденины, есть прямые зависимости в OnConnect, так и обратные в OnAddObject, и допустим мне нужно произвести перевставку первого объекта в цепи, соответственно остальная цепь от него отваливается, чтобы проицепить обратно я использую команду "Соединить объекты". Он почему то соединяет все то что указанно в OnConnect, А у меня же еще есть обратные зависимости в OnAddObject. И он их не соединяет почему то.

В ролике я увидел что в этих трубных блоках и отводах обратная зависимость то же работает (когда там менялся диаметр перехода, все объекты до него тоже поменялись, То есть объекты становятся опять связанные и двигаются при перемещении одного из них, и зависимости прямые восстанавливаются, а обратные нет почему то :(

Как при присоединении обновить OnAddObject?

 

Не знаю, поможет ли оно вам, но...

Там 3 объекта: два отвода (1 и 2) и воздуховод (ВВ). Которые точно так же выстраиваются последовательно в цепь: ВВ-отвод1-ВВ. Все свойства, соответсвенно, передаются по всей цепочке. А вот отвод2 встраивается как раз между двумя уже существующими ВВ. Т.е. строим цепочку, удаляем из середины отвод1, вставляем отвод2, коннектимся к обоим ВВ (главное с порядком не пролететь) и всё работает, связи восстанавливаются, свойства по-прежнему летают туда-сюда по цепочке.

 

ВВ и отвод1 - законченные объекты, отвод2 - просто эксперимент, целью которого и была такая вот встройка объекта в существующую цепь, именно добившись этой встройки я 2 года назад и плюнул на эту систему, ввиду того, что "нам и этого хватит".

 

Хрен его знает, как у меня тогда это получилось, но насколько я помню, OnAddObject я не использовал в принципе (т.к. не знал о нём), все связи сделаны за счёт остальных обработчиков, возможно у меня там как-то OnConnect в обе стороны работает, я не помню... Наверняка, там много ненужного, неправильного, переусложненного и т.д., но гляньте, вдруг, чем поможет...

Воздуховод.rar

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


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

В общем проблема. У меня несколько объектов в цепи подсоеденины, есть прямые зависимости в OnConnect, так и обратные в OnAddObject, и допустим мне нужно произвести перевставку первого объекта в цепи, соответственно остальная цепь от него отваливается, чтобы проицепить обратно я использую команду "Соединить объекты". Он почему то соединяет все то что указанно в OnConnect, А у меня же еще есть обратные зависимости в OnAddObject. И он их не соединяет почему то.

В ролике я увидел что в этих трубных блоках и отводах обратная зависимость то же работает (когда там менялся диаметр перехода, все объекты до него тоже поменялись, То есть объекты становятся опять связанные и двигаются при перемещении одного из них, и зависимости прямые восстанавливаются, а обратные нет почему то :(

Как при присоединении обновить OnAddObject?

 

Не знаю, поможет ли оно вам, но...

Там 3 объекта: два отвода (1 и 2) и воздуховод (ВВ). Которые точно так же выстраиваются последовательно в цепь: ВВ-отвод1-ВВ. Все свойства, соответсвенно, передаются по всей цепочке. А вот отвод2 встраивается как раз между двумя уже существующими ВВ. Т.е. строим цепочку, удаляем из середины отвод1, вставляем отвод2, коннектимся к обоим ВВ (главное с порядком не пролететь) и всё работает, связи восстанавливаются, свойства по-прежнему летают туда-сюда по цепочке.

 

ВВ и отвод1 - законченные объекты, отвод2 - просто эксперимент, целью которого и была такая вот встройка объекта в существующую цепь, именно добившись этой встройки я 2 года назад и плюнул на эту систему, ввиду того, что "нам и этого хватит".

 

Хрен его знает, как у меня тогда это получилось, но насколько я помню, OnAddObject я не использовал в принципе (т.к. не знал о нём), все связи сделаны за счёт остальных обработчиков, возможно у меня там как-то OnConnect в обе стороны работает, я не помню... Наверняка, там много ненужного, неправильного, переусложненного и т.д., но гляньте, вдруг, чем поможет...

Спасибо попробую.

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


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

Подскажите, может я не совсем в ту тему пишу, но всеже.

Хочу сделать подобный объект (как на скрине) только в виде маркера.

И не могу понять как мне с выносной линией сделать так, чтобы она начиналась от края объекта (круга), а не от центра.

Вот есть такой объект в СПДС как узловая выноска, там можно задавать угол шага этой выносной линии (мне тоже бы так хотелось) и там эта линия выходит не из центра а из граничной линии, мне нужно так, но просто вместо регулируемого овала у меня будет фиксированный круг. Как так сделать?

Видел в некоторых видосах вводится какая то функция системная mcArrowSize которая регулирует размер стрелки, может там есть еще какие то функции чтобы сделать как я описал?

111Untitled.png

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


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

Удивлюсь, если так можно

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


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

>>И не могу понять как мне с выносной линией сделать так, чтобы она начиналась от края объекта (круга), а не от центра.

точку вставки маркера (при создании) задавай на окружности

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


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

Вот есть такой объект в СПДС как узловая выноска, там можно задавать угол шага этой выносной линии (мне тоже бы так хотелось) и там эта линия выходит не из центра а из граничной линии, мне нужно так, но просто вместо регулируемого овала у меня будет фиксированный круг.

Случайно так не устроит?

img-2019-06-24-13-51-07.png

 

Маркер так сделать не получится

Без имени0.dwg

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


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

или сохрани узловую выноску. как шаблон upd узловая не про то))

или сохрани ее как группу, если нужны табличные параметры и логика

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

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


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

>>Маркер так сделать не получится

млин, я качать кинулся и пробовать, думаю КААКК это сделано, потом дошло, что это за объект)))

а вот параметрику так можно сделать))) у меня типо так расчет зоны молниезащиты работает

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

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


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

>>Маркер так сделать не получится

млин, я качать кинулся и пробовать, думаю КААКК это сделано, потом дошло, что это за объект)))

а вот параметрику так можно сделать))) у меня типо так расчет зоны молниезащиты работает

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

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


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

Вот есть такой объект в СПДС как узловая выноска, там можно задавать угол шага этой выносной линии (мне тоже бы так хотелось) и там эта линия выходит не из центра а из граничной линии, мне нужно так, но просто вместо регулируемого овала у меня будет фиксированный круг.

Случайно так не устроит?

img-2019-06-24-13-51-07.png

 

Маркер так сделать не получится

Жаль :(

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


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

Ruyke

 

 

 

уот так

Чертеж1.dwg

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


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

Ruyke

 

 

 

уот так

Нет я говорю про параметрику. Если в параметрике пробовать такое реализовать.

У меня 2018 не открывает чертежи :(

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


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

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

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

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

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

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

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

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

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

Загрузка...

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