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

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

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

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

Как вариант.

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

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

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

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

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

 

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

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

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


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

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

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

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

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

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

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


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

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

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

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

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

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

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


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

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

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

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


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

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

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

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

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

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

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


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

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

Как вариант.

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

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

 

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

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

 

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

 

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

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


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

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

Как вариант.

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

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

 

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

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

 

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

 

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

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

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

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


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

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

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

 

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

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

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


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

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

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

 

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

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

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

 

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

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

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


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

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

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

 

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

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

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

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

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

Меняем номер каркаса

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


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

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

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

 

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

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

};

}

 

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

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


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

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

 

function OnMoveGripPoint

{

if (NMovingGrip == 0) {

pntOrigin = pntGrip0;

};

if (NMovingGrip == 1) {

pntOrigin = pntGrip1;

};

}

 

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

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

pntOrigin = pntGrip1;

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

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


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

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

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

Separated.rar

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


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

В общем если что разобрался. Надо было переменные WP{12345} дополнительно объявить в Changeable.

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


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

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

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

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


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

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

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

SPPICKPOINT ?

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

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


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

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

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

SPPICKPOINT ?

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

 

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

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


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

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

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

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

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

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

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


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

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

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

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

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

Почему?

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


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

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

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

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

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


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

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

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

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

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

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

----------

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

----------

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

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

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


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

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

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


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

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

 

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

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

Rsumm = Rsumm_old + R;

Xsumm = Xsumm_old + X;

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

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

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

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

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

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

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


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

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

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

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

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

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


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

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

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

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

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

 

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

Rsumm = new.Rsumm?

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


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

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

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

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

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

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

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

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

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

Загрузка...

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