Jump to content

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


Recommended Posts

Что я делаю не так?

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

Тут посмотрите.

Version = 2;
//Find: Version; endFind, ang, iLineType, rRadius, rHeight,Lc,strJibImplementation;
ii=0; While(ii<15); node[ii]=mp; ii=ii+1; EndWhile;
OX=oX; OY=oY; OZ=oZ;
//верхний блок

DrawReference("vVerxT",VFRONT,mp,oX,oY,check2,0,1);
DrawReference(iff(check1==1;"vVerh";"vVerhX"),VFRONT,mp,oX,oY,(iff(check2==1;0;1)),0,1);
node3:y = mp:y - rHeight;

//нижний блок
DrawReference("vNizK",VFRONT,node3,oX,oY,check2,1,1);
DrawReference("vNiz",VFRONT,node3,oX,oY,(iff(check2==1;0;1)),1,1);
//линии
DrawReference("vidLine",VFRONT,mp,oX,oY,1,0,1);

 

В качестве названия исполнения используйте "Системное" имя Вида

 

img-2019-05-14-16-30-27.png

xRef samples.zip

Link to comment
Share on other sites

В Вашем случае исполнение можно сделать 2 способами:

Version = 2;
ii=0; While(ii<15); node[ii]=mp; ii=ii+1; EndWhile;
OX=oX; OY=oY; OZ=oZ;
DrawReference ("Implementation3",VFRONT,mp,oX,oY,1,0,1);
DrawReference ("Implementation2",VFRONT,mp+oX*(1250.000)+oY*(4000.000),oX,oY,1,1,1);

// Верхние блоки
 //Вариант I
DrawReference (iff (FUSETYPE_SELECTION == "Circuit Breaker";("Implementation1_1");("Implementation1_2")),VFRONT,mp+oX*(1250.000)+oY*(11200.000),oX,oY,1,1,0);
 //Вариант II
//DrawReference ("Implementation1_1",VFRONT,mp+oX*(1250.000)+oY*(11200.000),oX,oY,(iff (FUSETYPE_SELECTION == "Circuit Breaker";1;0)),1,0);
// DrawReference ("Implementation1_2",VFRONT,mp+oX*(1250.000)+oY*(11200.000),oX,oY,(iff(FUSETYPE_SELECTION == "RCBO";1;0)),1,0);
//
);
 

Вариант I - Вы выбираете "Исполнение" в зависимости от значения FUSETYPE_SELECTION

Вариант II - Просто управляете "Видимостью" конкретного исполнения в зависимости от значения FUSETYPE_SELECTION

Второй

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

SCHEME_04_3_2_FUSE rel.1.zip

Link to comment
Share on other sites

В Вашем случае исполнение можно сделать 2 способами:

Version = 2;
ii=0; While(ii<15); node[ii]=mp; ii=ii+1; EndWhile;
OX=oX; OY=oY; OZ=oZ;
DrawReference ("Implementation3",VFRONT,mp,oX,oY,1,0,1);
DrawReference ("Implementation2",VFRONT,mp+oX*(1250.000)+oY*(4000.000),oX,oY,1,1,1);

// Верхние блоки
 //Вариант I
DrawReference (iff (FUSETYPE_SELECTION == "Circuit Breaker";("Implementation1_1");("Implementation1_2")),VFRONT,mp+oX*(1250.000)+oY*(11200.000),oX,oY,1,1,0);
 //Вариант II
//DrawReference ("Implementation1_1",VFRONT,mp+oX*(1250.000)+oY*(11200.000),oX,oY,(iff (FUSETYPE_SELECTION == "Circuit Breaker";1;0)),1,0);
// DrawReference ("Implementation1_2",VFRONT,mp+oX*(1250.000)+oY*(11200.000),oX,oY,(iff(FUSETYPE_SELECTION == "RCBO";1;0)),1,0);
//
);

Вариант I - Вы выбираете "Исполнение" в зависимости от значения FUSETYPE_SELECTION

Вариант II - Просто управляете "Видимостью" конкретного исполнения в зависимости от значения FUSETYPE_SELECTION

Второ

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

 

Спасибо, насколько я понял первый вариант не сможет управлять более чем двумя исполнениями?

А второй вариант позволяет хоть сколько исполнений задействовать получается. Так?

 

А чем принципиально хуже или лучше первый от второго?

Link to comment
Share on other sites

насколько я понял первый вариант не сможет управлять более чем двумя исполнениями?

Отчего же? Сколько угодно, просто труднее будет (ЯТД) Труднее отлавливать ошибки.

А чем принципиально хуже или лучше первый от второго?

Да ничем наверное :-) Дело вкуса.

 

//Вариант III Требует редактирования radio FUSETYPE_SELECTION
DrawReference (("Implementation1_"+FUSETYPE_SELECTION),VFRONT,mp+oX*(1250.000)+oY*(11200.000),oX,oY,1,1,0);

Можно так управлять отрисовкой. Но тогда придётся внимательно следить за названием исполнений (что само по себе очень полезно) и отредактировать значение RadioButton.

img-2019-05-15-09-42-17.png

В общем вариантов много :-)

PS: Я не знаю, где еще используется FUSETYPE_SELECTION, так что проверяйте внимательно!!!

SCHEME_04_3_2_FUSE rel.1.1.zip

Link to comment
Share on other sites

А можно как то регулировать значение числовых параметров?

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

Например если я задаю мощность 1 кВт (и вписываю в строку 1.00), то программа её сокращает в итоге до просто "1", а мне надо чтобы отображалось именно с двумя цифрами после запятой даже если нули. (см. скрин)

2. С током такая же ерунда, он высчитывает его до миллиона знаков после запятой, а мне нужно всего чтобы 2 показывало. (см. скрин.)

 

Screen.png

 

Link to comment
Share on other sites

>>2. С током такая же ерунда, он высчитывает его до миллиона знаков после запятой, а мне нужно всего чтобы 2 показывало.

-----------

округлить до сотых уже предлагали?

  • Like 1
Link to comment
Share on other sites

http://www.spds.ru/info/faq/qa_0064.html

правда разбирались пришли к выводу, что лучше round

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

PS кстати в стандартных округляет до целого, а в таблицах до указанного знака

  • Like 1
Link to comment
Share on other sites

>>2. С током такая же ерунда, он высчитывает его до миллиона знаков после запятой, а мне нужно всего чтобы 2 показывало.

-----------

округлить до сотых уже предлагали?

Да спасибо, помогло округлить ток.

Link to comment
Share on other sites

А ещё не подскажете как в одном объекте СПДС суммировать определенные параметры из других объектов СПДС одного и того же чертежа?

Edited by Ruyke
Link to comment
Share on other sites

А ещё не подскажете как в одном объекте СПДС суммировать определенные параметры из других объектов СПДС одного и того же чертежа?

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

для математики табличные отчеты придуманы

  • Like 1
Link to comment
Share on other sites

А ещё не подскажете как в одном объекте СПДС суммировать определенные параметры из других объектов СПДС одного и того же чертежа?

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

для математики табличные отчеты придуманы

 

1. Как это сделать? Задавать зависимости? И при коннекте и руками, есть видео?

 

2. Что за табличные отчеты?

Link to comment
Share on other sites

>>есть видео?

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

Море у уважаемого mcad на все случаи жизни

Link to comment
Share on other sites

1. Как это сделать? Задавать зависимости? И при коннекте и руками, есть видео?

 

Тут только "Геометрические зависимости" - параметрические аналогично задаются

, потом

Это "теория", практика - Это в "Мастерскую СПДС"

 

http://www.youtube.com/watch?v=QMJay5JM8TY&list=PLxzNmJ3Maam67e9mrRIXhkdP-9e0VY9hG&index=27&t=0s

 

Уже обсуждалось:

Маркер - он универсальный. Он умеет привязывать и выравнивать геометрию под родительский объект. Но у него нет "геометрических зависимостей"

 

Сам объект лежит в посте #652

 

2. Что за табличные отчеты?

Тут не всё так просто :-)

Не знаешь

Точнее не, понятно (мне), что нужно получить

http://www.youtube.com/watch?v=dKR4pWemeI4&list=PLxzNmJ3Maam5c5pCkaWGaGAVzOVq2ddqD&index=15&t=0s

  • Like 1
Link to comment
Share on other sites

1. Как это сделать? Задавать зависимости? И при коннекте и руками, есть видео?

 

Тут только "Геометрические зависимости" - параметрические аналогично задаются

, потом

Это "теория", практика - Это в "Мастерскую СПДС"

 

http://www.youtube.com/watch?v=QMJay5JM8TY&list=PLxzNmJ3Maam67e9mrRIXhkdP-9e0VY9hG&index=27&t=0s

 

Уже обсуждалось:

Маркер - он универсальный. Он умеет привязывать и выравнивать геометрию под родительский объект. Но у него нет "геометрических зависимостей"

 

Сам объект лежит в посте #652

 

2. Что за табличные отчеты?

Тут не всё так просто :-)

Не знаешь

Точнее не, понятно (мне), что нужно получить

http://www.youtube.com/watch?v=dKR4pWemeI4&list=PLxzNmJ3Maam5c5pCkaWGaGAVzOVq2ddqD&index=15&t=0s

 

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

 

function OnConnect

{

if(rPart == 0){

if(obj.strTheType == "SCHEME_04_3_2" && obj.strTheName == "SCHEME_04_3_2_FIDER"){

SetParamConstraint(POWER_NOMINAL_SUMM, obj, EXPR, "obj.POWER_NOMINAL", FALSE);

NoVectorSelect = 1;

Handled = OBJ_HANDLED;

};

};

 

}

Не копирует даже значение параметра, что уже говорить о сложении нескольких

 

P.S. прикрепил свои файлы.

Есть объект SCHEME_04_3_2_FIDER (это тот что мы делали ранее, он есть просто фидер отходящий),

а есть объект SCHEME_04_3_2_FIDER_INTRO это как бы вводной фидер в щиток (я его сделал из SCHEME_04_3_2_FIDER и начал там потихоньку менять подшаманивать под нужды вводного фидера).

Пока я пробую связать эти объекты по одному параметку (POWER_NOMINAL в отходящем фидере, и POWER_NOMINAL_SUMM в вводном фидере).

То есть в идеале, POWER_NOMINAL_SUMM в вводном фидере должен считать сумму параметром POWER_NOMINAL в остальных фидерах.

Проблема в том, что мне не удалось даже присвоить POWER_NOMINAL_SUMM значение POWER_NOMINAL хотябы чтобы попробовать связать. Не понимаю в чем проблема.

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

Что я делаю не так?

SCHEME_04_3_2_FIDER.rar

Edited by Ruyke
Link to comment
Share on other sites

Проблема в том, что мне не удалось даже присвоить POWER_NOMINAL_SUMM значение POWER_NOMINAL

Что я делаю не так?

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

Посмотри в functionOnChangeParameters

function OnChangeParameters {

// Я добавил 20.05.2019 19:55
POWER_NOMINAL_SUMM = new.POWER_NOMINAL_SUMM;

Там есть всё, что хочешь, кроме именно этого параметра :-|

SCHEME_04_3_2_FIDER_INTRO.zip

  • Like 1
Link to comment
Share on other sites

Проблема в том, что мне не удалось даже присвоить POWER_NOMINAL_SUMM значение POWER_NOMINAL

Что я делаю не так?

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

Посмотри в functionOnChangeParameters

function OnChangeParameters {

// Я добавил 20.05.2019 19:55
POWER_NOMINAL_SUMM = new.POWER_NOMINAL_SUMM;

Там есть всё, что хочешь, кроме именно этого параметра :-|

 

Ага спасибо большое, теперь понятно в чем неточность была.

Я так понял оператор summ(); там не работает? Ну чтобы суммировать этот параметр от всех привязанных объектов.

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

  • Like 1
Link to comment
Share on other sites

Я так понял оператор summ(); там не работает? Ну чтобы суммировать этот параметр от всех привязанных объектов.

Не понял вопрос. И вообще просто + чем плох?

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

Можно. Можно прямо из "Мастера зависимостей".

 

http://www.youtube.com/watch?v=-RLPyFn08Qs&list=PLxzNmJ3Maam67e9mrRIXhkdP-9e0VY9hG&index=29&t=0s

  • Like 1
Link to comment
Share on other sites

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

И обнаружил некоторую особенность, а именно если все эти махинации с установкой зависимостей поставить не в функцию OnConnect, а в BeforeConnect (см. скрин)

А на втором скрине я показал как он это делает, то бишь выделено несколько одинаковых объектов (хотя было бы удобнее если бы можно было выбирать объекты как в таблице просто выделением), только конечное значение он берет из одного из них (получилось 6, хотя желтым подписано что в итоге должно быть (20). (см. скрин)

 

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

OnConnect1.png

OnConnect2.png

Edited by Ruyke
Link to comment
Share on other sites

>>только конечное значение он берет из одного из них

---------

Очевидно жэж, что BeforeConnect вызывается каждый раз при наведении курсор на объект (объект меняет цвет)

далее ты сбрасываешь все зависимости, ResetLastConctraint, потом задаешь по новой, наводишь курсор на другой объект все сбрасываешь и так по кругу)))

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

если хочешь, чтобы собирал зависимости с объектов (на которые наводил курсор), закомментируй все в BeforeConnect

а зависимости задавай в OnConnect

ЗЫ хотя это неправильно, получишь ошибки расчетов, но понять откуда они и отследить не сможешь

  • Like 1
Link to comment
Share on other sites

>>только конечное значение он берет из одного из них

---------

Очевидно жэж, что BeforeConnect вызывается каждый раз при наведении курсор на объект (объект меняет цвет)

далее ты сбрасываешь все зависимости, ResetLastConctraint, потом задаешь по новой, наводишь курсор на другой объект все сбрасываешь и так по кругу)))

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

если хочешь, чтобы собирал зависимости с объектов (на которые наводил курсор), закомментируй все в BeforeConnect

а зависимости задавай в OnConnect

ЗЫ хотя это неправильно, получишь ошибки расчетов, но понять откуда они и отследить не сможешь

Так если это будет в OnConnect то больше чем один раз на один и тот же объект он не наводится (ну не может он выделить несколько одинаковых объектов как на предыдущем скрине)

А как правильно? Как сумму мне посчитать как я описал выше?

Link to comment
Share on other sites

Так если это будет в OnConnect то больше чем один раз на один и тот же объект он не наводится (ну не может он выделить несколько одинаковых объектов как на предыдущем скрине)

А как правильно? Как сумму мне посчитать как я описал выше?

Не припомню примера реализации такой задачи.

Состав и работа MechWizard.zip

  • Like 1
Link to comment
Share on other sites

Так если это будет в OnConnect то больше чем один раз на один и тот же объект он не наводится (ну не может он выделить несколько одинаковых объектов как на предыдущем скрине)

А как правильно? Как сумму мне посчитать как я описал выше?

ну попробуй в BeforeConnect закомментировать только ResetLastConctraint

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

ну и скачай InDebMon , значительно поможет впихнуть невпихуемое в отладке

  • Like 1
Link to comment
Share on other sites

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

 

Теперь у меня второй вопрос, пытаюсь сделать спецификацию общую, и там в шаблонах отчетов не знаю как на один столбец как то умудрится несколько параметров определить, ну то есть вот у меня есть объект FIDER, но в нем не только же автомат может пойти в спецификацию, но и контактор может быть и реле (и так как они в одном параметрическом объекте, то у них параметры по своему называются для спецификации., Вот как получается чтобы они в одном отчете друг под другом записывались? Я понимаю что можно добавить другой отчет, но тогда будет не спецификация , а каша, сами отчеты же между собой не группируются

  • Like 1
Link to comment
Share on other sites

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

 

Теперь у меня второй вопрос, пытаюсь сделать спецификацию общую, и там в шаблонах отчетов не знаю как на один столбец как то умудрится несколько параметров определить, ну то есть вот у меня есть объект FIDER, но в нем не только же автомат может пойти в спецификацию, но и контактор может быть и реле (и так как они в одном параметрическом объекте, то у них параметры по своему называются для спецификации., Вот как получается чтобы они в одном отчете друг под другом записывались? Я понимаю что можно добавить другой отчет, но тогда будет не спецификация , а каша, сами отчеты же между собой не группируются

что-то начинает вырисовываться, в смысле приходит понимание для чего нужна эта красота

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

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

руками добавлять? концепция рушится....

надо. что то думать :)

  • Like 2
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...