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

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

Копирование данных для спецификаций из выносок СПДС в таблицу из мтекстов

Ответ
Поиск в этой теме
Непрочитано 23.09.2008, 22:49 #1
Копирование данных для спецификаций из выносок СПДС в таблицу из мтекстов
Red Nova
 
ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Торонто
Регистрация: 23.10.2007
Сообщений: 1,974

Если кто еще не знает, то тут VVA по моей просьбе создал программу для подсчета масс в спецификациях из мтекстов. Программой я очень доволен, все не нарадуюсь. Но как говорится аппетит приходит во время еды. И теперь хотелось бы пойти еще дальше и автоматизировать создание самой спецификации (которую уже потом можно рассчитывать лиспом от VVA). Ведь по большей части на чертеже всегда присутствуют выноски в которых уже есть информация по спецификации, или хотя бы ее часть. Что если одной командой собрать всю информацию из выносок и вписать в шаблон спецификации.
Суть такова.
Я пользуюсь СПДС. Для маркировки позиций использую выноски СПДС. Выноски СПДС имеют две строки, в верхней пишется номер позиции, в нижней данные о профиле.
Предполагаемый лисп должен выбирать все позиционные выноски СПДС имеющиеся в файле (можно и выбрать рамкой часть файла), создавать список из двух столбцов (номер позиции и профиль), затем многократно фильтровать ненужные данные и дублирующие позиции. Полученный список упорядочивается. Затем рамкой выбирается шаблон для спецификации (напомню он из мтекстов), в выбранные строки вписываются данные из упорядоченного списка.

Теперь попробую на конкретном файле объяснить алгоритм более подробно.
Запускаем лисп, создается список с данными из выносок. Затем фильтруем мусор. Для этого надо сперва ввести в лисп пояснение – как выбрать полезные выноски. Дадим определение пригодных для спецификации выносок.
Они должны удовлетворять следующим пунктам.
1. Обе строки выноски содержат информацию.
2. Верхняя строка выноски должна содержать информацию нумерационного характера, нумерация отсчитывается по цифрам и по буквам латинского и русского алфавитов. Можно использовать знак ‘ и “. Допускаемые записи могут иметь такой вид – 1, 2, 3, 4, // а, б, в, г, // a, b, c, d, // 1a, 1b, 1c, // 1, 1’, 1”, 2, 2’ // a1, a2, a3, b, b1, ... (Впрочем для первого приближения можно оставить только 1, 2, 3, 4)
3. Нижняя строка должна начинаться на определенные символы, вот их список
- Знак “-”, слова “Лист” и “Полоса”
- Слово “Труба”, “Тр.” и знак трубы из шрифтов СПДС
- Слово “Уголок” и аналогичные символы из шрифтов СПДС
- Слово “Двутавр” и аналогичные символы из шрифтов СПДС
- Слово “Швеллер” и аналогичные символы из шрифтов СПДС
- Слово “Фланец”, то же “Фл.”
- Стандартный знак диаметра и знак диаметра из шрифтов СПДС
4. Есть и другие критерии, но о них пока не стоит говорить.

Теперь необходимо отсеять дублирующие позиции, но делать это надо так, чтобы отсеять менее информативные выноски. Скажем имеем две выноски первая строка которых имеет тот же номер, а втора строка различается, предположим вотрые строки имеют следующее содержание:
“Тр. Ø89х3.5, L=2500”
“Тр. Ø89х3.5”
Из этих строк выбирается первая, как более информативная, вторая отбрасывается. Если по проще, то для дальнейших действий берем выноску с более длинной второй строкой.

Поскольку информация о профиле вписывается в двух столбцах (Профиль отдельно, длина отдельно) то нам теперь нам надо определится с ними.
Предположим верхняя строка выноски содержит цифру 25. Если нижняя строка выноски не содержит запятых, (на пример “Тр. Ø89х3.5”) то считаем что выноска не несет информацию о длине профиля, тогда в списке соответствующая строка записывается как
(25, Тр. Ø89х3.5, -). Если же запятая есть (на пример “Тр. 89х3.5, L=2500”) То считаем что выноска несет информацию о длине профиля, тогда в списке соответствующая строка записывается как (25, Тр. 89х3.5, L=2500). Если выноска содержит две и более запятых, (на пример “Тр. Ø89х3.5, L=2500, шаг 200”) то отбрасываем информацию идущую после второй запятой.
Далее упорядочиваем список (по номерам позиций).
Если все прошло как планировалось, то применительно к файлу примера список будет такой.
(1, -10х100x100, -)
(2, Тр. Ø89х3.5, L=2500)
(3, “знак уголка шрифта СПДС”75х5, L=800)
(4, “знак двутавра шрифта СПДС”20, -)
(5, “знак швеллера шрифта СПДС”12, L=960)
(6, Ø12 А500c, ΣL=24000)
(7, Ø20 А500c, L=980)

В спецификации есть также столбик с ГОСТ-ом. Чтобы он вписывался автоматически для каждого профиля надо заранее определится с ГОСТ-ом, и записать его в лисп. Так в нашем примере нужно записать следующие госты
Если обозначение профиля начинается на символ “-”, слово “Лист” то это соответствует ГОСТу “ГОСТ 19903-74”
Если обозначение профиля начинается на слова “Труба”или “Тр.” то это соответствует ГОСТу “ГОСТ 10704-91”
Если обозначение профиля начинается на cлово “Уголок” или аналогичные символы из шрифтов СПДС то это соответствует ГОСТу “ГОСТ 8509-93”
Если обозначение профиля начинается на cлово “Двутавр” или аналогичные символы из шрифтов СПДС
то это соответствует ГОСТу “ГОСТ 8239-89”
Если обозначение профиля начинается на слово “Швеллер” или аналогичные символы из шрифтов СПДС
то это соответствует “ГОСТ 8240-97”
Если обозначение профиля начинается на стандартный знак диаметра и знак диаметра из шрифтов СПДС то это соответствует ГОСТу “ГОСТ 5781-82”

Итак добавив ГОСТы к спискам они должны стать такими:
(ГОСТ 19903-74, 1, -10х100x100, -)
(ГОСТ 10704-91, 2, Тр. Ø89х3.5, L=2500)
(ГОСТ 8509-93, 3, “знак уголка шрифта СПДС”75х5, L=800)
(ГОСТ 8239-89, 4, “знак двутавра шрифта СПДС”20, -)
(ГОСТ 8240-97, 5, “знак швеллера шрифта СПДС”12, L=960)
(ГОСТ 5781-82, 6, Ø12 А500c, ΣL=24000)
(ГОСТ 5781-82, 7, Ø20 А500c, L=980)

Формирование списка законченно. Теперь нужно рамкой отметить шаблон спецификации, в которой 4 столбца и n-ное количество строк. Данные их списка вписываются в мтексы спецификации как указанно в файле примера. Если строк выбрано больше чем у списка, то в мтексты лишних строк вписываются символы ###, если строк выбрано меньше чем у списка, то выходит сообщение об ошибке.

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

В конце скажу что крыс сделал первый шаг, и создал лисп формирующий список их строк выносок СПДС. Вот он.


Код:
[Выделить все]
(defun c:get-notes-activex (/ adoc lst)
;; Через ActiveX
  (vl-load-com)
  (vla-startundomark
    (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
    ) ;_ end of vla-StartUndoMark
  (vlax-for ent (vla-get-modelspace adoc)
    (if (= (vla-get-objectname ent) "mcsDbObjectNotePosition")
      (setq lst (cons ent lst))
      ) ;_ end of if
    ) ;_ end of vlax-for
  ;; Теперь делай со списком чего хотишь
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun

(defun c:get-notes-ent (/ adoc lst _dwgru-conv-pickset-to-list)
;; Через ent*

  (defun _dwgru-conv-pickset-to-list (value / tab item)
    (repeat (setq tab  nil
                  item (sslength value)
                  ) ;_ end setq
      (setq tab (cons (ssname value (setq item (1- item))) tab))
      ) ;_ end repeat
    ) ;_ end defun

  (vl-load-com)
  (vla-startundomark
    (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
    ) ;_ end of vla-StartUndoMark
  (setq lst (vl-remove-if-not
              '(lambda (x) (= (cdr (assoc 0 (entget x))) "spdsNotePosition"))
              (_dwgru-conv-pickset-to-list (ssget "_X"))
              ) ;_ end of vl-remove-if-not
        ) ;_ end of setq
  ;; Теперь делай со списком чего хотишь
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun

Вложения
Тип файла: dwg
DWG 2004
Выноски СПДС.dwg (76.0 Кб, 10208 просмотров)

__________________
Блог
Просмотров: 37186
 
Непрочитано 23.09.2008, 23:27
#2
Кулик Алексей aka kpblc
Moderator

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


Я разбирался только с узловыми выносками, и там добраться до текста (если рассматривать только lsp) можно только через ent*-методы. Остальные элементы не ковырял.
По идее получить данные о первой и второй строк указанной выноски можно так:
Код:
[Выделить все]
(setq obj (car (entsel))) (mapcar 'cdr (vl-remove-if-not '(LAMBDA(x)(=(car x) 300))(member '(301 . "Первая строка") (entget obj))))
---
Добавлено:
Расписывать логику лениво, хватай код:
Код:
[Выделить все]
(defun test (/ selset lst)

  (defun _dwgru-conv-pickset-to-list (value / tab item)
    (repeat (setq tab  nil
                  item (sslength value)
                  ) ;_ end setq
      (setq tab (cons (ssname value (setq item (1- item))) tab))
      ) ;_ end repeat
    ) ;_ end defun

  (if
    (and (setq selset (ssget))
         (setq
           selset (vl-remove-if-not
                    (function (lambda (x)
                                (= (cdr (assoc 0 (entget x))) "spdsNotePosition")
                                ) ;_ end of LAMBDA
                              ) ;_ end of function
                    (_dwgru-conv-pickset-to-list selset)
                    ) ;_ end of vl-remove-if-not
           ) ;_ end of setq
         ) ;_ end of and
     (setq
       lst
        (vl-sort
          (vl-remove-if
            (function
              (lambda (a)
                (= (cadr a) "")
                ) ;_ end of lambda
              ) ;_ end of function
            (mapcar (function
                      (lambda (obj)
                        (mapcar (function cdr)
                                (vl-remove-if-not
                                  (function
                                    (lambda (x)
                                      (= (car x) 300)
                                      ) ;_ end of lambda
                                    ) ;_ end of function
                                  (member '(301 . "Первая строка") (entget obj))
                                  ) ;_ end of vl-remove-if-not
                                ) ;_ end of mapcar
                        ) ;_ end of LAMBDA
                      ) ;_ end of function
                    selset
                    ) ;_ end of mapcar
            ) ;_ end of vl-remove-if
          (function (lambda (a b) (< (car a) (car b))))
          ) ;_ end of vl-sort
       ) ;_ end of setq
     ) ;_ end of if
  lst
  ) ;_ end of defun
Одно "но". Этот вариант больше подходит для обработки блоков и внешних ссылок, т.к. СПДС их не обрабатывает. А для текущего файла можно попробовать использовать таблицы СПДС и программирование в них.
И еще. Тут критичным является код, выделенный полужирным. Если разработчики в одной из следующих версий поменяют DXF-представление своих примитивов (а кто им запретит?), код станет нерабочим.
P.S. Естественно, СПДС-ка должна быть загружена. Для варианта загрузки только ObjectEnabler'a не проверял.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.

Последний раз редактировалось Кулик Алексей aka kpblc, 23.09.2008 в 23:36.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 24.09.2008, 10:06
#3
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,974
Отправить сообщение для Red Nova с помощью Skype™


Кулик Алексей aka kpblc,
Спасибо, список из содержаний позиционных выносок создается. А можно включить в выбор кроме позиционных выносок еще и гребенчатые и цепные выноски?
__________________
Блог
Red Nova вне форума  
 
Непрочитано 24.09.2008, 10:13
#4
Кулик Алексей aka kpblc
Moderator

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


Наверное, можно. Но как там разбираться с количеством стрелок - пока не знаю (ковырять надо)
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 24.09.2008, 10:27
#5
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,791


Вообще то тут вроде
(301 . "Количество линий-выносок") (90 . 4))
__________________
Шаг 12й......
Мои публикации
DEM вне форума  
 
Автор темы   Непрочитано 24.09.2008, 10:31
#6
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,974
Отправить сообщение для Red Nova с помощью Skype™


Кулик Алексей aka kpblc,
А зачем разбираться с количеством стрелок? Нам надо только прочитать содержание верхней и нежней строки и добавить их в список.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 24.09.2008, 10:31
#7
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,791


Только тут конечно вопрос следующий
Выполнять ли автоматическое изменение спецификации или только при выполнении команды.
Часть объектов по любому выносками не обозначаем, как быть с их подсчетом.
В общем ньюансов много, сам пользуюсь PS-конструкции для этого дела, но тоже пока система не доработана.
Самому лезть и корректировать что то нету возможности ни времени ни возможности т.к. все файлы уже с компилированы, да и OBJECT-ARX технологиями не владею.
__________________
Шаг 12й......
Мои публикации
DEM вне форума  
 
Непрочитано 24.09.2008, 10:41
#8
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Red Nova Посмотреть сообщение
Кулик Алексей aka kpblc,
А зачем разбираться с количеством стрелок? Нам надо только прочитать содержание верхней и нежней строки и добавить их в список.
Как зачем? А подсчет ты не планируешь выполнять?
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 24.09.2008, 10:43
#9
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,974
Отправить сообщение для Red Nova с помощью Skype™


DEM,
Цитата:
Выполнять ли автоматическое изменение спецификации или только при выполнении команды.
Тут все ясно. Только при выполнении команды, так как некие выноски могут быть просто удалены и заменены другими.
Цитата:
Часть объектов по любому выносками не обозначаем, как быть с их подсчетом.
В первом посте я писал про фильтрацию неподходящих выносок.
Цитата:
Выноски должны удовлетворять следующим пунктам.
1. Обе строки выноски содержат информацию.
2. Верхняя строка выноски должна содержать информацию нумерационного характера, нумерация отсчитывается по цифрам и по буквам латинского и русского алфавитов. Можно использовать знак ‘ и “. Допускаемые записи могут иметь такой вид – 1, 2, 3, 4, // а, б, в, г, // a, b, c, d, // 1a, 1b, 1c, // 1, 1’, 1”, 2, 2’ // a1, a2, a3, b, b1, ... (Впрочем для первого приближения можно оставить только 1, 2, 3, 4)
3. Нижняя строка должна начинаться на определенные символы, вот их список
- Знак “-”, слова “Лист” и “Полоса”
- Слово “Труба”, “Тр.” и знак трубы из шрифтов СПДС
- Слово “Уголок” и аналогичные символы из шрифтов СПДС
- Слово “Двутавр” и аналогичные символы из шрифтов СПДС
- Слово “Швеллер” и аналогичные символы из шрифтов СПДС
- Слово “Фланец”, то же “Фл.”
- Стандартный знак диаметра и знак диаметра из шрифтов СПДС
4. Есть и другие критерии, но о них пока не стоит говорить.
__________________
Блог
Red Nova вне форума  
 
Автор темы   Непрочитано 24.09.2008, 10:48
#10
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,974
Отправить сообщение для Red Nova с помощью Skype™


Кулик Алексей aka kpblc,
Посмотри файл прикрепленный в первом посте (отмечено желтой рамкой). Искомый лисп должен заполнять только строки спецификации которые содержат информацию о профиле (Номер позиции, ГОСТ, Профиль, Длина). Графу количество заполнять не требуется, это уже надо вручную, иначе больно муторно. Расчет спецификации выполняется далее лиспом от VVA
__________________
Блог
Red Nova вне форума  
 
Непрочитано 24.09.2008, 10:51
#11
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,791


Red Nova
Я говорбю про необозначенные объекты, ты ведь не все будешь на чертеже обозначать.
__________________
Шаг 12й......
Мои публикации
DEM вне форума  
 
Автор темы   Непрочитано 24.09.2008, 11:00
#12
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,974
Отправить сообщение для Red Nova с помощью Skype™


DEM,
Ну так это по старинке, ручками, но опыт показывает что почти все отображено в выносках.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 24.09.2008, 11:07
#13
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,791


Ну тогда вопрос следующего плана для работы с какой частью проекта тебе это надо КМ или КЖ.
А то может проще PS -конструкции использовать.
__________________
Шаг 12й......
Мои публикации
DEM вне форума  
 
Автор темы   Непрочитано 24.09.2008, 11:28
#14
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,974
Отправить сообщение для Red Nova с помощью Skype™


В общем больше для КМ, но и для КЖ без проблем пойдет. PS я как-то ставил. Тогда интересного мало нашел. Правда спецификации не смотрел.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 24.09.2008, 12:17
#15
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,791


В общем вот что можно делать с помощью PS-конструкции.
По хорошему можно еще по копаться в файлах настроек, и сделать более оптимальным заполнение спецификаций.
Почти тоже самое можно делать с помощью СПДС, только использовать объектов СПДС, как мне кажется сбор информации с четежа с помощью выносок несколько не корректен, т.к. не не всегда все обозначаем.
Лучше построить систему на блоках и объектах СПДС или же PS-конструкции.
Вложения
Тип файла: dwg
DWG 2004
Пример.dwg (82.6 Кб, 4786 просмотров)
__________________
Шаг 12й......
Мои публикации
DEM вне форума  
 
Автор темы   Непрочитано 24.09.2008, 13:36
#16
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,974
Отправить сообщение для Red Nova с помощью Skype™


DEM,
Дойдут руки поставлю PS еще раз. Но меня в общем вполне устаревает лисп от VVA для расчета спецификаций.
Цитата:
использовать объектов СПДС, как мне кажется сбор информации с четежа с помощью выносок несколько не корректен, т.к. не не всегда все обозначаем.
Смысл в том чтобы не проделывать одну и ту же работу дважды. Если уже обозначил позиции в выносках, то почему бы не скопировать эту информацию в спецификацию одной командой? Если же некоторые позиции пропущены, то так или иначе придется один раз их заполнить. Эти позиции можно добавить в спецификацию вручную. А выноски СПДС просто очень удобны для проставления позиций. Идея с блоками реализована в VetCAD, но эти блоки менее удобны чем выноски СПДС.
Если удастся создать корректный алгоритм фильтрации для выносок СПДС, то проблем не вижу. Просто делая проект надо помнить, что далее все выноски будут обработаны лиспом, а значит при проставлении выносок позиций надо следовать некоторым правилам.
P.S. Я долго искал, но так и не нашел в СПДС возможности рассчитывать массы спецификаций. Может я что-то пропустил?
__________________
Блог
Red Nova вне форума  
 
Непрочитано 24.09.2008, 14:40
#17
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,791


Red Nova
ВСе равно по моему мнению данный путь несколько тупиковый, все таки использование объектов более целесообразно, их просто проще подсчитать.
__________________
Шаг 12й......
Мои публикации
DEM вне форума  
 
Автор темы   Непрочитано 24.09.2008, 16:04
#18
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,974
Отправить сообщение для Red Nova с помощью Skype™


kpblc,
Получается включить в набор гребенчатые и цепные выноски? Как у тебя со свободным временем. Надеюсь я не очень тебе мешаю своими просьбами?
DEM, А по моему наоборот. Выноски СПДС по любому удобнее использовать чем блоки. А подсчитать и их можно.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 24.09.2008, 16:23
#19
Кулик Алексей aka kpblc
Moderator

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


Red Nova, у меня просто сейчас шансов нет заняться (ADT, собака, никак не сдается - надо его выдрессировать).
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 24.09.2008, 17:12
#20
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,974
Отправить сообщение для Red Nova с помощью Skype™


крыс
Обломался...
Может если подожду свободное время у тебя все же появится? Ато аппетит то уже проснулся.
__________________
Блог
Red Nova вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Копирование данных для спецификаций из выносок СПДС в таблицу из мтекстов

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сейсмозащита и сейсмоизоляция существующих, построенных зд. IANationalInformAgentstvo Прочее. Архитектура и строительство 216 20.01.2015 16:51
Предложения по расчетным моделям сооружений aldt Расчетные программы 8 06.07.2009 17:53
Программа для разработки спецификаций в MS Excel Бриг Прочее. Программное обеспечение 5 27.09.2007 08:38
Создание форматки для СПДС Владимир М Программирование 2 22.09.2006 23:17
Программы для разработки спецификаций assenizator AutoCAD 6 04.02.2005 13:34