Последние сообщения

Последние сообщения

Страницы: [1] 2 3 ... 10
1
Revit API / Семейства в документе
« Последний ответ от Vladislav 19-12-2018, 15:46:20 »
Здравствуйте. Такой вопрос.
Как легче всего узнать перечень семейств, загруженных в документ, используя Revit API?
То есть те семейства, объекты которых есть в открытом документе.
Благодарю за ответ.
2
Да, действительно - если изменить настройки сечения (объект SectionSettings), то удаётся получить объекты перед сечением.
Проблема в том, что мне крайне желательно это всё сделать без добавления нового объекта в базу чертежа. А настройки задаются только для сечения, добавленного в базу. Что же, буду дальше искать.
3
ObjectARX / Re: Как открыть файл dwg в отдельном окне
« Последний ответ от Ura 19-12-2018, 02:42:52 »
Да, в данном случае удобнее всего загружать сразу несколько файлов.

Большое спасибо за исходники!!!
4
Вот полный код примера:
Код - C++ [Выбрать]
  1. //-----------------------------------------------------------------------------
  2. //----- acrxEntryPoint.cpp
  3. //-----------------------------------------------------------------------------
  4. #include "StdAfx.h"
  5. #include "resource.h"
  6.  
  7. //-----------------------------------------------------------------------------
  8. #define szRDS _RXST("")
  9.  
  10. //-----------------------------------------------------------------------------
  11. //----- ObjectARX EntryPoint
  12. class COpenFilesApp : public AcRxArxApp {
  13.  
  14. public:
  15.   COpenFilesApp() : AcRxArxApp() {}
  16.  
  17.   virtual AcRx::AppRetCode On_kInitAppMsg(void *pkt) {
  18.     AcRx::AppRetCode retCode = AcRxArxApp::On_kInitAppMsg(pkt);
  19.     return (retCode);
  20.   }
  21.  
  22.   virtual AcRx::AppRetCode On_kUnloadAppMsg(void *pkt) {
  23.     AcRx::AppRetCode retCode = AcRxArxApp::On_kUnloadAppMsg(pkt);
  24.     return (retCode);
  25.   }
  26.  
  27.   virtual void RegisterServerComponents() {  }
  28.  
  29.   static void RivilisOpenFiles() {
  30.     resbuf *rbFiles = NULL;
  31.     AcApDocument *doc = curDoc();
  32.     if (acedGetFileNavDialog(NULL, NULL, _T("dwg"), NULL, 4096, &rbFiles) == RTNORM && rbFiles)
  33.     {
  34.       for (resbuf *rb = rbFiles; rb; rb = rb->rbnext)
  35.       {
  36.         if (rb->restype == RTSTR)
  37.         {
  38.           acDocManager->appContextOpenDocument(rb->resval.rstring);
  39.         }
  40.       }
  41.       acDocManager->activateDocument(doc);
  42.     }
  43.   }
  44. };
  45.  
  46. //-----------------------------------------------------------------------------
  47. IMPLEMENT_ARX_ENTRYPOINT(COpenFilesApp)
  48. // Флаг команды должен быть обязательно ACRX_CMD_SESSION
  49. // Но это потребует блокировки документов при их редактировании
  50. ACED_ARXCOMMAND_ENTRY_AUTO(COpenFilesApp, Rivilis, OpenFiles, OpenFiles, ACRX_CMD_MODAL | ACRX_CMD_SESSION, NULL)
  51.  

5
Еще раз повторю вопрос. Зачем открывать все файлы одновременно? Открывайте по одному. Кстати, а для проверки корректности обязательно открывать как документ? Может быть достаточно считывать и проверять базу данных?
Можно конечно открыть и тысячу файлов одновременно (если AutoCAD'у ресурсов хватит). Только кто же с этим работать сможет?
Замените в моём примере ACRX_CMD_MODAL на ACRX_CMD_SESSION.
6
ObjectARX / Re: Как открыть файл dwg в отдельном окне
« Последний ответ от Ura 19-12-2018, 00:51:50 »
Программа загружает список файлов, которые необходимо обработать. Список файлов может состоять из нескольких десятков файлов.
Перед началом основных вычислений, программа загружает каждый файл и проверяет содержимое файлов на корректность данных.
Если в результате проверки выявляются файлы с некорректными данными - выводится список этих файлов.

Сейчас приходится вручную открывать эти файлы и корректировать. Для корректировки, в большинстве случаев, нужно просто нажать
нужную кнопку и сохранить файл. Основная трудоемкость, это открыть файл из большого списка файлов.
Если сделать, чтобы все некорректные файлы загружались автоматически - это существенно ускорит корректировку и упростит работу с программой.
7
Видимо не зря в приведенном мной РАБОЧЕМ коде GenerateSectionGeometry вызывается 2 раза с разными настройками сечения.
8
Как сделать, чтобы отрывались сразу все 3 файла?
Встречный вопрос - зачем? Ведь одновременно вы всё-равно вы будете работать только с одним файлом.
9
Revit API / ParameterElement/Parameter различия
« Последний ответ от enot 18-12-2018, 23:11:55 »
1.) В чем различия ParameterElement от Parameter ( Autodesk.Revit.DB.Parameter)?

Как я понимаю, параметры проекта  - это SharedParameterElement и Parameterelement если берем их как doc.ParameterBindings
Эти же параметры, получаемые из экземпляра элемента Ревит являются уже Parameter (еlement.Parameters). Понимание этих моментов должно дать ответ на следующий вопрос :

2.) Возможно ли из ParameterElement получить Parameter
10
ObjectARX / Re: Как открыть файл dwg в отдельном окне
« Последний ответ от Ura 18-12-2018, 21:20:33 »
Большое спасибо за исходный код!!!

Вопрос. Как сделать, чтобы можно было загружать сразу несколько файлов?
Попробовал сделать несколько вызовов функции подряд, в результате:
1) При выполнении команды открывается только один файл, который становится текущим.
2) Перехожу на исходный файл - открывается второй файл, второй файл становится текущим.
3) Перехожу на исходный файл - отрывается третий файл, третий файл становится текущим.
Как сделать, чтобы отрывались сразу все 3 файла?

Код - C++ [Выбрать]
  1. static void MyGroupTest1()
  2.   {
  3.     OpenDwg1(_T("c:\\Temp\\test01.dwg"));
  4.     OpenDwg1(_T("c:\\Temp\\test02.dwg"));
  5.     OpenDwg1(_T("c:\\Temp\\test03.dwg"));
  6.   }
  7.  

Попробовал в начале функции сохранить текущий документ   - AcApDocument* ApCurDoc = acDocManager->curDocument();
и в конце функции активировать его обратно  - acDocManager->activateDocument(ApCurDoc);
но это не помогло.

Код - C++ [Выбрать]
  1. void OpenDwg1(CString strFileName)
  2.   {
  3.           AcApDocument* ApCurDoc = acDocManager->curDocument();
  4.  
  5.     if (acDocManager->isApplicationContext())
  6.     {
  7.       Acad::ErrorStatus es = acDocManager->appContextOpenDocument(strFileName);
  8.       if (es != Acad::eOk)
  9.         acutPrintf(TEXT("\nIn ERROR: %s\n"), acadErrorStatusText(es));
  10.     }
  11.         else {
  12.                        
  13.       acDocManager->executeInApplicationContext(openDocHelper, &strFileName);
  14.         }
  15.  
  16.         acDocManager->activateDocument(ApCurDoc);
  17.         acDocManager->setCurDocument(ApCurDoc);
  18.   }
  19.  
Страницы: [1] 2 3 ... 10