|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Штриховка в AutoCad через C++ Builder
Регистрация: 09.09.2014
Сообщений: 10
|
||
Просмотров: 7158
|
|
||||
Регистрация: 18.12.2010
Сообщений: 5,107
|
Тут
Код:
Код:
Цитата:
|
|||
![]() |
|
||||
Регистрация: 09.09.2014
Сообщений: 10
|
Спасибо за ответ, однако это не помогло.
Дело в том что под VBA и Delphi примеры имеются и они работают, а мне нужно под C++ Builder. Представленный ниже код работает без ошибок, но и штриховка не появилась. Может быть вариантные массивы создаю не так? Но ведь окружность создается... Код:
|
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Посмотрите последний абзац http://forum.dwg.ru/showpost.php?p=1...postcount=1364
|
|||
![]() |
|
||||
Регистрация: 09.09.2014
Сообщений: 10
|
Ну это уж совсем печально (не хочется верить что правда).
Я и подключился к автокаду и рисовал примитивы, создавал слои, назначал примитивам цвет и толщину и т.д. Даже поиск объектов делал. А тут споткнулся на штриховке. Хочется верить что проблема со штриховкой решиться. Спасибо. Но вопрос открыт. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Тоже для справки http://www.itshop.ru/C-i-AutoCAD-Nek...aboty/l9i33874
И даже если реализовать через подгружаемую библиотеку через Autocad.Interpop.Common, чтобы иметь возможность писать ака VBA, не сильно вдаваясь в особенности реализации - то постоянно будете натыкаться на ограничения, изобретать костыли для обхода, получите трудно поддерживаемый и модифицируемый код . Подумайте сейчас на начальном этапе - нужно ли искусственно "загонять" себя на устаревшие технологии лишь потому - что он (билдер) привычнее. |
|||
![]() |
|
||||
Регистрация: 09.09.2014
Сообщений: 10
|
Ругается на строку
Outline.PutElement(AcadDocument1->ModelSpace->AddCircle(SFirstPoint, radius)); [C++ Error] Unit1.cpp(253): E2285 Could not find a match for 'Variant::PutElement(IAcadCircle *)' ----- добавлено через ~3 мин. ----- Сергей, Вы абсолютно правы, но мне тут огромный функционал не нужен, осталась только штриховка. Дело в том что на Buildere имеется довольно объемная и серьезная программа - расчет сетей водоснабжения и водоотведения. Ее просто необходимо дополнить функцией экспорта в автокад. Раньше делал DXF файл - работал но без штриховки и через одно место. Думал это решение..... если бы не штриховка. ----- добавлено через ~7 мин. ----- А вот рабочий код Delphi - он же работает! и исходник есть и запускается. Лично смотрел. Компания то одна Borland. Где-то маленькая неточность.... Код:
|
|||
![]() |
|
||||
Регистрация: 18.12.2010
Сообщений: 5,107
|
|
|||
![]() |
|
||||
Регистрация: 09.09.2014
Сообщений: 10
|
Хоть OleVariant - тоже самое.
[C++ Error] Unit1.cpp(277): E2352 Cannot create instance of abstract class 'IDispatch' [C++ Error] Unit1.cpp(277): E2353 Class 'IDispatch' is abstract because of '__stdcall IDispatch::GetTypeInfoCount(unsigned int *) = 0' [C++ Error] Unit1.cpp(277): E2285 Could not find a match for 'IDispatch::IDispatch(IAcadCircle *)' [C++ Error] Unit1.cpp(277): E2031 Cannot cast from 'IAcadCircle *' to 'IDispatch' Еще момент. Инициализация AcadDocument1-это компонента после инсталляции библиотеки AutoCad.tlb Автокад в момент запуска программы запущен. Коннектится автоматически. Код:
|
|||
![]() |
|
||||
Регистрация: 09.09.2014
Сообщений: 10
|
Еще раз здравствуйте и огромное спасибо, что уделили время для решения моего вопроса.
К сожалению C++ Builder для данных решений я признал не годным. Принял ИМХО более верное решение - перейти на Delphi. Тут штриховка пошла с первого раза и проблем меньше, хоть и кодить после C++ не привычно. Чтобы не создавать новую ветку хочу задать некоторые вопросы: 1. при экспорте из моей БД большого кол-ва данных и отображения их в качестве примитивов автокада (средствами моей программы) при попытке зумировать или панарамировать в процессе экспорта или что-либо еще (в самом автокаде) выходит ошибка "бла... бла... бла... Вызов был отклонен......". Я понимаю так, что это совместный доступ к БД автокада (может ошибаюсь). Как этого избежать? Думаю что алгоритм должен быть следующий: экспортируем... но если пользователь предпринял действия в автокаде, то экспорт приостановить, а когда автокад свободен от действий пользователя - возобновить экспорт. Как бы это реализовать на Delphi? 2. Попытался запустить свою прогу на других машинах (я пишу под 2012 автокад) с 2010 автокадом - не пошла, 2013 - не пошла. Я так полагаю что tlb привязана к 2012 версии. Как можно обеспечить совместимость? 3. Как границы заливки закинуть в слой Код:
|
|||
![]() |
|
||||
Регистрация: 09.09.2014
Сообщений: 10
|
Сорри по третьему вопросу
строка Код:
![]() То ли я туплю, то ли среда разработки. Было у кого-нибудь что пишешь, компилишь - не работает. Потом закомментировал, компилишь - работает, разкомментировал - тоже работает..... ? ----- добавлено через ~2 мин. ----- Я себя сильным в этих вопросах и не считаю, иначе бы не спрашивал. |
|||
![]() |
|
||||
Регистрация: 18.12.2010
Сообщений: 5,107
|
Это был ответ на вопрос - позднее связывание не зависит от версии, до тех пор, пока не окажется, что нужного метода нет в старой версии
А чего не перейти на VS? Можно будет и дальше писать на C++, зато можно будет использовать NET API и ObjectARX |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Связь своей программы с AutoCad через OpenGL | Golem-iq | Программирование | 31 | 15.05.2015 14:03 |
Запуск "*.exe" файла через AutoCAD | Leo_fmf | Программирование | 3 | 06.02.2012 14:59 |
Autocad зумирует только через ctrl | mmahaev@mail.ru | AutoCAD | 4 | 29.04.2011 14:32 |
autocad штриховка сверху на скрытых линий | AIL | AutoCAD | 11 | 24.01.2011 12:58 |
AutoCAD 2009LT баг, штриховка | tcsandrew | AutoCAD | 3 | 11.08.2010 13:10 |