Создание размера с текстом под размерной надписью

Автор Kandebr, 19.08.09, 10:08:12

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Kandebr

Здравствуйте. Не могу разобраться. Как можно задать радиальный размер с текстом под размерной линией, не используя функции Компас-Макро? Если можно, то приведите, пожалуйста фрагмент кода , как это можно сделать.В SDK ничего нужного не нашёл...

Emeljen

я знаю такой вариант:
Сначала поставить размер, затем выделить его и правой кнопкой выбрать "Свойства". Во всплывшем окне найти "текст под" и набрать...)

Senior lecturer

Цитата: Emeljen от 19.08.09, 12:39:08
я знаю такой вариант:
Сначала поставить размер, затем выделить его и правой кнопкой выбрать "Свойства". Во всплывшем окне найти "текст под" и набрать...)
На раздел обратите внимание!


Prog2

Kandebr, вот это не понял:
Цитата: Kandebr от 19.08.09, 10:08:12
Как можно задать радиальный размер с текстом под размерной линией, не используя функции Компас-Макро?
Вроде, всё чертится как раз с использованием функции Компас-Макро, т.е. методов из SDK ::).

Можно, например, так сделать:

void SetDiamDimLabel(double x1, double y1, double r)
{
  // Получение интерфейсов для работы с размером
  // Интерфейс параметров диаметрального/радиального размера
  ksRDimParam* pDimParms = (ksRDimParam*)pKompas->GetParamStruct(ko_RDimParam);
  // Интерфейс "Параметры размерной надписи"
  ksDimTextParam* pDimTextParms = (ksDimTextParam*)pDimParms->GetTPar();
  // Интерфейс "Параметры привязки размера"
  ksRDimSourceParam* pDimSourceParms = (ksRDimSourceParam*)pDimParms->GetSPar();
  // Интерфейс "Параметры отрисовки размера"
  ksRDimDrawingParam* pDimDrawParms = (ksRDimDrawingParam*)pDimParms->GetDPar();

  pDimTextParms->Init(0);

  pDimSourceParms->Init();
  pDimDrawParms->Init();

  // Включить флаг автоматического определения номинального значения размера
  pDimTextParms->SetBitFlagValue( _AUTONOMINAL, true );
  // Тип условного значка (3 - радиус)
  pDimTextParms->sign = 3;

  // Параметры привязки размера - координаты центра дуги/окружности и радиус
  pDimSourceParms->xc = x1;
  pDimSourceParms->yc = y1;
  pDimSourceParms->rad = r;

  ksDynamicArray* pArrText = (ksDynamicArray*)pDimTextParms->GetTextArr();

  pDimDrawParms->pt1=2;
  pDimDrawParms->pt2=2;

  pDimDrawParms->shelfDir=1;
  pDimDrawParms->ang=45;
  pDimDrawParms->textPos=15.;

  ksChar255* pStr = (ksChar255*)pKompas->GetParamStruct(ko_Char255);
  AnsiString underStr="13 отв.";  // Здесь добавляем текст под размерной линией - то, что Вам нужно.
  pStr->str = StringToOleStr(underStr);
  pArrText->ksAddArrayItem( -1, pStr );

  long dimRef = pDoc->ksRadDimension( pDimParms );
  pArrText->ksDeleteArray();
}

Kandebr