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

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

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

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

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

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

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

Вертикальный текст в таблице

Автор redfox, 12.08.13, 21:29:15

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

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

Sprinter500

#40
Цитата: Sabahs от 19.04.14, 12:26:05
http://yadi.sk/d/wpD8fY59MmEck
По ссылки ролик, пользуйтесь отладчиком, у меня работает, единственное пришлось вручную загрузить документ.
Чтобы не грузить документ вручную, загружаете программно (см. рис.).


У тебя в этом примере Компас создается с нуля и открывается документ, а как аналогично для уже открытого документа организовать подключение?
Ошибка тут:  pKompasDocument2D1 :=  pKompasDocument2D as iKompasDocument2D1;
При создавании оболочки Компаса с нуля и открытия ошибки не возникает


Sprinter500

Ну у меня так и есть:
ksDoc:=KOMPAS.ActiveDocument;

Sprinter500

Я переделал так чтобы имена были как в скриншоте. Сначала попытка заполучить активный документ, если его нет то в другой процедуре создается Компас и открывается файл :

function InitCMPS(): bool;//Активация КОМПАСа
begin
  try
    KompasApi:=GetActiveOleObject('KOMPAS.Application.7') as IApplication;
    pDocuments := KompasApi.Documents;
    ksDoc := KompasApi.ActiveDocument;
    //pDocuments:=KompasApi.Documents;
    //ksDoc:=KompasApi.ActiveDocument;
    pKompasDocument2D :=  ksDoc as iKompasDocument2D;
    //pKompasDocument2D1 :=  pKompasDocument2D as iKompasDocument2D1;
    result:=true;
  except
    KompasApi:=CreateOleObject('KOMPAS.Application.7') as IApplication;
    KompasApi.Visible:=TRUE;
    result:=false;
  end;
end;


procedure OpenDOC(Fname: string);//Открыть документ
begin
  TRY
    pDocuments:=KompasApi.Documents;
    ksDoc:=pDocuments.Open(Fname, TRUE, FALSE);
    pKompasDocument2D :=  ksDoc as iKompasDocument2D;
    pKompasDocument2D1 :=  pKompasDocument2D as iKompasDocument2D1;
  EXCEPT
    pDocuments:=nil;
    ksDoc:=nil;
  END;
end;

Sprinter500

И еще это компилятору не нравится: pDrawTable:=Air as IDrawingTable;

Цитата: Sprinter500 от 19.04.14, 15:27:25

У тебя в этом примере Компас создается с нуля и открывается документ, а как аналогично для уже открытого документа организовать подключение?
Ошибка тут:  pKompasDocument2D1 :=  pKompasDocument2D as iKompasDocument2D1;
При создавании оболочки Компаса с нуля и открытия ошибки не возникает
У меня ошибки нет.

Sprinter500

Так у меня все тоже самое. Странно. Как такое может быть? Можешь прислать твой проект? Я посмотрю будет ошибка или нет.


Sprinter500

Не совсем. Видишь - ползунок есть, что сверху и снизу еще не видно. Может что то в uses есть что у меня не забито.
Я тебе в ICQ подал запрос на авторизацию. Можешь подтвердить? - так удобнее и быстрее будет общаться.
Я в долгу не останусь - как доделаю прогу тебе вышлю, занятная будет и пригодится, если конечно ты не чисто программируешь, а еще и чертишь в КОМПАСе.

Я чисто программирую и в ICQ не сижу, она у меня не установлена, а то, что в uses, здесь http://forum.ascon.ru/index.php/topic,24096.msg191014.html#msg191014 можно посмотреть.
+ Благодарностей: 1

Sprinter500

Ну а в виде архива RAR или ZIP трудно выложить свой проект? он же пустой, нет ничего секретного. Просто я хочу понять в чем загвоздка при кажущейся идентичности кода.
Может у меня версия API от 13-го, а у тебя более новая корректно работает?
Мне кажется настолько хорошо в API компаса разбираетесь только Вы, и спросить больше не у кого. Единственное что быстрого диалога не получается, как при голубиной почте )))

Смотрите.
+ Благодарностей: 1

Sprinter500

Ничего не менял в твоем проекте. Запустил - нажал кнопку и на тебе - такая же ошибка

Sprinter500

У тебя еще точка останова стояла... Видать дело или в Delphi или в устраненном глюке более новой версии API, которая у тебя.
Отложим пока эти выделения. Подскажи лучше пож-та как все таки читать вертикальный текст, я как ни крутил все символ @ выскакивает.


Golovanev

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

Тогда и поможете, товарищу у меня всё равно кода готового нет.

Sprinter500

Сегодня понедельник не грех и поработать :)

Sprinter500

Ну что продолжим?
1. В чем может быть причина нежелания подключения pKompasDocument2D1 :=  pKompasDocument2D as iKompasDocument2D1;, если на одном и том же коде у кого-то работает, а у кого-то нет?
2. Почему компилятору не нравится выражение: pDrawTable:=Air as IDrawingTable; ?
3. Как правильно считывать вертикальный текст из таблицы, чтобы не выводился символ "@" ?

ЦитироватьКак правильно считывать вертикальный текст из таблицы
Использовать свойство интерфейса строки текста ITextLine.TextLineData - интерфейс дополнительных данных строки.
+ Благодарностей: 1