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

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

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

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

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

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

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

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

Автор ezhik_2000, 24.12.19, 12:53:32

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

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

ezhik_2000

Есть файл 3д модели, с нее нужно получить развертку. Программно получилось создать вид #Развертка, но поставить признак развертки не получается, а также включить линии сгибов:
razv.png

var
  Kompas7: IApplication;
  Document3D: ksDocument3D;
  Document2D: ksDocument2D;
  DocumentParam: ksDocumentParam;
  iAssociationViewParam: ksAssociationViewParam;
  iViewParam: ksViewParam;
  ViewNumber, i: Integer;
  ViewsAndLayersManager : IViewsAndLayersManager;
  Views : IViews;
  View : IView;
  pAssociationView: IAssociationView;
  newKompasAPI : IApplication;
  disp : IDispatch;
  pKompasDocument : IKompasDocument;
  pKompasDocument2D : IKompasDocument2D;
    pViewsAndLayersManager : IViewsAndLayersManager;
  pViews : IViews;
  pView : IView;

begin

  Kompas:=KompasObject(CreateOleObject('Kompas.Application.5'));
  Kompas.Visible:=true;

  DocumentParam:=ksDocumentParam(Kompas.GetParamStruct(ko_DocumentParam));
  DocumentParam.Init();
  DocumentParam.type_:=lt_DocSheetStandart;

 Document2D:=ksDocument2D(Kompas.Document2D);
 Document2D.ksCreateDocument(DocumentParam);

  iAssociationViewParam:=ksAssociationViewParam(Kompas.GetParamStruct(ko_AssociationViewParam));
  iAssociationViewParam.Init();
  iAssociationViewParam.disassembly:=False;
  iAssociationViewParam.fileName:='C:\Users\113\Desktop\Уголок прохода башни.m3d';
  iAssociationViewParam.projectionName:='#Развертка';
  iAssociationViewParam.projBodies:=True;
  iAssociationViewParam.projSurfaces:=False;

 iViewParam:=ksViewParam(iAssociationViewParam.GetViewParam());
  iViewParam.Init();

  ViewNumber:=0;
  Document2D.ksCreateSheetArbitraryView(iAssociationViewParam, ViewNumber);

  Kompas7:=GetActiveOleObject('Kompas.Application.7') as IApplication;
  disp:=IDispatch(Kompas7);
  newKompasAPI:=disp As IApplication;
  pKompasDocument2D :=  Kompas7.ActiveDocument as iKompasDocument2D;
  pViewsAndLayersManager := pKompasDocument2D.ViewsAndLayersManager;
  pViews := pViewsAndLayersManager.Views;
  pView := pViews.View[1];
  Document2D.ksGetObjParam(pView.Reference, iAssociationViewParam, ASSOCIATION_VIEW_PARAM);

нашел константу api7 в справке
ksViewProjectionType - Тип проекции
ksVPUnfold 9 Развертка

но где это использовать не пойму

IViewDesignation.ShowUnfold - Показывать "Развернуто".
IAssociationView.Unfold - Листовая деталь в разогнутом виде.
IAssociationView.BendLinesVisible - Показывать линии сгиба.

ezhik_2000

спасибо помогло
pAssociationView := pView as IAssociationView;
  pAssociationView.Set_Unfold(True);
  pAssociationView.Set_BendLinesVisible(True);

  pViewDesignation := pView as IViewDesignation;
  pViewDesignation.Set_ShowUnfold(True);

  pView.Update;
  Document2D.ksRebuildDocument();
 

EKosarev

хочу поинтересоваться, вот у меня есть 3Д модель детали я хочу программно получить её развертку, поместить на чертеж, сохранить в DXF. какие действия для этого надо прописать в программе какие интерфейсы методы использовать подскажите куда смотреть а то прям темный лес, сложная для меня задача


EKosarev

я хочу на делфи написать такое что бы выбрал файл а он его развернул да в dxf сохранил, я насколько понял то что вы мне показали это некое дополнение к компас?

Библиотеку построения развёрток показал.
Вы хотите EXE-приложение написать?

EKosarev

да что бы оно через компас само делало, без компаса я как понял это через чур сложно

Без КОМПАС, не получится и само делать не будет, если его не заставить, а сложного там ничего нет.
Всё, что для этого нужно, на форуме есть.

EKosarev

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

EKosarev

Цитата: Sabahs от 08.12.20, 15:40:41Без КОМПАС, не получится и само делать не будет, если его не заставить, а сложного там ничего нет.
Всё, что для этого нужно, на форуме есть.
когда я писал 'само' я имел ввиду что бы от пользователя приложения ничего не требовалось, кроме как выбрать файл

EKosarev

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

IConverter.VisualEditConvertParam - Запустить визуальное редактирование параметров конвертации.
Тема по конвертеру, принцип работы одинаковый.


EKosarev

Цитата: Sabahs от 09.12.20, 08:56:40IConverter.VisualEditConvertParam - Запустить визуальное редактирование параметров конвертации.
Тема по конвертеру, принцип работы одинаковый.
Я правильно понял что вместо сохранения в dxf я должен сделать конвертацию, для этого нужно подключить некую библиотеку. CONVERTLIBINTERFACES_TLB скорее всего эту как  я понял, но какой параметр отвечает за то в какую версию dxf будет происходить конвертация.
Или же мне нужно сохранить в dxf а потом этот файл конвертировать в нужную мне версию ? вроде такая простая задача а понять так сложно

EKosarev

Такой вопрос, после создания развертки, на некоторых отверстиях есть осевое обозначение центра, что написать что бы они не создавались
begin
  dlgOpen1.Filter :='3d|*.m3d';

        if  dlgOpen1.Execute then
          begin
              Kompas:= KompasObject(CreateOleObject('Kompas.Application.5'));
            kompas.Visible:=true;
            kompas7:=kompas.ksgetapplication7 as IApplication;
            for yi:=0 to dlgOpen1.Files.Count-1 do
          begin
            fname:=(dlgOpen1.Files[yi]);
            if kompas7<>nil then pdocs:=kompas7.Documents;
            pdoc:=pdocs.Open(fname,True,False);

            DocumentParam:=ksDocumentParam(Kompas.GetParamStruct(ko_DocumentParam));
              DocumentParam.Init();
              DocumentParam.type_:=lt_DocSheetStandart;

            Document2D:=ksDocument2D(Kompas.Document2D);
            Document2D.ksCreateDocument(DocumentParam);

                iAssociationViewParam:=ksAssociationViewParam(Kompas.GetParamStruct(ko_AssociationViewParam));
                iAssociationViewParam.Init();
                iAssociationViewParam.disassembly:=False;
                iAssociationViewParam.fileName:= dlgOpen1.FileName;
                iAssociationViewParam.projectionName:='#ðàçâåðòêà';
                iAssociationViewParam.projBodies:=True;
                iAssociationViewParam.projSurfaces:=False;

                iViewParam:=ksViewParam(iAssociationViewParam.GetViewParam());
                iViewParam.Init();

            ViewNumber:=0;
            Document2D.ksCreateSheetArbitraryView(iAssociationViewParam, ViewNumber);
            kompas7.HideMessage:=ksHideMessageYes  ;
            pKompasDocument2D :=  Kompas7.ActiveDocument as iKompasDocument2D;
            pViewsAndLayersManager := pKompasDocument2D.ViewsAndLayersManager;
            pViews := pViewsAndLayersManager.Views;
            pView := pViews.View[1];
            Document2D.ksGetObjParam(pView.Reference, iAssociationViewParam, ASSOCIATION_VIEW_PARAM);

            pAssociationView := pView as IAssociationView;
            pAssociationView.Set_Unfold(True);
            pAssociationView.Set_BendLinesVisible(false);


            pViewDesignation := pView as IViewDesignation;
            pViewDesignation.Set_ShowUnfold(True);

            pView.Update;
            Document2D.ksRebuildDocument();



          pKompasDocument2D :=  Kompas7.ActiveDocument as iKompasDocument2D;
            Document2D.ksSaveDocument(''+fname+ 'ðàçâåðòêà.frw');
          Document2D.ksCloseDocument;

            end;
          Kompas7.Quit;
 end;
 end;


EKosarev

Спасибо. Подскажите еще как выбрать вид при создании DXF сверху сбоку там и т.д.


EKosarev

а как сделать что бы развертка была без значка "развертка(1:1)"