MCAD 727 Опубликовано 11 июня, 2019 Жалоба Поделиться Опубликовано 11 июня, 2019 А в теле самой функции тогда что писать? Наверное можно там и вычислить Rsumm = Rsumm_old + R; Xsumm = Xsumm_old + X; Я же не вижу всего скрипта :-( Цитата Ссылка на сообщение Поделиться на другие сайты
doctorraz 878 Опубликовано 11 июня, 2019 Жалоба Поделиться Опубликовано 11 июня, 2019 (изменено) >>В форме получается настроить правильное отображение, если я из OnMakeParameter скопирую ту же формулу в OnChangeDialog вынеси формулу в отдельную функцию и из функций OnMakeParameter , "OnChangeDialog" вызывай ее посмотри в справке какие стандартные функции по какому событию вызываются и в каком порядке Изменено 11 июня, 2019 пользователем doctorraz 1 Цитата Ссылка на сообщение Поделиться на другие сайты
Ruyke 31 Опубликовано 13 июня, 2019 Жалоба Поделиться Опубликовано 13 июня, 2019 Спасибо попробую! А еще не подскажете, как именно передать параметр при подключаеии (не взять зависимость а передать чтоли)? Ну вот подключаю я гайку к блоту (а не наоборот, и вот если у меня гайка большего диаметра то при присоединении её к болту,она передавать должна свой диаметр и болт соответственно подстраивает себя на такой же диаметр. Цитата Ссылка на сообщение Поделиться на другие сайты
Mитька 237 Опубликовано 15 июня, 2019 Жалоба Поделиться Опубликовано 15 июня, 2019 (изменено) но один маленький затык... какое событие в скрипте будет обновлять координату при зеркалировании? В моём неподтвержденном экспериментами представлении - абсолютно любое редактирование. Пока объект не редактируется, его зеркальность меня не колышет, для себя самого он по-прежнему неотзеркаленный. Как только он начинает редактироваться (будь то ручки, диалог, форма или перевставка), происходит проверка и как следствие - изменение геометрии. Как-то так... Но это я ещё потестирую. В итоге жизнь заставила что-то с этим сделать, кто-то у нас понарисовал отраженными объектами с текстом хренову гору материала, и пришлось убить вопрос. Не стал морочиться с автоматикой, сделал вручную: Добавил 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 кнопки одну кнопку, исправить ошибки там, где они есть. Изменено 15 июня, 2019 пользователем Mитька 1 Цитата Ссылка на сообщение Поделиться на другие сайты
Mитька 237 Опубликовано 15 июня, 2019 Жалоба Поделиться Опубликовано 15 июня, 2019 И на выходе получить вот такое: 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; 1 Цитата Ссылка на сообщение Поделиться на другие сайты
Ruyke 31 Опубликовано 17 июня, 2019 Жалоба Поделиться Опубликовано 17 июня, 2019 А не подскажете, как привязать таблицу к Объекту спдс? Ну вот при вставке какого нибудь шаблона таблицы из базы (Экспликации например) она может жестко привязаться к формату, так что потом не удалишь без удаления формата. Как сделать так же только к какому то другому объекту? Не нашел видео о привязке таблице геометрически при вставке. Цитата Ссылка на сообщение Поделиться на другие сайты
MCAD 727 Опубликовано 17 июня, 2019 Жалоба Поделиться Опубликовано 17 июня, 2019 так что потом не удалишь без удаления формата. Выбрать в таблицу и в контекстном меню указать "Отвязать формат" Как сделать так же только к какому то другому объекту? Нельзя. Цитата Ссылка на сообщение Поделиться на другие сайты
Ruyke 31 Опубликовано 17 июня, 2019 Жалоба Поделиться Опубликовано 17 июня, 2019 так что потом не удалишь без удаления формата. Выбрать в таблицу и в контекстном меню указать "Отвязать формат" Как сделать так же только к какому то другому объекту? Нельзя. Ясно спасибо. 1 Цитата Ссылка на сообщение Поделиться на другие сайты
Ruyke 31 Опубликовано 19 июня, 2019 Жалоба Поделиться Опубликовано 19 июня, 2019 (изменено) Спасибо попробую! А еще не подскажете, как именно передать параметр при подключаеии (не взять зависимость а передать чтоли)? Ну вот подключаю я гайку к блоту (а не наоборот, и вот если у меня гайка большего диаметра то при присоединении её к болту,она передавать должна свой диаметр и болт соответственно подстраивает себя на такой же диаметр. Сам себе отвечу Для этого необходимо использовать функцию OnAddObject (стандартная функция). И там прописать какие параметры взять из объекта, который подключается к данному. (Вдруг кому пригодится, очень полезная как оказалась функция). И второй вопрос. Не могу понять зачем нужна функция OnUpdateGraphics. В описании в справке, ни в вордовском документе про нее ни слова. И третий. Как можно в скрипте вытянуть индекс плоскости, к которой совершено подключение? Вот у меня есть объект у него есть плоскости WP2, WP3, WP4, WP5, WP6. И к нему подключаются несколько других объектов. Подключаются к плоскостям WP3, WP4, WP6. И вот как мне вытянуть названия плоскостей этих. Если выбрать объект и нажать "Управление зависимостями" там будет список состоявшихся зависимостей и к каким его плоскостям какие объекты подключены. Вот мне нужно вытянуть номера (или хотяб названия) этих плоскостей. Изменено 19 июня, 2019 пользователем Ruyke 1 Цитата Ссылка на сообщение Поделиться на другие сайты
Ruyke 31 Опубликовано 20 июня, 2019 Жалоба Поделиться Опубликовано 20 июня, 2019 Еще раз доброго дня. Подскажите не могу сообразить. Есть 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 Цитата Ссылка на сообщение Поделиться на другие сайты
MCAD 727 Опубликовано 20 июня, 2019 Жалоба Поделиться Опубликовано 20 июня, 2019 Хотелось бы конечно какое то оптимальное решение, но я даже пробовал через тупое суммирование вручную, но это даже не точно складывает. В функции 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 1 Цитата Ссылка на сообщение Поделиться на другие сайты
Ruyke 31 Опубликовано 21 июня, 2019 Жалоба Поделиться Опубликовано 21 июня, 2019 Ну я там глянул у него все переменные не через массив определены, а просто, и сумма высоты слоев выполняется вручную так сказать (h1+h2+h3...+...hn). И я попробовал объявить Pn по отдельности, и вроде получилось. Сумма теперь корректно считается. Странно, видимо с массивами как то криво работает программа. Очень неудобно, придется 50 переменных прописывать и описывать вручную 1 Цитата Ссылка на сообщение Поделиться на другие сайты
Ruyke 31 Опубликовано 21 июня, 2019 Жалоба Поделиться Опубликовано 21 июня, 2019 (изменено) В общем проблема. У меня несколько объектов в цепи подсоеденины, есть прямые зависимости в OnConnect, так и обратные в OnAddObject, и допустим мне нужно произвести перевставку первого объекта в цепи, соответственно остальная цепь от него отваливается, чтобы проицепить обратно я использую команду "Соединить объекты". Он почему то соединяет все то что указанно в OnConnect, А у меня же еще есть обратные зависимости в OnAddObject. И он их не соединяет почему то. В ролике я увидел что в этих трубных блоках и отводах обратная зависимость то же работает (когда там менялся диаметр перехода, все объекты до него тоже поменялись, То есть объекты становятся опять связанные и двигаются при перемещении одного из них, и зависимости прямые восстанавливаются, а обратные нет почему то Как при присоединении обновить OnAddObject? Изменено 21 июня, 2019 пользователем Ruyke Цитата Ссылка на сообщение Поделиться на другие сайты
Mитька 237 Опубликовано 22 июня, 2019 Жалоба Поделиться Опубликовано 22 июня, 2019 В общем проблема. У меня несколько объектов в цепи подсоеденины, есть прямые зависимости в OnConnect, так и обратные в OnAddObject, и допустим мне нужно произвести перевставку первого объекта в цепи, соответственно остальная цепь от него отваливается, чтобы проицепить обратно я использую команду "Соединить объекты". Он почему то соединяет все то что указанно в OnConnect, А у меня же еще есть обратные зависимости в OnAddObject. И он их не соединяет почему то. В ролике я увидел что в этих трубных блоках и отводах обратная зависимость то же работает (когда там менялся диаметр перехода, все объекты до него тоже поменялись, То есть объекты становятся опять связанные и двигаются при перемещении одного из них, и зависимости прямые восстанавливаются, а обратные нет почему то Как при присоединении обновить OnAddObject? Не знаю, поможет ли оно вам, но... Там 3 объекта: два отвода (1 и 2) и воздуховод (ВВ). Которые точно так же выстраиваются последовательно в цепь: ВВ-отвод1-ВВ. Все свойства, соответсвенно, передаются по всей цепочке. А вот отвод2 встраивается как раз между двумя уже существующими ВВ. Т.е. строим цепочку, удаляем из середины отвод1, вставляем отвод2, коннектимся к обоим ВВ (главное с порядком не пролететь) и всё работает, связи восстанавливаются, свойства по-прежнему летают туда-сюда по цепочке. ВВ и отвод1 - законченные объекты, отвод2 - просто эксперимент, целью которого и была такая вот встройка объекта в существующую цепь, именно добившись этой встройки я 2 года назад и плюнул на эту систему, ввиду того, что "нам и этого хватит". Хрен его знает, как у меня тогда это получилось, но насколько я помню, OnAddObject я не использовал в принципе (т.к. не знал о нём), все связи сделаны за счёт остальных обработчиков, возможно у меня там как-то OnConnect в обе стороны работает, я не помню... Наверняка, там много ненужного, неправильного, переусложненного и т.д., но гляньте, вдруг, чем поможет... Воздуховод.rar 2 Цитата Ссылка на сообщение Поделиться на другие сайты
Ruyke 31 Опубликовано 24 июня, 2019 Жалоба Поделиться Опубликовано 24 июня, 2019 В общем проблема. У меня несколько объектов в цепи подсоеденины, есть прямые зависимости в OnConnect, так и обратные в OnAddObject, и допустим мне нужно произвести перевставку первого объекта в цепи, соответственно остальная цепь от него отваливается, чтобы проицепить обратно я использую команду "Соединить объекты". Он почему то соединяет все то что указанно в OnConnect, А у меня же еще есть обратные зависимости в OnAddObject. И он их не соединяет почему то. В ролике я увидел что в этих трубных блоках и отводах обратная зависимость то же работает (когда там менялся диаметр перехода, все объекты до него тоже поменялись, То есть объекты становятся опять связанные и двигаются при перемещении одного из них, и зависимости прямые восстанавливаются, а обратные нет почему то Как при присоединении обновить OnAddObject? Не знаю, поможет ли оно вам, но... Там 3 объекта: два отвода (1 и 2) и воздуховод (ВВ). Которые точно так же выстраиваются последовательно в цепь: ВВ-отвод1-ВВ. Все свойства, соответсвенно, передаются по всей цепочке. А вот отвод2 встраивается как раз между двумя уже существующими ВВ. Т.е. строим цепочку, удаляем из середины отвод1, вставляем отвод2, коннектимся к обоим ВВ (главное с порядком не пролететь) и всё работает, связи восстанавливаются, свойства по-прежнему летают туда-сюда по цепочке. ВВ и отвод1 - законченные объекты, отвод2 - просто эксперимент, целью которого и была такая вот встройка объекта в существующую цепь, именно добившись этой встройки я 2 года назад и плюнул на эту систему, ввиду того, что "нам и этого хватит". Хрен его знает, как у меня тогда это получилось, но насколько я помню, OnAddObject я не использовал в принципе (т.к. не знал о нём), все связи сделаны за счёт остальных обработчиков, возможно у меня там как-то OnConnect в обе стороны работает, я не помню... Наверняка, там много ненужного, неправильного, переусложненного и т.д., но гляньте, вдруг, чем поможет... Спасибо попробую. Цитата Ссылка на сообщение Поделиться на другие сайты
Ruyke 31 Опубликовано 24 июня, 2019 Жалоба Поделиться Опубликовано 24 июня, 2019 Подскажите, может я не совсем в ту тему пишу, но всеже. Хочу сделать подобный объект (как на скрине) только в виде маркера. И не могу понять как мне с выносной линией сделать так, чтобы она начиналась от края объекта (круга), а не от центра. Вот есть такой объект в СПДС как узловая выноска, там можно задавать угол шага этой выносной линии (мне тоже бы так хотелось) и там эта линия выходит не из центра а из граничной линии, мне нужно так, но просто вместо регулируемого овала у меня будет фиксированный круг. Как так сделать? Видел в некоторых видосах вводится какая то функция системная mcArrowSize которая регулирует размер стрелки, может там есть еще какие то функции чтобы сделать как я описал? Цитата Ссылка на сообщение Поделиться на другие сайты
Mитька 237 Опубликовано 24 июня, 2019 Жалоба Поделиться Опубликовано 24 июня, 2019 Удивлюсь, если так можно Цитата Ссылка на сообщение Поделиться на другие сайты
doctorraz 878 Опубликовано 24 июня, 2019 Жалоба Поделиться Опубликовано 24 июня, 2019 >>И не могу понять как мне с выносной линией сделать так, чтобы она начиналась от края объекта (круга), а не от центра. точку вставки маркера (при создании) задавай на окружности Цитата Ссылка на сообщение Поделиться на другие сайты
MCAD 727 Опубликовано 24 июня, 2019 Жалоба Поделиться Опубликовано 24 июня, 2019 Вот есть такой объект в СПДС как узловая выноска, там можно задавать угол шага этой выносной линии (мне тоже бы так хотелось) и там эта линия выходит не из центра а из граничной линии, мне нужно так, но просто вместо регулируемого овала у меня будет фиксированный круг. Случайно так не устроит? Маркер так сделать не получится Без имени0.dwg 1 Цитата Ссылка на сообщение Поделиться на другие сайты
doctorraz 878 Опубликовано 24 июня, 2019 Жалоба Поделиться Опубликовано 24 июня, 2019 (изменено) или сохрани узловую выноску. как шаблон upd узловая не про то)) или сохрани ее как группу, если нужны табличные параметры и логика Изменено 24 июня, 2019 пользователем doctorraz Цитата Ссылка на сообщение Поделиться на другие сайты
doctorraz 878 Опубликовано 24 июня, 2019 Жалоба Поделиться Опубликовано 24 июня, 2019 (изменено) >>Маркер так сделать не получится млин, я качать кинулся и пробовать, думаю КААКК это сделано, потом дошло, что это за объект))) а вот параметрику так можно сделать))) у меня типо так расчет зоны молниезащиты работает Изменено 24 июня, 2019 пользователем doctorraz Цитата Ссылка на сообщение Поделиться на другие сайты
Ruyke 31 Опубликовано 24 июня, 2019 Жалоба Поделиться Опубликовано 24 июня, 2019 >>Маркер так сделать не получится млин, я качать кинулся и пробовать, думаю КААКК это сделано, потом дошло, что это за объект))) а вот параметрику так можно сделать))) у меня типо так расчет зоны молниезащиты работает А там логика какая тогда должна быть? 2 исполнения объеденить в одном объекте? линия и круг? Цитата Ссылка на сообщение Поделиться на другие сайты
Ruyke 31 Опубликовано 24 июня, 2019 Жалоба Поделиться Опубликовано 24 июня, 2019 Вот есть такой объект в СПДС как узловая выноска, там можно задавать угол шага этой выносной линии (мне тоже бы так хотелось) и там эта линия выходит не из центра а из граничной линии, мне нужно так, но просто вместо регулируемого овала у меня будет фиксированный круг. Случайно так не устроит? Маркер так сделать не получится Жаль Цитата Ссылка на сообщение Поделиться на другие сайты
doctorraz 878 Опубликовано 24 июня, 2019 Жалоба Поделиться Опубликовано 24 июня, 2019 Ruyke уот так Чертеж1.dwg Цитата Ссылка на сообщение Поделиться на другие сайты
Ruyke 31 Опубликовано 24 июня, 2019 Жалоба Поделиться Опубликовано 24 июня, 2019 Ruyke уот так Нет я говорю про параметрику. Если в параметрике пробовать такое реализовать. У меня 2018 не открывает чертежи Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.