MCAD Posted June 11, 2019 Report Share Posted June 11, 2019 А в теле самой функции тогда что писать? Наверное можно там и вычислить Rsumm = Rsumm_old + R; Xsumm = Xsumm_old + X; Я же не вижу всего скрипта :-( Quote Link to comment Share on other sites More sharing options...
doctorraz Posted June 11, 2019 Report Share Posted June 11, 2019 (edited) >>В форме получается настроить правильное отображение, если я из OnMakeParameter скопирую ту же формулу в OnChangeDialog вынеси формулу в отдельную функцию и из функций OnMakeParameter , "OnChangeDialog" вызывай ее посмотри в справке какие стандартные функции по какому событию вызываются и в каком порядке Edited June 11, 2019 by doctorraz 1 Quote Link to comment Share on other sites More sharing options...
Ruyke Posted June 13, 2019 Report Share Posted June 13, 2019 Спасибо попробую! А еще не подскажете, как именно передать параметр при подключаеии (не взять зависимость а передать чтоли)? Ну вот подключаю я гайку к блоту (а не наоборот, и вот если у меня гайка большего диаметра то при присоединении её к болту,она передавать должна свой диаметр и болт соответственно подстраивает себя на такой же диаметр. Quote Link to comment Share on other sites More sharing options...
Mитька Posted June 15, 2019 Report Share Posted June 15, 2019 (edited) но один маленький затык... какое событие в скрипте будет обновлять координату при зеркалировании? В моём неподтвержденном экспериментами представлении - абсолютно любое редактирование. Пока объект не редактируется, его зеркальность меня не колышет, для себя самого он по-прежнему неотзеркаленный. Как только он начинает редактироваться (будь то ручки, диалог, форма или перевставка), происходит проверка и как следствие - изменение геометрии. Как-то так... Но это я ещё потестирую. В итоге жизнь заставила что-то с этим сделать, кто-то у нас понарисовал отраженными объектами с текстом хренову гору материала, и пришлось убить вопрос. Не стал морочиться с автоматикой, сделал вручную: Добавил 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 кнопки одну кнопку, исправить ошибки там, где они есть. Edited June 15, 2019 by Mитька 1 Quote Link to comment Share on other sites More sharing options...
Mитька Posted June 15, 2019 Report Share Posted June 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 Quote Link to comment Share on other sites More sharing options...
Ruyke Posted June 17, 2019 Report Share Posted June 17, 2019 А не подскажете, как привязать таблицу к Объекту спдс? Ну вот при вставке какого нибудь шаблона таблицы из базы (Экспликации например) она может жестко привязаться к формату, так что потом не удалишь без удаления формата. Как сделать так же только к какому то другому объекту? Не нашел видео о привязке таблице геометрически при вставке. Quote Link to comment Share on other sites More sharing options...
MCAD Posted June 17, 2019 Report Share Posted June 17, 2019 так что потом не удалишь без удаления формата. Выбрать в таблицу и в контекстном меню указать "Отвязать формат" Как сделать так же только к какому то другому объекту? Нельзя. Quote Link to comment Share on other sites More sharing options...
Ruyke Posted June 17, 2019 Report Share Posted June 17, 2019 так что потом не удалишь без удаления формата. Выбрать в таблицу и в контекстном меню указать "Отвязать формат" Как сделать так же только к какому то другому объекту? Нельзя. Ясно спасибо. 1 Quote Link to comment Share on other sites More sharing options...
Ruyke Posted June 19, 2019 Report Share Posted June 19, 2019 (edited) Спасибо попробую! А еще не подскажете, как именно передать параметр при подключаеии (не взять зависимость а передать чтоли)? Ну вот подключаю я гайку к блоту (а не наоборот, и вот если у меня гайка большего диаметра то при присоединении её к болту,она передавать должна свой диаметр и болт соответственно подстраивает себя на такой же диаметр. Сам себе отвечу Для этого необходимо использовать функцию OnAddObject (стандартная функция). И там прописать какие параметры взять из объекта, который подключается к данному. (Вдруг кому пригодится, очень полезная как оказалась функция). И второй вопрос. Не могу понять зачем нужна функция OnUpdateGraphics. В описании в справке, ни в вордовском документе про нее ни слова. И третий. Как можно в скрипте вытянуть индекс плоскости, к которой совершено подключение? Вот у меня есть объект у него есть плоскости WP2, WP3, WP4, WP5, WP6. И к нему подключаются несколько других объектов. Подключаются к плоскостям WP3, WP4, WP6. И вот как мне вытянуть названия плоскостей этих. Если выбрать объект и нажать "Управление зависимостями" там будет список состоявшихся зависимостей и к каким его плоскостям какие объекты подключены. Вот мне нужно вытянуть номера (или хотяб названия) этих плоскостей. Edited June 19, 2019 by Ruyke 1 Quote Link to comment Share on other sites More sharing options...
Ruyke Posted June 20, 2019 Report Share Posted June 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 Quote Link to comment Share on other sites More sharing options...
MCAD Posted June 20, 2019 Report Share Posted June 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 Quote Link to comment Share on other sites More sharing options...
Ruyke Posted June 21, 2019 Report Share Posted June 21, 2019 Ну я там глянул у него все переменные не через массив определены, а просто, и сумма высоты слоев выполняется вручную так сказать (h1+h2+h3...+...hn). И я попробовал объявить Pn по отдельности, и вроде получилось. Сумма теперь корректно считается. Странно, видимо с массивами как то криво работает программа. Очень неудобно, придется 50 переменных прописывать и описывать вручную 1 Quote Link to comment Share on other sites More sharing options...
Ruyke Posted June 21, 2019 Report Share Posted June 21, 2019 (edited) В общем проблема. У меня несколько объектов в цепи подсоеденины, есть прямые зависимости в OnConnect, так и обратные в OnAddObject, и допустим мне нужно произвести перевставку первого объекта в цепи, соответственно остальная цепь от него отваливается, чтобы проицепить обратно я использую команду "Соединить объекты". Он почему то соединяет все то что указанно в OnConnect, А у меня же еще есть обратные зависимости в OnAddObject. И он их не соединяет почему то. В ролике я увидел что в этих трубных блоках и отводах обратная зависимость то же работает (когда там менялся диаметр перехода, все объекты до него тоже поменялись, То есть объекты становятся опять связанные и двигаются при перемещении одного из них, и зависимости прямые восстанавливаются, а обратные нет почему то Как при присоединении обновить OnAddObject? Edited June 21, 2019 by Ruyke Quote Link to comment Share on other sites More sharing options...
Mитька Posted June 22, 2019 Report Share Posted June 22, 2019 В общем проблема. У меня несколько объектов в цепи подсоеденины, есть прямые зависимости в OnConnect, так и обратные в OnAddObject, и допустим мне нужно произвести перевставку первого объекта в цепи, соответственно остальная цепь от него отваливается, чтобы проицепить обратно я использую команду "Соединить объекты". Он почему то соединяет все то что указанно в OnConnect, А у меня же еще есть обратные зависимости в OnAddObject. И он их не соединяет почему то. В ролике я увидел что в этих трубных блоках и отводах обратная зависимость то же работает (когда там менялся диаметр перехода, все объекты до него тоже поменялись, То есть объекты становятся опять связанные и двигаются при перемещении одного из них, и зависимости прямые восстанавливаются, а обратные нет почему то Как при присоединении обновить OnAddObject? Не знаю, поможет ли оно вам, но... Там 3 объекта: два отвода (1 и 2) и воздуховод (ВВ). Которые точно так же выстраиваются последовательно в цепь: ВВ-отвод1-ВВ. Все свойства, соответсвенно, передаются по всей цепочке. А вот отвод2 встраивается как раз между двумя уже существующими ВВ. Т.е. строим цепочку, удаляем из середины отвод1, вставляем отвод2, коннектимся к обоим ВВ (главное с порядком не пролететь) и всё работает, связи восстанавливаются, свойства по-прежнему летают туда-сюда по цепочке. ВВ и отвод1 - законченные объекты, отвод2 - просто эксперимент, целью которого и была такая вот встройка объекта в существующую цепь, именно добившись этой встройки я 2 года назад и плюнул на эту систему, ввиду того, что "нам и этого хватит". Хрен его знает, как у меня тогда это получилось, но насколько я помню, OnAddObject я не использовал в принципе (т.к. не знал о нём), все связи сделаны за счёт остальных обработчиков, возможно у меня там как-то OnConnect в обе стороны работает, я не помню... Наверняка, там много ненужного, неправильного, переусложненного и т.д., но гляньте, вдруг, чем поможет... Воздуховод.rar 2 Quote Link to comment Share on other sites More sharing options...
Ruyke Posted June 24, 2019 Report Share Posted June 24, 2019 В общем проблема. У меня несколько объектов в цепи подсоеденины, есть прямые зависимости в OnConnect, так и обратные в OnAddObject, и допустим мне нужно произвести перевставку первого объекта в цепи, соответственно остальная цепь от него отваливается, чтобы проицепить обратно я использую команду "Соединить объекты". Он почему то соединяет все то что указанно в OnConnect, А у меня же еще есть обратные зависимости в OnAddObject. И он их не соединяет почему то. В ролике я увидел что в этих трубных блоках и отводах обратная зависимость то же работает (когда там менялся диаметр перехода, все объекты до него тоже поменялись, То есть объекты становятся опять связанные и двигаются при перемещении одного из них, и зависимости прямые восстанавливаются, а обратные нет почему то Как при присоединении обновить OnAddObject? Не знаю, поможет ли оно вам, но... Там 3 объекта: два отвода (1 и 2) и воздуховод (ВВ). Которые точно так же выстраиваются последовательно в цепь: ВВ-отвод1-ВВ. Все свойства, соответсвенно, передаются по всей цепочке. А вот отвод2 встраивается как раз между двумя уже существующими ВВ. Т.е. строим цепочку, удаляем из середины отвод1, вставляем отвод2, коннектимся к обоим ВВ (главное с порядком не пролететь) и всё работает, связи восстанавливаются, свойства по-прежнему летают туда-сюда по цепочке. ВВ и отвод1 - законченные объекты, отвод2 - просто эксперимент, целью которого и была такая вот встройка объекта в существующую цепь, именно добившись этой встройки я 2 года назад и плюнул на эту систему, ввиду того, что "нам и этого хватит". Хрен его знает, как у меня тогда это получилось, но насколько я помню, OnAddObject я не использовал в принципе (т.к. не знал о нём), все связи сделаны за счёт остальных обработчиков, возможно у меня там как-то OnConnect в обе стороны работает, я не помню... Наверняка, там много ненужного, неправильного, переусложненного и т.д., но гляньте, вдруг, чем поможет... Спасибо попробую. Quote Link to comment Share on other sites More sharing options...
Ruyke Posted June 24, 2019 Report Share Posted June 24, 2019 Подскажите, может я не совсем в ту тему пишу, но всеже. Хочу сделать подобный объект (как на скрине) только в виде маркера. И не могу понять как мне с выносной линией сделать так, чтобы она начиналась от края объекта (круга), а не от центра. Вот есть такой объект в СПДС как узловая выноска, там можно задавать угол шага этой выносной линии (мне тоже бы так хотелось) и там эта линия выходит не из центра а из граничной линии, мне нужно так, но просто вместо регулируемого овала у меня будет фиксированный круг. Как так сделать? Видел в некоторых видосах вводится какая то функция системная mcArrowSize которая регулирует размер стрелки, может там есть еще какие то функции чтобы сделать как я описал? Quote Link to comment Share on other sites More sharing options...
Mитька Posted June 24, 2019 Report Share Posted June 24, 2019 Удивлюсь, если так можно Quote Link to comment Share on other sites More sharing options...
doctorraz Posted June 24, 2019 Report Share Posted June 24, 2019 >>И не могу понять как мне с выносной линией сделать так, чтобы она начиналась от края объекта (круга), а не от центра. точку вставки маркера (при создании) задавай на окружности Quote Link to comment Share on other sites More sharing options...
MCAD Posted June 24, 2019 Report Share Posted June 24, 2019 Вот есть такой объект в СПДС как узловая выноска, там можно задавать угол шага этой выносной линии (мне тоже бы так хотелось) и там эта линия выходит не из центра а из граничной линии, мне нужно так, но просто вместо регулируемого овала у меня будет фиксированный круг. Случайно так не устроит? Маркер так сделать не получится Без имени0.dwg 1 Quote Link to comment Share on other sites More sharing options...
doctorraz Posted June 24, 2019 Report Share Posted June 24, 2019 (edited) или сохрани узловую выноску. как шаблон upd узловая не про то)) или сохрани ее как группу, если нужны табличные параметры и логика Edited June 24, 2019 by doctorraz Quote Link to comment Share on other sites More sharing options...
doctorraz Posted June 24, 2019 Report Share Posted June 24, 2019 (edited) >>Маркер так сделать не получится млин, я качать кинулся и пробовать, думаю КААКК это сделано, потом дошло, что это за объект))) а вот параметрику так можно сделать))) у меня типо так расчет зоны молниезащиты работает Edited June 24, 2019 by doctorraz Quote Link to comment Share on other sites More sharing options...
Ruyke Posted June 24, 2019 Report Share Posted June 24, 2019 >>Маркер так сделать не получится млин, я качать кинулся и пробовать, думаю КААКК это сделано, потом дошло, что это за объект))) а вот параметрику так можно сделать))) у меня типо так расчет зоны молниезащиты работает А там логика какая тогда должна быть? 2 исполнения объеденить в одном объекте? линия и круг? Quote Link to comment Share on other sites More sharing options...
Ruyke Posted June 24, 2019 Report Share Posted June 24, 2019 Вот есть такой объект в СПДС как узловая выноска, там можно задавать угол шага этой выносной линии (мне тоже бы так хотелось) и там эта линия выходит не из центра а из граничной линии, мне нужно так, но просто вместо регулируемого овала у меня будет фиксированный круг. Случайно так не устроит? Маркер так сделать не получится Жаль Quote Link to comment Share on other sites More sharing options...
doctorraz Posted June 24, 2019 Report Share Posted June 24, 2019 Ruyke уот так Чертеж1.dwg Quote Link to comment Share on other sites More sharing options...
Ruyke Posted June 24, 2019 Report Share Posted June 24, 2019 Ruyke уот так Нет я говорю про параметрику. Если в параметрике пробовать такое реализовать. У меня 2018 не открывает чертежи Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.