Jump to content

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


Recommended Posts

Появились следующие вопросы по созданию объектов в базе элементов:

 

1. В записи графического исполнения, например, LineToA(mp+oX*(22.3378)+oY*(23.2117), 1,1); что означает последняя 1?

2.Как можно задать список значений в combobox? Form.combobox.AddItem "123" не работает.

 

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

Как задать список значений из скрипта? Например, есть функция, которая повешена на открытие формы. Из этой функции было бы неплохо задать набор значений combobox в соответствии с определенными условиями. Какие методы поддерживает combobox?

Например, стандартный виндовый combobox понимает такие конструкции на C#:

Form.combobox.Items.Add("qwerty"); //Добавить элемент

Form.combobox.Items.Insert(1, "qwerty"); //Добавить элемент в 1 позицию

Form.combobox.Items.Clear(); //Очистить список элементов

и т.д.

А как это сделать из скрипта?

Link to comment
Share on other sites

Например, стандартный виндовый combobox понимает такие конструкции на C#:

 

У нас нет возможности и необходимости повторять в MechWizard'е функционал C#. Он, сам по себе самодостаточен, и , если вы владеете им, то можете не просто создавать свои объекты, а переписать (например ;-) ) нанокад.

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

 

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

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

 

Например тут (

)

 

http://www.youtube.com/watch?v=kBp-fkC9taw&index=55&list=PL1MQqrS2qjWNfYGu1IyeLR3l5YGd4N20p

Link to comment
Share on other sites

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

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

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

 

PS Я не требую создать вундервафлю, просто интересуюсь возможностями ^_^

Link to comment
Share on other sites

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

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

таблица с фильтрацией на форме

и фильтром типа SelectInCache("kFilter", "FilterGost","<", bbFilterGost); по таблице базы обрабатываешь свои условия, без танцев с бубном и сишар

  • Like 2
Link to comment
Share on other sites

таблица с фильтрацией на форме

и фильтром типа SelectInCache("kFilter", "FilterGost","<", bbFilterGost); по таблице базы обрабатываешь свои условия, без танцев с бубном и сишар

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

 

А есть где-нибудь список доступных из скрипта свойств контролов?

Я нашел только Enabled, Visible и Value.

Link to comment
Share on other sites

А есть где-нибудь список доступных из скрипта свойств контролов?

Я нашел только Enabled, Visible и Value.

есть в книжке по мехвизарду и на форумах крохи..

это называется ДСП.

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

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

  • Like 2
Link to comment
Share on other sites

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

Ну идея не новая и, в принципе doctorraz уже ответил:

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

Одно дело реализовать функционал, другое дело сделать его удобным, доступным и востребованным. Вот как с комбобоксами решать такие задачи?

http://www.youtube.com/watch?v=5E3GGmVv3M0&feature=youtu.be

 

 

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

Да в общем-то при желании все можно сделать. Вопрос цены и затраченного времени. :-)

  • Like 2
Link to comment
Share on other sites

  • 2 weeks later...

К вопросу о работе с блоками autocad. Действительно, блоков и наработок много.

Но блоки можно модифицировать и упростить взаимодействие "Блока и пользователя"

http://www.youtube.com/watch?v=zuWNJsfsk6w&list=PL1MQqrS2qjWNfYGu1IyeLR3l5YGd4N20p

  • Like 2
Link to comment
Share on other sites

можно, но имхо они для другого (блоки)

как пример дин блок с таблицей параметров строк этак на 100 будет вызывать неадекватные тормоза всего чертежа

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

Оно и понятно, описание дин блока, таблица его параметров и вся возможная графика хранится в чертеже, а параметрика объектов, таблицы в базе (в чертеже только индекс и текущая графика)

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

  • 1 month later...

Автомат.rar

Что не так с автоматом?

Когда вставляю два не связанных автомата все красиво отображается.

Но когда один соединен со вторым, то при перемещении главного автомата у второго меняется вид

Автомат.rar

Link to comment
Share on other sites

Но когда один соединен со вторым, то при перемещении главного автомата у второго меняется вид

 

В Вашем случае плоскость WP2 задана параллельно плоскости "OXY" - соответственно зависимость поворачивает объект.

 

img-2016-10-27-11-08-35.png

 

Если Вы хотите (как я понял) соединить верхние и нижние точки "автомата" то плоскость должна лежать параллельно "OYZ".

 

img-2016-10-27-11-17-26.png

 

Желательно сразу задать направление вектора. Потом проще накладывать зависимости.

 

Я не смог разобраться с Вашими комментариями в скрипте.

Приложил свой вариант:

Автомат (вариант).zip

  • Like 3
Link to comment
Share on other sites

  • 7 months later...

Из переписки:

Способ формирования текстовой строки для "Исполнения" в объекте БД.

Таблица и объекты в архиве.

Объекты переехали в пост #243

  • Like 2
Link to comment
Share on other sites

  • 3 weeks later...

Знающее люди, помогите пожалуйста..

Мучаюсь с видами и ручками на них..

Хочу сделать банальный арматурный стержень, чтобы был вид сбоку, сверху и сечение.

На виде сбоку - за ручку увеличивалась бы длина стержня, поворот за эту же ручку и отдельная ручка на диаметр арматуры (этот вид у меня получилось)

на виде сверху - просто базовая ручка и ручка для распределения стержня и ручка для длины (для распределения ручка не появляется).

на сечение - две ручки для распределения (сверху и снизу сечения) + ручку для диаметра.

Вроде всё правильно (как мне кажется) прописываю, но не работает.

Скажите, где я тупой?)

Файл стержня прилагаю

 

 

 

L - длина стержня

D - диаметр

DR - длина распределения

 

function SetGripPoint {
OXPlane = Plane(pntOrigin,vecDirection);
OYPlane = Plane(pntOrigin,vecPlane);
vecNormal = getLocalNormal(vecDirection,vecPlane);
OZPlane = Plane(pntOrigin,vecNormal);
if(lViewType == VFRONT) {
NGrip = 3;
pntGrip0 = pntOrigin;
pntGrip1 = pntOrigin + vecDirection*(L) + vecPlane*(0);
pntGrip2 = pntOrigin + vecDirection*(0) + vecPlane*(D);
};
if(lViewType == VTOP) {
NGrip = 4;
pntGrip0 = pntOrigin;
pntGrip1 = pntOrigin + vecPlane*(D);
pntGrip2 = pntOrigin + vecNormal*(DR) + vecPlane*(0);
pntGrip3 = pntOrigin + vecNormal*(DR) + vecPlane*(D);
};
if(lViewType == VLEFT) {
NGrip = 3;
pntGrip0 = pntOrigin;
pntGrip1 = pntOrigin + vecDirection*(L) + vecPlane*(0);
pntGrip3 = pntOrigin + vecDirection*(0) + vecNormal*(DR);
};

};
function OnMoveGripPoint {
OXPlane = Plane(pntOrigin,vecDirection);
OYPlane = Plane(pntOrigin,vecPlane);
vecNormal = getLocalNormal(vecDirection,vecPlane);
OZPlane = Plane(pntOrigin,vecNormal);

if(lViewType == VFRONT) {
if (NMovingGrip == 0) {
pntOrigin = pntGrip0;
};
if(NMovingGrip == 1){
L = vecLen(pntGrip0 - pntGrip1)/rScl;
vecDirection = pntGrip1 - pntGrip0;
};
if(NMovingGrip == 2){
D = vecLen(pntGrip2 - pntGrip0)/rScl;
LoadInCache( Tip,GOST, D );
SelectInCache( "kFirst","Tip", "~", Tip,"GOST", "~", GOST,"D", "~", D);
};
};
if(lViewType == VTOP){
if (NMovingGrip == 0) {
pntOrigin = pntGrip0;
};
if(NMovingGrip == 1){
DR = vecLen(pntGrip0 - pntGrip2)/rScl;
vecNormal = pntGrip2 - pntGrip0;
};
if(NMovingGrip == 2){
DR = vecLen(pntGrip2 - pntGrip3)/rScl;
vecNormal = pntGrip2 - pntGrip3;
};
if(NMovingGrip == 3){
D = vecLen(pntGrip0 - pntGrip1)/rScl;
LoadInCache( Tip,GOST, D );
SelectInCache( "kFirst","Tip", "~", Tip,"GOST", "~", GOST,"D", "~", D);
}; 

};
if(lViewType == VLEFT) {
if (NMovingGrip == 0) {
pntOrigin = pntGrip0;
};
if (NMovingGrip == 1) {
L = vecLen(pntGrip0 - pntGrip1)/rScl;
};
if (NMovingGrip == 2) {
DR = vecLen(pntGrip2 - pntGrip0)/rScl;
};
}; 
//end auto generation for view VFRONT
};

 

 

Арматурный стержень 3.0.mcd.7z

Link to comment
Share on other sites

Не сильно копался, но, если я правильно понял, то на VTOP вы не видите плоскость Plane. Тогда:

 

pntGrip0 = pntOrigin;

pntGrip1 = pntOrigin + vecPlane*(D);

Эти 2 точки сольются в одну, т.к. значения Direction и Normal у них одинаковы.

 

pntGrip2 = pntOrigin + vecNormal*(DR) + vecPlane*(0);

pntGrip3 = pntOrigin + vecNormal*(DR) + vecPlane*(D);

У этих двух - аналогичная ситуация.

Т.е. программа как минимум не знает, какую именно из каждой пары точек вы выбираете. Добавьте во 2 и 3 точку какой-нибудь отличный от нуля Direction и будет вам, как сказал бы Доктор, счастье.

Третью плоскость не смотрел, но думаю, там та же драма. Плюс могут быть ошибки в самом поведении объекта.

 

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

 

Кстати, в перепутанных видах, возможно, и кроется ваша беда (хотя по кол-ву ручек по идее нет...). Сейчас в сечении (когда арматура представляет из себя просто круг) - 4 ручки (2 из которых - непонятно на что, т.к. не контачат. как минимум, у меня). Нафига..?

Edited by Mитька
  • Like 3
Link to comment
Share on other sites

И вот это вот гляньте, делалось давно и топорно, но вдруг пригодится. Привязываются к краю плиты с заданным защитным слоем. При небольшом усилии можно все 4 типа объединить в один объект и навертеть свистелок форму, подсчёт массы, разные диаметры, глубину и прочие ваши хотелки. Геометрия прилагается. А то задавать распределение отдельно поперечной арматуре - это как-то сложно...

Армирование.7z

Edited by Mитька
  • Like 2
Link to comment
Share on other sites

Кстати, в перепутанных видах, возможно, и кроется ваша беда (хотя по кол-ву ручек по идее нет...). Сейчас в сечении (когда арматура представляет из себя просто круг) - 4 ручки (2 из которых - непонятно на что, т.к. не контачат. как минимум, у меня). Нафига..?

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

Распределение - имеется ввиду - тянешь за эту ручку в сторону - появляются через указанный шаг новые стрежни

 

post-65588-0-77277700-1499676747.png

 

 

Может я как-то не правильно понимаю суть кода..

Как я думаю:

в function SetGripPoint мы задаёмся количеством ручек и указываем их расположение.

А в function OnMoveGripPoint мы уже задаём функции, что происходит, когда мы тянем за эти ручки..

 

P.S. Я в итоге ввёл исполнения вместо видов и отказался от вида сверху.

Прикрепляю файл, если интересно, что хотелось получить от ещё 2 ручек в виде с сечением)

Desktop.7z

  • Like 1
Link to comment
Share on other sites

  • 1 month later...
  • 4 weeks later...

Можно ли присвоить тексту в объекте тип линии, отличный от 1?

Сложно представить ситуацию, когда текст пишется типом линии (может еще с шейпами) :-)

Это печально (с)

 

 

Крепкие сибирские мужики получили японскую бензопилу. Сначала дали ей перепилить тонкое бревно.

Вжик! - сказала японская бензопила и перепилила тонкое бревно.

ОГО! - сказали крепкие сибирские мужики и дали пиле толстое бревно.

Вжик! - сказала японская бензопила и перепилила толстое бревно.

ОГО! - сказали крепкие сибирские мужики и дали пиле гигантское бревно.

Вжик! - сказала японская бензопила и перепилила гигантское бревно.

ОГО! - сказали крепкие сибирские мужики и дали пиле стальной ломик.

КХХХРРРЖЖЖ - сломалась японская бензопила.

НУ ДЫК! - ухмыльнулись крепкие сибирские мужики и пошли валить лес ручными пилами. :)

 

  • Like 2
Link to comment
Share on other sites

Сложно представить ситуацию, когда текст пишется типом линии (может еще с шейпами) :-)

 

Разве сложно? Простейший объект возьмите: линия и её название. Линия нужна типа 1, типу 1 автоматом присвоена толщина "По слою", толщина слоя - 0,7, а текст нужен толщиной 0,13, как и весь окружающий текст, а не 0,7.

Link to comment
Share on other sites

Видимо, разные типы линий (каждая со своими настройками веса) - единственный известный мне способ использовать разные веса линий в пределах одного объекта. Если есть ещё какие-то, буду признателен за информацию. =)

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...