Восстановление базы данных на PGSQL в ручном режиме

Если база данных СПДС GraphiCS не восстановилась на PGSQL автоматически, то ниже приведена инструкция восстановления в ручном режиме.

Ошибка выдачи лицензии на ID1/ID2

Пользователи часто спрашивают, что это за ошибка возникает при получении онлайн лицензии и как с ней справиться.

Инициализация...
Соединение со Службой Лицензирования...

Лицензия не выдана. Ответ сервера приведен ниже.
CDKey=######
Лицензия не выдана
Причина: Триальная лицензия на эти ID1/ID2 уже выдана

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

Если вы переустанавливали по какой-то причине ПО, то файл лицензии не перезапрашивается — он сохраняется в папке c:\ProgramData\CSoft\RegWizard\Licenses\  В мастере регистрации нужно выбрать пункт — Активизировать лицензию.

Если срок действия лицензии уже закончился, то получить продление лицензии можно только через авторизованного партнера CSoft Development.

Как перенести локальную лицензию на другой компьютер

Если ваша локальная лицензия была привязана к USB-ключу аппаратной защиты, который поставлялся вместе с программным обеспечением, то нужно скопировать лицензию из папки c:\ProgramData\CSoft\RegWizard\Licenses\ на новый компьютер. После установки ПО на новом компьютере указать эту лицензию (запрашивать новую не нужно).

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

Отзеркаливание текста в параметрическом объекте (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-объектами и невозможностью установить бесплатный Менеджер объектов.

Выход СПДС GraphiCS 2021

Проект СПДС 10.07.2020 15:07

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

СПДС GraphiCS 2021 поддерживает новую систему управления базами данных PostgreSQL 12. Эта СУБД теперь устанавливается и используется по умолчанию. Пользователи, имеющие собственные наработки в предыдущих версиях, могут по-прежнему работать с локальным сервером MSSQL или отдельно развернутыми сетевыми БД на MSSQL. Для синхронизации баз данных в дистрибутив включен специальный инструмент — утилита конфигурации.

Как отключить сообщение об ошибке открытии файла проекта

При открытии чертежей, созданных в СПДС 12-2019, может открываться сообщение двух видов:

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

  1. Cкопировать содержимое чертежа в новый пустой файл:
    • выделяем все данные на чертеже Ctrl+A, копируем в буфер обмена Ctrl+C
    • создаем новый пустой файл
    • вставляем данные из буфера Ctrl+V
  2. Создать новый пустой проект в Менеджере проектов
    • открываем вкладку Менеджер проектов
    • создаем любой проект
    • сохраняем файл

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

Примеры и Уроки 07.06.2020 11:48

Небольшая статейка о том, как сделать, чтобы при отзеркаливание параметрического объекта СПДС не зеркалился текст прописаный в геометрии объекта (UText)

Ответ прост — никак.

Даже если вы создадите для объекта вид сзади, который будет зеркален виду спереди, текст в геометрии себя будет вести неадекватно

Получение значения из другой таблицы

Примеры и Уроки 02.06.2020 11:31

Для получения значения ячейки существует два способа:

  1. Используя команду«Взять с чертежа»
  2. С помощью построителя выражений.

Есть две таблицы (далее таблица1 и таблица2). Перенесем значение ячейки 1A второй таблицы в первую.