| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Работа с AutoCad из C++

Работа с AutoCad из C++

Ответ
Поиск в этой теме
Непрочитано 13.06.2007, 13:05 #1
Работа с AutoCad из C++
Santilka85
 
студент, программист
 
Новосибирск
Регистрация: 13.06.2007
Сообщений: 1


Я пишу прграмму на С++, в форме которой сначала вводится необходимая информация (Выполнил, Проверил, Дата), выбирается формат будущего листа (А3, А4 и т.д.), а также выбирается его положение (книжное или альбомное), затем нажимаем кнопочку и запускается АвтоКад, в котором уже нарисована заполненная рамка на основе введённых на форме данных на нужном нам формате....Это суть. А проблемы на данный момент следующие:

1) Как заранее "сказать" АвтоКаду на каком формате рисовать?
2) Как в Автокаде удалить не нужные листы, НЕ ЗНАЯ их имён?
3) Как в Автокаде удалить ВСЕ нарисованные элементы, не зная что нарисовано?
4) Как в АвтоКаде задать тип и толщину линии?
5) Как в АвтоКаде задать стиль текста, а также вывод текста (x,y)?


Заранее ОГРОМНОЕ человеческое спасибо. С уважением, Александр.
Просмотров: 8370
 
Непрочитано 13.06.2007, 13:13
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,834


1. Формат может располагаться в модели и в листе. У тебя что?
2. А как ты определишь "нужные"? И как минимум один все равно должен существовать.
3. Пройтись по всем коллекциям блоков, и, фильтруя по *space*, удалять состав их
4 и 5 - справка по VBA AutoCAD
P.S. Я не работаю на С++, так что конкретики дать никакой не могу.
P.P.S. Как я понимаю, ты вызываешь AutoCAD из-под C-шной программы. Может, сделать наоборот? Из C++ сделать dll, которую и вызывать лиспом из-под када.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.06.2007, 15:02
#3
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


>Santilka85

Делать надо все наоборот:

1. Программа работает под Автокадом, а не черт-знает где. Делать больше нечего Автокаду, как запускаться "по-кнопочке" из-под каждой Си-шной программы.

2. Если непременно надо на C++, то надо писать на ObjectARX. Тут и C++ со всеми его библиотеками и возможностями, и работа внутри Автокада.

3. Возможен вариант с COM-dll, в которой сидит интерфейсная часть для ввода необходимой информации. Как это сделать именно для рисования формата - целая глава в книге "САПР на базе AutoCAD - как это делается". Только там "формочки" в Delphi делаются. COM (Automation) можно хоть на чем делать.

Все 5 "проблем" решаются изучением AutoCAD, а не C++.
ShaggyDoc вне форума  
 
Непрочитано 14.06.2007, 16:18
#4
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Все можно.
1. Создать системные переменные и записать в них значения. Какие?, да те, которые придумаете. Пока Автокад не включен, он мертв, а это значит, что ничего и не услышит. Можно только запустить его с именем файла.
2. Когда кад загрузился, он должен загрузить и запустить макрос. который вы должны написать и на этот кад установить. Можно к файлу прикрепить реактор, который будет запускать данный макрос только с этим файлом при проишествии каких либо событий.
3. далее читаем переменные и отрабатываем их значения.
Supermax вне форума  
 
Непрочитано 14.06.2007, 16:35
#5
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Есть грандиозная идея, сразу решающая и ваш и мой проблем.

Есть системная переменная, в которой записаны координаты положения курсора и признак нажатия на левую кнопку мыши.
Можно две переменных.

Нужно написать программу на C++ которая имитирует наведение курсора на нужное место экрана и нажимает (тоже программно) левую кнопку мыши.
Программа циклически опрашивает значение системной переменной и как только в ней появляется признак нажатия "1" сразу по появившимся вместе с признаком координатам перемещает курсор и нажимает левый буттон.
В другой переменной находится признак выключения программы. Если там появилась "1" - выкл.
все. А я вам помогу справится с макросами на AutoLispe.
Supermax вне форума  
 
Непрочитано 14.06.2007, 16:37
#6
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,834


Цитата:
Нужно написать программу на C++ которая имитирует наведение курсора на нужное место экрана и нажимает (тоже программно) левую кнопку мыши
Интересно, зачем такое надо?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 14.06.2007, 16:51
#7
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


В AutoCAD-e очень много комманд работает с диалоговыми окнами. AutoLisp-om я могу все, кроме как нажать кнопку "OK" или какую нибудь другую кнопку этих окон.
Я могу отловить начало выполнения команды, ее конец, ее обрыв, не говоря о том, что я могу любую запустить. Но если в процессе работы команды всплывает окно - бац! я застрял.
Supermax вне форума  
 
Непрочитано 14.06.2007, 16:55
#8
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


И тут я прочел, кто автор вопроса. KPbIC!
И чего - же ты бросил тему про спецификации? Я Полещука замучал.
Столько интересного придумал, а ты "упал в борщь"!
Supermax вне форума  
 
Непрочитано 14.06.2007, 17:07
#9
Zouss


 
Регистрация: 14.03.2006
Сообщений: 863


программисты учатся чертить
подавляющее большинство команд acad запускаются в режиме коомандной строки с префиксом "-", например _-array
большинство команд acad запускаются из-под (command именно в режиме командной строки
а также помогает установка CMDDIA в 0, только потом обратно не забудьте вернуть, чтоб не плодились темы типа "все пропало!!!"
Zouss вне форума  
 
Непрочитано 14.06.2007, 17:15
#10
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,834


Цитата:
Сообщение от Supermax
В AutoCAD-e очень много комманд работает с диалоговыми окнами. AutoLisp-om я могу все, кроме как нажать кнопку "OK" или какую нибудь другую кнопку этих окон.
Я могу отловить начало выполнения команды, ее конец, ее обрыв, не говоря о том, что я могу любую запустить. Но если в процессе работы команды всплывает окно - бац! я застрял.
А например? Потому что я такие вещи обходил (правда, с переменным успехом).
> Zouss : большинство, но не все battman, например, не запустишь в режиме ком.строки. Другой вопрос, что есть _.attsync
Цитата:
Сообщение от Supermax
И чего - же ты бросил тему про спецификации? Я Полещука замучал.
Столько интересного придумал, а ты "упал в борщь"!
Да у тебя там тишина, чего я полезу поперед батьки...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 14.06.2007, 17:37
#11
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


1. Я каждый раз, как захожу в сеть, проверяю эту тему.
2. Сегодня я там про это написал - прочти.
3. Сижу и изучаю С. Припекло.
4. _refedit с выбранной ссылкой запускаю, а окно сбросить не получается.
Supermax вне форума  
 
Непрочитано 14.06.2007, 17:39
#12
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Надо срочно C или С++ изучать!
Supermax вне форума  
 
Непрочитано 14.06.2007, 17:56
#13
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


; error: AutoCAD variable setting rejected: "CMDDIA" "0"
Supermax вне форума  
 
Непрочитано 14.06.2007, 18:59
#14
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Zous! С меня пузырь! Вот ведь, сколько я AutoCAD не изучал, а этого нигде не прочел. Префикс "-" _-refedit и так далее! Ура!
Supermax вне форума  
 
Непрочитано 14.06.2007, 19:27
#15
BigBrother

Design & programming :)
 
Регистрация: 14.02.2004
Новосибирск
Сообщений: 172
<phrase 1= Отправить сообщение для BigBrother с помощью Skype™


Цитата:
Сообщение от Supermax
AutoLisp-om я могу все, кроме как нажать кнопку "OK" или какую нибудь другую кнопку этих окон.
Твою проблему может решить AutoIt
BigBrother вне форума  
 
Непрочитано 14.06.2007, 19:55
#16
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Прога была бы полезна для любых случаев, не только для преодоления окон. Хотя как оказывается их можно переводить в диалог. Но для всего остального, тоже подошла бы.
А проблема - вот она была, и нету!
Supermax вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Работа с AutoCad из C++

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск