Перейти к содержимому


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


Сообщений в теме: 757

#741 dromandon

    Активист

  • Пользователи
  • PipPipPipPip
  • 218 сообщений
  • Пол:Мужчина
  • Город:Калининград

Отправлено 31 Май 2019 - 10:47

Просмотр сообщенияRuyke (31 Май 2019 - 10:44) писал:

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

ткнуть тут

#742 Ruyke

    Активист

  • Пользователи
  • PipPipPipPip
  • 243 сообщений
  • Пол:Мужчина

Отправлено 31 Май 2019 - 11:01

Просмотр сообщенияdromandon (31 Май 2019 - 10:47) писал:

Просмотр сообщенияRuyke (31 Май 2019 - 10:44) писал:

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

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

#743 Ruyke

    Активист

  • Пользователи
  • PipPipPipPip
  • 243 сообщений
  • Пол:Мужчина

Отправлено 31 Май 2019 - 12:24

Заметил еще очень странную особенность. Я взял из объекта "шкала" код исполнения чтобы он линеечки прописывал при растягивании
Выглядит это так:
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;
  };
И программа спокойно работает.
Это особенность скриптов в описании исполнений такое?

#744 Ruyke

    Активист

  • Пользователи
  • PipPipPipPip
  • 243 сообщений
  • Пол:Мужчина

Отправлено 31 Май 2019 - 12:54

И почему такое задание цикла не работает с праметрически распознанными объектами которая делает программа, а не вручную. Она там вначале задает какой то дополнительный цикл, который я понять не могу.
Вот например когда не работает:
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),
То тогда все работает.
Почему?

#745 Ruyke

    Активист

  • Пользователи
  • PipPipPipPip
  • 243 сообщений
  • Пол:Мужчина

Отправлено 07 Июнь 2019 - 07:57

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

#746 doctorraz

    Активист

  • Пользователи
  • PipPipPipPip
  • 1 110 сообщений
  • Пол:Мужчина
  • Город:Волгоград
  • Интересы:всё понемногу

Отправлено 07 Июнь 2019 - 08:05

>>И вообще зачем нужно чтото в protected добавлять?
---------------------
для того, что бы деталь "помнила" значение переменной, эта переменная должна быть объявлена, либо
public-открытая, публичная (видна в свойствах) но есть нюансы
либо protected-защищеная скрытая, снаружи не видно, но деталь е помнит и любит пользуется
----------
если переменную не объявлять, то она будет локальной внутри функции на один сеанс
----------
смотри справку, ну и в блоге я немного разжевывал

Сообщение отредактировал doctorraz: 07 Июнь 2019 - 08:07


#747 MCAD

    Активист

  • Пользователи
  • PipPipPipPip
  • 1 070 сообщений
  • Пол:Мужчина

Отправлено 07 Июнь 2019 - 08:28

Просмотр сообщенияRuyke (07 Июнь 2019 - 07:57) писал:

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

Зависит от того как вы планируете их использовать.


00:00 Имеем на чертеже образмеренный эскиз Шкафа на плане
00:03 Вызываем команду spWizParam и, выбрав диагональные линии, задаём переменную, которая будет отвечать за видимость примитива на чертеже rHideLine, и переменную для задания типа линии rTypeLine
00:11 Жёлтые линии, в нашем случае, служат для удобства построения и упрощения эскиза. На чертеже модели их не должно быть видно. Используя spWizParam задаём им свойство «Рабочий объект»
00:21 Открываем MechWizard и созадём новый объект «Шкаф» выбрав для него расположение в структуре БД
00:49 Добавляем таблиц и создаём три табличных параметра. rH (Ширина), rB (Глубина), rY (Высота). Задав им нужные значения.
02:12 Создаем новое «Исполнение» и распознаём его на чертеже.
02:19 В описании исполнения присутствую параметры заданные на чертеже как размеры и с помощью spWizParam
02:31 Запускаем «Мастер Скриптов»

Вот тут есть пример с табличными параметрами.
Для таких параметров нужно
Скрытый текст

Прикрепленные файлы

  • Прикрепленный файл  Шкаф.zip   73,73К   0 Количество загрузок:

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

© Леон Беннет

http://www.spds.ru


#748 Ruyke

    Активист

  • Пользователи
  • PipPipPipPip
  • 243 сообщений
  • Пол:Мужчина

Отправлено 11 Июнь 2019 - 11:51

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

А вот смотрите еще.
У меня есть формула в OnMakeParameter
Rsumm = Rsumm_old + R;
Xsumm = Xsumm_old + X;

вот она жестко считает всегда эти значения, но параметры R и X я могу задавать как из диалога (формы), так и из свойств объекта.
Но вот какая загвоздка, у меня в диалоге есть вывод параметра Rsumm, который никак не хочет обновляться при смене какого нибудь из параметров. То есть если я закрою и открое объект заного то отображение будет правильным, а если нет, то в форме ничего не увижу какое число он посчитал.
А если я ввожу из свойств то он в свойствах же сразу и пересчитывает. Все ок.
В форме получается настроить правильное отображение, если я из OnMakeParameter скопирую ту же формулу в OnChangeDialog.
Это так и должно быть? или есть другой способ чтобы в форме тоже обновлялось. (Rsumm = new.Rsumm в OnChangeDialog уже пробовал и не помогло, кстати в OnChangeParameters у меня все переменные обновлены (=new.Rsumm))

Сообщение отредактировал Ruyke: 11 Июнь 2019 - 11:52


#749 MCAD

    Активист

  • Пользователи
  • PipPipPipPip
  • 1 070 сообщений
  • Пол:Мужчина

Отправлено 11 Июнь 2019 - 12:36

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

Просмотр сообщенияRuyke (11 Июнь 2019 - 11:51) писал:

Но вот какая загвоздка, у меня в диалоге есть вывод параметра Rsumm, который никак не хочет обновляться при смене какого нибудь из параметров. То есть если я закрою и открое объект заного то отображение будет правильным, а если нет, то в форме ничего не увижу какое число он посчитал.
Попробуй создать "Пользовательскую функцию" и присвоить контроллу на событие "На изменение" эту функцию.
Прикрепленный файл  img-2019-06-11-15-35-16.png   26,11К   1 Количество загрузок:

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

© Леон Беннет

http://www.spds.ru


#750 Ruyke

    Активист

  • Пользователи
  • PipPipPipPip
  • 243 сообщений
  • Пол:Мужчина

Отправлено 11 Июнь 2019 - 12:42

Просмотр сообщенияMCAD (11 Июнь 2019 - 12:36) писал:

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

Просмотр сообщенияRuyke (11 Июнь 2019 - 11:51) писал:

Но вот какая загвоздка, у меня в диалоге есть вывод параметра Rsumm, который никак не хочет обновляться при смене какого нибудь из параметров. То есть если я закрою и открое объект заного то отображение будет правильным, а если нет, то в форме ничего не увижу какое число он посчитал.
Попробуй создать "Пользовательскую функцию" и присвоить контроллу на событие "На изменение" эту функцию.
Прикрепленный файл  img-2019-06-11-15-35-16.png   26,11К   1 Количество загрузок:

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

#751 MCAD

    Активист

  • Пользователи
  • PipPipPipPip
  • 1 070 сообщений
  • Пол:Мужчина

Отправлено 11 Июнь 2019 - 13:27

Просмотр сообщенияRuyke (11 Июнь 2019 - 12:42) писал:

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

Просмотр сообщенияRuyke (11 Июнь 2019 - 11:51) писал:

Rsumm = Rsumm_old + R;
Xsumm = Xsumm_old + X;

Я же не вижу всего скрипта :-(

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

© Леон Беннет

http://www.spds.ru


#752 doctorraz

    Активист

  • Пользователи
  • PipPipPipPip
  • 1 110 сообщений
  • Пол:Мужчина
  • Город:Волгоград
  • Интересы:всё понемногу

Отправлено 11 Июнь 2019 - 14:07

>>В форме получается настроить правильное отображение, если я из OnMakeParameter скопирую ту же формулу в OnChangeDialog
вынеси формулу в отдельную функцию и из функций OnMakeParameter , "OnChangeDialog" вызывай ее
посмотри в справке какие стандартные функции по какому событию вызываются и в каком порядке

Сообщение отредактировал doctorraz: 11 Июнь 2019 - 14:11


#753 Ruyke

    Активист

  • Пользователи
  • PipPipPipPip
  • 243 сообщений
  • Пол:Мужчина

Отправлено 13 Июнь 2019 - 07:04

Спасибо попробую!
А еще не подскажете, как именно передать параметр при подключаеии (не взять зависимость а передать чтоли)?
Ну вот подключаю я гайку к блоту (а не наоборот, и вот если у меня гайка большего диаметра то при присоединении её к болту,она передавать должна свой диаметр и болт соответственно подстраивает себя на такой же диаметр.

#754 Mитька

    Активист

  • Пользователи
  • PipPipPipPip
  • 340 сообщений
  • Пол:Мужчина
  • Город:Хабаровск

Отправлено 15 Июнь 2019 - 03:39

Просмотр сообщенияMитька (13 Сентябрь 2018 - 18:51) писал:

Просмотр сообщенияdoctorraz (13 Сентябрь 2018 - 11:23) писал:

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

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

В итоге жизнь заставила что-то с этим сделать, кто-то у нас понарисовал отраженными объектами с текстом хренову гору материала, и пришлось убить вопрос.
Не стал морочиться с автоматикой, сделал вручную:
Добавил 2 переменные "Отзеркалить по X" и "По Y" для работы из Свойств и 2 рабочих плоскости из точки вставки. При смене значения 0 на любое другое, объект зеркалится вокруг оси, а переменная возвращается обратно в 0.
Поскольку целевые объекты подразумевают только расположение по X и Y без поворотов, то проверка на то "отражен объект сейчас извне или нет" простая: по значению угла между рабочими плоскостями и осями чертежа. Да, можно и усложнить, но для локального исправления ошибок одной кнопкой мне пока хватит:
function OnChangeParameters {
		if(new.mirx!=mirx){
xPnt1=pntOrigin:x;
vecDirection=-vecDirection;
WP1=Plane(pntOrigin,vecDirection);
q=angleTwoPi(vector(1,0,0);vector(WP1));
if (q==0) pntOrigin:x = xPnt1-x;
if (q==180) pntOrigin:x = xPnt1+x;
mirx=0
};

if(new.miry!=miry){
xPnt1=pntOrigin:y;
vecPlane=-vecPlane;
WP2=Plane(pntOrigin,vecPlane);
q=angleTwoPi(vector(0,1,0);vector(WP2));
if (q==0) pntOrigin:y = xPnt1-y;
if (q==180) pntOrigin:y = xPnt1+y;
miry=0
};
};

Вдруг кому пригодится.

UPD: Хотя сейчас понимаю, что именно для исправления ошибок, проверку "отражен объект сейчас извне или нет" надо проводить ДО отзеркаливания, и если проверка проходит, то просто НЕ зеркалить объект. Это позволит не искать кривые объекты, а просто выделить всё и нажав 2 кнопки одну кнопку, исправить ошибки там, где они есть.

Сообщение отредактировал Mитька: 15 Июнь 2019 - 04:09


#755 Mитька

    Активист

  • Пользователи
  • PipPipPipPip
  • 340 сообщений
  • Пол:Мужчина
  • Город:Хабаровск

Отправлено 15 Июнь 2019 - 04:07

И на выходе получить вот такое:
if(new.mirx!=mirx){
  xPnt1=pntOrigin:x;
  yPnt1=pntOrigin:y;
  q1=angleTwoPi(vector(1,0,0);vector(WP1));
  if (q1==180) {
   pntOrigin:x = xPnt1-x;
   vecDirection=-vecDirection;
   WP1=Plane(pntOrigin,vecDirection)
   };
  q2=angleTwoPi(vector(0,1,0);vector(WP2));
  if (q2==180) {
   pntOrigin:y = yPnt1-y;
   vecPlane=-vecPlane;
   WP2=Plane(pntOrigin,vecPlane)
   };
  mirx=0;


#756 Ruyke

    Активист

  • Пользователи
  • PipPipPipPip
  • 243 сообщений
  • Пол:Мужчина

Отправлено 17 Июнь 2019 - 06:12

А не подскажете, как привязать таблицу к Объекту спдс? Ну вот при вставке какого нибудь шаблона таблицы из базы (Экспликации например) она может жестко привязаться к формату, так что потом не удалишь без удаления формата. Как сделать так же только к какому то другому объекту? Не нашел видео о привязке таблице геометрически при вставке.

#757 MCAD

    Активист

  • Пользователи
  • PipPipPipPip
  • 1 070 сообщений
  • Пол:Мужчина

Отправлено 17 Июнь 2019 - 07:32

Просмотр сообщенияRuyke (17 Июнь 2019 - 06:12) писал:

так что потом не удалишь без удаления формата.
Выбрать в таблицу и в контекстном меню указать "Отвязать формат"
Прикрепленный файл  img-2019-06-17-10-30-35.png   68,99К   2 Количество загрузок:

Просмотр сообщенияRuyke (17 Июнь 2019 - 06:12) писал:

Как сделать так же только к какому то другому объекту?
Нельзя.

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

© Леон Беннет

http://www.spds.ru


#758 Ruyke

    Активист

  • Пользователи
  • PipPipPipPip
  • 243 сообщений
  • Пол:Мужчина

Отправлено 17 Июнь 2019 - 07:50

Просмотр сообщенияMCAD (17 Июнь 2019 - 07:32) писал:

Просмотр сообщенияRuyke (17 Июнь 2019 - 06:12) писал:

так что потом не удалишь без удаления формата.
Выбрать в таблицу и в контекстном меню указать "Отвязать формат"
Прикрепленный файл  img-2019-06-17-10-30-35.png   68,99К   2 Количество загрузок:

Просмотр сообщенияRuyke (17 Июнь 2019 - 06:12) писал:

Как сделать так же только к какому то другому объекту?
Нельзя.
Ясно спасибо.





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 скрытых пользователей