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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как программно сделать окно активным?

Как программно сделать окно активным?

Ответ
Поиск в этой теме
Непрочитано 11.01.2013, 13:26
Как программно сделать окно активным?
Xara
 
Помидорка
 
Регистрация: 03.02.2012
Сообщений: 135

Всем привет!
Подскажите пожалуйста, как через LISP сделать окно чертежа активным, которое открывается через функцию:

Код:
[Выделить все]
 (vla-open (vla-get-documents (vlax-get-acad-object))
               Item1 ;имя файла
               :vlax-false
               ""
               )
А то открыть-то он открывает, а активный чертеж тот, что уже был открыт...
__________________
Боишься - не делай. Делаешь - не бойся.
Просмотров: 13664
 
Непрочитано 14.01.2013, 17:56
#21
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от Xara Посмотреть сообщение
Можно хоть немного конкретики?))
http://www.cadtv.ru/aur-2012-avtomat...spol-zovaniem/
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Непрочитано 14.01.2013, 18:05
#22
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Елпанов Евгений
запуск будет довольно быстрым...
А самое интересное будет как раз таки после троеточия... Правда, Женя?

Цитата:
Можно хоть немного конкретики?))
Можно. Сначала пишешь свой Check Standard Manager - это твой GUI, в котором у юзера запрашиваешь файлы, которые нужно обработать (там же предоставляешь выбор: файлы каталога, файлы подшивки, произвольный набор файлов, ну и т.д.). в этом же окне у тебя в виде TreeView сгруппированы модули нормоконтроля, с CheckBox напротив каждого. Установленная галочка означает проверку этим модулем. Сами модули лежат во вложенном каталоге modules по своим подкаталогам. Твой модуль загружая эти сборки, ищет в них классы, реализующие назначенный тобою интерфейс (у меня это IStandardModule). Каждый модуль содержит свой собственный визуальный контрол для работы, оптимально настроенный на решение задачи, под которую этот модуль написан. Этот контрол будет в ходе решения подставляться в окно твоего Manager.

Интерфейс может быть таким:

Код:
[Выделить все]
    /// <summary>
    /// Интерфейс модуля нормоконтроля.
    /// </summary>
    public interface IStandardModule {
        /// <summary>
        /// Целевой объект, подлежащий обработке.
        /// </summary>
        Target Target { get; }
        /// <summary>
        /// Наименование модуля нормоконтроля.
        /// </summary>
        String Name { get; }
        /// <summary>
        /// Краткое описание модуля.
        /// </summary>
        String Description { get; }

        /// <summary>
        /// Текст всплывающей подсказки.
        /// </summary>
        String Tooltip { get; }

        /// <summary>
        /// Автор продукта.
        /// </summary>
        String Author { get; }
        /// <summary>
        /// Компания, выпустившая продукт.
        /// </summary>
        String Company { get; }
        /// <summary>
        /// Сайт продукта.
        /// </summary>
        String Site { get; }
        /// <summary>
        /// Электронная почта для обратной связи с разработчиком.
        /// </summary>
        String Email { get; }
        /// <summary>
        /// Файл справочной системы.
        /// </summary>
        String HelpFile { get; }

        /// <summary>
        /// Проверка на то, содержит ли база данных чертежа объекты с нарушениями.
        /// </summary>
        /// <param name="db">База данных чертежа, подлежащая обработке.</param>
        /// <param name="ids">Коллеция идентификаторов тех объектов, которые содержат нарушения.</param>
        /// <returns>True - найдены, иначе - False.</returns>
        Boolean HasViolations(DbSrv.Database db, out DbSrv.ObjectIdCollection ids);

        /// <summary>
        /// Проверка на то, имеются ли в базе данных чертежа объекты с нарушениями, для 
        /// которых присутствует "исправление по умолчанию".
        /// </summary>
        /// <param name="db">База данных чертежа, подлежащая обработке.</param>
        /// <param name="ids">Коллеция идентификаторов тех объектов, для 
        /// которых присутствует "исправление по умолчанию".</param>
        /// <returns>True - найдены, иначе - False.</returns>
        Boolean HasDefaultVariants(DbSrv.Database db, out DbSrv.ObjectIdCollection ids);

        /// <summary>
        /// Применить "исправления по умолчанию" ко всем найденным "некорректным", для которых такие 
        /// предлагаемые исправления обнаружены.
        /// </summary>
        /// <param name="db">База данных чертежа, подлежащая обработке.</param>
        /// <returns>Коллеция идентификаторов тех объектов, для которых были применены 
        /// "исправления по умолчанию".</returns>
        DbSrv.ObjectIdCollection ApplyDefaultVariants(DbSrv.Database db);

        /// <summary>
        /// Получить визуальный элемент управления, предназначенный для 
        /// исправления выявленных нарушений.
        /// </summary>
        /// <param name="db">База данных чертежа, подлежащая обработке.</param>
        /// <returns></returns>
        winCont.UserControl GetGuiControl(DbSrv.Database db);

        /// <summary>
        /// Получить подробный отчёт обо всех обнаруженных нарушениях
        /// </summary>
        /// <param name="db">База данных чертежа, подлежащая обработке.</param>
        /// <returns>Результат проверки возвращается в виде объекта XElement.</returns>
        XElement GetXmlReport(DbSrv.Database db);
    }
Результат работы каждого модуля возвращается в виде XML объекта. Ты группируешь их по файлам и по завершению работы скармливаешь их генератору отчётов. Вот и вся песня.

Цитата:
Сообщение от Елпанов Евгений
http://www.cadtv.ru/aur-2012-avtomat...spol-zovaniem/
Женя, каким боком это относится к нормоконтролю, о котором спрашивает автор?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 14.01.2013, 19:05
#23
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от hwd Посмотреть сообщение
Женя, каким боком это относится к нормоконтролю, о котором спрашивает автор?
я про запуск его функции во всех файлах, для сбора статистики...
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 17.01.2013, 16:28
#24
Xara

Помидорка
 
Регистрация: 03.02.2012
Сообщений: 135


hwd, да, ты был прав... Ничего мне это не дало...
__________________
Боишься - не делай. Делаешь - не бойся.
Xara вне форума  
 
Непрочитано 17.01.2013, 19:05
#25
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Xara Посмотреть сообщение
да, ты был прав... Ничего мне это не дало...
Вот от таких, как Вы, Xara, я сделал программку для брикскада, которая пуржит файлы в заданной директории. Чтоб было понятно, в нем нет ни объектДБХ, ни нет, ни аркс, ни даже вба, то есть есть, но не для всех, а местный лисп справился на ура. Но вам я ее тоже не покажу
зы влом было переключать раскладку...
зызы ну, hwd - знатный троль...
gomer вне форума  
 
Непрочитано 18.01.2013, 16:19
#26
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Xara Посмотреть сообщение
hwd, да, ты был прав... Ничего мне это не дало...
Об этом я тебя и предупреждал - смысл спрашивать, если не пишешь на .net?
Если объяснять на пальцах, то визуально (т.е. для пользователей), это безобразие выглядит например таким образом (у тебя может быть свой вариант безобразия):

Миниатюры
Нажмите на изображение для увеличения
Название: stdMng.png
Просмотров: 316
Размер:	60.9 Кб
ID:	94643  
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 18.01.2013, 16:44
#27
Xara

Помидорка
 
Регистрация: 03.02.2012
Сообщений: 135


Цитата:
Сообщение от gomer Посмотреть сообщение
Но вам я ее тоже не покажу
Жадина
__________________
Боишься - не делай. Делаешь - не бойся.
Xara вне форума  
 
Непрочитано 18.01.2013, 16:57
#28
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Xara Посмотреть сообщение
Жадина
Это не от жадности, интересно, что будет, если на реакторы посадить пурж и нормоконтроль? Как долго проживет монитор...
gomer вне форума  
 
Непрочитано 18.01.2013, 16:59
#29
Кулик Алексей aka kpblc
Moderator

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


На реакторах нельзя использовать команды. Поэтому штатный нормоконтроль сразу отпадает. Остальное реализовывалось не раз и не два.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.01.2013, 17:02
#30
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
На реакторах нельзя использовать команды. Поэтому штатный нормоконтроль сразу отпадает. Остальное реализовывалось не раз и не два.
Если под "штатным" подразумевается "родной автокадовский" нормоконтроль, то он как раз и использует "реакторы" (события в C#). И понятное дело, что в них он использует не командную строку автокада, а непосредственно работает с базой данных чертежа через API.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 18.01.2013, 17:07
#31
Кулик Алексей aka kpblc
Moderator

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


Я имел в виду вызов _checkstandards, а не внутренний механизм работы команды.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.01.2013, 17:13
#32
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Я в своей реализации отказался от использования событий и жёсткого прописывания путей к DWS файлам (как это сделано в автокаде). Имхо удобней, когда проверка запускается только по требованию самого пользователя, а в именах к DWS файлам можно указывать относительные пути и системные переменные. Если автор вопроса не будет завязываться на реакторы, то и реализовать аналог на лиспе не составит особого труда.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 18.01.2013, 17:49
#33
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
На реакторах нельзя использовать команды
я имел ввиду самописные пурж и нормоконтроль + заминировать все это дело алертами
Xara, если вам свербит уж так это, используйте метод Add вместо Open, всего то делов на медный грош
gomer вне форума  
 
Автор темы   Непрочитано 24.01.2013, 11:47
#34
Xara

Помидорка
 
Регистрация: 03.02.2012
Сообщений: 135


Цитата:
Сообщение от gomer Посмотреть сообщение
используйте метод Add вместо Open
Попробую...

Кто-нибудь может подсказать, как перебить функцию под этот метод, чтобы лисп работал с этими файлами?
Код:
[Выделить все]
 (defun _Checkfiles ()
  (foreach Item1 abc
    (setq file (vla-open (vla-get-documents (vlax-get-acad-object))
			 Item1
			 :vlax-false
			 ""
			 )
	  )
      
  ;;;;;;;;;;;;; НАЧАЛО ПРОВЕРОК ;;;;;;;;;;;;;
  
  ;;;;;;;;;;;;; ПРОВЕРКА 1 - ВСЕ ЛИ РАЗМЕРЫ В $-DIMS ;;;;;;;;;;;;;				;;
  (setq all$dims (ssget "_X" '((0 . "*DIMENSION"))))						;;
  (if (/= all$dims nil) (setq len$dims (sslength all$dims)))					;;
  (setq jjl 0											;;
	f$dims "")										;;
  (if (/= len$dims nil)										;;
    (while (and (> len$dims 0) (= f$dims ""))							;;
      (setq dim$ent (ssname all$dims (setq len$dims (1- len$dims)))				;;
	    layer$dim (cdr (assoc 8 (entget dim$ent))))						;;
      (if (/= layer$dim "$-DIMS") (setq f$dims "- Имеются размеры в недопустимых слоях\n"	;;
					kol$err (1+ kol$err)))					;;
      )												;;
    )												;;
  ; log f$dims											;;
  
  ;;;;;;;;;;;;; ПРОВЕРКА 2 - ВСЕ ЛИ ТЕКСТЫ SA-GENISO ;;;;;;;;;;;;;				;;		*** RED
  (setq all$text (ssget "_X" '((0 . "*TEXT") (0 . "*MTEXT"))))					;;
  (if (/= all$text nil) (setq len$text (sslength all$text)))					;;
  (setq jjl 0											;;
	f$text "")										;;
  (if (/= len$text nil)										;;
    (while (and (> len$text 0) (= f$text ""))							;;
      (setq text$ent (ssname all$text (setq len$text (1- len$text)))				;;
	    font$text (cdr (assoc 7 (entget text$ent))))					;;
      (if (/= font$text "SA-GENISO")								;;
	(setq f$text "- Имеются текстовые примитивы c использованием недопустимых шрифтов\n"	;;
	      kol$err (1+ kol$err)))								;;
      )												;;
    )												;;
  ; log f$text											;;
  
  ;;;;;;;;;;;;; ПРОВЕРКА 3 - СИСТЕМНЫЕ ПЕРЕМЕННЫЕ ;;;;;;;;;;;;;					;;
  (setq f$param "")										;;
  (if (/= (getvar "MEASUREMENT") 1) (setq f$param (strcat f$param "MEASUREMENT ")))		;;
  (if (/= (getvar "MIRRTEXT") 0) (setq f$param (strcat f$param "MIRRTEXT ")))			;;
  (if (/= (getvar "DIMASSOC") 2) (setq f$param (strcat f$param "DIMASSOC ")))			;;
  (if (/= (getvar "CMDDIA") 1) (setq f$param (strcat f$param "CMDDIA ")))			;;
  (if (/= (getvar "FILEDIA") 1) (setq f$param (strcat f$param "FILEDIA ")))			;;
  (if (/= f$param "")										;;
    (setq f$param (strcat "- Недопустимое значение системных переменных " f$param "\n")		;;
	  kol$err (1+ kol$err))									;;
    )												;;
  ; log f$param											;;
  
  ;;;;;;;;;;;;; ПРОВЕРКА 4 - ЕДИНИЦЫ ИЗМЕРЕНИЯ ;;;;;;;;;;;;;					;;
  (if (and (/= (getvar "insunits") 0) (/= (getvar "insunits") 4) (/= (getvar "insunits") 6))	;;
    (setq f$units "- Недопустимое значение единиц измерения"					;;
	  kol$err (1+ kol$err))									;;
    (setq f$units ""))										;;
  ; log f$units											;;
  
  ;;;;;;;;;;;;; СБОРКА LOG-ФАЙЛА  ;;;;;;;;;;;;;							;;		*** RED
  (if (and (/= f$dims "") (/= f$dims "") (/= f$dims "") (/= f$dims ""))
    (setq f$log (strcat "\n" f$dims f$text f$param f$units "\n\n"))
    (setq f$log (strcat "\n- Ошибок не найдено\n\n"))
    )
  
  ;;;;;;;;;;;;; ОКОНЧАНИЕ ПРОВЕРОК ;;;;;;;;;;;;;
  (setq loglist
	 (append loglist (list
			   (strcat "Чертеж " (getvar "dwgname")
				   " - проверка выполнена "
				   ;;;			       ourfilename
				   ;;;			       " at "
				   (strcat
				     (substr (rtos (getvar "cdate") 2 0) 7 2)
				     "."
				     (substr (rtos (getvar "cdate") 2 0) 5 2)
				     "."
				     (substr (rtos (getvar "cdate") 2 0) 1 4))
				   f$log)
			   )
		 )
	)
    (princ)
    (vla-Close file :vlax-true)
    )
  (princ)
  )
__________________
Боишься - не делай. Делаешь - не бойся.

Последний раз редактировалось Xara, 28.01.2013 в 12:42.
Xara вне форума  
 
Непрочитано 11.07.2015, 09:50
#35
DENBASS2004


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Xara, активация окна другого файла автоматически останавливает выполнение лиспа.
Добрый день Алексей. Копался на форумах, наткнулся на это обсуждение. Все таки я заставил что бы после открытия другого файла и делая его активным лисп не прекращал работать, а переключался на новый файл и продолжал работать
DENBASS2004 вне форума  
 
Непрочитано 11.07.2015, 15:25
#36
Кулик Алексей aka kpblc
Moderator

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


Молодец. Решение показывай. А заодно и можешь посмотреть http://autolisp.ru/2014/10/21/execut...t-opening-dwg/
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 11.07.2015, 16:16
#37
DENBASS2004


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Молодец. Решение показывай.
Ну, посмотрел, как то все там для меня тяжеловато читать.
У меня как то проще получилось, может конечно многим не подойдет, но для меня самый раз.
(command "_sdi" 1) ;здесь мы вынуждаем работать только с 1 файлом
(setq Ch1 (command "_open" "_no" (strcat papka1 "\\01-00.00.000 СБ-Опорные элементы.dwg") (strcat papka1 "\\01-01.00.002-Косынка.dwg"))) ;так как активный файл может быть один мы открывая другой файл принудительно сохраняя предыдущий закрываем, и открывшийся файл становиться активным.
затем я возвращаю (command "_sdi" 0) и программа дальше продолжает работать но уже с новым открытым файлом
Может конечно это совсем неграмотно, но у меня работает. Да и я еще новичок.
DENBASS2004 вне форума  
 
Непрочитано 11.07.2015, 21:21
#38
Кулик Алексей aka kpblc
Moderator

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


Ok. Делай таким образом:
Открываем новый экземпляр AutoCAD, ни один рабочий файл не загружен. Пустой файл создан и активирован. Переход в VLIDE и запуск функции test:
Код:
[Выделить все]
 (defun test (/ loc_var)
  (setvar "sdi" 1)
  (setq *glob_var* "Глобальная переменная"
        loc_var    "Локальная переменная"
        ) ;_ end of setq
  (command "_open"
           "_no"
           (strcat papka1 "\\01-00.00.000 СБ-Опорные элементы.dwg")
           (strcat papka1 "\\01-01.00.002-Косынка.dwg")
           ) ;_ end of command
  (setvar "sdi" 0)
  (alert (strcat "Переменные в новом файле:\n"
                 "\t*glob_var* : "
                 (cond
                   (*glob_var*)
                   (t " не определена")
                   ) ;_ end of cond
                 "\tloc_var    : "
                 (cond (loc_var)
                       (t "Не определена")
                       ) ;_ end of cond
                 ) ;_ end of strcat
         ) ;_ end of alert
  ) ;_ end of defun
И посмотри, чему в новом файле (если он вообще откроется) будут равны значения глобальной и локальной переменных. А заодно и проверь, определена ли вообще функция test.
P.S. Работа с нетекущим документом через lisp обсуждалась на форуме не раз и не два. И выводы постоянно были одни и те же.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.07.2015, 07:53
#39
DENBASS2004


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Ok. Делай таким образом:
Открываем новый экземпляр AutoCAD, ни один рабочий файл не загружен. Пустой файл создан и активирован. Переход в VLIDE и запуск функции test:
Код:
[Выделить все]
 (defun test (/ loc_var)
  (setvar "sdi" 1)
  (setq *glob_var* "Глобальная переменная"
        loc_var    "Локальная переменная"
        ) ;_ end of setq
  (command "_open"
           "_no"
           (strcat papka1 "\\01-00.00.000 СБ-Опорные элементы.dwg")
           (strcat papka1 "\\01-01.00.002-Косынка.dwg")
           ) ;_ end of command
  (setvar "sdi" 0)
  (alert (strcat "Переменные в новом файле:\n"
                 "\t*glob_var* : "
                 (cond
                   (*glob_var*)
                   (t " не определена")
                   ) ;_ end of cond
                 "\tloc_var    : "
                 (cond (loc_var)
                       (t "Не определена")
                       ) ;_ end of cond
                 ) ;_ end of strcat
         ) ;_ end of alert
  ) ;_ end of defun
И посмотри, чему в новом файле (если он вообще откроется) будут равны значения глобальной и локальной переменных. А заодно и проверь, определена ли вообще функция test.
P.S. Работа с нетекущим документом через lisp обсуждалась на форуме не раз и не два. И выводы постоянно были одни и те же.
Да Алексей ты прав. Файл то открылся, но значения глобальных и локальных он потерял. Да ,я в ступоре. Неужели ни как это не обойти. Мне ведь обязательно надо что бы открывался не дескриптер а сам файл. А возможно ли сделать например так. Отдельно написать программу для построения чертежа конкретной детали ,а после вставить ее в первую программу где будет открываться дескриптер? И все там сделается по программе но уже не видя как он это делает?
DENBASS2004 вне форума  
 
Непрочитано 13.07.2015, 08:33
#40
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


Как известно Тор с вырезанным диском («проколотый») можно вывернуть наизнанку непрерывным образом (топологически, то есть серией диффеоморфизмов).

Конечно, всё можно сделать, но на лиспе это будет выглядеть как на иллюстрации выше, зато на dotNET всё просто...
trir вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как программно сделать окно активным?

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OpenDCL vs C#.NET Sleekka .NET 18 02.07.2013 22:31
AutoCAD Automation: как правильно программно прервать Utility.GetPoint (выполняется в другом потоке) IvanShkuropadsky Программирование 2 17.08.2011 11:10
Как сделать окно Autocad активным при запуске из VBA Excel? AlexV Программирование 1 20.08.2009 12:40
BricsCAD 8.2.8 Кулик Алексей aka kpblc Другие CAD системы 17 24.04.2008 17:01
Текстовое окно не появляется при нажатии F2 Боныч AutoCAD 3 09.04.2008 16:21