Отзеркаливание текста в параметрическом объекте (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;
	};

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

В чем отличие команд Разбить все объекты и Разбить примитивы

Команды:
Разбить все объекты (EXPLODEALL) и
Разбить примитивы (SPEXPLODEPSEUDO, EXPLODEPSEUDO)

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

Автоматическая маркировка колонн через спецификацию

Примеры и Уроки 09.09.2020 17:30

Одно из основных возможностей версии СПДС GraphiCS 2021 является управление объектами чертежа из табличного редактора. Продемонстрируем на примере автоматического маркирования колонн.

На плане размещены колонны с помощью инструмента СПДС GraphiCS. По умолчанию колоннам не проставляется позиция и метка (марка колонны). Когда на плане размещено много колонн, то вносить эти позиции вручную трудоемко.

Почему при установке Object Enabler не появилось меню СПДС

Object Enabler — библиотека объектов СПДС для отображения их в платформе AutoCAD и частичного редактирования без лицензии на СПДС GraphiCS.

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

При открытии чертежа объекты СПДС частично управляются через панель Свойств.

Пример управления отображением шапки таблицы

Примеры и Уроки 21.05.2020 12:47

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

Выход СПДС Металлоконструкции 2020 и СПДС Железобетон 2020

Проект СПДС 13.12.2019 15:08

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

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

Выход СПДС Стройплощадка 2020

Проект СПДС 05.12.2019 12:45

Компания CSoft Development сообщает о выпуске версии СПДС Стройплощадка 2020 для AutoCAD 2020. Программа предназначена для автоматизации проектирования разделов ПОС (Проект организации строительства), ППР (Проект производства работ) и ГНБ (Горизонтально направленное бурение).

Обеспечена автоматическая установка СПДС Стройплощадка 2020 на графические платформы AutoCAD 2020 и Autodesk Architecture 2020.

Если автоматически не подгружается меню СПДС

  1. Удалить все имеющиеся СПДСы средствами windows (2019 и 12, если есть)
  2. Удалить CsAcInegrator
  3. Удалить оставшиеся папки программы и все данные в них
    C:\ProgramData\CSoft\СПДС GraphiCS
    С:\Program Files\CSoft\СПДС GraphiCS
    C:\Users\%USERNAME%\AppData\Roaming\CSoft\СПДС GraphiCS,
    а так же разделы реестра
    HKEY_CURRENT_USER\Software\CSoft\СПДС GraphiCS и HKEY_LOCAL_MACHINE\SOFTWARE\CSoft\СПДС GraphiCS,
    но не удаляйте файл лицензии, если есть
  4. Запустить AutoCAD и удалить из него все наши профили (команда _options) и сбросить рабочие пространства (команда _CUI), закрыть AutoCAD
  5. Установите СПДС GraphiCS 2019 на компьютер под учетной записью локального администратора ПК;
  6. Запустите приложение из меню Пуск (Пуск-Все приложения-CSoft-СПДС GraphiCS 2019 x64 для AutoCAD хххх).
 

При сохранении затруднения — прислать в службу поддержки лог установки. Создается при установке в папке %temp% и имеет название по типу «название версия для AutoCAD Setup (2015.09.16 17.42).log».

 

Горячая история техподдержки, или Почему AutoCAD удаляет прокси-объекты?

Блог им. Spirin 28.09.2018 18:31

Дисклеймер

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

Предисловие

SPDS Extension или модуль СПДС — дополнение к продуктам семейства AutoCAD, разрабатываемое компанией Autodesk.

СПДС GraphiCS — кроссплатформенное приложение, предназначенное для разработки проектно-технической документации, разрабатываемое компанией CSoft Development.

nanoCAD СПДС — тот же самый СПДС GraphiCS, но на платформе nanoCAD Plus от компании Нанософт.

История

Разгребая утреннюю почту, наткнулся на обращение пользователя в техническую поддержку. Тема письма в принципе объясняла суть проблемы: «Объекты nanoCAD СПДС не отображаются в AutoCAD». К письму, как и полагается, были приложены файлы, скриншоты и подробное описание действий пользователя. Если говорить кратко, то суть обращения сводилась к следующему: пользователь создал проект в nanoCAD СПДС и передал его подрядчикам. Подрядчики, открывая этот файл в AutoCAD, не видят объектов СПДС.

Опытные пользователи сразу скажут, что скорее всего подрядчики просто не включили отображение прокси-объектов, поэтому и не видят данные, которые были созданы в специализированном приложении. Но, как оказалось, всё не так просто…