Как получить и перенести проекцию 3D модели в чертеж?

Автор Михаил_С, 05.10.05, 09:08:20

« предыдущая - следующая »

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

Михаил_С

Подскажите, где это можно посмотреть, если есть в примерах.

333

см функции создания ассоциативных видов:
ksCreateSheetArbitraryView
ksCreateSheetProjectionView
ksCreateSheetStandartViews

Михаил_С


Михаил_С

А все-таки нет ли у кого-нибудь примера с использованием этих методов? Очень надо.

333

Для какой среды программирования нужен пример?
Для автоматизации или для API экспортны[ функций?

Михаил_С

Для автоматизации. Буду очень признателен, если для VB. Хотя разницы особой нет

333

На VB нету есть на VC для ksCreateSheetArbitraryView

 ksDocument2DPtr doc2D( m_pKompas->Document2D() );
      ksDocumentParamPtr docParam( m_pKompas->GetParamStruct( ko_DocumentParam ) );
      docParam->Init();
      docParam->type = 1/*lt_DocSheetStandart*/;
      ksSheetParPtr sParam( docParam->GetLayoutParam() );
      ksStandartSheetPtr stPar( sParam->GetSheetParam() );
      stPar->format = 4;
      doc2D->ksCreateDocument( docParam );
      ksAssociationViewParamPtr viewParam( m_pKompas->GetParamStruct( ko_AssociationViewParam ) );
      viewParam->Init();
      viewParam->fileName = _bstr_t("C:\\1.m3d" );
      CString projection;
      m_projectionCombo.GetWindowText( projection );
      viewParam->projectionName = _bstr_t( projection );
//      viewParam->viewType = ksc::vt_Arbitrary;
      ksViewParamPtr viewPar( viewParam->GetViewParam() );
      viewPar->Init();
      viewPar->scale_ = 1;
      long number = 1;
      viewParam->projBodies = true;
      viewParam->visibleLinesStyle = 1;
      long view = doc2D->ksCreateSheetArbitraryView( viewParam, &number );

Михаил_С


Михаил_С

Огромное спасибо. 100% Работает.        НО ТОЛЬКО с деталью. Не могли бы вы подсказать, как это сделать со СБОРКОЙ?

михаил_с

Если кого интересует код для VB, то пользуйтесь.

Sub CreateDrawingProjection(str_3DFileName As String)   ’Ñîçäàíèå 3D ïðîåêöèè è çàíåñåíèå åå â ÷åðòåæ
   
Dim ksDocument2DPtr As Document2D
Dim ksDocumentParamPtr As DocumentParam
Dim ksSheetParPtr As SheetPar
Dim ksStandartSheetPtr As StandartSheet
Dim ksAssociationViewParamPtr As AssociationViewParam
Dim ksViewParamPtr As ViewParam
Dim number As Long
Dim view As Long




Set ksDocument2DPtr = Kompas.Document2D
Set ksDocumentParamPtr = Kompas.GetParamStruct(ko_DocumentParam) ’ko_DocumentParam = 35
ksDocumentParamPtr.Init
ksDocumentParamPtr.Type = 1 ’lt_DocSheetStandart
Set ksSheetParPtr = ksDocumentParamPtr.GetLayoutParam
Set ksStandartSheetPtr = ksSheetParPtr.GetSheetParam
ksStandartSheetPtr.Format = 4
ksDocument2DPtr.ksCreateDocument ksDocumentParamPtr
Set ksAssociationViewParamPtr = Kompas.GetParamStruct(ko_AssociationViewParam) ’ko_AssociationViewParam = 121
ksAssociationViewParamPtr.Init
MsgBox "str_3DFileName=" & str_3DFileName
ksAssociationViewParamPtr.FileName = str_3DFileName
ksAssociationViewParamPtr.projectionName = "SmarTeam_Îáúåêò"
Set ksViewParamPtr = ksAssociationViewParamPtr.GetViewParam
ksViewParamPtr.Init
ksViewParamPtr.scale_ = 1
ksAssociationViewParamPtr.projBodies = True
ksAssociationViewParamPtr.visibleLinesStyle = 1
view = ksDocument2DPtr.ksCreateSheetArbitraryView(ksAssociationViewParamPtr, number)


end sub

333


Михаил_С

Спасибо. Все заработало. И со сборкой тоже.

Drey

А вот в Компас 5 R01 нет ksAssociationViewParamPtr и видимо остальных объектов. Но ведь в нем виды и сечения 3D моделей тоже выполняется. Как бы это можно сделать? может есть более кривой но общий метод?