• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Разработка программы

Автор ZeroLine, 26.02.09, 06:16:37

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

ZeroLine

Хочу написать приложение из которого должна быть возможность:
1) указав необходимый чертеж, открыть его в Компасе
2) найти все марки/позиционные обозначение (как на линии так и на выноске)
3) подсвечивая их по очереди (с увеличением) задавать на форме программы определенные вопросы по данной марке

Какие есть мысли по этому поводу. Возможен ли пункт 1 или (что не хотелось бы) придется писать библиотеку под компас.

prog1

1)  Из OpenDialog получаем FileName,
    запускаем Kompas:
try
  Kompas:= KompasObject(GetActiveOleObject('Kompas.Application.5'));
except
   try
   Kompas:=KompasObject(CreateOleObject('Kompas.Application.5'));
   except
     exit;
   end;
end;
    doc:= ksDocument2D( kompas.Document2D );
    doc.ksOpenDocument(FileName,false) ; //открываем чертеж
Это для Вас, я надеюсь и не составляло труда.

2) Создаем Итератор для перемещения по объектам
                      var   Iter: ksIterator;
    Iter:=ksIterator(Kompas.GetIterator);
      If Iter.ksCreateIterator(MARKERLEADER_OBJ,0)=False then exit;
           i:=0;
       ref:=Iter.ksMoveIterator('F');
       if Doc.ksExistObj(ref)=1 then
       repeat                          // перебрали объекты
       Doc.ksLightObj(ref,1);   //       подсвечиваем
       i:=i+1;
       Doc.ksLightObj(ref,0);
       ref:=Iter.ksMoveIterator('N');
       until Doc.ksExistObj(ref)=0;
       Iter.ksDeleteIterator;   

3) Основная задача считать параметры объекта!
   Kompas.GetParamStruct(ko_MarkerLeaderParam) Вот здесь повозится Вам придется с о структурой!

---------------------------------------------------
увеличение (в смысле зуммирование?, а не увелич.степени яркости)

  ksDocument2D:ksZoom (в SDK просто описано)
  зная параметры объекта, можно прикинуть левый и правый угол зуммир-я (если никак, используйте Doc.ksGetObjGabaritRect)
-----------------------------------------------
Пробуйте - Удачи!




ZeroLine


prog1

на здоровье! Будет нужда в конкретных действиях - пишите, чем сможем. У меня реализована задача с отрезками. Но с маркерами тоже приходилось работать (рисовать).
Есть ещё механизм! Подумайте, может стоит развязать пользователю "руки" и дать возможность самому указывать объект. Этот механизм я кратко описала несколькими темами ниже - Миранде отвечала

ZeroLine

Цитата: prog1 от 26.02.09, 13:55:44
на здоровье! Будет нужда в конкретных действиях - пишите, чем сможем. У меня реализована задача с отрезками. Но с маркерами тоже приходилось работать (рисовать).
Есть ещё механизм! Подумайте, может стоит развязать пользователю "руки" и дать возможность самому указывать объект. Этот механизм я кратко описала несколькими темами ниже - Миранде отвечала

Весь смысл программы сводится к облегчению моей работы:
Разработал монтажную схему и все детали и сборочные единицы (Расставил марки и обозначение метизов) - Запустил программу - Ручной ввод/Получить с чертежа - Как я описывал перебор марок (получение количество от пользователя или из комментария или атрибута к марке) и обозначений метизов - автоматизированное заполнение спецификации в Excel (с подключение для этого базы данных по массе проката и метизов)

Насчет БД даже приблизительно не знаю как с этим работать в Delphi. Для создания БД ориентируюсь на Acces. Надо будет набираться знаний в данной области.

sorockinalex1

блин, не знаю что поделать...
вылетает при подключении к компасу с ошибкой в строке GetActiveOleObject... Kompas:KompasObject в глобальных var прописан...
try
Kompas:= KompasObject(GetActiveOleObject('Kompas.Application.5'));
except
end;

vmnick

А может правильнее сказать не вилетает а сообщает об исключиельной ситуации и надо продолжить виполнение (ето только в режиме отладки)