Отзеркаливание текста в параметрическом объекте (2)

Примеры и Уроки 11.01.2021 15:05

В продолжение этого урока «Отзеркаливание текста в параметрическом объекте»

Работать будем с получившимся объектом в предыдущем уроке и будем его упрощать и дорабатывать.

На самом деле, действий не так много придётся совершить =) Благодаря случайности обратил внимание, что у всех объектов разница углов между vecDirection и осью oZ, и vecPlane и осью o Z будет всегда равна 90 градусов. Только у неотзеркаленых она положительная,А у отзеркаленых — отрицательн

Давайте проверим это и добавим два параметра в наш объект:

	rAngleZ1, "Угол Z (Direction)", 
	rAngleZ2, "Угол Z (Plane)", 

Так же добавим их в функцию MirrorObject:

	rAngleZ1 = angleTwoPi(vecDirection,oZ);
	rAngleZ2 = angleTwoPi(vecPlane,oZ);

и закомментируем наши rAngleX и rAngleY в функции MirrorObject, чтобы не производилось отзеркаливание объекта.

Достаём объект из базы, поворачиваем его всячески и зеркалим, убеждаясь в словах выше:

Видим, что по-мимо углов в 90 и -90 градусов присутствует углы в -270 и 270 градусов соответственно, причина этому то, что когда величина угла достигает 360 градусов она сбрасывается на 0.  и получается, что 10-280=-270,но при этом 370-280=90.

Не забываем отразить это в нашем коде.

Для удобства в  функции MirrorObject добавим переменную a равную a=rAngleZ1-rAngleZ2

Пишем в функции MirrorObject:

	rAngleZ1 = angleTwoPi(vecDirection,oZ);
	rAngleZ2 = angleTwoPi(vecPlane,oZ);
	a=rAngleZ1-rAngleZ2;
	if(a==-90 || a==270)
	{
		vecDirection=-vecDirection;
	}

Теперь наш объект зеркалится обратно, но остаётся проблема с поворотом текста

Для поворота текста будем работать с переменной rAngleY, «Угол Y», поэтому надо её расскомментировать.

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

У меня он получился от  90<rAngleY<=270

Исходя из этого, обновляем нашу функцию следующим образом, тем самым приводя её к итоговому виду

	rAngleY = angleTwoPi(oY,vecPlane);
	rAngleZ1 = angleTwoPi(vecDirection,oZ);
	rAngleZ2 = angleTwoPi(vecPlane,oZ);
	a=rAngleZ1-rAngleZ2;
	sTextAngle=0;
	if(a==-90 || a==270)
	{
		vecDirection=-vecDirection;
	}
	if(rAngleY>90 && rAngleY<=270)
	{
		sTextAngle=180;
	}

Обновляем наши объекты и наслаждаемся результатом =)

 

 

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

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

Примеры и Уроки 06.01.2021 14:44

В этой небольшой статье рассмотрим как можно отредактировать стандартный параметрический объект, чтобы за базовую точку объекта можно было не переносить объект, а растягивать. Это удобно будет при работе со швеллерами, трубами и прочими объектами, которые приходится растягивать в обе стороны.
Для примера будет использовать стандартный параметрический объект трубу по ГОСТ 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;
	};

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

Железобетонная колонна как параметрический объект

Блог им. SkieyGray 08.04.2016 13:57
Создал параметрический объект {Железобетонная колонна v1.0} и таблицы к нему. Такой набор объектов позволяет увеличить производительность работы.

Вышла версия СПДС GraphiCS для ZWCAD+

Проект СПДС 15.10.2015 14:31

Компания ЗВСОФТ сообщает о выходе версии СПДС GraphiCS для САПР ZWCAD+.

Приложение СПДС GraphiCS, разрабатываемое компанией CSoft Development, предназначено для автоматизации выполнения проектной и рабочей документации с учетом требований Системы проектной документации для строительства (СПДС). Приложение является многоплатформенным, и данная его версия предназначена только для графической платформы ZWCAD+.

В новую версию СПДС GraphiCS добавлены профильные инструменты построения инженерных сетей. В базу данных внесены элементы для оформления чертежей вентиляции и внутреннего газоснабжения, а также включены шаблоны спецификаций, которые автоматически собирают данные с чертежа и на основании атрибутов объектов формируют спецификацию в соответствии с отечественными нормами. Также добавлен ряд изменений. Подробное описание нововведений, появившихся в СПДС GraphiCS 10, можно найти на странице: СПДС GraphiCS 10 для ZWCAD — новые возможности.

Функциональная версия программы ZWCAD+ 2015 также представляет пользователям ряд новых возможностей, среди которых:

  • поддержка Юникода (Unicode);
  • 3D инструменты Sweep & Loft;
  • супер-штриховки (Super Hatch);
  • менеджер внешних ссылок (Reference Manager);
  • взаимодействие с картами Google Earth;
  • новый лаконичный интерфейс, снижающий зрительную нагрузку.

Загрузить коммерческую и пробную версию программного обеспечения можно на странице Приложения для ZWCAD+.

Параметрический объект СПДС Ограждение

Блог им. amk88 07.09.2015 13:34

Параметрический объект СПДС для автоматизации построения ограждений лестниц и площадок.

Скачать можно здесь autocad-prosto.ru/uroki-autocad/stroitelnye-konstrukcii/parametricheskiy-obekt-ograzhdenie.html

Команды СПДС GraphiCS

Блог им. Nika 27.08.2015 09:57

Для СПДС GraphiCS существуют русские алиасы команд. Все команды приложения под автокад начинаются с заглавных букв «СП».

Из общего файла команд автокада CommandAutoCorrectDic.cus, находящегося по адресу С:\Users\--\AppData\Roaming\Autodesk\AutoCAD 2016\R20.1\enu\Support, выдернут список 166 команд СПДС. Прикрепляю, может кому понадобится. 

Вышла новая версия СПДС GraphiCS 10

Проект СПДС 17.08.2015 12:33

Компания CSoft Development сообщает о выходе версии СПДС GraphiCS 10 для AutoCAD 2016.

В новую версию СПДС GraphiCS добавлены профильные инструменты построения инженерных сетей. В базу данных внесены элементы для оформления чертежей вентиляции и внутреннего газоснабжения, а также включены шаблоны спецификаций, которые автоматически собирают данные с чертежа и на основании атрибутов объектов формируют спецификацию в соответствии с отечественными нормами.

Кроме того, добавлены функциональные возможности профильных инструментов «Архитектуры». Для разных стен одного помещения теперь можно назначать различную отделку, само помещение задавать из нескольких контуров, указывать тип линий для проемов и учитывать при получении экспликации помещений отделку стен.

В СПДС GraphiCS 10 приведены в соответствие действующим нормам обложки и титульные листы, а также добавлены образцы штриховок.

Более подробная информация об этих и других усовершенствованиях представлена в разделе «Новые возможности» описания продукта.

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

Новые версии приложений на базе СПДС GraphiCS, такие как «Стройплощадка» и «Железобетон», будут выпущены позже, о чем будет сообщено дополнительно.

Невозможное — возможно!

Блог им. Segr 10.08.2015 11:13

Компания CSoft Development разработала революционную методику установки своих продуктов на AutoCAD LT.

Начиная с 1 апреля 2011 года любой пользователь AutoCAD LT сможет использовать его как платформу для установки продуктов компании CSoft Development. Установка не занимает много времени, и не требует специальных знаний. Метод установки работает только с коробочными версиями продуктов. Это единственный легальный метод установки наших продуктов.

В качестве доказательства приводим несколько фотографий с нашего испытательного стенда:

 

 

 

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