MCAD Posted May 24, 2019 Report Share Posted May 24, 2019 ну то есть вот у меня есть объект FIDER, но в нем не только же автомат может пойти в спецификацию, но и контактор может быть и реле (и так как они в одном параметрическом объекте, Как вариант. Сделать в отчёте три строки Но как (и что потом) придется группировать и суммировать я не знаю не только нарисовать красиво в один клик, но и потом получить по этой живописи спецификации... а фидера разные бывают и по типам оборудования и по наполнению, а кроме электрики в спецификацию еще всякие шкафы, дин рейки, кабельные муфты, короба, лотки уголки троссовки и прочее... Если заранее предусмотреть и классифицировать название параметров, то проще будет Три строки в отчёте.dwg 1 Quote Link to comment Share on other sites More sharing options...
doctorraz Posted May 24, 2019 Report Share Posted May 24, 2019 (edited) >>Но как (и что потом) придется группировать и суммировать я не знаю никто не знает... в фидере некоторые элементы могут быть, а может и не быть... т.е. пустые строки плюс желательно одинаковое оборудование просуммировать и вывести одной строкой, но перечислив позиционные обозначения, опять же в разные разделы спецификации пойдет, автоматы, пусковая в один, кабели в другой, железяки еще в два решен этот вопрос уже давненько, каждый самурай идет своей тропой (в смысле самураи чужими тропами не ходят) Edited May 24, 2019 by doctorraz 1 Quote Link to comment Share on other sites More sharing options...
doctorraz Posted May 24, 2019 Report Share Posted May 24, 2019 (edited) Если заранее предусмотреть и классифицировать название параметров, то проще будет например, надо вытащить из одного объекта несколько параметров.. в один столбец, сгруппировать и просуммировать, ну и раскидать по разделам спецификации ))) однако грабли каждый раскладывает сам на VB я представляю, как это сделать, но если только средствами СПДС даже если и решаемо это будет глючно и неповоротливо. Edited May 24, 2019 by doctorraz Quote Link to comment Share on other sites More sharing options...
MCAD Posted May 24, 2019 Report Share Posted May 24, 2019 на VB я представляю, как это сделать, но если только средствами СПДС даже если и решаемо это будет глючно и неповоротливо. Никто никогда не заявлял, что таблицы могут заменить программирование. У них свои задачи. Quote Link to comment Share on other sites More sharing options...
doctorraz Posted May 24, 2019 Report Share Posted May 24, 2019 на VB я представляю, как это сделать, но если только средствами СПДС даже если и решаемо это будет глючно и неповоротливо. Никто никогда не заявлял, что таблицы могут заменить программирование. У них свои задачи. я и не усоспорял такого нигде.. --------------- ЗЫ просто достаточно банальная задача превращается в ребус, а все потому, что большую сложную надо бить на несколько маленьких простых и решать их по отдельности (спецификации сами по себе, а расчеты сами по себе).. ну или копить деньга на наноэлектрику 1 Quote Link to comment Share on other sites More sharing options...
Ruyke Posted May 24, 2019 Report Share Posted May 24, 2019 ну то есть вот у меня есть объект FIDER, но в нем не только же автомат может пойти в спецификацию, но и контактор может быть и реле (и так как они в одном параметрическом объекте, Как вариант. Сделать в отчёте три строки Но как (и что потом) придется группировать и суммировать я не знаю не только нарисовать красиво в один клик, но и потом получить по этой живописи спецификации... а фидера разные бывают и по типам оборудования и по наполнению, а кроме электрики в спецификацию еще всякие шкафы, дин рейки, кабельные муфты, короба, лотки уголки троссовки и прочее... Если заранее предусмотреть и классифицировать название параметров, то проще будет Спасибо, помогло! 1 Quote Link to comment Share on other sites More sharing options...
Ruyke Posted May 24, 2019 Report Share Posted May 24, 2019 ну то есть вот у меня есть объект FIDER, но в нем не только же автомат может пойти в спецификацию, но и контактор может быть и реле (и так как они в одном параметрическом объекте, Как вариант. Сделать в отчёте три строки Но как (и что потом) придется группировать и суммировать я не знаю не только нарисовать красиво в один клик, но и потом получить по этой живописи спецификации... а фидера разные бывают и по типам оборудования и по наполнению, а кроме электрики в спецификацию еще всякие шкафы, дин рейки, кабельные муфты, короба, лотки уголки троссовки и прочее... Если заранее предусмотреть и классифицировать название параметров, то проще будет Спасибо, помогло! А можно как то жестко привязать объекты в группе? Ну если в группе несколько объектов состыкованны, то чтобы перемещая один, остальные за ним двигались. (Я знаю что есть значек группы и им можно двигать всю группу, но он неудобный, можно ли с ним чего сделать я не знаю), но допустим например если надо всю группу по нескольким точкам подровнять (слева, снизу или сверху). Чтобы не выделять все элементы в группе и так далее, И аналогичный вопрос к просто привязанным объектам, если я связал геометрическими и параметрическими зависимостями 2 объекта, то подвинув один из них второй остается на месте. Можно чтобы они оба двигались? Quote Link to comment Share on other sites More sharing options...
MCAD Posted May 24, 2019 Report Share Posted May 24, 2019 А можно как то жестко привязать объекты в группе? Ну если в группе несколько объектов состыкованны, то чтобы перемещая один, остальные за ним двигались. Нет такой возможности :-( И аналогичный вопрос к просто привязанным объектам, если я связал геометрическими и параметрическими зависимостями 2 объекта, то подвинув один из них второй остается на месте. Можно чтобы они оба двигались? Вот тут в комментариях к скрипту есть нужная информация. 1 Quote Link to comment Share on other sites More sharing options...
Ruyke Posted May 24, 2019 Report Share Posted May 24, 2019 А можно как то жестко привязать объекты в группе? Ну если в группе несколько объектов состыкованны, то чтобы перемещая один, остальные за ним двигались. Нет такой возможности :-( И аналогичный вопрос к просто привязанным объектам, если я связал геометрическими и параметрическими зависимостями 2 объекта, то подвинув один из них второй остается на месте. Можно чтобы они оба двигались? Вот тут в комментариях к скрипту есть нужная информация. В самом файле? И ещё вопрос. Допустим я создал группу из отдельных элементов (автомат, контактор, линия) И вот у автомата есть параметр FUSE_1_NUMBER это как бы его порядковый номер, и все привязанные к нему объекты (контактор и линия, они копируют этот параметр чтобы нумерация по фидеру была одинаковой. И вот я это все собрал в группу. И вот у группы там внизу есть плюсик, которым добавляется очередная такая же группа. Можно ли как то сделать, чтобы при добавлении новой группы, параметр FUSE_1_NUMBER менялся, ну просто каждый раз +1 добавлялся? Quote Link to comment Share on other sites More sharing options...
MCAD Posted May 24, 2019 Report Share Posted May 24, 2019 В самом файле? Да. В скрипте объекта. И вот у группы там внизу есть плюсик, которым добавляется очередная такая же группа. Можно ли как то сделать, чтобы при добавлении новой группы, параметр FUSE_1_NUMBER менялся, ну просто каждый раз +1 добавлялся? Зачем такие сложности ( ограничения) Не проще вытащить параметр на "Форму" группы и там задавать номер? http://www.youtube.com/watch?v=YdZCkEOY-Wo&list=PLxzNmJ3Maam7gdhZnxIrRPa1IwDcR_Ebb&index=5 Меняем номер каркаса 1 Quote Link to comment Share on other sites More sharing options...
Ruyke Posted May 27, 2019 Report Share Posted May 27, 2019 В самом файле? Да. В скрипте объекта. И вот у группы там внизу есть плюсик, которым добавляется очередная такая же группа. Можно ли как то сделать, чтобы при добавлении новой группы, параметр FUSE_1_NUMBER менялся, ну просто каждый раз +1 добавлялся? Зачем такие сложности ( ограничения) Не проще вытащить параметр на "Форму" группы и там задавать номер? http://www.youtube.com/watch?v=YdZCkEOY-Wo&list=PLxzNmJ3Maam7gdhZnxIrRPa1IwDcR_Ebb&index=5 Меняем номер каркаса Спасибо. А вот сижу я ковыряюсь в этих скриптах и не могу понять как вот добавив вторую ручку, назначить ей такую же функцию как и первой, тобишь перемещать чтоб за нее тоже можно было. function SetGripPoint { NGrip = 2; pntGrip0 = pntOrigin; pntGrip1 = pntOrigin+oY*(-2800); }; function OnMoveGripPoint { if (NMovingGrip == 0) { pntOrigin = pntGrip0; }; if (NMovingGrip == 1) { pntOrigin = pntGrip1; }; } Вот это работает только криво, если я за вторую ручку берусь, то при вставке он вставляет всеравно как бы в изначальную точку. Ну тоесть если я за вторую ручку хочу подвинуть влево чутка то вставит он у меня не только влево но и вниз (как бы в базовую точку опять перейдет). Quote Link to comment Share on other sites More sharing options...
doctorraz Posted May 27, 2019 Report Share Posted May 27, 2019 ------------ function OnMoveGripPoint { if (NMovingGrip == 0) { pntOrigin = pntGrip0; }; if (NMovingGrip == 1) { pntOrigin = pntGrip1; }; } Вот это работает только криво, если я за вторую ручку берусь, то при вставке он вставляет всеравно как бы в изначальную точку. Ну тоесть если я за вторую ручку хочу подвинуть влево чутка то вставит он у меня не только влево но и вниз (как бы в базовую точку опять перейдет). естественно, ты жэж сам задаешь , что при перемещении.. pntOrigin = pntGrip1; она ж смещена у тебя, вот и задай это смещение через вектора и координаты Quote Link to comment Share on other sites More sharing options...
Ruyke Posted May 27, 2019 Report Share Posted May 27, 2019 В общем не получается у меня чтото сделать чтобы объекты все двигались в месте с одним из связки. Он показывает что они связанны, но не двигает некоторые. Выкладываю что у меня получилось. Если потянуть за нижний, то двигаются все, за средний -тоже, а вот с верхними проблема не пойму из за чего Separated.rar Quote Link to comment Share on other sites More sharing options...
Ruyke Posted May 30, 2019 Report Share Posted May 30, 2019 В общем если что разобрался. Надо было переменные WP{12345} дополнительно объявить в Changeable. 2 Quote Link to comment Share on other sites More sharing options...
Ruyke Posted May 31, 2019 Report Share Posted May 31, 2019 А есть возможсть повторно привязать объект? Ну вот все эти связи активируются только при первой вставки на чертеж. А вот если у меня объект уже вставлен на чертеж и мне его надо переподцепить к другому, я его двигаю а он не хочетавтоматически подцепляться, приходится заного объект вставлять из базы и все свойства задавать ему с нуля. Есть возможность повторного переподключения? Quote Link to comment Share on other sites More sharing options...
dromandon Posted May 31, 2019 Report Share Posted May 31, 2019 А есть возможсть повторно привязать объект? Ну вот все эти связи активируются только при первой вставки на чертеж. А вот если у меня объект уже вставлен на чертеж и мне его надо переподцепить к другому, я его двигаю а он не хочетавтоматически подцепляться, приходится заного объект вставлять из базы и все свойства задавать ему с нуля. Есть возможность повторного переподключения? SPPICKPOINT ? Панель "СПДС объекты из базы" Quote Link to comment Share on other sites More sharing options...
Ruyke Posted May 31, 2019 Report Share Posted May 31, 2019 А есть возможсть повторно привязать объект? Ну вот все эти связи активируются только при первой вставки на чертеж. А вот если у меня объект уже вставлен на чертеж и мне его надо переподцепить к другому, я его двигаю а он не хочетавтоматически подцепляться, приходится заного объект вставлять из базы и все свойства задавать ему с нуля. Есть возможность повторного переподключения? SPPICKPOINT ? Панель "СПДС объекты из базы" Я имею ввиду каждый раз когда я его за ручку перемещения двигаю, К нему с низу уже подключено много других объектов, а вверху я хочу всю группу переподключать двигая только верхний объект и переподключая его. Quote Link to comment Share on other sites More sharing options...
Ruyke Posted May 31, 2019 Report Share Posted May 31, 2019 Заметил еще очень странную особенность. Я взял из объекта "шкала" код исполнения чтобы он линеечки прописывал при растягивании Выглядит это так: Version = 2, //Find: Version, b, height, Length, endFind, node0 = mp + (2500/2)*oX, node1 = mp + 50*oY + (2500/2)*oX, node3 = mp + BUS_LENGTH*oX, jj=0, While(jj < (N+1)){ Line(node0+oX*step*jj, node1+oX*step*jj,1,1), //UText(Point,Angle, "Text", HorizontalAlignment, VerticalAlignment), UText(node1+oX*step*jj+oY*5, 0, String(jj),1,2), jj=jj+1, }, Line(mp,node3,1,1), Однако стоило мне после условия While скобку перенести на следующую строку - при вставке объекта вылетало сразу. Тоесть если сделать вот так: Version = 2, //Find: Version, b, height, Length, endFind, node0 = mp + (2500/2)*oX, node1 = mp + 50*oY + (2500/2)*oX, node3 = mp + BUS_LENGTH*oX, jj=0, While(jj < (N+1)) { Line(node0+oX*step*jj, node1+oX*step*jj,1,1), //UText(Point,Angle, "Text", HorizontalAlignment, VerticalAlignment), UText(node1+oX*step*jj+oY*5, 0, String(jj),1,2), jj=jj+1, }, Line(mp,node3,1,1), Программа крашится. Хотя странно в самом скрипте объекта (не исполнения) программа спокойно воспринимает когда я для удобства скобки вниз переношу чтобы четко видеть структуру и что в условии например: sub1obj.strTheName="Fuse"; sub1obj.strTheType="SEPARATED"; sub1obj.strTheSubType = "SEPARATED"; ii = 0; while (ii < N) { sub1obj[ii].WP2 = Plane( pntOrigin+vecDirection*(step*ii+step/2), -vecPlane); ii = ii+1; }; И программа спокойно работает. Это особенность скриптов в описании исполнений такое? Quote Link to comment Share on other sites More sharing options...
Ruyke Posted May 31, 2019 Report Share Posted May 31, 2019 И почему такое задание цикла не работает с праметрически распознанными объектами которая делает программа, а не вручную. Она там вначале задает какой то дополнительный цикл, который я понять не могу. Вот например когда не работает: Version = 1;//Version = 2, //Find: Version, BUS_LENGTH, step, N, endFind, ii=0, While(ii<4), node(ii);=mp, ii=ii+1, EndWhile, OX=oX, OY=oY, OZ=oZ, Verge0_ang=90, Verge1_ang=0, node1:mp:y+88, node3:x=mp:x+BUS_LENGTH, node1:x=mp:x+step/2*N, node0:x=node1:x, node0:y=mp:y, node3:y=mp:y, jj=0, While(jj < (N)){ Line(node0+oX*step*jj, node1+oX*step*jj,1,1), jj=jj+1, }, Line(mp,node3,1,1), А если я сделаю тоже самое, только параметрически опишу объект вручную например так как в "Шкале" было описано: Version = 2, //Find: Version, b, height, Length, endFind, node0 = mp + (step/2)*oX, node1 = mp + 50*oY + (step/2)*oX, node3 = mp + BUS_LENGTH*oX, jj=0, While(jj < (N)){ Line(node0+oX*step*jj, node1+oX*step*jj,1,1), jj=jj+1, }, Line(mp,node3,1,1), То тогда все работает. Почему? Quote Link to comment Share on other sites More sharing options...
Ruyke Posted June 7, 2019 Report Share Posted June 7, 2019 Не подскажете, зачем табличные параметры добавлять в protected? Я просто видел объекты где добавляли и где нет. Есть какая то разница? И вообще зачем нужно чтото в protected добавлять? Я не доконца понимаю. Quote Link to comment Share on other sites More sharing options...
doctorraz Posted June 7, 2019 Report Share Posted June 7, 2019 (edited) >>И вообще зачем нужно чтото в protected добавлять? --------------------- для того, что бы деталь "помнила" значение переменной, эта переменная должна быть объявлена, либо public-открытая, публичная (видна в свойствах) но есть нюансы либо protected-защищеная скрытая, снаружи не видно, но деталь е помнит и любит пользуется ---------- если переменную не объявлять, то она будет локальной внутри функции на один сеанс ---------- смотри справку, ну и в блоге я немного разжевывал Edited June 7, 2019 by doctorraz 1 Quote Link to comment Share on other sites More sharing options...
MCAD Posted June 7, 2019 Report Share Posted June 7, 2019 Не подскажете, зачем табличные параметры добавлять в protected? А почему именно в Protected? Зависит от того как вы планируете их использовать. http://www.youtube.com/watch?v=hSjXZ2Jo-_E&feature=youtu.be Имеем на чертеже образмеренный эскиз Шкафа на плане Вызываем команду spWizParam и, выбрав диагональные линии, задаём переменную, которая будет отвечать за видимость примитива на чертеже rHideLine, и переменную для задания типа линии rTypeLine Жёлтые линии, в нашем случае, служат для удобства построения и упрощения эскиза. На чертеже модели их не должно быть видно. Используя spWizParam задаём им свойство «Рабочий объект» Открываем MechWizard и созадём новый объект «Шкаф» выбрав для него расположение в структуре БД Добавляем таблиц и создаём три табличных параметра. rH (Ширина), rB (Глубина), rY (Высота). Задав им нужные значения. Создаем новое «Исполнение» и распознаём его на чертеже. В описании исполнения присутствую параметры заданные на чертеже как размеры и с помощью spWizParam Запускаем «Мастер Скриптов» Вот тут есть пример с табличными параметрами. Для таких параметров нужно Функции для работы с таблицами Загрузка таблицы из базы данных в Кэш LoadInCache(name1, name2, ... , nameN) Загружает выбранные поля из таблицы в кэш работы с таблицей. Функция имеет переменное число аргументов. name1, ... ,nameN - имена табличных параметров. Пример: LoadInCache(D); LoadInCache(dr, dH); Выборка из таблицы SelectInCache(strFilterKey, strParamName, strOperation, Value ... , strFilterKeyN, strParamNameN, strOperationN, ValueN) Производит выборку из кэша таблицы объекта. Переменное число аргументов. strFilterKey - Ключ фильтрации - строка, принимающая следующие значения: "kFirst" - выбрать первое из значений, удовлетворяющих условию фильтрации "kLast" - выбрать последнее из значений, удовлетворяющих условию фильтрации "kFilter" - выбрать диапазон подходящих значений "kAsk" - спросить пользователя (вызывать диалог для ручного выбора значения) "kAskIfNeed" - спросить пользователя если не удается автоматический выбор strParamName - Имя табличного параметра - строка, содержащая имя табличного параметра, по которому осуществляется выборка. strOperation - Операция фильтрации - строка, принимающая следующие значения : "=" - равно ">=" - больше или равно " "~" - приближенно равно ">" - больше " "+" - вычисление выражения Пример: LoadInCache(dr, L); SelectInCache("kFirst", "dr", "~", 14, "L", ">=", 100); LoadInCache(dr, L, ; SelectInCache("kFirst", "dr", "~", rdr, "L", "r;+", "L>=rMinLen && L Шкаф.zip 1 Quote Link to comment Share on other sites More sharing options...
Ruyke Posted June 11, 2019 Report Share Posted June 11, 2019 (edited) Ясно.спасибо! А вот смотрите еще. У меня есть формула в OnMakeParameter Rsumm = Rsumm_old + R; Xsumm = Xsumm_old + X; вот она жестко считает всегда эти значения, но параметры R и X я могу задавать как из диалога (формы), так и из свойств объекта. Но вот какая загвоздка, у меня в диалоге есть вывод параметра Rsumm, который никак не хочет обновляться при смене какого нибудь из параметров. То есть если я закрою и открое объект заного то отображение будет правильным, а если нет, то в форме ничего не увижу какое число он посчитал. А если я ввожу из свойств то он в свойствах же сразу и пересчитывает. Все ок. В форме получается настроить правильное отображение, если я из OnMakeParameter скопирую ту же формулу в OnChangeDialog. Это так и должно быть? или есть другой способ чтобы в форме тоже обновлялось. (Rsumm = new.Rsumm в OnChangeDialog уже пробовал и не помогло, кстати в OnChangeParameters у меня все переменные обновлены (=new.Rsumm)) Edited June 11, 2019 by Ruyke Quote Link to comment Share on other sites More sharing options...
MCAD Posted June 11, 2019 Report Share Posted June 11, 2019 Телепатически могу представить следующее Но вот какая загвоздка, у меня в диалоге есть вывод параметра Rsumm, который никак не хочет обновляться при смене какого нибудь из параметров. То есть если я закрою и открое объект заного то отображение будет правильным, а если нет, то в форме ничего не увижу какое число он посчитал. Попробуй создать "Пользовательскую функцию" и присвоить контроллу на событие "На изменение" эту функцию. Quote Link to comment Share on other sites More sharing options...
Ruyke Posted June 11, 2019 Report Share Posted June 11, 2019 Телепатически могу представить следующее Но вот какая загвоздка, у меня в диалоге есть вывод параметра Rsumm, который никак не хочет обновляться при смене какого нибудь из параметров. То есть если я закрою и открое объект заного то отображение будет правильным, а если нет, то в форме ничего не увижу какое число он посчитал. Попробуй создать "Пользовательскую функцию" и присвоить контроллу на событие "На изменение" эту функцию. А в теле самой функции тогда что писать? Rsumm = new.Rsumm? 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.