Перейти к содержанию
  • записей
    9
  • комментариев
    18
  • просмотров
    1 080

Растягивание объекта за базовую точку (pntOrigin)


dromandon

260 просмотров

В этой небольшой статье рассмотрим как можно отредактировать стандартный параметрический объект, чтобы за базовую точку объекта можно было не переносить объект, а растягивать. Это удобно будет при работе со швеллерами, трубами и прочими объектами, которые приходится растягивать в обе стороны.
Для примера будет использовать стандартный параметрический объект трубу по ГОСТ 167-69 (Несущие конструкции -> КМ -> Трубы)

Нас интересует функция OnMoveGripPoint

По умолчанию она выглядит так:

function OnMoveGripPoint{
	if(NMovingGrip == 1){
		L = vecLen(pntGrip0 - pntGrip1);
		vecDirection = pntGrip1 - pntGrip0;
		LoadInCache( B, s );
		SelectInCache( "kFirst", "B", "~", B,  "s", "~", s);
	} else {
		pntOrigin = pntGrip0; 
	};
}; 

 

Давайте для удобства приведём к более понятному виду и уйдём от конструкции else

function OnMoveGripPoint
{
	if(NMovingGrip == 0)
	{
		pntOrigin = pntGrip0; 
	};

	if(NMovingGrip == 1)
	{
		L = vecLen(pntGrip0 - pntGrip1);
		vecDirection = pntGrip1 - pntGrip0;
		LoadInCache( B, s );
		SelectInCache( "kFirst", "B", "~", B,  "s", "~", s);
	};
}; 

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

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

Получаем:

	if(NMovingGrip == 0)
	{
		pntOrigin = pntGrip0; 
		L = vecLen(pntGrip1 - pntGrip0);
	};

Ура, наш объект растягивается!)
Осталось дописать поведение вектора направления объекта:

	if(NMovingGrip == 0)
	{
		pntOrigin = pntGrip0; 
		L = vecLen(pntGrip1 - pntGrip0);
		vecDirection = pntGrip1 - pntGrip0;
	};

И всё, теперь всё работает просто великолепно)

Вот такими несложными манипуляциями мы упростили работу со стандартным параметрическим объектом, добавив возможность растягивать его в обе стороны =)

 

Спойлер

 

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

0 Комментариев


Рекомендуемые комментарии

Комментариев нет

Гость
Добавить комментарий...

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

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

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

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

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

Загрузка...
×
×
  • Создать...