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

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

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

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

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

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

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

разрушить чертёж

Автор Thender, 09.11.16, 16:58:58

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

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

Thender

Разрушить все открытые документы мне удалось, но вот разрушить оформление видимо средствами API Никак не получится, попробовал записать макрос разрушения вида, посмотрел что делает макрос - просто удаляет оформление и рисует его заново(линиями).
Как передать референс оформления в KSDestoyobject - так и не разобрался, в примерахSDK  API5, нужен API7 На форуме приведены какие то обрывки кода в которых не указаны ни подключаемые модули ни описания переменных. в общем 2 дня игрался с этими пазлами - все в пустую, можно было более плодотворно провести выходные, написанная библиотека без разрушения оформления теряет свою значимость.

Thender

#21
 
var
  Disp:IDispatch;
  KompasApi:IApplication;
  Pdocument:IKompasDocument;
  Document:IKompasDocument;
  playoutSheets:IlayoutSheets;
  playoutSheet:IlayoutSheet;

begin
  Disp:=IDispatch(CreateKompasApplication);
  KompasApi:=Disp as IApplication; // API7
  if KompasApi<>nil then pDocument:=KompasApi.ActiveDocument;
  pLayoutSheets:=pDocument.LayoutSheets;
  KSDestroyObjects(PLayoutSheets.Reference);


Данный код работает, ошибок не выдаёт но и оформление не разрушает.
может я что-то не правильно написал, или все правильно но нудно еще на уровень глубже брать референс (LayoutSheet.Reference)

Thender

var
  Disp:IDispatch;
  KompasApi:IApplication;
  Pdocument:IKompasDocument;
  Document:IKompasDocument;
  playoutSheets:IlayoutSheets;
  playoutSheet:IlayoutSheet;

begin
  Disp:=IDispatch(CreateKompasApplication);
  KompasApi:=Disp as IApplication; // API7
  if KompasApi<>nil then pDocument:=KompasApi.ActiveDocument;
  pLayoutSheets:=pDocument.LayoutSheets;
  KSDestroyObjects(PLayoutSheets.Reference);
   
         playoutSheet:=playoutsheets.GET_ItemByNumber(1);
         KSDestroyObjects(playoutSheet.Reference);

попробовал добавить ссылку на отдельный лист (последние 2 строчки).
результат тот же;

KrissKross

предлагаю попробовать обходной путь
сохранить как dwg
потом открыть в Компас

Thender

 :)
Оригинальное решение,
попробовал - надписи слетают со своих мест, если сохранять весь чертёж то вновь прочитанный из DXF, или DWG, Превращается в набор линий, в компасе остаются виды и масштабы можно открыть и промерять какой либо размер если его не хватает или он указан неявно.
Если не найду нормального простого решения, буду пробовать вычерчивать заново если нет другого решения, еще не известно как это решение поведёт себя при печати

Thender

Возвращаясь к моим баранам!
Подскажите как вставить  фрагмент на вид.(для делфи)
с самой вставкой все понятно, не понятно с получением интерфеса фрагмента;
как его получить и какие типы переменных использовать для его получения.
http://forum.ascon.ru/index.php/topic,27839.0.html - тут смотрел, но типов не нашёл.