Сообщество программистов Autodesk в СНГ

ADN Club => ObjectARX => Тема начата: Gennadiy от 19-07-2016, 12:15:56

Название: Настройка проекта
Отправлено: Gennadiy от 19-07-2016, 12:15:56
Добрый день.

Помогите разобраться с настройками проекта.
Создал с помощью мастера ObjectARX свой dbx проект.
Хочу использовать такой код:

Код - C++ [Выбрать]
  1. AcColorSettings colorSetings;
  2. acedGetCurrentColors(&colorSetings);

Выдает ошибки: AcColorSettings: необъявленный идентификатор и т.д.

Какие ссылки мне нужно добавить и как настроить проект чтобы этого не происходило?
Пробовал создавать с помощью мастера ObjectARX как DBX так и ARX проекты, та же ошибка.
Название: Re: Настройка проекта
Отправлено: Александр Ривилис от 19-07-2016, 13:11:48
Версия AutoCAD и ObjectARX SDK?
Описание AcColorSettings находится в core_rxmfcapi.h
Так что нужно вставить:
Код - C++ [Выбрать]
  1. #include <core_rxmfcapi.h>
Название: Re: Настройка проекта
Отправлено: Gennadiy от 19-07-2016, 13:32:34
Пробовал в разных версиях AutoCAD и SDK, от 2010 до 2017 (Visual Studio соответствующие)
При попытке вставить
Код - C++ [Выбрать]
  1. #include <core_rxmfcapi.h>
идет много ошибок типа
синтаксическая ошибка: идентификатор "CString" d:\cads\objectarx 2010\inc\acstatusbar.h
отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию d:\cads\objectarx 2010\inc\acstatusbar.h
синтаксическая ошибка: отсутствие ";" перед "*" d:\cads\objectarx 2010\inc\rxmfcapi.h
и т.д.
Рассматривал пример ...\ObjectARX_2008_32Bit\samples\entity\Smiley
там не увидел нигде прямого включения #include <rxmfcapi.h>, но все работает.
Проблема только в том что тяжело разобраться в настройках проектов ObjectARX SDK.
Вроде сделал такие же настройки как там, но у меня не работает.
Чувствую решение где то совсем рядом, но понять не могу.
Название: Re: Настройка проекта
Отправлено: Александр Ривилис от 19-07-2016, 13:33:04
Но вообще этот метод не предназначен для использования в DBX, так как получает цвета из AutoCAD. Ну и чтобы автоматом подключались эти библиотека в ARX необходимо задавать Extension DLL using MFC Shared DLL и AutoCAD MFC Extension Support:

(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fimg-fotki.yandex.ru%2Fget%2F117896%2F7842324.6%2F0_12e335_84b85b0b_orig.png&hash=73153b0b9eb0f9fee078a0afca634aa3)

Название: Re: Настройка проекта
Отправлено: Gennadiy от 19-07-2016, 14:12:35
Действительно, при создании нового проекта MFC библиотека подключается и код работает.
Конечно не хотелось бы ради использования одной функции создавать проект MFC с кучей ненужных мне библиотек.
Тем более что не рекомендуется в DBX-приложениях использовать MFC.
А эта функция мне нужна для определения цвета экрана чтобы создать свою маскировку, как было показано здесь:
http://www.caduser.ru/forum/index.php?PAGE_NAME=message&FID=24&TID=48190 (http://www.caduser.ru/forum/index.php?PAGE_NAME=message&FID=24&TID=48190)
Но, видимо, придется пересоздавать проект заново, с использованием MFC.
Название: Re: Настройка проекта
Отправлено: Александр Ривилис от 20-07-2016, 02:49:27
А acedGetRgb(0) не пробовал? Для него MFC не нужен.

Код - C++ [Выбрать]
  1. Adesk::UInt32 bkcolor = acedGetRGB(0);
Название: Re: Настройка проекта
Отправлено: Gennadiy от 20-07-2016, 09:22:24
Да, так работает без MFC, то что нужно!
Спасибо, Александр!
Название: Re: Настройка проекта
Отправлено: Алексей (IdeaSoft) от 22-07-2016, 23:51:25
Для него MFC не нужен.
А для чего вообще этот MFC нужен?
Я тут в книжке по Qt 4.8 в подлиннике (стр. 37) почитал там пишут, что  MFC с большой натяжкой можно назвать объектно-ориентированной.
Пишут, что в MFC не соблюдается одна из заповедей ОПП ИНКАПСУЛЯЦИЯ. 
Не могу сказать может ли MFC это сильно навредить.
Все на совести разработчиков.
Название: Re: Настройка проекта
Отправлено: Александр Ривилис от 22-07-2016, 23:54:37
А для чего вообще этот MFC нужен?
В основном для написания диалогов, всякий оконный интерфейс и т.д. На данный момент по моим прикидкам не менее 60...70% окон и диалогов в AutoCAD сделано с использованием MFC.