Jump to content

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


Recommended Posts

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

Как вариант.

Сделать в отчёте три строки

Но как (и что потом) придется группировать и суммировать я не знаю

img-2019-05-24-16-05-27.png

не только нарисовать красиво в один клик, но и потом получить по этой живописи спецификации...

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

 

Если заранее предусмотреть и классифицировать название параметров, то проще будет

Три строки в отчёте.dwg

  • Like 1
Link to comment
Share on other sites

>>Но как (и что потом) придется группировать и суммировать я не знаю

никто не знает... в фидере некоторые элементы могут быть, а может и не быть... т.е. пустые строки

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

решен этот вопрос уже давненько, каждый самурай идет своей тропой (в смысле самураи чужими тропами не ходят)

Edited by doctorraz
  • Like 1
Link to comment
Share on other sites

Если заранее предусмотреть и классифицировать название параметров, то проще будет

например, надо вытащить из одного объекта несколько параметров.. в один столбец, сгруппировать и просуммировать, ну и раскидать по разделам спецификации )))

однако грабли каждый раскладывает сам :D

на VB я представляю, как это сделать, но если только средствами СПДС даже если и решаемо это будет глючно и неповоротливо.

Edited by doctorraz
Link to comment
Share on other sites

на VB я представляю, как это сделать, но если только средствами СПДС даже если и решаемо это будет глючно и неповоротливо.

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

Link to comment
Share on other sites

на VB я представляю, как это сделать, но если только средствами СПДС даже если и решаемо это будет глючно и неповоротливо.

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

я и не усоспорял такого нигде..

---------------

ЗЫ просто достаточно банальная задача превращается в ребус, а все потому, что большую сложную надо бить на несколько маленьких простых и решать их по отдельности (спецификации сами по себе, а расчеты сами по себе).. ну или копить деньга на наноэлектрику

  • Like 1
Link to comment
Share on other sites

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

Как вариант.

Сделать в отчёте три строки

Но как (и что потом) придется группировать и суммировать я не знаю

 

не только нарисовать красиво в один клик, но и потом получить по этой живописи спецификации...

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

 

Если заранее предусмотреть и классифицировать название параметров, то проще будет

 

Спасибо, помогло!

  • Like 1
Link to comment
Share on other sites

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

Как вариант.

Сделать в отчёте три строки

Но как (и что потом) придется группировать и суммировать я не знаю

 

не только нарисовать красиво в один клик, но и потом получить по этой живописи спецификации...

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

 

Если заранее предусмотреть и классифицировать название параметров, то проще будет

 

Спасибо, помогло!

А можно как то жестко привязать объекты в группе? Ну если в группе несколько объектов состыкованны, то чтобы перемещая один, остальные за ним двигались. (Я знаю что есть значек группы и им можно двигать всю группу, но он неудобный, можно ли с ним чего сделать я не знаю), но допустим например если надо всю группу по нескольким точкам подровнять (слева, снизу или сверху). Чтобы не выделять все элементы в группе и так далее,

И аналогичный вопрос к просто привязанным объектам, если я связал геометрическими и параметрическими зависимостями 2 объекта, то подвинув один из них второй остается на месте. Можно чтобы они оба двигались?

Link to comment
Share on other sites

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

Нет такой возможности :-(

 

И аналогичный вопрос к просто привязанным объектам, если я связал геометрическими и параметрическими зависимостями 2 объекта, то подвинув один из них второй остается на месте. Можно чтобы они оба двигались?

Вот тут в комментариях к скрипту есть нужная информация.

  • Like 1
Link to comment
Share on other sites

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

Нет такой возможности :-(

 

И аналогичный вопрос к просто привязанным объектам, если я связал геометрическими и параметрическими зависимостями 2 объекта, то подвинув один из них второй остается на месте. Можно чтобы они оба двигались?

Вот тут в комментариях к скрипту есть нужная информация.

В самом файле?

 

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

Можно ли как то сделать, чтобы при добавлении новой группы, параметр FUSE_1_NUMBER менялся, ну просто каждый раз +1 добавлялся?

Link to comment
Share on other sites

В самом файле?

Да. В скрипте объекта.

 

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

Можно ли как то сделать, чтобы при добавлении новой группы, параметр FUSE_1_NUMBER менялся, ну просто каждый раз +1 добавлялся?

Зачем такие сложности ( ограничения)

Не проще вытащить параметр на "Форму" группы и там задавать номер?

http://www.youtube.com/watch?v=YdZCkEOY-Wo&list=PLxzNmJ3Maam7gdhZnxIrRPa1IwDcR_Ebb&index=5

Меняем номер каркаса
  • Like 1
Link to comment
Share on other sites

В самом файле?

Да. В скрипте объекта.

 

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

Можно ли как то сделать, чтобы при добавлении новой группы, параметр 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;

};

}

 

Вот это работает только криво, если я за вторую ручку берусь, то при вставке он вставляет всеравно как бы в изначальную точку. Ну тоесть если я за вторую ручку хочу подвинуть влево чутка то вставит он у меня не только влево но и вниз (как бы в базовую точку опять перейдет).

Link to comment
Share on other sites

------------

 

function OnMoveGripPoint

{

if (NMovingGrip == 0) {

pntOrigin = pntGrip0;

};

if (NMovingGrip == 1) {

pntOrigin = pntGrip1;

};

}

 

Вот это работает только криво, если я за вторую ручку берусь, то при вставке он вставляет всеравно как бы в изначальную точку. Ну тоесть если я за вторую ручку хочу подвинуть влево чутка то вставит он у меня не только влево но и вниз (как бы в базовую точку опять перейдет).

естественно, ты жэж сам задаешь , что при перемещении..

pntOrigin = pntGrip1;

она ж смещена у тебя, вот и задай это смещение через вектора и координаты

Link to comment
Share on other sites

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

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

Separated.rar

Link to comment
Share on other sites

А есть возможсть повторно привязать объект?

Ну вот все эти связи активируются только при первой вставки на чертеж. А вот если у меня объект уже вставлен на чертеж и мне его надо переподцепить к другому, я его двигаю а он не хочетавтоматически подцепляться, приходится заного объект вставлять из базы и все свойства задавать ему с нуля. Есть возможность повторного переподключения?

Link to comment
Share on other sites

А есть возможсть повторно привязать объект?

Ну вот все эти связи активируются только при первой вставки на чертеж. А вот если у меня объект уже вставлен на чертеж и мне его надо переподцепить к другому, я его двигаю а он не хочетавтоматически подцепляться, приходится заного объект вставлять из базы и все свойства задавать ему с нуля. Есть возможность повторного переподключения?

SPPICKPOINT ?

Панель "СПДС объекты из базы"

Link to comment
Share on other sites

А есть возможсть повторно привязать объект?

Ну вот все эти связи активируются только при первой вставки на чертеж. А вот если у меня объект уже вставлен на чертеж и мне его надо переподцепить к другому, я его двигаю а он не хочетавтоматически подцепляться, приходится заного объект вставлять из базы и все свойства задавать ему с нуля. Есть возможность повторного переподключения?

SPPICKPOINT ?

Панель "СПДС объекты из базы"

 

Я имею ввиду каждый раз когда я его за ручку перемещения двигаю, К нему с низу уже подключено много других объектов, а вверху я хочу всю группу переподключать двигая только верхний объект и переподключая его.

Link to comment
Share on other sites

Заметил еще очень странную особенность. Я взял из объекта "шкала" код исполнения чтобы он линеечки прописывал при растягивании

Выглядит это так:

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

И программа спокойно работает.

Это особенность скриптов в описании исполнений такое?

Link to comment
Share on other sites

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

Вот например когда не работает:

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),

То тогда все работает.

Почему?

Link to comment
Share on other sites

Не подскажете, зачем табличные параметры добавлять в protected?

Я просто видел объекты где добавляли и где нет. Есть какая то разница?

И вообще зачем нужно чтото в protected добавлять? Я не доконца понимаю.

Link to comment
Share on other sites

>>И вообще зачем нужно чтото в protected добавлять?

---------------------

для того, что бы деталь "помнила" значение переменной, эта переменная должна быть объявлена, либо

public-открытая, публичная (видна в свойствах) но есть нюансы

либо protected-защищеная скрытая, снаружи не видно, но деталь е помнит и любит пользуется

----------

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

----------

смотри справку, ну и в блоге я немного разжевывал

Edited by doctorraz
  • Like 1
Link to comment
Share on other sites

Не подскажете, зачем табличные параметры добавлять в 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, B);

SelectInCache("kFirst", "dr", "~", rdr, "L", "r;+", "L>=rMinLen && L

 

 

Шкаф.zip

  • Like 1
Link to comment
Share on other sites

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

 

А вот смотрите еще.

У меня есть формула в OnMakeParameter

Rsumm = Rsumm_old + R;

Xsumm = Xsumm_old + X;

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

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

А если я ввожу из свойств то он в свойствах же сразу и пересчитывает. Все ок.

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

Это так и должно быть? или есть другой способ чтобы в форме тоже обновлялось. (Rsumm = new.Rsumm в OnChangeDialog уже пробовал и не помогло, кстати в OnChangeParameters у меня все переменные обновлены (=new.Rsumm))

Edited by Ruyke
Link to comment
Share on other sites

Телепатически могу представить следующее

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

Попробуй создать "Пользовательскую функцию" и присвоить контроллу на событие "На изменение" эту функцию.

img-2019-06-11-15-35-16.png

Link to comment
Share on other sites

Телепатически могу представить следующее

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

Попробуй создать "Пользовательскую функцию" и присвоить контроллу на событие "На изменение" эту функцию.

img-2019-06-11-15-35-16.png

 

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

Rsumm = new.Rsumm?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Tell a friend

    Love Официальный форум компании Нанософт Разработка? Tell a friend!
×
×
  • Create New...