• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

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

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Простановка размеров

Автор Miranda, 27.10.08, 08:30:00

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

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

Miranda

Имеется чертеж
необходимо образмерить
полистала другие темы, ничего полезного не нашла
есть вот такой текст, написано, что это для размеров, но куда его приставить я не знаю, в этом виде дает ошибку

procedure MakeDrawing(x1:double;y1:double;x2:double;y2:double;ps:smallint;dx:double;dy:double;pt:smallint;sign:integer;str1:string);
var
param   : ksLDimParam;
  paramA  : ksADimParam;
  dPar    : ksDimDrawingParam;
  sPar    : ksLDimSourceParam;
  tPar    : ksDimTextParam;
  dParA    : ksDimDrawingParam;
  sParA    : ksADimSourceParam;
  tParA    : ksDimTextParam;
  str     : ksChar255;
  arrText : ksDynamicArray;
  iDoc2D: ksDocument2D;
  Kompas :KompasObject;
begin
   param := ksLDimParam( Kompas.GetParamStruct(ko_LDimParam) );
   if param = nil then
      Exit;

   dPar := ksDimDrawingParam( param.GetDPar );//размер
   sPar := ksLDimSourceParam( param.GetSPar );//привязка
        tPar := ksDimTextParam   ( param.GetTPar );//надпись

   if ( (dPar = nil) Or (sPar = nil) Or (tPar = nil) ) then
      Exit;

        dPar.Init();
        dPar.ang := 0;
        dPar.lenght := 0;
        dPar.pl1 := False;
        dPar.pl2 := False;
        dPar.pt1 := pt;
        dPar.pt2 := pt;
        dPar.shelfDir := 0;
        dPar.textBase := 0;
        dPar.textPos := 0;

        sPar.Init();
        sPar.basePoint := 1;
        sPar.dx := dx;
        sPar.dy := dy;
        sPar.ps := ps;
        sPar.x1 := x1;
        sPar.y1 := y1;
        sPar.x2 := x2;
        sPar.y2 := y2;

        tPar.Init(False);
        tPar.bitFlag := 1;
        tPar.sign := sign;
        tPar.stringFlag := False;
        tPar.style := 3;

  tPar.SetBitFlagValue( _AUTONOMINAL, true );
  //tPar.SetBitFlagValue( _PREFIX,      true );
  //tPar.SetBitFlagValue( _DEVIATION,   true );
  //tPar.SetBitFlagValue( _UNIT,        true );
  tPar.SetBitFlagValue( _TOLERANCE,      true );

  str     := ksChar255( Kompas.GetParamStruct(ko_Char255) );

  arrText := ksDynamicArray( tPar.GetTextArr );


        str.str := str1;
   arrText.ksAddArrayItem( -1, str );

   str.str := 'h7';
   //arrText.ksAddArrayItem( -1, str );

   str.str := '2';
   //arrText.ksAddArrayItem( -1, str );

        str.str := '3';
   //arrText.ksAddArrayItem( -1, str );

        str.str := '4';
   //arrText.ksAddArrayItem( -1, str );

        iDoc2D.ksLinDimension( param );
end;

Miranda

помогите пожалуйста кто чем может!

=)

Prog2

Всё отлично описано в следующем пособии (основные операции при работе с КОМПАС в т.ч. и простановка размеров):
На этом сайте раздел Download --> Бесплатное ПО пользователей --> Методические материалы по программированию с использованием API системы КОМПАС : DelphiAUTO.zip

ЗЫ: прямую ссылку вставить мне не разрешено...


Miranda

Размеры все еще актуальны...
за материал спасибо, очень помогло поставить линейные размеры
подскажите плизз кто может, что делать с угловыми и радиусными (это когда одна стрелка от центра)
буду оч благодарна =)

Prog2

угумс... по дельфийски я не разумею. А на С++ будет примерно так:

--диаметральный/радиальный размер

  // Получаем необходимые интерфейсы.
  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();

  // Заполняем нужные параметры (по аналогии с линейным размером)
  .
  .
  .
  // И, наконец, рисуем.
  pDoc->ksDiamDimension( pDimParms );




--угловой размер

  // Здесь можно получить следующие интерфейсы (для Вашего конкретного случая могут пригодиться не все)
  ksADimParam * aDim( (ksADimParam*)pKompas->GetParamStruct(ko_ADimParam) );
  ksTextLineParam * textLine( (ksTextLineParam*)pKompas->GetParamStruct( ko_TextLineParam ) );
  ksTextItemParam * textItem( (ksTextItemParam*)pKompas->GetParamStruct(ko_TextItemParam) );

textLine->Init();
textItem->Init();

ksTextItemFont * font( (ksTextItemFont*)textItem->GetItemFont() );
ksDimTextParam * tPar( (ksDimTextParam*)aDim->GetTPar() );
ksADimSourceParam * sPar( (ksADimSourceParam*)aDim->GetSPar() );
ksDimDrawingParam * dPar( (ksDimDrawingParam*)aDim->GetDPar() );

  // И опять всё по аналогии... заполняем параметры и рисуем размер...

   pDoc->ksAngDimension( aDim );



Надеюсь, трудностей перевода не возникнет.)