//////////////////////////////////////////////////////////////////////////////// // System: Kомпас-График API // Module: LtDefine //////////////////////////////////////////////////////////////////////////////// unit LtDefine; {$ALIGN OFF} interface uses Windows, LDefin2D; type Reference = Longint; PIUnknown = ^IUnknown; // Cтруктура для сдвига группы TType1 = record xBase, yBase : Double; ang : Double; scale : Double; gr : Reference; end; // Cтруктура для отрезка TType2 = record xBase, yBase : Double; end; // Cтруктура для прямоугольника // структура для отрезка c заданным углом TType3 = record xBase, yBase : Double; ang : Double; end; // Cтруктура для половины прямоугольника c заданным углом TType5 = record xBase, yBase : Double; ang : Double; horizon : Byte; // 1 подходим к курсору по горизонтвли; 0 - повертикали end; // Пользовательский фантом (только рисовать группу, матрицу сдвига не устанавливать) TType6 = record gr : Reference; // указатель на группу объектов, которая отображается в виде фантома end; PPhantom = ^Phantom; Phantom = record Case phType : Word of // тип резинки 1: (type1 : TType1); // сдвиг группы phType =1 2: (type2 : TType2); // отрезок phType =2 3: (type3 : TType3); // прямоугольник phType =3 4: (type4 : TType3); // отрезок с заданным углом phType =4 5: (type5 : TType5); // половина прямоугольника phType =5 6: (type6 : TType6); // пользовательский фантом (только рисовать группу, матрицу сдвига не устанавливать) phType =6 7: (type7 : TType2); // окружность phType =7 end; // Cтруктура местоположения PPlacementParam = ^PlacementParam; PlacementParam = record xBase, yBase : Double; // базовая точка в СК вида scale : Double; // масштаб ang : Double; // угол поворота в СК вида end; // Cтруктура параметров вида PViewParam = ^ViewParam; ViewParam = record state : Word; // состояние вида x,y : Double; // точка привязки вида scale : Double; // масштаб вида ang : Double; // угол поворота вида color : Dword; // цвет вида в активном состоянии name : array[0..TEXT_LENGTH-1] of char; // имя вида end; // Cтруктура параметров слоя PLayerParam = ^LayerParam; LayerParam = record state : Word; // состояние слоя color : DWord; // цвет слоя в активном состоянии name : array[0..TEXT_LENGTH-1] of char; // имя слоя end; // Cтруктура параметров запроса к системе : // Cursor, Placement, CommandWindow PRequestInfo = ^RequestInfo; RequestInfo = record title : PChar; // строка или идентификатор строки заголовка окна commands : PChar; // строка или идентификатор меню состава команд prompt : PChar; // строка или идентификатор приглашения cursor : PChar; // строка с именем или идентификатор стандартного курсора callBack : Pointer; // указатель на функцию обратной связи _dynamic : Integer; // признак динамического запроса 1-динамический запрос, 0-статический commInstance : HINST; // Instance модуля, в ктором размещен состав команд end; // Прототип функции обратной связи для запроса точки. // Функция возвращает 1, если нужно продолжить запрос, // 0, если нужно прекратить запрос. PTCursorCallBack = ^TCursorCallBack; TCursorCallBack = function ( _dynamic : Integer; // признак динамического вызова phantom : Pointer; // указатель на фантомную группу info : PRequestInfo; // указатель на область памяти для замены состава команд var y,x : Double; // координаты точки привязки com : Integer ): Integer; Pascal; // идентификатор команды из окна команд // Прототип функции обратной связи для запроса точки и угла. // Функция возвращает 1, если нужно продолжить запрос, // 0, если нужно прекратить запрос. PTPlacementCallBack = ^TPlacementCallBack; TPlacementCallBack = function ( _dynamic: Integer; // признак динамического вызова phantom: Pointer; // указатель на фантомную группу info: PRequestInfo; // указатель на область памяти для замены состава команд var angl: Double; // угол наклона var y, x: Double; // координаты точки привязки com: Integer // идентификатор команды из окна команд ): Integer; Pascal; // Прототип функции обратной связи для запроса окна с деревом команд // Функция возвращает 1, если нужно продолжить запрос, // 0, если нужно прекратить запрос. PTCommandWindowCallBack = ^TCommandWindowCallBack; TCommandWindowCallBack = function ( info: PRequestInfo; // указатель на область памяти для замены состава команд com: Integer ): Integer; Pascal; // идентификатор команды из окна команд // Прототип функции обратной связи для функций выбора файлов // функция возвращает 1, если файл отрисован, // 0, если не отрисован PTFilePreviewFuncCallBack = ^TFilePreviewFuncCallBack; TFilePreviewFuncCallBack = function( fileName: PChar; // идентификатор окна просмотра HWindow: HWND ): Integer; pascal; // файл, который нужно показать в окне просмотра // Прототип функции для пользовательского динамического массива PDeleteFunc = ^DeleteFunc; DeleteFunc = procedure( v: Pointer ); pascal; // Структура параметров отрезка // Поле style имеет значения( системные стили ) : // 1 - основная, // 2 - тонкая, // 3 - осевая, // 4 - штриховая, // 5 - волнистая линия // 6 - осевая толстая, // 7 - утолщенная, // 8 - штрих-пунктир с 2 точками, // 9 - штриховая толстая // 10 -осевая толстая // 11 -тонкая, включаемая в штриховку PLineSegParam = ^LineSegParam; LineSegParam = record x1,y1 : Double; //начальная точка x2,y2 : Double; //конечная точка style : Word; //тип линии end; // Структура параметров дуги по углам PArcParam = ^ArcParam; ArcParam = record xc,yc : double; //центр rad : double; //радиус ang1 : double; //начальный угол ang2 : double; //конечный угол dir : SmallInt; //направление style : Word; //тип линии end; // Структура параметров дуги по точкам PArcParam1 = ^ArcParam1; ArcParam1 = record xc,yc : Double; //центр rad : Double; //радиус x1,y1 : Double; //начальная точка x2,y2 : Double; //конечная точка dir : SmallInt;//направление style : Word; //тип линии end; // Структура параметров окружности PCircleParam = ^CircleParam; CircleParam = record xc,yc : Double; //центр rad : Double; //радиус style : Word; //тип линии end; // Структура параметров математической точки PMathPointParam = ^MathPointParam; MathPointParam = record x, y : Double; //координаты точки end; // Структура параметров габаритного прямоугольника PRectParam = ^RectParam; RectParam = record pBot : MathPointParam; //левая нижняя точка прямоугольника pTop : MathPointParam; //правая верхня точка прямоугольника end; // Поле style для точки( системные стили ) : // 0 - точка // 1 - крестик // 2 - х-точка // 3 - квадрат // 4 - треугольник // 5 - окружность // 6 - звезда // 7 - перечеркнутый квадрат // 8 - утолщенный плюс // Структура параметров точки PPointParam = ^PointParam; PointParam = record x, y : Double; //координаты точки style : Word; //тип точки end; // Структура параметров узла для Bezier - кривой PBezierPointParam = ^BezierPointParam; BezierPointParam = record x, y : Double; //координаты базовой точки ang : Double; //угол наклона касательной к кривой в базовой точке left : Double; //расстояние от базовой точки к левой точке узла right : Double; //расстояние от базовой точки к правой точке узла end; // Структура параметров узла для Nurbs - кривой PNurbsPointParam = ^NurbsPointParam; NurbsPointParam = record x, y : Double; //координаты базовой точки weight : Double; //вес точки должен быть > 0 end; // Структура параметров bezier сплайна PBezierParam = ^BezierParam; BezierParam = record pMathPoint : Reference; // массив неопределенной длины математических точек сплайна closed : Byte; //признак замкнутости сплайна 0-не замкнут 1- замкнут style : Word; //тип линии end; // Структура параметров вспомогательной линии PLineParam = ^LineParam; LineParam = record x, y : Double; //координаты точки на прямой ang : Double; //угол прямой к оси X end; // Структура параметров эллипса PEllipseParam = ^EllipseParam; EllipseParam = record xc, yc : Double; //координаты центра a, b : Double; //полуоси эллипса ang : Double; //угол наклона эллипса к оси X style : Word; //тип линии end; //структура параметров для построения дуги эллипса PEllipseArcParam = ^EllipseArcParam; EllipseArcParam = record xc, yc : Double; //координаты центра a, b : Double; //полуоси эллипса ang : Double; //угол наклона эллипса ( оси a ) к оси X angFirst : Double; //начальный угол дуги к оси a angSecond : Double; //конечный угол дуги к оси a dir : SmallInt; //направление style : Word; //тип линии end; // Структура параметров эквидистанты PEquidistantParam = ^EquidistantParam; EquidistantParam = record geoObj : Reference; // геометрический объект -базовая кривая эквидистанты side : Byte; // признак, с какой стороны строить эквидистанту // 0-слева по направлению, 1-справа по направлению, 2-с двух сторон cutMode : Byte; // тип обхода углов контура // 0-обход срезом, 1- обход дугой degState : Byte; // флаг разрешения вырожденных сегментов эквидистанты // 0-вырожденные сегменты запрещены, 1-вырожденные сегменты разрешены radRight : Double; // радиус эквидистанты справа по направлению кривой radLeft : Double; // радиус эквидистанты слева style : Word; // тип линии end; // Поле style для штриховки( системные стили ) : // 0 - металл // 1 - неметалл // 2 - дерево // 3 - камень естественный // 4 - керамика // 5 - бетон // 6 - стекло // 7 - жидкость // 8 - естественный грунт // 9 - насыпной грунт // 10 - камень искусственный // 11 - железобетон // 12 - напряженный железобетон // 13 - дерево в продольном сечении // 14 - песок // Структура параметров штриховки PHatchParam = ^HatchParam; HatchParam = record style : Word; //тип штриховки ang : Double; // угол штриховки step : Double; //шаг штриховки width : Double; //ширина полосы, 0-штриховать сплошь x, y : Double; //базовая точка (нужна только для отрисовки) pBoundaries : Reference; //временная группа-границы штриховки; используется только для GetObjParam end; // Поле style для текста( системные стили ) : // 0 -умолчательный стиль на данного типа объекта // 1 обычный текст // 2 текст для технических требований // 3 текст размера // 4 текст шероховатости // 5 текст для линии выноски ( позиционной ) // 6 текст для линии выноски ( над\под полкой ) // 7 текст для линии выноски ( сбоку ) // 8 текст для допуска формы // 9 текст для таблицы ( заголовок ) // 10 текст для таблицы ( ячейка ) // 11 текст для линии разреза // 12 текст для стрелки вида // 13 текст для шероховатости по умолчанию // Структура параметров параграфа PParagraphParam = ^ParagraphParam; ParagraphParam = record style : Word; // номер стиля текста, если 0 - умолчательный стиль x, y : Double; // точка привязки текста ang : Double; // угол наклона текста hFormat : Cardinal; // признак горизонтального форматирования 0- нет форматирования 1-сужение текста 2-перенос на другую строку vFormat : Cardinal; // признак вертикального форматирования 0- нет форматирования 1-изменение шага строк width : Double; // ширина блока форматирования height : Double; // высота блока форматирования end; // Структура параметров текста PTextParam = ^TextParam; TextParam = record par : ParagraphParam; // параметры параграфа pTextLine : Reference; // указатель на динамический массив строк текста TEXT_LINE_ARR end; // Структура параметров строки текста PTextLineParam = ^TextLineParam; TextLineParam = record style : Word; //номер стиля строки текста, если 0 - умолчательный стиль pTextItem : Reference; //указатель на динамический массив компонент строки текста TEXT_ITEM_ARR end; // Структура параметров фонта компоненты строки текста PTextItemFont = ^TextItemFont; TextItemFont = record fontName : array[0..MAX_TEXT_LENGTH-1] of Char; //имя фонта height : Double; //высота текста ksu : Double; //сужение текста color : DWord; //цвет bitVector : Cardinal; //битовый вектор (наклон, толщина, подчеркивание, тип составной части(дробь, отклонение, выражение типа суммы)) end; // Структура параметров компоненты строки текста PTextItemParam = ^TextItemParam; TextItemParam = record tip : Integer; // tip = SPECIAL_SYMBOL , FONT_SYMBOL, FRACTION_TYPE, SUM_TYPE или 0 font : TextItemFont; // параметры фонта для компоненты текста s : array [0..TEXT_LENGTH-1] of Char; // массив символов для компоненты текста iSNumb : Cardinal; // номер спецсимвола, символа из произвольного фонта или тип отрисовки дроби или выражения типа суммы или 0 end; // Структура параметров стандартного листа PStandartSheet = ^StandartSheet; StandartSheet = record format : Byte; // формат 0(А0) ... 4(А4) multiply : Byte; // кратность чертежа direct : Byte; // расположение штампа 0 вдоль короткой стороны end; // Структура для получения размеров листа - для использования в GetObjParam() // и SetObjParam(); Параметры нестандартного листа PSheetSize = ^SheetSize; SheetSize = record width : Double; // длина листа height : Double; // высота листа end; // Структура параметров оформления PSheetPar = ^SheetPar; SheetPar = record layoutName : array [0..MAX_TEXT_LENGTH-1] of Char; // для чертежа -имя библиотеки оформления( штампа); пустая строка - GRAPHIC.LYT // для спецификации - имя библиотеки стилей спецификации пустая строка - GRAPHIC.LYT // для спецификации - номер стиля спецификации case shtType : Byte of // для чертежа- тип штампа (1-13- стандартные штампы) 1: ( stPar : StandartSheet ); //параметры 2: ( usPar : SheetSize ); end; // Структура параметров оформления PSheetOptions = ^SheetOptions; SheetOptions = record sheetPar : SheetPar; // Структура параметров оформления (старое API) docType : Byte; // Тип документа из DocType end; // Структура параметров перекрывающихся объектов POverlapObjectOptions = ^OverlapObjectOptions; OverlapObjectOptions = record overlap : Byte; // 1 - перекравать штриховки и линии при пересечении, если 0 - не перекравать gap : Double; // Зазор при перекрывании объектов end; // Структура параметров документа ( под документом понимается лист, фрагмент и спецификация ) PDocumentParam = ^DocumentParam; DocumentParam = record regim : Byte; // 0 - видимый режим, // 1 - невидимый режим fileName : array [0..MAX_TEXT_LENGTH-1] of Char; // имя файла чертежа comment : array [0..TEXT_LENGTH-1] of Char; // комментарий author : array [0..TEXT_LENGTH-1] of Char; // автор layoutName : array [0..MAX_TEXT_LENGTH-1] of Char; // имя файла чертежа shtType : cardinal; // для чертежа- тип штампа (1-13- стандартные штампы) // для спецификации - номер стиля спецификации case _type : Byte of //только для чертежей 1: ( stPar : StandartSheet ); // тип документа 1- чертеж стандартный 2: ( usPar : SheetSize ); // 2- чертеж нестандартный // 3- фрагмент // 4- спецификация end; // Информационная структура для одного столбца табличного атрибута PColumnInfo = ^ColumnInfo; ColumnInfo = record header : array [0..80-1] of Char; // заголовoк-комментарий столбца _type : Byte; // тип данных в столбце key : Byte; // дополнительный признак, который позволит отличить две переменные с одинаковым типом def : array [0..TEXT_LENGTH-1] of Char; // значение по умолчанию flagEnum : Byte; // флаг включающий режим, когда значение поля атрибута // будет заполнятся из массива перечисленных значений 1 и 0 отключон fieldEnum : Reference; // массив неопределенной длины перечислений (строки) columns : Reference; // массив неопределенной длины информации о колонках для записи end; // Структура типа табличного атрибута PksAttributeType = ^ksAttributeType; ksAttributeType = record key1 : Cardinal; // рекоменд. как код разработчика key2 : Cardinal; // рекоменд. как код атрибута key3 : Cardinal; // рекоменд. как код разработчика key4 : Cardinal; // системный код атрибута // значения от 0 до 1000 зарезервированы // за АО "АСКОН" header : array [0..80-1] of Char; // заголовoк-комментарий типа rowsCount : Cardinal; // кол-во строк в таблице flagVisible : Byte; // видимый, невидимый в таблице password : array [0..10-1] of Char; // пароль, если не пустая строка - защищает от несанкционированного изменения типа columns : Reference; // массив неопределенной длины информации о колонках end; // Структура табличного атрибута PAttribute = ^Attribute; Attribute = record key1 : Cardinal; // рекоменд. как код разработчика key2 : Cardinal; // рекоменд. как код атрибута key3 : Cardinal; // рекоменд. как код разработчика key4 : Cardinal; // системный код атрибута // значения от 0 до 1000 зарезервированы // за АО "АСКОН" flagVisible : PChar; //массив, определяющий для каждой колонки // атрибута видимость-невидимость //0 -видимое поле 1- невидимое поле values : Pointer; // массив значений ячеек таблицы атрибутов // сначала все значения для 1-ой строки, // затем все значения для 2-ой строки и т.д. valSize : Cardinal; // размер массива значений ячеек password : array[0..10-1] of Char; // имя вида end; // Структура табличного атрибута PksAttribute = ^ksAttribute; ksAttribute = record key1 : Cardinal; // рекоменд. как код разработчика key2 : Cardinal; // рекоменд. как код атрибута key3 : Cardinal; // рекоменд. как код разработчика key4 : Cardinal; // системный код атрибута // значения от 0 до 1000 зарезервированы // за АО "АСКОН" flagVisible : PChar; //массив, определяющий для каждой колонки // атрибута видимость-невидимость //0 -видимое поле 1- невидимое поле values : Pointer; // массив значений ячеек таблицы атрибутов // сначала все значения для 1-ой строки, // затем все значения для 2-ой строки и т.д. valSize : Cardinal; // размер массива значений ячеек password : array[0..10-1] of Char; // имя вида columnKeys : PChar; // массив ключей колонок end; //структура параметров для типа атрибута библиотеке типов атрибутов PLibraryAttrTypeParam = ^LibraryAttrTypeParam; LibraryAttrTypeParam = record name : array [0..MAX_TEXT_LENGTH-1] of Char; // имя типа атрибута typeId : double; // номер типа атрибута в библиотеке end; //структура параметров для рассчета сопряжений CON = record xc, yc : Double ; //центр сопрягающей окружности x1, y1, x2, y2 : Double ; //координаты точки сопряжения end; CON4 = Array[ 1..4 ] of CON; CON8 = Array[ 1..8 ] of CON; //структура параметров для рассчета касаний TAN = record x1, y1, x2, y2 : Double ; //координаты точек касания end; TAN4 = Array[0..4] of TAN; // Структура параметров размерной надписи PDimText = ^DimText; DimText = record style : Word; // стиль текста размера, если 0 -умолчательный стиль sign : Cardinal; // номер условного значка перед номиналом 0-ничего 1 - диаметр, 2- квадрат 3- радиус > 3 - номер из фонта "Symbol type A" bitFlag : Cardinal; // 0 - ручное задание или набор битовых полей pText : Reference; // динамический массив строк // строки должны лежать в последовательности с учетом включения // битовых флагов: PREFIX, номинал, TOLERANCE, // верхнее отклонение, нижнее отклонение, UNIT,SUFFIX, // верхнее отклонение, нижнее отклонение принимаются, если // флаг TOLERANCE не включен а DEVIATION включен - признак // ручной простановки отклонений // другие строки stringFlag : Byte; // 0- pText CHAR_STR_ARR - динамический массив строк символов // 1- pText TEXT_LINE_ARR - динамический массив строк текста- структура TextLineParam // для функции GetObjParam нужно определить этот флаг, если 0 - выдается динамический массив строк символов end; // Структура параметров привязки линейного размера PLDimSource = ^LDimSource; LDimSource = record ps : Byte; // признак 0-горизонтальный, 1-вертикальный 2 - паралл.отрезку, 3 - по dx,dy x1, y1 : Double; // координаты 1 -ой точки привязки x2, y2 : Double; // координаты 2 -ой точки привязки dx, dy : Double; // вектор определяющий положение размерной линии; аннотационный ( не зависит от масштаба ) basePoint : Byte; // признак 1-dx, dy -откладвать от первой точки, 2- от второй end; //Структура параметров отрисовки линейного и углового размеров PDimDrawing = ^DimDrawing; DimDrawing = record pl1 : Byte; // признак вкл./выкл. отрисовки 1 выносной линии 0/1 pl2 : Byte; // признак вкл./выкл. отрисовки 2 выносной линии 0/1 pt1 : Byte; // тип стрелки у 1-ой выносной линии 0-стрелки нет 1- внутри 2 снаружи 3 -засечка 4 - точка pt2 : Byte; // тип стрелки у 2-ой выносной линии textPos : Integer; // положение текста; 0- обозначает автоматическое размещение текста // мм - лин. р. град.- угл. размер; >0 в направлении от 1 точки ко 2; аннотационный ( не зависит от масштаба ) textBase : Byte; // параметр отрисовки текста: 0 в центре, 1- textPos относительно 1 точки; // 2 - textPos относительно 2 точки; 3- общая размерная линия shelfDir : Integer; // наличие выносной полки направление по оси X 0-нет выносной полки -1-направлена влево 1-направлена вправо ang : Double; // угол наклона ножки length : Integer; // длина ножки; аннотационная ( не зависит от масштаба ) end; // Структура параметров линейного размера PLDimParam =^LDimParam; LDimParam = record tPar : DimText; // размерная надпись 3 dPar : DimDrawing; // параметры изображения размера 2 sPar : LDimSource; // параметры привязки линейного размера 1 end; // Структура параметров привязки линейного размера с обрывом PLBreakDimSource = ^LBreakDimSource; LBreakDimSource = record x1, y1 : Double; // координаты 1 -ой точки привязки x2, y2 : Double; // координаты выхода стрелки x3, y3 : Double; // координаты точки на размерной линии end; //Структура параметров отрисовки линейного и углового размера с обрывом PBreakDimDrawing = ^BreakDimDrawing; BreakDimDrawing = record pl : Byte; // признак вкл./выкл. отрисовки выносной линии 0/1 pt : Byte; // тип стрелки у 1-ой выносной линии 0-стрелки нет 1- внутри 2 снаружи 3 -засечка 4 - точка textPos : Integer; // положение текста; 0- обозначает автоматическое размещение текста // мм - лин. р. ; >0 в направлении от 1 точки ко 2; аннотационный ( не зависит от масштаба ) shelfDir : Integer; // наличие выносной полки направление по оси X 0-нет выносной полки -1-направлена влево 1-направлена вправо // 2- полка направлена в вверх 3- полка направлена вниз ang : Double; // угол наклона ножки length : Integer; // длина ножки; аннотационная ( не зависит от масштаба ) end; // Структура параметров линейного размера c обрывом PLBreakDimParam = ^LBreakDimParam; LBreakDimParam = record tPar : DimText; // размерная надпись 3 dPar : BreakDimDrawing; // параметры изображения размера 2 sPar : LBreakDimSource; // параметры привязки линейного размера 1 end; // Структура параметров привязки углового размера PADimSource = ^ADimSource; ADimSource = record xc, yc : Double; // центр размерной дуги rad : Double; // радиус размерной дуги; аннотационный ( не зависит от масштаба ) ang1 : Double; // начальный угол размерной дуги ang2 : Double; // конечный угол размерной дуги dir : Integer; // направление 1 - размерная линия против часовой стрелки; -1 - по часовой стрелке x1, y1 : Double; // точка выхода первой выносной линии x2, y2 : Double; // точка выхода второй выносной линии end; // Структура параметров углового размера PADimParam = ^ADimParam; ADimParam = record tPar : DimText; // размерная надпись 3 dPar : DimDrawing; // параметры изображения размера 2 sPar : ADimSource; // параметры привязки углового размера 1 end; // Структура параметров углового размера c обрывом PABreakDimParam = ^ABreakDimParam; ABreakDimParam = record tPar : DimText; // размерная надпись 3 dPar : BreakDimDrawing; // параметры изображения размера 2 sPar : ADimSource; // параметры привязки линейного размера 1 end; //структура параметров привязки диаметрального и радиального размеров PRDimSource = ^RDimSource; RDimSource = record xc, yc : Double; //координаты центра дуги , окружности rad : Double; //радиус дуги , окружности end; //структура параметров отрисовки диаметрального и радиального размеров PRDimDrawing = ^RDimDrawing; RDimDrawing = record pt1 : Byte; // тип 1-ой стрелки: 0-стрелки нет 1- внутри 2 снаружи 3 -засечка 4 - точка 0xff - размер с обрывом pt2 : Byte; // (диам размер)тип 2-ой стрелки,( рад размер) 0 - размер от центра 1- не от центра textPos : Integer; // параметр отрисовки текста или длина ножки; аннотационный ( не зависит от масштаба ) shelfDir : Integer; // наличие выносной полки направление по оси X 0-нет выносной полки -1-направлена влево 1-направлена вправо ang : Double; // угол наклона размерной линии и ножки end; //структура параметров диаметрального и обычного радиального размера PRDimParam = ^RDimParam; RDimParam = record tPar : DimText; // размерная надпись 3 dPar : RDimDrawing; // параметры изображения размера 2 sPar : RDimSource; // параметры привязки диаметрального и радиального размеров 1 end; //структура параметров отрисовки радиального размера с изломом PRBreakDrawing = ^RBreakDrawing; RBreakDrawing = record pt : Byte; // тип стрелки : 0-стрелки нет 1- внутри 2 снаружи 3 -засечка 4 - точка ang : Double; // угол наклона размерной линии pb : Cardinal; // длина излома; аннотационный ( не зависит от масштаба ) end; //структура параметров радиального размера с изломом PRBreakDimParam = ^RBreakDimParam; RBreakDimParam = record sPar : RDimSource; // параметры привязки углового размера 1 dPar : RBreakDrawing; // параметры изображения размера 2 tPar : DimText; // размерная надпись 3 end; //структура параметров шероховатости PRoughPar = ^RoughPar; RoughPar = record style : Word; // стиль текста, если 0 - умолчательный стиль, // если style = INDICATIN_TEXT_LINE_ARR -> pText- массив TEXT_LINE_ARR _type : Byte; // тип шероховатости 0-вид обр-ки не уст-ся 1- обр-ка удалением слоя материала // 2 -обр-ка без удаления слоя материала around : Byte; // =1 - шероховатость "по контуру" x, y : Double; // координаты точки привязки ang : Double; // угол наклона оси значка шероховатости с осью X cText0 : Byte; // количество строк в тексте над знаком (параметры шер-ти по ГОСТ 2789-73) cText1 : Byte; // количество строк в тексте над полкой (вид обр-ки и доп,указания) cText2 : Byte; // количество строк в тексте под полкой (базовая длина по ГОСТ 2789-73) // не более 2 строк cText3 : Byte; // количество строк в тексте под полкой (усл.обозн.направления неровностей) // не более 1 строк pText : Reference; // если style = INDICATIN_TEXT_LINE_ARR , TEXT_LINE_ARR - динамический массив строк текста // CHAR_STR_ARR - динамический массив строк символов текста шероховатости // различают 4 разных текста для шероховатости; // строки текстов лежат в следующей последовательности // -текст над знаком (параметры шер-ти по ГОСТ 2789-73) - cText0=0 - текст отсутствует // -текст над полкой (вид обр-ки и доп,указания) - cText1=0 - текст отсутствует // -текст под полкой (базовая длина по ГОСТ 2789-73) - cText2=0 - текст отсутствует // -текст под полкой (усл.обозн.направления неровностей)- cText3=0 - текст отсутствует end; // Структура параметров выносной полки PShelfPar = ^ShelfPar; ShelfPar = record psh : Integer; //направление по оси X 0-нет выносной полки -1-направлена влево 1-направлена вправо ang : Double; //угол наклона ножки для диаметрального и радиального размеров //это и угол наклона размерной линии length : Integer; //длина ножки end; // Структура параметров шероховатости PRoughParam = ^RoughParam; RoughParam = record rPar : RoughPar; shPar : ShelfPar; // параметры выносной полки end; //структура параметров для простой линии выноски PLeaderParam = ^LeaderParam; LeaderParam = record x, y : Double; // координаты базовой точки ( начало полки ) arrowType : Byte; // тип стрелки 0-нет ничего 1- точка 2-стрелка 3-верхняя половина стрелки 4-нижняя половина стрелки dirX : Integer; // направление полки по X (1 -вправо -1-влево) signType : Byte; // тип знака 0- ничего 1-знак склеивания 2-знак пайки // 3- знак сшивания 4 -знак соединения внахлестку металл.скобами // 5 - знак углового соединения металл.скобами // 6 - знак монтажного шва around : Byte; // знак обработки по контуру 0-выключен 1- включен cText0 : Byte; // количество строк текста над полкой 0- текст отсутствует cText1 : Byte; // количество строк текста под полкой 0- текст отсутствует cText2 : Byte; // количество строк текста над ножкой (не более 1 строки)0- текст отсутствует cText3 : Byte; // количество строк текста под ножкой (не более 1 строки)0- текст отсутствует pTextline : Reference; // TEXT_LINE_ARR - динамический массив строк текста // различают 4 разных текста для линии выноски // строки текстов лежат в следующей последовательности // -текст над полкой - cText0=0 - текст отсутствует // -текст под полкой - cText1=0 - текст отсутствует // -текст над ножкой - cText2=0 - текст отсутствует // -текст под ножкой - cText3=0 - текст отсутствует pPolyline : Reference; // POLYLINE_ARR - массив неопределенной длины ответвлений линии выноски // в общем случае одно ответвление - это полиллиния // первый узел базовая точка ( ее в массив помещать не нужно - общая для всех ответвлений), // остальные узлы - изломы( могут отсутствовать) // последний узел - конец ответвления (указывает на объект) end; //структура параметров линии выноски для обозначения позиции PPosLeaderParam = ^PosLeaderParam; PosLeaderParam = record style : Word; // стиль текста, если 0 - умолчательный стиль, // если style = INDICATIN_TEXT_LINE_ARR -> pText- массив TEXT_LINE_ARR x, y : Double; // координаты базовой точки ( начало првой полки ) arrowType : Byte; // тип стрелки dirX : Integer; // направление полки по X (1 -вправо -1-влево) dirY : Integer; // направление построения полок по Y (1 -вверх -1-вниз) pText : Reference; // если style = INDICATIN_TEXT_LINE_ARR , TEXT_LINE_ARR - динамический массив строк текста // CHAR_STR_ARR - динамический массив строк символов // в каждой строке лежит одна позиция pPolyline : Reference; // POLYLINE_ARR - массив неопределенной длины ответвлений линии выноски // в общем случае одно ответвление - это полиллиния // первый узел базовая точка ( ее в массив помещать не нужно - общая для всех ответвлений), // остальные узлы - изломы( могут отсутствовать) // последний узел - конец ответвления (указывает на объект) end; //структура параметров линии выноски для обозначения клеймения PBrandLeaderParam = ^BrandLeaderParam; BrandLeaderParam = record dirX : Integer; // направление полки по X (1 -вправо -1-влево) x, y : Double; // координаты базовой точки ( начало првой полки ) arrowType : Byte; // тип стрелки style1 : Word; // стиль для текста над полкой, если 0 - умолчательный стиль // если style1 = INDICATIN_TEXT_LINE_ARR -> pText- массив TEXT_LINE_ARR style2 : Word; // стиль для текстов у ножки, если 0 - умолчательный стиль cText0 : Byte; // количество строк текста в знаке (не более 1 строки)0- текст отсутствует cText1 : Byte; // количество строк текста над ножкой (не более 1 строки)0- текст отсутствует cText2 : Byte; // количество строк текста под ножкой (не более 1 строки)0- текст отсутствует pText : Reference; // если style1 = INDICATIN_TEXT_LINE_ARR , TEXT_LINE_ARR - динамический массив строк текста // CHAR_STR_ARR - динамический массив строк символов // строки текстов лежат в следующей последовательности // текст над полкой // текста над ножкой // текст под ножкой pPolyline : Reference; // POLYLINE_ARR - массив неопределенной длины ответвлений линии выноски // в общем случае одно ответвление - это полиллиния // первый узел базовая точка ( ее в массив помещать не нужно - общая для всех ответвлений), // остальные узлы - изломы( могут отсутствовать) // последний узел - конец ответвления (указывает на объект) end; //структура параметров линии выноски для обозначения маркирования PMarkerLeaderParam = ^MarkerLeaderParam; MarkerLeaderParam = record x, y : Double; // координаты базовой точки ( начало првой полки ) arrowType : Byte; // тип стрелки style1 : Word; // стиль для текста над полкой, если 0 - умолчательный стиль // если style1 = INDICATIN_TEXT_LINE_ARR -> pText- массив TEXT_LINE_ARR style2 : Word; // стиль для текстов у ножки, если 0 - умолчательный стиль cText0 : Byte; // количество строк текста в знаке(не более 1 строки)0- текст отсутствует cText1 : Byte; // количество строк текста над ножкой (не более 1 строки)0- текст отсутствует cText2 : Byte; // количество строк текста под ножкой (не более 1 строки)0- текст отсутствует pText : Reference; // если style1 = INDICATIN_TEXT_LINE_ARR , TEXT_LINE_ARR - динамический массив строк текста // CHAR_STR_ARR - динамический массив строк символов // строки текстов лежат в следующей последовательности // текст над полкой // текста над ножкой // текст под ножкой pPolyline : Reference; // POLYLINE_ARR - массив неопределенной длины ответвлений линии выноски // в общем случае одно ответвление - это полиллиния // первый узел базовая точка ( ее в массив помещать не нужно - общая для всех ответвлений), // остальные узлы - изломы( могут отсутствовать) // последний узел - конец ответвления (указывает на объект) end; //структура параметров "обозначение базы" PBaseParam = ^BaseParam; BaseParam = record style : Word; // стиль текста, если 0 - умолчательный стиль x1, y1 : Double; // координаты базовой точки ( начало ножки ) x2, y2 : Double; // координаты конечной точки ножки Case _type : Byte of // 0- текст в виде строки 1- динамический массив компонент текстов 0 : ( str : array[0..50-1] of Char );// надпись 1 : ( pTextItem: Reference ); //динамический массив компонент текта TEXT_ITEM_ARR (надпись) end; //структура параметров "линии разреза/сечения " PCutLineParam = ^CutLineParam; CutLineParam = record style : Word; // стиль текста, если 0 - умолчательный стиль right : Byte; // признак стрелок 0 слева/ 1 справа по направлению ломаной x1, y1 : Double; // координаты надписи у первого участка x2, y2 : Double; // координаты надписи у второго участка pMathPoint : Reference; // POINT_ARR динамический массив нач.точка, точки перегибов, кон.точка Case _type : Byte of // 0- текст в виде строки 1- динамический массив компонент текстов 0 : ( str : array[0..50-1] of Char); // надпись 1 : ( pTextItem : Reference); // динамический массив компонент текта TEXT_ITEM_ARR (надпись) end; //структура параметров "стрелки вида" PViewPointerParam = ^ViewPointerParam; ViewPointerParam = record style : Word; // стиль текста, если 0 - умолчательный стиль x1, y1 : Double; // координаты вершины( острия) стрелки x2, y2 : Double; // координаты конечной точки стрелки xt, yt : Double; // координаты текста Case _type : Byte of // 0- текст в виде строки 1- динамический массив компонент текстов 0 : ( str : array[0..50-1] of Char); // надпись 1 : ( pTextItem : Reference); // динамический массив компонент текта TEXT_ITEM_ARR (надпись) end; //структура параметров опоры допуска формы PToleranceBranch = ^ToleranceBranch ; ToleranceBranch = record arrowType : Byte; // тип опоры 1- треугольник 2- стрелка 0-нет опоры tCorner : Byte; // 1-8 опрделяет точку на таблице куда приходит опора pMathPoint : Reference; // динамический массив математических точек ( POINT_ARR ) // первый узел -точка на таблице ( ее в массив помещать не нужно - определена tCorner1), // остальные узлы - изломы( могут отсутствовать) // последний узел - конец опоры (указывает на объект) end; //структура параметров "допуска формы" PToleranceParam = ^ToleranceParam; ToleranceParam = record tBase : Byte; // 1-8 опрделяет базовую точку на таблице ( 1- левый нижний угол 3..4..5 ) style : Word; // стиль текста, если 0 - умолчательное значение : : x, y : Double; // координаты базовой точки 2 6 _type : Byte; // тип 0- горизонтальное расположение, 1- вертикальное : : branch1 : ToleranceBranch; // первая опора 1..8..7 branch2 : ToleranceBranch; // вторая опора end; // Структура параметров участка штриховой кривой PCurvePattern = ^CurvePattern; CurvePattern = record visibleSeg : Double; //длина видимого участка invisibleSeg : Double; //длина невидимого участка end; //Структура параметров для картинки стиля PCurvePicture = ^CurvePicture; CurvePicture = record polygon : Reference; //динамический массив полилиний, описывающий картинку POLYLINE_ARR ( точки в листовых координатах относительно 0 картинки) fill : Reference; //динамический массив точек, описывающий границу заливки POLYLINE_ARR (точки в листовых координатах относительно 0 картинки) end; // Структура параметров участка штриховой кривой расширенная PCurvePatternEx = ^CurvePatternEx; CurvePatternEx = record visibleSeg : Double; //длина видимого участка invisibleSeg : Double; //длина невидимого участка dx : Double; //положение баз.точки(нуля) картинки относительно начала образца dy : Double; Case pictureType : Byte of //тип картинки 0 : ( picture : CurvePicture); //pictureType 0 - картинка в виде массивов полилиний 1 : ( frwName : array[0..TEXT_LENGTH-1] of Char);//pictureType 1 картинка в виде фрагмента, используется только при создании стиля AddStyle end; //структура параметров стиля кривой PCurveStyleParam = ^CurveStyleParam; CurveStyleParam = record name : array [0..TEXT_LENGTH-1] of Char; // имя стиля color : DWord; // цвет paperWidth : Double; // толщина пера на бумаге screenWidth : Byte; // толщина пера на экране curveType : Byte; // тип кривой 0- сплошная 1- прерывистая 2- прерывистая с картинками pattern : Reference; // (для прерывистой кривой) динамический массив параметров участков штриховой кривой для CURVE_STYLE-CurvePattern, для CURVE_STYLE_EX -CurvePatternEx even : Byte; // (для прерывистой кривой) 1- кривая всегда оканчивается штрихами 0- как получится end; //структура составляющих объектов размера ( копии - временные объекты ) PDimensionPartsParam = ^DimensionPartsParam; DimensionPartsParam = record line1 : Reference; // линия выноски 1 line2 : Reference; // линия выноски 2 dimLine : Reference; //размерная линия dimLine1 : Reference; //продолжение размерной линии leg : Reference; //ножка shelf : Reference; //полка gr : Reference; //временная группа всех объектов размера, включая тексты end; //структура параметров стиля текста PTextStyleParam = ^TextStyleParam; TextStyleParam = record name : array [0..TEXT_LENGTH-1] of Char; //имя стиля height : Double; //высота текста ksu : Double; //сужение текста step : Double; //шаг строк fontName : array [0..TEXT_LENGTH-1] of Char; //имя фонта color : DWord; //цвет align : Byte; //вырвнивание 0-слева, 1-по центру,2-справа, 3 -на всю ширину bold : Byte; //текст 1- утолщенный, 0-не утолщенный italic : Byte; //текст 1- с наклоном, 0- без наклона underline : Byte; //текст 1- с подчеркиванием, 0 - без подчеркивания posKS : Double; //смещение красной строки stepParPre : Double; //смещение вниз, предшествующее текту stepParPst : Double; //смещение вниз после текста leftEdge : Double; //отступ текста слева rightEdge : Double; //отступ текста справа end; //структура параметров для построения конического сечения PConicArcParam = ^ConicArcParam; ConicArcParam = record A : Double; B : Double; C : Double; D : Double; E : Double; F : Double; //коэффициенты канонического уравнения x1, y1 : Double; //координаты начальной точки x2, y2 : Double; //координаты конечной точки style : Word; //стиль end; //структура параметров для полилинии PPolylineParam = ^PolylineParam; PolylineParam = record pMathPoint : Reference; //динамический массив мат точек POINT_ARR style : Word; //стиль end; //структура параметров для подключения стиля из библиотеки PLibStyle = ^LibStyle; LibStyle = record fileName : array [0..MAX_TEXT_LENGTH-1] of Char; // имя файла библиотеки styleNumber : Integer; // номер стиля в библиотеке typeAllocation : Byte; // тип размещения стиля в докумкнте 0- телом; 1- ссылкой на библиотеку end; //структура параметров для определения технических требований PTechnicalDemandParam = ^TechnicalDemandParam; TechnicalDemandParam = record pGab : Reference; // динамический массив габаритных прямоугольников RECT_ARR -(структура RectParam) style : Word; //стиль strCount : Word; //количество строк в технических требований end; //структура параметров для определения неуказанной шероховатости PSpecRoughParam = ^SpecRoughParam; SpecRoughParam = record style : Word; //стиль текста sign : Byte; //тип знака 0-вид обр-ки не устанавливается, 1- обр-ка удалением слоя материала, 2 -обр-ка без удаления слоя материала t : Byte; //1- есть знак в скобках 0 -нет s : array [0..TEXT_LENGTH-1] of Char; //текст end; //структура параметров для определения настроек размеров PDimensionsOptions = ^DimensionsOptions; DimensionsOptions = record proLineExtension : Double; // выход выносных линий за размерную textDistanceFromDimLine : Double; // расстояние от разм.линии до текста textDistanceFromProLine : Double; // расстояние от выносных линий до текста dimLineExtension : Double; // выход размерной линии за текст arrowLength : Double; // длина стрелки для размера style : Word; //стиль текста decimalsCount : Byte; // кол-во знаков после запятой 0-9 anglePrecisionLevel : Integer; // точность углового размера 0-градусы, 1- минуты, 2- секунды hiddenToleranceNumber : Integer; // -1 не включен; максимальный номер показываемого квалитета 1-17 end; //структура параметров для колонки спецификации PSpcColumnParam = ^SpcColumnParam; SpcColumnParam = record columnType : Cardinal; //тип колонки SPC_CLM_FORMAT...SPC_CLM_USER ispoln : Cardinal; //исполнение данного типа начиная block : Cardinal; //номер блока typeVal : Cardinal; //тип значения SPC_INT...SPC_RECORD name : array [0..TEXT_LENGTH-1] of Char; //имя колонки end; //структура параметров для стиля в библиотеке стилей PLibraryStyleParam = ^LibraryStyleParam; LibraryStyleParam = record styleName : array [0..MAX_TEXT_LENGTH-1] of Char; // имя стиля styleId : Cardinal; // номер стиля в библиотеке end; //структура параметров для расчета плоских моментно-центровочных характеристик PInertiaParam = ^InertiaParam; InertiaParam = record xc, yc : Double; // координаты центра тяжести, f : Double; // площадь, ly, lx : Double; // моменты инерции относительно исходных осей x и y, lxy : Double; // центробежный момент инерции относительно исходных осей x и y, my, mx : Double; // моменты инерции относительно осей, параллельных осям x и y // и проходящих черех центр тяжести, mxy : Double; // центробежный момент инерции относительно осей, параллельных осям x и y // и проходящих черех центр тяжести, jy, jx : Double; // главные центральные моменты инерции, a : Double; // угол между первой главной осью и осью x end; //структура параметров для расчета массо-центровочных характеристик PMassInertiaParam = ^MassInertiaParam; MassInertiaParam = record r : Double; // плотность m : Double; // масса v : Double; // объем xc, yc, zc : Double; // статические моменты - координаты центра тяжести lxy, lxz, lyz : Double; // центробежные моменты инерции относительно исходных осей lx, ly, lz : Double; // осевые моменты инерции относительно исходных осей jy0z, jx0z, jx0y : Double; // плоскостные моменты инерции jxy, jxz, jyz : Double; // центробежные моменты инерции относительно главных осей jx, jy, jz : Double; // осевые моменты инерции относительно главных осей end; //структура параметров параметрической переменной PVariableParam = ^VariableParam; VariableParam = record name : array [0..MAX_TEXT_LENGTH-1] of Char; // имя переменной value : Double; // значение переменной note : array [0..MAX_TEXT_LENGTH-1] of Char; // комментарий end; //структура параметров привязок в графическом документе SnapOptions = record //глобальные привязки nearestPoint : Byte; // Ближайшая точка nearestMiddle : Byte; // Середина intersect : Byte; // Пересечение tangentToCurve : Byte; // Касание normalToCurve : Byte; // Нормаль grid : Byte; // По сетке xyAlign : Byte; // Выравнивание angSnap : Byte; // Угловая привязка pointOnCurve : Byte; // Точка на кривой commonOpt : Cardinal; // общие настройки привязок : динамически отслеживать, отображать текст, с учетом фоновых слоев, подавить привязки angleStep : Double; // угловой шаг для привязок по ортогональности localSnap : Byte; // установить тип локальной привязки SN_NEAREST_POINT...SN_POINT_CURVE или 0 end; //структура параметров Nurbs-сплайна PNurbsParam = ^NurbsParam; NurbsParam = record degree : Byte; // степень сплайна > 2 && < 9 close : Byte; // тип замыкания сплайна 0 - незамкнутый 1 - замкнутый style : Word; // стиль отрисовки сплайна pPoint : Reference; // динамический массив точек сплайна(NurbsPointParam ) pKnot : Reference; // динамический массив узлов сплайна(double) periodic : Byte; // 1 - сплайн периодический; 0 - не периодический -только GetObjParam end; //структура параметров вставки фрагментов PInsertFragmentParam = ^InsertFragmentParam; InsertFragmentParam = record place : PlacementParam; //структура местоположения вставки фрагмента insertType : Byte ; //тип вставки( используется только для GetObjparam ) // 0- взять в документ, 1-внешней ссылкой, 3- локальный фрагмент fileName : array [0..MAX_TEXT_LENGTH-1] of Char; // имя файла фрагмента или "\0" для локального фрагмента comment : array [0..MAX_TEXT_LENGTH-1] of Char; //имя вставки end; //структура параметров вставки фрагментов PInsertFragmentParamEx = ^InsertFragmentParamEx; InsertFragmentParamEx = record place : PlacementParam; //структура местоположения вставки фрагмента insertType : Byte ; //тип вставки( используется только для GetObjparam ) // 0- взять в документ, 1-внешней ссылкой, 3- локальный фрагмент fileName : array [0..MAX_TEXT_LENGTH-1] of Char; // имя файла фрагмента или "\0" для локального фрагмента comment : array [0..MAX_TEXT_LENGTH-1] of Char; //имя вставки scaleProjLinesSize : Byte; end; // Структура параметров параметрических ограничений PConstraintParam = ^ConstraintParam; ConstraintParam = record constrType : Word; // тип ограничения index : Integer; // индекс точки на объекте ( начинается с 0, у дуги и окружности 0-центр ) partner : Reference; // второй объект partnerIndex : Integer; // индекс точки на втором объекте ( начинается с 0, у дуги и окружности 0-центр ) end; // структура параметров углов для прямоугольников и многоугольников PCornerParam = ^CornerParam; CornerParam = record index : Integer; // индекс угла ( 0, 1, 2, .... ) fillet : Byte; // признак скругления 1 - скругление, 0 - фаска l1 : Double; // длина фаски 1 сегмента или радиус l2 : Double; // длина фаски 2 сегмента end; // структура параметров прямоугольника PRectangleParam = ^RectangleParam; RectangleParam = record x : Double; // базовая точка в первой вершине y : Double; ang : Double; // угол вектора направления от 1-ой точки ко 2-ой height : Double; // высота weight : Double; // ширина style : Word; // тип линии pCorner : Reference; // динамический массив структур параметров углов CORNER_ARR end; // структура параметров правильного многоугольника PRegularPolygonParam = ^RegularPolygonParam; RegularPolygonParam = record count : Integer; // количество вершин многоугольника xc : Double; // центр окружности yc : Double; ang : Double; // угол первой вершины radius : Double; // радиус окружности describe : Byte; // признак описанного многоугольника. style : Word; // тип линии pCorner : Reference; // динамический массив структур параметров углов CORNER_ARR end; // структура параметров объекта "обозначение центра" PCentreParam = ^CentreParam; CentreParam = record baseCurve : Reference; // базовая ГЕОМЕТРИЧЕСКАЯ кривая или 0 x : Double; // точка привязки, если baseCurve задана - не используется y : Double; ang : Double; //направление, если baseCurve задана - не используется _type : Byte; // тип обозначений центра 0- спецзнак, 1- горизонтальная ось 2- обе оси standXpTail : Byte;// 1- признак "стандартного" хвоста standXmTail : Byte;// standYpTail : Byte;// standYmTail : Byte;// lenXpTail : Double; //длина хвоста, если он не стандартный lenXmTail : Double; lenYpTail : Double; lenYmTail : Double; end; // параметры присоединеного документа к объекту спецификации PDocAttachedSpcParam = ^DocAttachedSpcParam; DocAttachedSpcParam = record fileName : array[0..MAX_TEXT_LENGTH-1] of Char; // имя файла документа источника comment : array[0..MAX_TEXT_LENGTH-1] of Char; // комментарий для документа источника transmit : Byte; // 1 - при изменении обозначения-наименования передавать в изменения в источник end; // структура параметров объекта спецификации PSpcObjParam = ^SpcObjParam; SpcObjParam = record docArr : Reference; // динамический массив DOC_SPCOBJ_ARR структур параметров прикрепленных документов к объекту спецификации // параметры для всех типов объектов typeObj : Word; // тип объекта - SPC_BASE_OBJECT ... SPC_EMPTY_STR !!! только для чтения !!! numbSection : Word; // номер раздела !!! только для чтения !!! // параметры для вспомогательного объекта - комментарий blockNumber : Word; // номер блока ( первый - 0 ) для SPC_COMMENT - комментарий // параметры для вспомогательного и базового объекта numbSubSection : Word; // номер подраздела subSectionName : array[0..MAX_TEXT_LENGTH-1] of Char; // имя подраздела !!! только для чтения !!! firstOnSheet : Byte; // 1 - первый на листе insFrgType : Byte; // 0 - самостоятельный объект, 1 - объект из вставки фрагмента // 2 - редактировался в документе !!! только для чтения !!! posInc : Byte; // 1 - позиция возрастает; 0 - позиция соответствует предыдущей // свойства только для базового объекта first : Byte; // 1 - первый одинаковый объект, 0 - последующие одинаковые объекты !!! только для чтения !!! draw : Byte; // 1 - объект показывать 0 - объект не показывать ( для одинаковых объектов ) posNotDraw : Byte; // 0 - позицию показывать в таблице 1 не показывать ispoln : Byte; // 1 - объект является исполнением end; // структура параметров растрового объекта PRasterParam = ^RasterParam; RasterParam = record place : PlacementParam; // структура местоположения fileName : array[0..MAX_TEXT_LENGTH-1] of Char; // полный путь к файлу embeded : Byte; // embeded - 1 - внедрять данные в объект, end; // 0 - связывать с файлом на диске (пока не используется) // заполняется для типа значения SPC_RECORD PRecordTypeAttrParam = ^RecordTypeAttrParam; RecordTypeAttrParam = record attrLibName : array[0..MAX_TEXT_LENGTH-1] of Char; // имя файла библиотеки типов атрибутов key1 : Integer; // атрибуты многих типов задавать ключами key2 : Integer; // если какой-то из ключей 0 он не учитывается key3 : Integer; key4 : Integer; end; // заполняется для типа значения SPC_DOUBLE и SPC_INT PNumberTypeAttrParam = ^NumberTypeAttrParam; NumberTypeAttrParam = record minValue : Double; maxValue : Double; end; // структура параметров стиля колонки таблицы спецификации // тип запись вводится только в целях сортировки PSpcStyleColumnParam = ^SpcStyleColumnParam; SpcStyleColumnParam = record nameColumn : array[0..MAX_TEXT_LENGTH-1] of Char; // имя колонки columnType : Cardinal; // тип колонки SPC_CLM_FORMAT ... SPC_CLM_FACTORY ispoln : Cardinal; // номер колонки с данным типом edit : Byte; // 1 - редактировать колонку в данном разделе, 0 - нет createSum : Byte; // 1 - расчитывать сумму значений для колонки, 0 - нет multiplyToCount : Byte; // 1 - при расчете суммы домножать на количество, 0 - нет useForSectionTitle : Byte; // 1 - использовать колонку для вывода имени раздела, 0 - нет textDn : Byte; // 1 - тест колонки прижимать к низу, 0 - приживать к верху rezerv : array[0..9] of Char; // не используется linkId : Cardinal; // номер ячейки штампа для связи case typeVal : Cardinal of // тип значения используются : LINT_ATTR_TYPE, DOUBLE_ATTR_TYPE, STRING_ATTR_TYPE, RECORD_ATTR_TYPE RECORD_ATTR_TYPE : ( recordType : RecordTypeAttrParam ); // заполняется для типа значения RECORD_ATTR_TYPE LINT_ATTR_TYPE, DOUBLE_ATTR_TYPE : ( numberType : NumberTypeAttrParam ); // заполняется для типа значения LINT_ATTR_TYPE, DOUBLE_ATTR_TYPE end; // структура параметров стиля разделa спецификации PSpcStyleSectionParam = ^SpcStyleSectionParam; SpcStyleSectionParam = record sectionName : array[0..MAX_TEXT_LENGTH-1] of Char; // имя раздела number : Word; // номер раздела sortColumnType : Cardinal; // общий тип колонки в которой проводить сортировку sortIspoln : Cardinal; // номер колонки в которой проводить сортировку dataType : Byte; // тип заполнения данных: 0 - ручное заполнение колонок, // 1 - ручное заполнение или чтение из штампа sortType : Word; // тип сортировки SPC_SORT_OFF ... SPC_SORT_DOWN arrColumn : Reference; // массив структур параметров стиля колонок SpcStyleColumnParam arrAdditionalColumn : Reference; // массив структур параметров стиля // дополнительных колонок SpcStyleColumnParam rezerv : array[0..9] of Char; // не используется end; // структура параметров подраздела спецификации. Разделы могут состоять из подразделов PSpcSubSectionParam = ^SpcSubSectionParam; SpcSubSectionParam = record name : array[0..MAX_TEXT_LENGTH-1] of Char; //имя подраздела number : Byte; //номер подраздела end; // структура параметров настройки раздела спецификации PSpcTuningSectionParam = ^SpcTuningSectionParam; SpcTuningSectionParam = record subsectionOn : Byte; // 1-деление на подразделы включено, 0-не включено geometryOn : Byte; // 1-геометрию ставить в разделе, 0-не ставить positionOn : Byte; // 1-позиции ставить в разделе, 0- не ставить sortOn : Byte; // 1-сортировка включена, 0-выключена для настройки firstOnSheet : Byte; // 1- раздел размещать с новой страницы, 0-выключена rezerv : array[0..9] of Char; // не используется rezervCount : Word; // число резервных строк и позиций number : Word; // номер раздела - только для чтения arrSubSection : Reference; // массив параметров подразделов SpcSubSectionParam для раздела end; // структура параметров стиля настроек спецификации PSpcTuningStyleParam = ^SpcTuningStyleParam; SpcTuningStyleParam = record grToSP : Byte; // режим связки CБ -> СП 0-нет; 1-только вставка ЭС; 2-с расчетом позиций; zoneCalc : Byte; // 1- рассчитывать зоны, 0-не включено showSectionName : Byte; // 1-показывать имя раздела в таблице, 0-не включено positionCalc : Byte; // 1-позиции рассчитывать в СП, 0-не включено geometryDel : Byte; // 1-геометрию удалять при удалении ЭС, 0-не удалять positionDel : Byte; // 1-линии выноски удалять при удалении ЭС, 0-не удалять massCalc : Byte; // 1-рассчитывать массу спецификации, 0-выключена disableEmptyStr : Byte; // запретить вывод пустых строк вокруг заголовка раздела insertNull : Byte; // настройка начала блока 1- вставлять нули перед числом 0-не вставлять insertDash : Byte; // настройка начала блока 1- вставлять тире 0-не вставлять disableEmptyBlockStr : Byte; // запретить вывод пустых строк вокруг начала блока showInfoByDetBlock : Byte; // 0-выдавать информацию блоками 1- подетально ( для исполнений > 10 ) ispolnOn : Byte; // 1-исполнения поддерживаются в спецификации ispolnMarkFull : Byte; // 1-обозначение исполнения показывать полностью 0 - только номер (-01) blocOnNewPage : Byte; // Располагать блок на новой странице userTextStyle : Byte; // 1- стиль текста объектов СП пользовательский countIspoln : Byte; // число исполнений countBlock : Byte; // число блоков rezerv : array[0..9] of Char; // не используется sectionTextStyleFirst : TextStyleParam; // стиль текста заголовка раздела - первая строка sectionTextStyleNext : TextStyleParam; // стиль текста заголовка раздела - последующие строки objectTextStyle : TextStyleParam; // стиль текста объекта спецификации predefinedTextFileName : array[0..MAX_TEXT_LENGTH-1] of Char; arrSection : Reference; // массив настроек разделов для спецификации SpcTuningSectionParam end; // структура параметров стиля спецификации PSpcStyleParam = ^SpcStyleParam; SpcStyleParam = record layoutName1 : array[0..MAX_TEXT_LENGTH-1] of Char; // имя файла библиотеки оформлений для первого листа layoutName2 : array[0..MAX_TEXT_LENGTH-1] of Char; // имя файла библиотеки оформлений для второго листа shtType1 : Cardinal; // тип оформления в библиотеке для первого листа shtType2 : Cardinal; // тип оформления для второго листа variant : Byte; // вариант исполнения групповой спецификации 0-простая, 1-А, 2-Б, 3-В, 4-Г sectionOn : Byte; // 1- включено деление на разделы, 0-не включено rezerv : array[0..9] of Char; // не используется tuning : SpcTuningStyleParam; // умолчательные настройки, считанные с библиотеки спецификации arrColumn : Reference; // массив колонок для спецификации -умолчательные значения SpcStyleColumnParam arrAdditionalColumn : Reference; // массив дополнительных колонок SpcStyleColumnParam arrSection : Reference; // массив разделов для спецификации SpcStyleSectionParam case _type : Byte of // тип форматa листа бумаги 0- стандартный, 1 - пользовательский 0: ( stPar : StandartSheet ); // стандартный формат листа бумаги 1: ( usPar : SheetSize ); // пользовательский формат листа бумаги end; // структура параметров описания спецификации PSpcDescrParam = ^SpcDescrParam; SpcDescrParam = record layoutName : array[0..MAX_TEXT_LENGTH-1] of Char; // имя файла библиотеки стилей styleId : Cardinal; // номер стиля в библиотеке spcName : array[0..MAX_TEXT_LENGTH-1] of Char; // имя подключенного файла СП end; //НМА // запись об одном интервале для какого-то квалитета PQualityItemParam = ^QualityItemParam; QualityItemParam = record minLimit : SmallInt; // минимальное значение в интервале размеров maxLimit : SmallInt; // максимальное значение в интервале размеров high : Double; // верхнее отклонение low : Double; // нижнее отклонение end; // структура параметров квалитета PQualityContensParam = ^QualityContensParam; QualityContensParam = record systemQuality : Byte; // система квалитета kindQuality : Byte; // тип квалитета name : array[0..MAX_TEXT_LENGTH-1] of Char; // поле допуска pQualityItems : Reference; // массив интервалов end; //структура параметров "допуска формы" PksTolerancePar = ^ksTolerancePar; ksTolerancePar = record tBase : Byte; // 1-8 опрделяет базовую точку на таблице ( 1- левый нижний угол 3..4..5 ) style : Word; // стиль текста, если 0 - умолчательное значение : : x, y : Double; // координаты базовой точки 2 6 _type : Byte; // тип 0- горизонтальное расположение, 1- вертикальное : : branchArr : Reference; // динамический массив опор (структур ToleranceBranch ) 1..8..7 end; // Структура параметров штриховки расширенная PHatchParamEx = ^HatchParamEx; HatchParamEx = record style : Word; //тип штриховки ang : Double; //угол штриховки step : Double; //шаг штриховки width : Double; //ширина полосы, 0-штриховать сплошь x, y : Double; //базовая точка (нужна только для отрисовки) pBoundaries : Reference; //временная группа-границы штриховки; используется для GetObjParam и ksHatch color : Dword; //цвет, по умолчанию FREE_COLOR (0xff000000l) sheetAng : Byte; //0 - угол собственный ( накатка ) 1 -угол листовой ( обычная штриховка) end; // параметры изображения размера высоты POrdinatedDrawing = ^OrdinatedDrawing; OrdinatedDrawing = record _type : Byte; // тип размера высоты end; // параметры привязки размера высоты POrdinatedSource = ^OrdinatedSource; OrdinatedSource = record x0, y0 : Double; // координаты точки, задающей нулевой уровень x1, y1 : Double; // координаты точки, задающей измеряемый уровень x2, y2 : Double; // координата точки, задающей положение размерной надписи end; // Структура параметров размера высоты ORDINATEDIMENSION_OBJ POrdinatedDimParam = ^OrdinatedDimParam; OrdinatedDimParam = record tPar : DimText; // размерная надпись dPar : OrdinatedDrawing; // параметры изображения размера sPar : OrdinatedSource; // параметры привязки размера end; // структура для хранения данных некоторого типа PLtVariant = ^LtVariant; LtVariant = record vType : Byte; // тип хранимого данного colVisible : SmallInt; // для СП 1 - видимая колонка, 0 - невидимая sortKey : SmallInt; // ключ сортировки для колонки СП, 0 - сортировки нет wReserved3 : SmallInt; // резерв Case _type : Byte of // тип данного значение vType 0 : ( chVal : Byte ); // символ ltv_Char 1 1 : ( ucVal : Byte ); // байт ltv_UChar 2 2 : ( iVal : Integer ); // целое ltv_Int 3 3 : ( uiVal : Cardinal ); // беззнаковое целое ltv_UInt 4 4 : ( lVal : DWord ); // длинное целое ltv_Long 5 5 : ( fVal : Real ); // вещественное ltv_Float 6 6 : ( dVal : Double ); // двойное ltv_Double 7 7 : ( strVal : array[0..MAX_TEXT_LENGTH-1] of Char); // строка ltv_Str 8 8 : ( shVal : SmallInt) // короткое целое ltv_Short 10 end; //структура параметров линии штриховки PHatchLineParam = ^HatchLineParam; HatchLineParam = record x, y : Double; // точка привязки dx, dy : Double; // смещение для следующей линии. dy должен быть отличен от нуля! ang : Double; // угол наклона typeCurvStyle : Byte; // 0 - системаня(style), 1 - пользовательская(curPar) Case _type : Byte of 0 : ( style : SmallInt ); // стиль линии (1-11) 1 : ( curPar : CurveStyleParam ); // пользовательский стиль линии, pattern для прерывистой кривой использует CurvePattern end; //структура параметров стиля штриховки PHatchStyleParam = ^HatchStyleParam; HatchStyleParam = record name : array[0..TEXT_LENGTH-1] of Char; // имя стиля step : Double; // шаг ang : Double; // угол наклона refPoint : MathPointParam; // базовая точка width : Double; // ширина color : Cardinal; // цвет, по умолчанию FREE_COLOR (0xff000000l) mayChangeAngle : Cardinal; // можно ли менять угол наклона mayChangeWidth : Cardinal; // можно ли менять полосу штрихования mayChangeSpace : Cardinal; // можно ли менять шаг/масштаб isScalable : Cardinal; // работать по масштабу(1) или шагу(0) arrLineParam : Cardinal; // массив структур настроек линий, участвующих в штриховке HatchLineParam end; //----------------------------------------------------------------------------- //структура параметров для конвертации в растровый формат // --- PRasterFormatParam = ^RasterFormatParam; RasterFormatParam = record format : Byte; // Формат растра FORMAT_BMP...FORMAT_PCX colorBPP : Byte; // глубина цвета (бит на пиксел) BPP_COLOR_01...BPP_COLOR_32 grayScale : Byte; // >0 оттенки серого extResolution : Integer; // разрешение экрана : 0 - текущее extScale : Double; // масштаб colorType : Byte; // тип цвета BLACKWHITE...COLOROBJECT onlyThinLine : Byte; // >0 - только тонкими линиями pages : array[0..MAX_TEXT_LENGTH-1] of Char; // список диапозонов выводимых листов "beg1-end1, beg2-end2, beg3-end3, ..." rangeIndex : Byte; // 0 - все, 1- нечетные 2- четные, multiPageOutput : Byte; // >0 сохранять все листы в оном файле (используется для FORMAT_TIF) end; //структура параметров для полилинии. Расширенная PPolylineParamEx = ^PolylineParamEx; PolylineParamEx = record pMathPoint : reference; // динамический массив мат точек POINT_ARR style : Word; // стиль closed : Byte; // признак замкнутой кривой - 1 кривая замкнута, 0 незамкнута rezerv : array[0..10] of Char; // не используется end; // см. LtNodeType - перечисление возможных типов узла дерева библиотеки документов // структура параметров узла дерева PTreeNodeParam = ^TreeNodeParam; TreeNodeParam = record nodeType : Integer; // тип узла: корень, директория, файл (из LtNodeType) name : array[0..MAX_TEXT_LENGTH] of Char; // имя узла comment : reference; // комментарий - динамический массив CHAR_STR_ARR - динамический массив строк символов nodes : reference; // динамический массив узлов TreeNodeParam end; // Параметры цвета фона PViewColorParam = ^ViewColorParam; ViewColorParam = record color : Integer; // цвет фона, или -1 если используется цвет окна, установленный в Windows useGradient : Byte; // 1 - использовать градиентный переход при полутоновом отображении // 0 - не использовать. (доступно только для 3D-документов) topColor : Integer; // Верхний цвет перехода (доступно только для 3D-документов) bottomColor : Integer; // Нижний цвет перехода (доступно только для 3D-документов) end; // см. LtViewType - Типы видов // Структура параметров ассоциативного вида PAssociationViewParam = ^AssociationViewParam; AssociationViewParam = record viewPar : ViewParam; //параметры обычного вида fileName : array[0..MAX_TEXT_LENGTH] of Char; // имя файла 3d документа projectionName : array[0..TEXT_LENGTH ] of Char; // имя проекции ( из списка проекций в документе источнике ) viewType : Byte; // тип вида из LtViewType (readOnly) dimensionLayoutScaling : Byte; // признак масштабирования аннатационных объектов вида (только для SetObjParam) projectionLink : Byte; // проекционная связь disassembly : Byte; // разнести visibleLinesStyle : Integer; // номер стиля отрисовки видимых ребер и очерков, если 0 - умолчательный стиль hiddenLinesStyle : Integer; // номер стиля отрисовки всех невидимых линий, если 0 - умолчательный стиль tangentEdgesStyle : Integer; // номер стиля отрисовки видимых линий перехода, если 0 - умолчательный стиль hiddenLinesShow : Byte; // флаг отрисовки невидимых линий tangentEdgesShow : Byte; // флаг отрисовки видимых линий перехода projBodies : Byte; // проецировать ли тела projSurfaces : Byte; // проецировать ли поверхности projThreads : Byte; // проецировать ли резьбы reserve : array[0..30] of Byte; // резерв hatchPar : HatchParamEx; // параметры штриховки, используется только в виде разреза\сечения sameHatch : Byte; // oдинаковая штриховка всех деталей сборки section : Byte; // признак разрез/сечение end; // Параметры осевой линии PAxisLineParam = ^AxisLineParam; AxisLineParam = record begPoint : MathPointParam; // координаты начальной точки осевой линии endPoint : MathPointParam; // координаты конечной точки осевой линии end; // Параметры объекта "Выносной элемент" PRemoteElementParam = ^RemoteElementParam; RemoteElementParam = record style : Byte; // стиль текста, если 0 - умолчательный стиль, // если style = INDICATIN_TEXT_LINE_ARR -> pText- массив TEXT_LINE_ARR signType : Integer; // тип значка LtRemoteElmSignType x : Double; // координаты центра выносного элемента y : Double; width : Double; // ширина (для прямоугольника и скругленного прямоугольника) height : Double; // высота (для прямоугольника и скругленного прямоугольника) smooth : Double; // радиус скругления прямоугольника radius : Double; // радиус окружности (для окружности) shelfX : Double; // координаты начала полки shelfY : Double; shelfDir : Integer; // направление полки по X (1 -вправо -1-влево, 2- полка направлена в вверх 3- полка направлена вниз) pText : reference; // если style = INDICATIN_TEXT_LINE_ARR , TEXT_LINE_ARR - динамический массив строк текста // CHAR_STR_ARR - динамический массив строк символов текста шероховатости end; // Структура параметров для копирования объекта 2d документа PCopyObjectParam = ^CopyObjectParam; CopyObjectParam = record p : reference; // указатель на объект, группу, вид, слой xOld : Double; // базовая точка объекта yOld : Double; xNew : Double; // в какую точку копировать yNew : Double; scale : Double; // масштаб angle : Double; // угол поворота в градусах attrCopy : Byte; // копировать ли атрибуты dimLineScale : Byte; // выносные линии масштабировать reserv : array[0..10] of Byte; // резерв - не используется end; // Структура параметров текстового документа PTextDocumentParam = ^TextDocumentParam; TextDocumentParam = record regim : Byte; // 0 - видимый режим, // 1 - невидимый режим fileName : array[0..MAX_TEXT_LENGTH] of Char; // имя файла чертежа comment : array[0..TEXT_LENGTH] of Char; // комментарий author : array[0..TEXT_LENGTH] of Char; // автор firstSheet : LibraryStyleParam; // оформление первого листа( имя библиотеки стилей, номер стиля в библиотеке) evenSheet : LibraryStyleParam; // оформление четных листов( имя библиотеки стилей, номер стиля в библиотеке) oddSheet : LibraryStyleParam; // оформление нечетных листов( имя библиотеки стилей, номер стиля в библиотеке) arrTitleSheet : reference; // динамический массив оформлений титульных листов LIBRARY_STYLE_ARR arrTailSheet : reference; // динамический массив оформлений листов заключительной части LIBRARY_STYLE_ARR Case _type : Byte of 1: ( stPar : StandartSheet ); //параметры стандартного формата; multiply не используется 2: ( usPar : SheetSize ); //параметры не стандартного формата end; //----------------------------------------------------------------------------- // структура параметров для осуществления подписки \ отписки сообщений в COM // --- PNotifyConnectionParam = ^NotifyConnectionParam; NotifyConnectionParam = record pContainer : reference ; // указатель на объект Компас, контейнер сообщений. // Для приложения 0. Для документа указатель документа. objType : LongInt; // Дополнительный параметр. Либо тип объекта, // либо указатель на объект(для ksObject2DNotify). ifType : Integer; // тип интерфейсов сообщений ksNotifyType iContainer : IUnknown; // указатель на объект Компас, контейнер сообщений. iObj : IUnknown; // Дополнительный параметр. Указатель на объект(для ksObject3DNotify). // если указатель задан, то objType не используется. end; implementation end.