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

Автор 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 - тут смотрел, но типов не нашёл.