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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > управление системой координат Автокад из Делфей

управление системой координат Автокад из Делфей

Ответ
Поиск в этой теме
Непрочитано 19.04.2005, 17:10 #1
управление системой координат Автокад из Делфей
Владимир В
 
машиностроение
 
Москва
Регистрация: 22.03.2005
Сообщений: 56

Добрый всем день(утро, вечер и т.п)
Столкнулся со следующей проблемой. Я пишу программку на DELPHI для вставки стандартныхизделий нашей конторы в автокад.Нужно предусмотреть несколько точек вставки, на выбор пользователя и, конечно, направление этой же вставки. Точку вставки и угол я запрашиваю у пользователя, который их указывает в автокаде. Для того, чтобы начертить деталь под каким-либо углом проще всего создать новую систему координат, сделать в ней все, что хочу, а вотом переключится на предыдущую.
Создать новую систему координат у меня вроде получилось


Код:
[Выделить все]
Myus:=ad.UserCoordinateSystems.Add(bpoint,usx,usy,'em'); 

где MyUS:IAcadUCS 
AD:IAcadDocument 
bpoint и прочие точки: OleVariant
затем я ее активирую


Код:
[Выделить все]
ad.ActiveUCS:=Myus;

и в автокаде появляется моя система координат
Но вот как переключится на предыдущую, я не знаю...

Сначала я думал перед переключением на мою систему координат присвоить какой либо переменной типа IAcadUCS свойство
ad.ActiveUCS, но в этом свойстве пока ничего нет, поэтому при выполнении возникает ошибка (хотя компиляция проходит нормально).
Удалить текущую систему координат я тоже не могу, так как возникает ошибка, типа объект пытается удалить сам себя или что-то еще в этом роде.
Может, кто-то уже переключался с одной системы координат на другую, подскажите, плиз, как это сделать
Просмотров: 7957
 
Непрочитано 20.04.2005, 07:11
#2
ShaggyDoc

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


Предыдущая система координат всегда есть. Как минимум, это мировая.

Коллекция систем координат в AcadUCSs

Но переключаться между системами не надо. Вы же создаете объектными методами, а в них всегда используется мировая система.

Если установите ПСК, то надо еще и знать, в какой системе вернется пользовательский ввод. А это зависит от того, как написано "на выбор пользователя".

На мой взгляд, сочетать работу из внешней DELPHI-программы с пользовательским вводом бесперспективно. Наткнетесь еще на кучу скользких мест и все равно будет "на соплях". Программа должна работать в AutoCAD и только при необходимости обращаться к дельфийскому приложению (например, через COM) для каких-то действий, которые удобнее делать в Delphi. Например, для выборки стандартных изделий из БД. Делается это очень просто.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 20.04.2005, 10:52
#3
Владимир В

машиностроение
 
Регистрация: 22.03.2005
Москва
Сообщений: 56


Цитата:
Программа должна работать в AutoCAD и только при необходимости обращаться к дельфийскому приложению (например, через COM) для каких-то действий, которые удобнее делать в Delphi. Например, для выборки стандартных изделий из БД
Ну, собственно говоря, все, что будет делать программа, это брать стандартные изделия из базы и вставлять их в автокад.


Цитата:
Но переключаться между системами не надо. Вы же создаете объектными методами, а в них всегда используется мировая система.
Я правильно вас понял? Все то, что я нарисую из Delphi, я должен поворачивать и перемещать вручную?

То есть линию создал, линию повернул, линию переместил и т.д.
Хотя ладно, с этим я проэкспериментирую

А вот поясните пожалуйста эту фразу:
Цитата:
Если установите ПСК, то надо еще и знать, в какой системе вернется пользовательский ввод. А это зависит от того, как написано "на выбор пользователя".
Да, и еще. А как добратся до коллекции AcadUcss?
Вопросов много, буду очень благодарен, если ответите..
Владимир В вне форума  
 
Непрочитано 20.04.2005, 11:26
#4
ShaggyDoc

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


Цитата:
Ну, собственно говоря, все, что будет делать программа, это брать стандартные изделия из базы и вставлять их в автокад.
Смотря что Вы понимаете под "стандартными изделиями". При конкретной системе надо изъясняться конкретно. "Вставлять" AutoCAD может, например, блоки из библиотек или файлов. Может так же рисовать изображения изделий по координатам из базы. Или еще что-то делать. Но в любом случае все это удобнее программировать и использовать внутри AutoCAD. Делать это из Delphi так же "удобно", как управлять марсоходом дистанционно.

Цитата:
Все то, что я нарисую из Delphi, я должен поворачивать и перемещать вручную?
Вручную должен пользователь указать желаемое положение. Например, для блока это точка вставки и угол поворота. При этом желательно, чтобы в момент вставки он видел на курсоре изображение блока. На Delphi этого никогда не сделать.

Вводить координаты и углы пользователь должен любым удобным способом (мышкой, с клавиатуры, с привязкой и т.п.), в любой удобной ему системе координат. А программа должна автоматически преобразовать координаты в МСК (объектные методы работают только с МСК).

Цитата:
То есть линию создал, линию повернул, линию переместил и т.д.
Ничего перемещать и поворачивать не надо. Все должно сразу отрисовываться, где надо.

Цитата:
А как добратся до коллекции AcadUcss?
Document.UserCoordinateSystems

Очень советую:

1. Изучить acadauto.chm

2. Изучить, как работают в AutoCAD

3. Прочитать книгу "САПР на базе AutoCAD - Как это делается".

С подобными вопросами сюда:

http://www.kurganobl.ru/cad/forum/fo...hreads?forum=4
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 20.04.2005, 12:50
#5
Владимир В

машиностроение
 
Регистрация: 22.03.2005
Москва
Сообщений: 56


Цитата:
Может так же рисовать изображения изделий по координатам из базы.
вот именно это

Код:
[Выделить все]
Вручную должен пользователь указать желаемое положение. Например, для блока это точка вставки и угол поворота
это есть, но не для блока

Цитата:
При этом желательно, чтобы в момент вставки он видел на курсоре изображение блока. На Delphi этого никогда не сделать.
значит, не судьба


Код:
[Выделить все]
Очень советую: 

1. Изучить acadauto.chm 

2. Изучить, как работают в AutoCAD 

3. Прочитать книгу "САПР на базе AutoCAD - Как это делается".

что значит п.2?
а книга- просто ведро воды в моем случае
Владимир В вне форума  
 
Непрочитано 20.04.2005, 13:26
#6
ShaggyDoc

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


Цитата:
что значит п.2?
Лично поработать в AutoCAD и попробовать руками сделать то, что намереваетсь автоматизировать. И посмотреть, как это делают те, кто давно чертит.

Также очень хорошо подумать, надо ли некие загадочные изделия хранить в виде координат в базе. Может быть изобретаем велосипед? Посмотрите, что и как уже сделано.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 20.04.2005, 16:05
#7
Владимир В

машиностроение
 
Регистрация: 22.03.2005
Москва
Сообщений: 56


Да вот фишка в том, что работаю в автокаде я уже не первый год. Поэтому задачу поручили мне, а не программистам, дабы сделать все как можно удобнее для пользователя. Ну и потому, что им там лень, как я понял, этим заниматся

А загадочные изделия хранятся в базе координат уже не первое десятилетие. Их делали для другой чертежной среды, древней очень. В принципе сейчас это представляет собой набор текстовых файлов, но мы (точнее программеры). должны привести все в божеский вид, чтобы я мог с этой базой работать.

А почему мы не пользуемся уже существующими базами. Ну, вопрос интересный. Дело в том, что у нас металлургическое КБ, в котором есть свои нормали стандартных изделий. Их вряд ли сыщешь в какой-либо базе. Конечно, болтики-гаечки можно найти и стандартные. а вот остальное..

И еще. Пользовался я как то надстройками для вставки стандартных изделий. Блин, меня хватило на чуть-чуть совсем. Всавка в неизвестно каких слоях происходит, какими-то дикими цветами (а у нас настройка плоттера по цветам линий идет). Хочется, чтобы пользователь задавал слой, в котором будут прочерчиватся основные линии, вспомогательные и т.д. Масштаб чтоб выбирал, ну и все прочее.

ну вот, собственно, и все аргументы по этому поводу...
Задача, по-моему, сложна лишь по своему объему, а так вроде ничего сложного.. На первый взгляд, кончно..
Владимир В вне форума  
 
Непрочитано 21.04.2005, 06:20
#8
ShaggyDoc

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


Имел ввиду я не использование чужих "баз", а использование отработанных решений.

Использование древних данных из какой-то программы ведет в направлении, противоположном общему развитию AutoCAD.

Если это такие ценные изображения, то их достаточно один раз по координатам преобразовать например, в блоки AutoCAD и больше не мучить пользователей. Дальнейшее может идти без участия программистов.

Были ведь и древние программы, рисовавшие форматы. Изменение фамилии - программирование. Но никто за это не держится.

Советую все-так прочитать книгу. Или хоть картинки просмотреть. Там есть ответы, как такое сделать легко и просто.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 21.04.2005, 18:17
#9
Владимир В

машиностроение
 
Регистрация: 22.03.2005
Москва
Сообщений: 56


Цитата:
Использование древних данных из какой-то программы ведет в направлении, противоположном общему развитию AutoCAD.
Интересно, а что, по вашему есть общее развитие Автокад?
2002 в 2005?

Цитата:
Если это такие ценные изображения, то их достаточно один раз по координатам преобразовать например, в блоки AutoCAD и больше не мучить пользователей. Дальнейшее может идти без участия программистов.
а вот насчет "один раз преобразовать в блоки автокад". Пользователь может управлять настройкой слоев этого блока? То есть какая линия в каком слое чертится? Для меня это важно, потому как подобные программы меня не устраивали именно этим.

Цитата:
Советую все-так прочитать книгу. Или хоть картинки просмотреть. Там есть ответы, как такое сделать легко и просто.
честное слово, ничего не понимаю, о чем там пишется. Хоть убей. И для кого нужна эта книга? Для руководителя группы разработчиков? кто не делает сам ничего, но вроде как руководит процессом и распределяет деньги? Насколько я понял, начинаещему создавать такие программки с нуля она абсолютно бесполезна

Ну а вообще-то, если по серьезному. В базе хрананятся не координаты примитивов. Там хранятся размеры, которые достаточны человеку для того, чтобы начертить деталь; самого алгоритма черчения там нет. Мне кажется, что если хочется все-таки использовать эту базу, то нужно описать как-то объект, что бы по имеющимся размерам создать чертеж и вставить его в положенное место под нужным углом и в нужном масштабе
Владимир В вне форума  
 
Непрочитано 26.04.2005, 19:51
#10
eax

проектирование транспортных сооружений
 
Регистрация: 26.04.2005
Москва
Сообщений: 107
<phrase 1=


Что касается черчения стандартных изделий.
Это я описывал в последней главе свей статьи: http://dwg.ru/art/1. Могу выслать готовый пример с поворотом стандартного изделия (делается это методом
Код:
[Выделить все]
SomeObject.Rotate(BasePoint: OleVariant; RotationAngle: Double);)
eax вне форума  
 
Автор темы   Непрочитано 26.04.2005, 21:48
#11
Владимир В

машиностроение
 
Регистрация: 22.03.2005
Москва
Сообщений: 56


Спасибо большое
Я, честно говоря, с этой статьи и начинал, потому как ничего другого, особененно книги Зуева-Полещука, от которой все в восторге, воспринять не мог.
Насчет поворота объектов.
Если поворачивать, то это понятно, а если их там целое стадо? и разных типов? то есть циклом и массивом не обойдешься.
Тут что-то прозвучало насчет пересчета координат, может, все таки это попроще будет.. Или по крайней мере функцию какую написать, пусть сама все и пересчитывает. Просто не очень сейчас хочется думать, как она будет выглядеть, может есть готовые решения.

А насчет примера, то если можно, то на [email protected] вышлите, буду очень признателен

И вообще, стоит ли серьезную программу строить именно по такому пути? Что то берут меня сомнения, хотя раньше и не сомневался. Для одного болтика код уже ого-го получился...
Владимир В вне форума  
 
Непрочитано 27.04.2005, 09:40
#12
eax

проектирование транспортных сооружений
 
Регистрация: 26.04.2005
Москва
Сообщений: 107
<phrase 1=


По-моему, не стоит, но иногда очень хочется

А вообще, громоздкий код может себя оправдать только при частом применении получившейся программы. Так, например, программировать параметрические конструкции выгодно только потому, что вы этим будете часто пользоваться. К примеру, армирование ростверка. Казалось бы, вот ерунда ... а времени и сил много занимает.

Что же касается другого пути программирования под AUtoCAD - я другого не знаю. Если ваша программа должна начертить линию, то и в Delphi, и в VB, и в Си код будет приблезительно одинаков.

А вообще совет: создавайте свой всопогательный модуль с классами и функциями, содержащими в себе часто повторяющийся код (для программирования под AutoCAD это очень акктуально).

Пример я вам выслал.

Удачи!
eax вне форума  
 
Непрочитано 27.04.2005, 09:54
#13
eax

проектирование транспортных сооружений
 
Регистрация: 26.04.2005
Москва
Сообщений: 107
<phrase 1=


Забыл ответить про поворачивание множества объектов!

Как вариант, AcadEntity.Rotate(BasePoint, RotationAngle).
Процедуру повторять для каждого создаваемого объета. При этом BasePoint, RotationAngle остаются постоянными для каждой группы объектов (это если без блоков). Или создавать блок. Программным образом он легко редактируется
eax вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > управление системой координат Автокад из Делфей

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

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