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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Экспорт координат выбранных точек в *.txt

Экспорт координат выбранных точек в *.txt

Ответ
Поиск в этой теме
Непрочитано 14.05.2008, 16:06
Экспорт координат выбранных точек в *.txt
slan.ru
 
Регистрация: 13.05.2008
Сообщений: 6

Добрый день, уважаемые знатоки!

Сразу прошу, не пинайте ногами и не отправляйте в поиск. Все темы, в заголовках которых есть слово "координаты" и "координат" прочитал. Нашел много полезного для себя и практически то, что искал. Но многое остается в полутьме для моего мозга. Сама суть моего поста.

Я работаю в дорожном строительстве. С недавнего времени моя организация приобрела электронный тахеометр. На данный момент ось дороги выносим в натуру с помощью него. Координаты X и Y узловых точек по оси беру из CREDO_MIX, а координату Z подставляю по мере необходимости и вида выноса. Для фрезеровки, нижнего слоя, верхнего, и.т.п.

Возникла необходимость выноса в натуру кромок проезжей части. Но они не всегда соответствуют виду оси. В городских условиях могут быть примыкания, карманы для автобусных остановок и.т.п. Требуется (для начала) получить координаты узловых точек. Хочу начать с того, что бы получить координаты ВЫБРАННЫХ ТОЧЕК в текстовый файл. Последовательность:

1. Проставляем токи в требуемых узлах.
2. Выбираем необходимые точки.
3. Запускаем макрос.
4. Макрос создает в каталоге текстовый файл c названием как у чертежа.
5. Туда записываются координаты примитивов (вроде бы так тут это называют) в формате:
Pt X Y Z <Space>, где
Pt - для начала просто нумерация точек по мере добавления в файл,
X Y Z - координаты,
<Space> - разделитель.

От Вас прошу помощи. В программировании мало понимаю, но для меня пока что ясно, что скрипты можно создать как макрос - VBA, и LISP - на собственном языке. Хотелось бы увидеть такой скрипт, я думаю он не будет громоздким, на удобном Вам языке, но с описанием. Начну разбираться - с чего-нибудь надо начинать. Для начала поставленная задача будет минимальной, в дальнейшем хочу усложнить задачу собственными силами, если потяну.

Сразу оговорюсь, возможности купить ToolPak, Express и уж тем более Civil у меня нет, , да и не требуется пока мне выполнение задач отличных от этой. Поэтому надеюсь на Вашу помощь в написании такого скрипта. А уж за описание процедуры - буду безгранично благодарен.

P.S> Если требуются еще исходные данные - готов в найкротчайшие сроки предоставить их.
Просмотров: 234102
 
Непрочитано 18.03.2011, 02:10
#61
isheedo


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


Цитата:
Сообщение от VVA Посмотреть сообщение
isheedo,

Если для точки настроить PDMODE = 33 (круг) и соответственно установить нужный PDSIZE на подойдет?
ок,спасибо)
isheedo вне форума  
 
Непрочитано 18.03.2011, 05:10
#62
trir


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


Чтобы отслеживать координаты в Map, надо установит СК для чертежа:
http://forum.dwg.ru/showthread.php?t=63171
пост № 6
trir вне форума  
 
Непрочитано 09.11.2011, 13:27
#63
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 475
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


Предлагаю еще свой вариант. Проще и наглядней и есть возможность отмены последней поставленной точки (правда на ctrl+z прикрутить не смог).
Писал конкретно для координорования отвода. точки и текст ставятся в один из двух предлагаемых слоев.
Заранее извиняюсь перед владельцами английских версий, Вам придется искать русскоязычные команды в коде и менять их на аутентичные (подобрать смог не все)
Код:
[Выделить все]
  ;(ver)"Visual LISP 2010 (ru)"
;(c)Кобелев Владимир aka SADist
(defun c:ot2 ( /  h cordotv x xl oldcmd oldct oldcol oldw file i adoc lotv)
      (defun *error* (msg)
      (setq xl (open file "w"))
 (write-line "\tX\tY" xl) 
 (foreach item (reverse cordotv)
 (write-line (strcat (itoa (car item)) "\t" (cadr item) "\t" (caddr item)) xl)
 );end foreach
 (close xl)
      (setvar "CELTYPE" oldct)      (setvar "cecolor" oldcol)      (setvar "celweight" oldw)      (setvar "CMDECHO" oldcmd)
      (princ msg)
      (princ)
      );end of error
(setq oldcmd (getvar "CMDECHO") oldct (getvar "CELTYPE") oldcol (getvar "cecolor") oldw (getvar "celweight"))
(setvar "CMDECHO" 1) (setvar "CELTYPE" "bylayer") (setvar "celweight" -1) (setvar "cecolor" "bylayer")
(if (and (setq file (getfiled "новый файл" "" "xls" 1)) 
  (/= file "") 
    );end and
   (progn
   (initget 1 "Постоянный Временный")
   (setq lotv (getkword "\nВыберите вид отведения: [Постоянный/Временный]"))
   (if (= lotv "Временный") (command "_layer" "_m" "vr_otvod" "_lw" "0.4" "" "_c" "92" "" "") 
       (command "_layer" "_m" "otvod" "_lw" "0.4" "" "_c" "синий" "" ""))
  (setq lotv (getvar "textstyle"))
  (if (= 0 (getvar "worlducs")) (command "_ucs" "_w")) 
  (vl-load-com)
  (initget (+ 2 4))
  (if (null (setq h (getreal "\nзадайте высоту текста: <2.5>"))) (setq h 2.5)) 
  (initget (+ 2 4))
    (if (null (setq i (getint "\nс какого номера начинать нумерацию: <1>" ))) (setq i 1))
(setq x (getpoint "\nточка на полосе отвода: "))
(entmake (list (cons 0 "CIRCLE") (cons 10 x) (cons 40 0.4) ))
(setq cordotv (cons (cons  i  (list (rtos (cadr x) 2 2) (rtos (car x) 2 2))) cordotv)) 
(prin1 i) (princ ": ") (princ (rtos (cadr x) 2 2)) (princ "  ") (princ (rtos (car x) 2 2)) 
(entmake (list (cons 0 "TEXT") (cons 1 (itoa i)) (cons 7 lotv) (cons 10 x) (cons 40 h) ))
  (while (setq x (getpoint x "\nследующая точка на полосе отвода или [Отмена]: ")) 
     (if (= x "Отмена") 
 
  (progn
  (entdel (entlast))
  (entdel (entlast))
  (setq x (list (atof (caddar (cdr cordotv))) (atof (cadar (cdr cordotv)))))
  (setq cordotv (cdr cordotv))
  (setq i (1- i))
  (initget "Отмена")
  );end progn
 
  (progn
    (vla-startundomark ;начальная метка 
        (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
        );end undo 
     (entmake (list (cons 0 "CIRCLE") (cons 10 x) (cons 40 0.4) ))
    (setq cordotv (cons (cons (setq i (1+ i)) (list (rtos (cadr x) 2 2) (rtos (car x) 2 2))) cordotv)) 
  (prin1 i) (princ ": ") (princ (rtos (cadr x) 2 2)) (princ "  ") (princ (rtos (car x) 2 2)) 
   (entmake (list (cons 0 "TEXT") (cons 1 (itoa i)) (cons 7 lotv) (cons 10 x) (cons 40 h) ))
  (initget "Отмена")
      (vla-endundomark adoc) ;конечная метка
  );end progn
 
 );end if
  );end while
 );end progn
);end if
(setq xl (open file "w"))
(write-line "\tX\tY" xl) 
 (foreach item (reverse cordotv)
 (write-line (strcat (itoa (car item)) "\t" (cadr item) "\t" (caddr item)) xl)
 );end foreach
(close xl)
(setvar "CELTYPE" "bylayer") (setvar "celweight" -1) (setvar "cecolor" "bylayer") (setvar "CMDECHO" oldcmd) (prin1)
) 
 
за помошь в написании благодарность Кулику Алексею aka kpblc
з.ы. сильно ногами не пинайте, это моя первая программа...
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...

Последний раз редактировалось Vladimir_Sergeevich, 10.11.2011 в 12:41. Причина: Исправляем по советам...
Vladimir_Sergeevich вне форума  
 
Непрочитано 09.11.2011, 14:03
#64
Кулик Алексей aka kpblc
Moderator

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


Строку (command "_text" x h "" i) советую дополнить проверкой на значение предустановленной высоты текущего текстового стиля. Если она не 0, запроса на h не будет.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.11.2011, 11:02
#65
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 475
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


Как проверить сие не придумал... переделал, что бы даже не смотрел на это через (entmake...)
з.ы. у меня это и не надо, потому как и стиль создаю програмно. Убрал эту строку, подумав, что не все пользуют такие шрифты как у нас...
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
 
Непрочитано 10.11.2011, 11:43
#66
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от Vladimir_Sergeevich Посмотреть сообщение
Как проверить сие не придумал
Посмотри (а можешь взять на вооружение) здесь ru-text-draw.
Цитата:
Сообщение от Vladimir_Sergeevich Посмотреть сообщение
через (entmake...)
Там же есть ru-text-add и ru-text-entmake
Еще замени русские опции на английские с _
Цитата:
(command "_layer" "с" "otvod" "е" "0.4" "" "ц" "синий" "" ""))
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 09.01.2012, 13:29
#67
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


Цитата:
Сообщение от G-RAV Посмотреть сообщение
Цитата:
Сообщение от Disney Посмотреть сообщение
Владимир, огромное спасибо!
Я понимаю, что прошло уже больше полу года, и возвращаться к старым программам нет большого желания, но хотел бы вас попросить, если возможно, добавить в вашу программу следующие возможности:
1) К списку типов объектов: круг и текст,
2) Для 2D полилинии, в качестве Z, брать её уровень,
3) По запросу, в качестве Z, брать значение из близлежащего текста.
4) При маркировке, использовать префикс в номере точки.
Уважаемый, Disney! Есть ли решение по 3-му пункту? Очень было бы полезно, потому как "вертикалка" обычно "прилетает", состоящая не из блоков, а из круг/точка и текст/мтекст...
Добавил такую опцию, но будьте осторожны, не всегда близлежащий текст к точке, относиться именно к этой точки.
Экспорт координат выбранных объектов из AutoCAD в *.txt
__________________
Почему все вдруг становятся умными, когда уже не надо?

Последний раз редактировалось Disney, 30.03.2012 в 10:32.
Disney вне форума  
 
Непрочитано 09.01.2012, 17:42
#68
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813


Цитата:
Сообщение от Vladimir_Sergeevich Посмотреть сообщение
з.ы. сильно ногами не пинайте, это моя первая программа...
Cтранно, что никто не заметил экстра-фатальной ошибки:
посмотри на фруме как нужно прописывать в программe
функцию *error* , если сразу не начнешь ей пользоваться
правильно, то поимеешь много неприятностей позже,
рекомендую взять за образец из примеров, написанных VVA
(намек)
Олег (jr.) вне форума  
 
Непрочитано 01.02.2012, 23:32
#69
Grigarash

Геодезёр
 
Регистрация: 24.09.2005
Russia, Moscow
Сообщений: 16
<phrase 1=


А можно еще добавить следующее:
  • определение координат с запросом МСК или ПСК
  • Масштаб координат из текущего размерного стиля
  • Автонумерация (с указанием номера первой точки) выделенных точек в том порядке, в котором выделяют

ВАЖНО:
данный скрипт не работает на ACAD 2012 x64 SP1 RUS
Исправьте плз
Grigarash вне форума  
 
Непрочитано 02.02.2012, 11:55
#70
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


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

Цитата:
Сообщение от Grigarash Посмотреть сообщение
А можно еще добавить следующее:
  1. Учёт ПСК
  2. Масштаб
  3. Автонумерацию
Как можно предлагать, если вы не видели работу программы
Цитата:
Сообщение от Grigarash Посмотреть сообщение
данный скрипт не работает
1-ый не сложно, но пока нет желания,
2-ой считаю не уместным (чертить нужно 1:1).
3-иё пункт реализован, во всех возможных вариациях,
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Непрочитано 28.03.2012, 18:43
#71
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Тема экспорта координат в последние пару дней получила бурное развитие на cadtutor'e
Добавил в пост #7 версию с cadtutor'a с описанием
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 29.04.2013, 17:53
#72
S R G


 
Регистрация: 11.03.2005
Питер
Сообщений: 5


Добрый день, Спасибо за скрипт - много раз выручал. Но тут столкнулся с проблемой. Есть только круги с высотами. Данный скрипт круги похоже не воспринимает. Где дописать в нем, чтобы учитывался и круг?

Спасибо!
S R G вне форума  
 
Непрочитано 29.04.2013, 18:58
#73
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


S R G, Это ты к кому обращаешься? ECoorE rev6 экспортирует круги
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 18.03.2014, 11:48 Как сделать так, чтобы функция COORT не выбирала текст в выключенных слоях
#74
Barti


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


Добрый день! В этом посте http://forum.dwg.ru/showpost.php?p=244237&postcount=7 выложен распрекрасный скрипт coort.
Дело в том, что для оформления разных листов чертежа пришлось дважды нумеровать одни и те же точки (то есть на одном листе - одна нумерация, на другом - другая). Соответственно у каждой точки стоит по два номера (один на одном слое, другой на другом). Я думал с помощью coorta для каждого листа экспортировать координаты с соответствующими номерами. Так вопрос такой - не знаете ли вы можно ли что-то сделать, чтобы coort не выбирал текст с выключенных слоев? то есть чтобы можно было выключить к примеру первый слой с нумерацией и COORT выбирал бы текст только со включенного,то есть второго. Заморозка слоя не помогает.
Barti вне форума  
 
Непрочитано 18.03.2014, 13:25
#75
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Barti, Обновил EcoorE до r8. Теперь тексты для Coort с блокированных слоев не выбираются
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 14.04.2014, 13:10
#76
Gurikin


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


Уважаемые знатоки, всем доброго времени суток. Может кто-нибудь помочь разобраться с кодом. Лисп по команде EcoorNP вполне устраивает, только хотелось бы дополнить эту команду возможность добавлять в текстовый файл семантические коды точек (0- рельеф, 2 - откос и т.д.). Предполагается указывать код в ответ на запрос, при выборе полилиний из которых выцепляются точки. Очень слабо разбираюсь в Lisp. Помогите пожалуйста. Понимаю, что нужно добавить команды в функцию vva-export-point. По-моему сюда:
Код:
[Выделить все]
 (foreach ln ptLst
           (write-line
             (strcat (if (numberp Npt)
                       (strcat (itoa Npt) pat)
                       ""
                     ) ;_ end of if
                     (car ln)
                     pat
                     (cadr ln)
                     (if (= 3 (length ln))
                       (strcat pat (nth 2 ln))
                     ) ;_ end of if
             ) ;_ end of strcat
а также возможно в функцию vva-get-final-points-list.
Только вот как это сделать не понимаю - lisp для меня сложноват. Если вдруг скинете код, то по возможности объясните, какие команды добавились и что они выполняют, ибо хочется разобраться на будущее.
Исходник прилагаю:
Код:
[Выделить все]
 ;;;;-------------------------------------------------------------------------------
;;;; Program Name: ECoor.lsp [Extraction Coordinates]
;;;; Created By:   Vladimir Azarko (VVA) (Email: [email protected])
;;;; Posted http://www.cadtutor.net/forum/showthread.php?t=31653
;;;; Date Created: I do not remember when the beginnings
;;;; Function:     Export coordinates with some options
;;; Commands:
;;;           COOR  - export coordinates
;;;           COORN - export coordinates with numbering
;;;                   Numbers of points are drawn by the text on the current layer,
;;;                   the current style, current height (TEXTSIZE)
;;;           COORNP - CoorNP-Coordinates + Numbers + Points. Draw points with current value of PDMODE and PDSIZE 
;;;           COORT - export of coordinates with numbering where number considers the text nearest to a point
;;;;-------------------------------------------------------------------------------
;;;; Revision History
;;;; Rev  By     Date    Description
;;;;-------------------------------------------------------------------------------
;;;; 1    VVA   9-02-2009  Has started to put things in order
;;;; 2    VVA   15-05-2010 Add Elevation as Z coordinates from export of polyline

(vl-load-com)

;;; =============== COMMAND SECTION START ==================

(defun c:COOR ( / ptLst)
  (vl-load-com)
  (if (setq ptLst (vva-get-final-points-list))
    (vva-export-point ptLst nil nil)
    )
  (princ)
  )
;|=============== Êîìàíäà COORN ===============================================

EN:
   Export of coordinates of the specified points, the chosen objects: points, blocks, polylines, splines in a text file, Excel With numbers.
   Text file — txt, or csv. A rounding off of coordinates according to current adjustments of a command _UNITS (LUPREC !!!)
   And make P
RUS:
Ýêñïîðò êîîðäèíàò óêàçàííûõ òî÷åê, âûáðàííûõ îáúåêòîâ: òî÷åê, áëîêîâ, ïîëèëèíèé, ñïëàéíîâ â òåêñòîâûé ôàéë, åêñåë ñ ïðîñòàíîâêîé íîìåðîâ
Òåêñòîâûé ôàéë — ëèáî txt, ëèáî csv.
Íîìåðà òî÷åê îòðèñîâûâàþòñÿ òåêñòîì íà òåêóùåì ñëîå, òåêóùèì ñòèëåì, òåêóùåé âûñîòîé
Îêðóãëåíèå êîîðäèíàò â ñîîòâåòñòâèè ñ òåêóùèìè íàñòðîéêàìè êîìàíäû _UNITS (ïåðåìåííàÿ LUPREC !!!)

|;

(defun c:COORN ( / ptLst)
  (vl-load-com)
  (if (setq ptLst (vva-get-final-points-list))
    (vva-export-point ptLst t nil)
    )
  (princ)
  )
(defun c:COORNP ( / ptLst)
  (vl-load-com)
  (if (setq ptLst (vva-get-final-points-list))
    (vva-export-point ptLst t t)
    )
  (princ)
  )
(defun c:COORT( /  ptLst objSet lw buf pat isRus oFlag sFlag txtList filPath cFile)
    (vl-load-com)
(setq isRus (= (getvar "SysCodePage") "ANSI_1251"))
(if (setq ptLst (vva-get-final-points-list))
  (progn
    (setq objSet(ssget "_X" (list '(0 . "*TEXT")(cons 410 (getvar "CTAB")))))
    (setq lw (vl-remove-if 'listp(mapcar 'cadr(ssnamex objSet))))
    (setq lw (mapcar '(lambda(x)(setq x (entget x))(list (cdr(assoc 10 x))(cdr(assoc 1 x)))) lw))
    (foreach pt ptlst
      (setq pt (trans pt 1 0))
      (setq buf (mapcar '(lambda(x)(list (distance pt (car x))(cadr x))) lw))
      (setq pat (car buf))
      (foreach dst buf (if (< (car dst) (car pat))(setq pat dst)))
      (setq txtList (cons (cadr pat) txtList))
      )
    (setq txtList (reverse txtList))
    (princ "\n+++++++ Coordinates list +++++++\n")
    (setq buf
    (mapcar '(lambda (x y)
               (princ (strcat "\n" y "  "
                              (rtos (car x))
                              ","
                              (rtos (cadr x))
                              (if (= 3 (length x))
                                (strcat "," (rtos (nth 2 x)))
                                ""
                              ) ;_ end of if
                      ) ;_ end of strcat
               ) ;_ end of princ
              (list y (rtos (car x))(rtos (cadr x))
                              (if (= 3 (length x))(rtos (nth 2 x))) ;_ end of if
                      )
             ) ;_ end of lambda
            ptLst txtList
    );_ end mapcar
          )
    (princ "\n\n+++++++++ End of list +++++++++")
  (initget
    "Ôàéë Excel Íå Text Excel Not _Text Excel Not Text Excel Not"
  ) ;_ end of initget
  (setq sFlag
         (getkword
           (if IsRus
             "\nÑîõðàíèòü êîîðäèíàòû â [Ôàéë txt èëè csv/Excel/Íå ñîõðàíÿòü] <Ôàéë> : "
             "\nSave coordinates to [Txt or csv file/Excel/Not save] <Text> : "
           ) ;_ end of if
         ) ;_ end of getkword
  ) ;_ end of setq
    (if (null sFlag)
      (setq sFlag "Text")
    ) ;_ end of if
    (cond ((and (= "Text" sFlag)
              (setq filPath
                     (getfiled (if IsRus
                                 "Ñîõðàíåíèå êîîðäèíàò â òåêñòîâûé èëè csv ôàéë"
                                 "Save Coordinates to Text or CSV File"
                               ) ;_ end of if
                               "Coordinates.csv"
                               "csv;txt"
                               17
                     ) ;_ end of getfiled
              ) ;_ end of setq
         ) ;_ end of and
         (if (= (strcase (vl-filename-extension filPath)) ".CSV")
           (setq pat ";")
           (setq pat "      ")
         ) ;_ end of if
         (if (or (not (findfile filPath))
                 (and  (findfile filPath)
                       (VL-FILE-SYSTIME filPath)
                       )
                 )
           (progn
         (setq cFile (open filPath "w"))
         (foreach ln buf
             (write-line
               (apply 'strcat
               (append (list(car ln))
                       (mapcar '(lambda(x)(strcat "," x))
                               (cdr ln)
                               )
                       )
                 )     
               cFile
             ) ;_ end of write-line
           )
         (close cFile)
         (initget "Yes No")
         (setq oFlag (getkword (if IsRus
                                 "\nÎòêðûòü ôàéë? [Yes/No] <No> : "
                                 "\nOpen text file? [Yes/No] <No> : "
                               ) ;_ end of if
                     ) ;_ end of getkword
         ) ;_ end of setq
         (if (= oFlag "Yes")
           ;;; (startapp "notepad.exe" filPath)
           (vva-xopen filPath)
         ) ;_ end of if
         )
           (alert (strcat (if IsRus "Íåâîçìîæíî îòêðûòü " "Do not open") "\n" filPath))
           )
        )
                                               ; end condition #1
          ((= "Excel" sFlag)
           (xls buf
                (if IsRus
                  '("Íîìåð òî÷êè" "X" "Y" "Z")
                  '("Number" "X" "Y" "Z")
                  )
                nil
                "COORT"
           ) ;_ end of xls
          )                                       ; end condition #2
          (t nil)
    ) ;_ end of cond
  ) ;_ end of progn
) ;_ end of if
 (princ))

;;; =============== COMMAND SECTION END ==================

;;; ==================== Helper function Start ===========================
;|================== XLS ========================================
*  published http://www.autocad.ru/cgi-bin/f1/board.cgi?t=31371zf
               http://forum.dwg.ru/showthread.php?t=20509
* Purpose: Export of the list of data Data-list in Excell
*             It is exported to a new leaf of the current book.
              If the book is not present, it is created
* Arguments:
              Data-list — The list of lists of data (LIST)
                            ((Value1 Value2 ... VlalueN)(Value1 Value2 ... VlalueN)...)
                            Each list of a kind (Value1 Value2... VlalueN) enters the name in
                            a separate line in corresponding columns (Value1-A Value2-B and .ò.ä.)
                  header —  The list (LIST) headings or nil a kind (" Signature A " " Signature B "...)
                            If header nil, is accepted ("X" "Y" "Z")
                 Colhide —  The list of alphabetic names of columns to hide or nil — to not hide ("A" "C" "D") — to hide columns A, C, D
                 Name_list — The name of a new leaf of the active book or nil — is not present
* Return: nil
* Usage
(xls '((1.1 1.2 1.3 1.4)(2.1 2.2 2.3 2.4)(3.1 3.2 3.3 3.4)) '("Col1" "Col2" "Col3"  "Col4") '("B") "test")   |;


;|================== XLS ========================================
* Îïóáëèêîâàíî http://www.autocad.ru/cgi-bin/f1/board.cgi?t=19833nl&page=2
               http://forum.dwg.ru/showthread.php?t=20509
               http://www.autocad.ru/cgi-bin/f1/board.cgi?t=31596eW
* Àâòîð: Âëàäèìèð Àçàðêî aka VVA
* Íàçíà÷åíèå: Ïå÷àòü ñïèñêà äàííûõ Data-list â Excell
*             Äëÿ âûâîäà ñîçäàåòñÿ íîâàÿ êíèãà
              Âûâîä îñóùåñòâëÿåòñÿ â ïåðâîì ëèñòå
* Àðãóìåíòû:
              Data-list — ñïèñîê ñïèñêîâ äàííûõ (LIST) âèäà
                            ((Value1 Value2 ... VlalueN)(Value1 Value2 ... VlalueN)...)
                            Êàæäûé ñïèñîê âèäà (Value1 Value2 ... VlalueN) çàïèñûâàåòñÿ
                            â îòäåëüíóþ ñòðîêó â ñîîòâåòñòâóþùèå ñòîëáöû (Value1-A Value2-B è .ò.ä.)
                  header —  ñïèñîê (LIST) çàãîëîâêîâ èëè nil âèäà ("Ïîäïèñü A" "Ïîäïèñü B" ...)
                            Åñëè header nil, ïðèíèìàåòñÿ ("X" "Y" "Z")
                 Colhide —  ñïèñîê áóêâåííûõ íàçâàíèé ñòîáëöîâ äëÿ ñêðûòèÿ èëè nil — íå ñêðûâàòü
                            ("A" "C" "D") — ñêðûòü ñòîëáöû A, C, D
                 Name_list — èìÿ íîâîãî ëèñòà àêòèâíîé êíèãè èëè nil — íîâàÿ êíèãà
* Âîçâðàò: nil
* TIPS!!! : Ïðè ïåðåäà÷è ôóíêöèè xls ÷èñëîâûõ âåùåñòâåííûõ äàííûõ íåò íåîáõîäèìîñòè ïðîâåðÿòü òåêóùèé ñèñòåìíûé
            ðàçäåëèòåëü öåëîé è äðîáíîé ÷àñòè ("HKEY_CURRENT_USER\\Control Panel\\International" "sDecimal")
            Ôóíêöèåé íà âðåìÿ âûâîäà îòêëþ÷àåòñÿ èñïîëüçîâàíèå â Excele ñèñòåìíîãî ðàçäåëèòåëÿ, ðàçäåëèòåëåì
            öåëîé è äðîáíîé ÷àñòè óñòàíàâëèâàåòñÿ òî÷êà. Ïîñëå çàâåðøåíèÿ ô-öèè âñå âîññòàíàâëèâàåòñÿ.
Ïðèìåð âûçîâà
(xls '((1.1 1.2 1.3 1.4)(2.1 2.2 2.3 2.4)(3.1 3.2 3.3 3.4)) '("Ñòîëáåö1" "Ñòîëáåö2" "Ñòîëáåö3" "Ñòîëáåö4") '("B"))|;
(vl-load-com)
(defun xls ( Data-list header Colhide Name_list / *aplexcel* *books-colection* Currsep
*excell-cells* *new-book* *sheet#1* *sheet-collection* col iz_listo row cell cols)
(defun Letter (N / Res TMP)(setq Res "")(while (> N 0)(setq TMP (rem N 26)
  TMP (if (zerop TMP)(setq N (1- N) TMP 26) TMP)
  Res (strcat (chr (+ 64 TMP)) Res)  N   (/ N 26))) Res)
(if (null Name_list)(setq Name_list ""))
  (setq  *AplExcel*     (vlax-get-or-create-object "Excel.Application"))
  (if (setq *New-Book*  (vlax-get-property *AplExcel* "ActiveWorkbook"))
    (setq *Books-Colection*  (vlax-get-property *AplExcel* "Workbooks")
          *Sheet-Collection* (vlax-get-property *New-Book* "Sheets")
               *Sheet#1*     (vlax-invoke-method *Sheet-Collection* "Add"))
(setq *Books-Colection*  (vlax-get-property *AplExcel* "Workbooks")
              *New-Book*     (vlax-invoke-method *Books-Colection* "Add")
          *Sheet-Collection* (vlax-get-property *New-Book* "Sheets")
               *Sheet#1*     (vlax-get-property *Sheet-Collection* "Item" 1)))
(setq *excell-cells*     (vlax-get-property *Sheet#1* "Cells"))
(setq Name_list (if (= Name_list "")
                  (vl-filename-base(getvar "DWGNAME"))
                  (strcat (vl-filename-base(getvar "DWGNAME")) "&" Name_list))
   col 0 cols nil)
(if (> (strlen Name_list) 26)
(setq Name_list (strcat (substr Name_list 1 10) "..." (substr Name_list (- (strlen Name_list) 13) 14))))
(vlax-for sh *Sheet-Collection* (setq cols (cons (strcase(vlax-get-property sh 'Name)) cols)))
(setq row Name_list)
(while (member (strcase row) cols)(setq row (strcat Name_list " (" (itoa(setq col (1+ col)))")")))
(setq Name_list row)
(vlax-put-property *Sheet#1* 'Name Name_list)
(setq Currsep (vlax-get-property *AplExcel* "UseSystemSeparators"))
(vlax-put-property *AplExcel* "UseSystemSeparators" :vlax-false) ;_íå èñïîëüçîâàòü ñèñòåìíûå óñòàíîâêè
(vlax-put-property *AplExcel* "DecimalSeparator" ".")            ;_ðàçäåëèòåëü äðîáíîé è öåëîé ÷àñòè
(vlax-put-property *AplExcel* "ThousandsSeparator" " ")          ;_ðàçäåëèòåëü òûñÿ÷åé
(vla-put-visible *AplExcel* :vlax-true)(setq row 1 col 1)
(if (null header)(setq header '("X" "Y" "Z")))
(repeat (length header)(vlax-put-property *excell-cells* "Item" row col
(vl-princ-to-string (nth (1- col) header)))(setq col (1+ col)))(setq  row 2 col 1)
(repeat (length Data-list)(setq iz_listo (car Data-list))(repeat (length iz_listo)
(vlax-put-property *excell-cells* "Item" row col (vl-princ-to-string (car iz_listo)))
(setq iz_listo (cdr iz_listo) col (1+ col)))(setq Data-list (cdr Data-list))(setq col 1 row (1+ row)))
(setq col (1+(length header)) row (1+ row))
(setq cell (vlax-variant-value (vlax-invoke-method *Sheet#1* "Evaluate"
    (strcat "A1:" (letter col)(itoa row))))) ;_ end of setq
(setq cols (vlax-get-property cell  'Columns))
(vlax-invoke-method cols 'Autofit)
(vlax-release-object cols)(vlax-release-object cell)
(foreach item ColHide (if (numberp item)(setq item (letter item)))
(setq cell (vlax-variant-value (vlax-invoke-method *Sheet#1* "Evaluate"
    (strcat item "1:" item "1"))))
(setq cols (vlax-get-property cell  'Columns))
(vlax-put-property cols 'hidden 1)
(vlax-release-object cols)(vlax-release-object cell))
(vlax-put-property *AplExcel* "UseSystemSeparators" Currsep)
(mapcar 'vlax-release-object (list *excell-cells* *Sheet#1* *Sheet-Collection* *New-Book* *Books-Colection*
*AplExcel*))(setq *AplExcel* nil)(gc)(gc)(princ))
(defun group-by-num (lst num / ls ret)(if (= (rem (length lst) num ) 0)(progn (setq ls nil)
  (repeat (/ (length lst) num)(repeat num (setq ls(cons (car lst) ls)lst (cdr lst)))
  (setq ret (append ret (list (reverse ls))) ls nil)))) ret)
(defun PtCollect(SelSet)(mapcar 'cdr (mapcar '(lambda(x)(assoc 10 x))(mapcar 'entget
(vl-remove-if 'listp(mapcar 'cadr(ssnamex SelSet))))))); end of PtCollect
(defun PLCollect(SelSet / ret tmp)
(foreach lw (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp(mapcar 'cadr(ssnamex SelSet))))
  (cond ((wcmatch (vla-get-ObjectName lw) "*Polyline")
	 (setq tmp (group-by-num (vlax-get lw 'Coordinates)
		     (if (=(vla-get-ObjectName lw) "AcDbPolyline") 2 3)))
	 (if (vlax-property-available-p lw 'Elevation)
         (setq tmp(mapcar '(lambda(x)(list (car x)(cadr x)(vla-get-elevation lw))) tmp)))
	 (setq ret (append ret tmp)))
       ((=(vla-get-ObjectName lw) "AcDbSpline")(setq ret (append ret (group-by-num
         (vlax-safearray->list(vlax-variant-value (vla-get-controlpoints lw)))  3))))
      (t nil))
  
  )
  
  ret)
;;;Îòðèñîâêà òåêñòà
;;; txt - òåêñò
;;; pnt - òî÷êà îòðèñîâêè â ÏÑÊ
;;; heigtht - âûñîòà
;;; rotation - óãîë ïîâîðîòà
;;;justification - èëè nil
;;;Âîçâðàùàåò èìÿ ïðèìèòèâà
(defun vva-text-draw (txt pnt height rotation justification)
   (if (null pnt)(command "_.-TEXT" "" txt)
   (if (= (cdr (assoc 40 (tblsearch "STYLE" (getvar "TEXTSTYLE"))))
    0.0
       ) ;_ end of =
     (progn
     ;; íóëåâàÿ âûñîòà òåêñòà
       (if justification
   (command "_.-TEXT" "_J" justification "_none" pnt height rotation txt)
   (command "_.-TEXT" "_none" pnt height rotation txt)
       ) ;_ end of if
     ) ;_ end of progn
     (progn
       ;; ôèêñèðîâàíííàÿ âûñîòà
       (if justification
   (command "_.-TEXT" "_J" justification "_none" pnt rotation txt)
   (command "_.-TEXT" "_none" pnt rotation txt)
       ) ;_ end of if
     ) ;_ end of progn
   ) ;_ end of if
     )
  (entlast)
)
(defun vva-get-final-points-list ( / isRus  curPt ptLst objSet  )
  (setq isRus(= (getvar "SysCodePage") "ANSI_1251"))
  (if(not ptcol:mode)(setq ptcol:mode "Pick"))
  (initget "Óêàçàòü Òî÷êà Áëîêè Ïîëèëèíèÿ Pick pOints Blocks poLyline _Pick pOints Blocks poLyline Pick pOints Blocks poLyline")
(setq oldMode ptcol:mode ptcol:mode
(getkword (if IsRus (strcat "\nÂûáåðèòå ðåæèì [Óêàçàòü/Òî÷êà/Áëîêè/Ïîëèëèíèÿ èëè ñïëàéí] <"
(cadr (assoc ptcol:mode '(("Pick" "Óêàçàòü")("pOints" "Óêàçàòü")("Blocks" "Áëîêè")("poLyline" "Ïîëèëèíèÿ")))) ">: ")
        (strcat "\nSpecify mode [Pick/pOints/Blocks/poLyline or spline] <"ptcol:mode">: "))) ptLst nil)
(if(null ptcol:mode)(setq ptcol:mode oldMode))
(cond ((= "Pick" ptcol:mode)(setq curPt T)
       (while curPt (setq curPt(getpoint (if IsRus
         "\nÓêàæèòå òî÷êó èëè Enter çàâåðøåíèÿ > " "\nPick point or Enter to continue > ")))
  (if curPt (setq ptLst(append ptLst(list (trans curPt 1 0))))))); end condition #1
      ((= "pOints" ptcol:mode)(if (not(setq objSet(ssget "_I" '((0 . "POINT")))))(progn
         (if IsRus (princ "\nÂûáåðèòå òî÷êè è íàæìèòå Enter ")(princ "\nSelect points and press Enter "))
   (setq objSet(ssget '((0 . "POINT"))))))(if objSet (setq ptLst(PtCollect objSet)))); end condition #2
      ((= "Blocks" ptcol:mode)(if (not(setq objSet(ssget "_I" '((0 . "INSERT")))))(progn
        (if IsRus(princ "\nÂûáåðèòå áëîêè è íàæìèòå Enter ")(princ "\nSelect blocks and press Enter "))
     (setq objSet(ssget '((0 . "INSERT"))))))(if objSet (setq ptLst(PtCollect objSet)))); end condition #3
      ((= "poLyline" ptcol:mode)(if (not(setq objSet(ssget "_I" '((0 . "*POLYLINE,SPLINE")))))(progn
        (if IsRus(princ "\nÂûáåðèòå ïîëèëèíèè è íàæìèòå Enter  ")(princ "\nSelect polyline and press Enter "))
     (setq objSet(ssget '((0 . "*POLYLINE,SPLINE"))))))(if objSet (setq ptLst(PLCollect objSet)))); end condition #4
); end cond
(if ptLst (progn (princ "\n+++++++ Coordinates list +++++++\n")(setq ptLst (mapcar '(lambda(x)(trans x 0 1)) ptLst))
(mapcar '(lambda(x)(princ(strcat "\n"(rtos(car x))","(rtos(cadr x))
(if(= 3(length x))(strcat ","(rtos(nth 2 x))) "")))) ptLst); end mapcar
(princ "\n\n+++++++++ End of list +++++++++")
            )
  )
 ptLst
  )
(defun vva-xopen (name / di na sh) 
;; http://www.theswamp.org/index.php?topic=29548.0 
;;;Usage 
;;;(setq my_file (vva-xopen "c:/test.txt")) 
;;;(setq my_file (vva-xopen "c:/test.avi")) 
;;;(setq my_file (vva-xopen "c:/test.3gp")) 

  (and   (setq name (findfile name)) 
   (setq sh (vlax-create-object "Shell.Application")) 
   (setq di (vlax-invoke sh 'Namespace (vl-filename-directory name))) 
   (setq na (vlax-invoke di 'parsename (strcat (vl-filename-base name) (vl-filename-extension name)))) 
   (vlax-invoke-method na 'invokeverbex "open") 
  ) 
  (vlax-release-object sh) 
  na 
)

(defun vva-export-point (ptlst isNum isPoint / Npt IsRus sFlag oFlag Step pat)
  ;;; ptLst - points list
  ;;; isNum - t - numerate nil -not
  ;;; isPoint - t - create point nil - not
  (setq isRus (= (getvar "SysCodePage") "ANSI_1251"))
  (if isNum
  (setq Npt (getint (if IsRus
                      "\nÍà÷àëüíûé íîìåð òî÷êè <Íå ìàðêèðîâàòü> : "
                      "\nStart number of points <Don't mark> : "
                    ) ;_ end of if
            ) ;_ end of getint
  ) ;_ end of setq
    )
  (setq Step 1)
  (if (numberp Npt)
    (progn
      (princ (if IsRus
               "\nÏðèðàùåíèå ÷èñëà"
               "\nIncrement of number"
             ) ;_ end of if
      ) ;_ end of princ
      (if (not (numberp ptcol:Step))
        (setq ptcol:Step 1)
      ) ;_ end of if
      (princ " <")
      (princ ptcol:Step)
      (princ ">: ")
      (setq Step (getint))
      (if (null Step)
        (setq Step ptcol:Step)
      ) ;_ end of if
      (setq ptcol:Step Step)
    ) ;_ end of progn
  ) ;_ end of if
  (initget
    "Ôàéë Excel Íå Text Excel Not _Text Excel Not Text Excel Not"
  ) ;_ end of initget
  (setq sFlag
         (getkword
           (if IsRus
             "\nÑîõðàíèòü êîîðäèíàòû â [Ôàéë txt èëè csv/Excel/Íå ñîõðàíÿòü] <Ôàéë> : "
             "\nSave coordinates to [Txt or csv file/Excel/Not save] <Text> : "
           ) ;_ end of if
         ) ;_ end of getkword
  ) ;_ end of setq
  (if (null sFlag)
    (setq sFlag "Text")
  ) ;_ end of if
  (setq oFlag Npt)
  (if (numberp Npt)
    (foreach ln ptlst
      (vva-text-draw ;_Îòðèñîâêà òåêñòà
        (itoa Npt) ;_Íîìåð òî÷êè
        (polar ln (/ pi 4) 1.) ;_Êîîðäèíàòû íà 1 åä ïî óãëîì 45 ãðàäóñîâ
        (getvar "TEXTSIZE") ;_ Òåêóùåé âûñîòîé òåêñòà
        0 ;_Óãîë ïîâîðîòà
        nil
      ) ;_ end of vva-text-draw
      (if isPoint (entmakex (list (cons 0 "POINT") (cons 10 (trans ln 1 0)))))
      ;;_Make POINT
      (setq Npt (+ Npt Step))
    ) ;_ end of foreach
  ) ;_ end of if
  (setq Npt oFlag)
  (setq ptLst (mapcar '(lambda (x) (mapcar 'rtos x)) ptlst))
  (cond ((and (= "Text" sFlag)
              (setq filPath
                     (getfiled (if IsRus
                                 "Ñîõðàíåíèå êîîðäèíàò â òåêñòîâûé èëè csv ôàéë"
                                 "Save Coordinates to Text or CSV File"
                               ) ;_ end of if
                               "Coordinates.csv"
                               "csv;txt"
                               1
                     ) ;_ end of getfiled
              ) ;_ end of setq
         ) ;_ end of and
         (if (= (strcase (vl-filename-extension filPath)) ".CSV")
           (setq pat ";")
           (setq pat "      ")
         ) ;_ end of if
         (if (or (not (findfile filPath))
                 (and  (findfile filPath)
                       (VL-FILE-SYSTIME filPath)
                       )
                 )
           (progn
         (setq cFile (open filPath "w"))
         (foreach ln ptLst
           (write-line
             (strcat (if (numberp Npt)
                       (strcat (itoa Npt) pat)
                       ""
                     ) ;_ end of if
                     (car ln)
                     pat
                     (cadr ln)
                     (if (= 3 (length ln))
                       (strcat pat (nth 2 ln))
                     ) ;_ end of if
             ) ;_ end of strcat
             cFile
           ) ;_ end of write-line
           (if (numberp Npt)
             (setq Npt (+ Npt Step))
           ) ;_ end of if
         ) ;_ end of foreach
         (close cFile)
         (initget "Yes No")
         (setq oFlag (getkword (if IsRus
                                 "\nÎòêðûòü ôàéë? [Yes/No] <No> : "
                                 "\nOpen text file? [Yes/No] <No> : "
                               ) ;_ end of if
                     ) ;_ end of getkword
         ) ;_ end of setq
         (if (= oFlag "Yes")
           ;;; (startapp "notepad.exe" filPath)
           (vva-xopen filPath)
         ) ;_ end of if
         )
           (alert (strcat (if IsRus "Íåâîçìîæíî îòêðûòü " "Do not open") "\n" filPath))
           )
        )                                         ; end condition #1
        ((= "Excel" sFlag)
         (if (numberp Npt)
           (progn
             (setq Npt (- Npt Step))
             (setq ptlst
                    (mapcar '(lambda (x) (cons (setq Npt (+ Npt Step)) x))
                            ptlst
                    ) ;_ end of mapcar
             ) ;_ end of setq
             (xls ptlst '("N" "X" "Y" "Z") nil "COORN")
           ) ;_ end of progn
           (xls ptLst nil nil "COOR")
         ) ;_ end of if
        )                                         ; end condition #2
        (t nil)
  ) ;_ end of cond
  (princ)
) ;_ end of defun

;;; ==================== Helper function End   ===========================

(princ "\nFor use type Coor, CoorN, CoorNP or CoorT in command line ")
(princ)
Gurikin вне форума  
 
Непрочитано 06.05.2014, 12:57
1 | #77
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


По просьбе отсюда в EcoorE rev.9 добавлены настройки округления координат и возможность экспортировать координаты в виде XYZ и YXZ. Обновил #7
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 06.07.2015, 10:14
#78
lara

инженер-конструктор, инженер генплана
 
Регистрация: 18.06.2007
Ставрополь
Сообщений: 79
<phrase 1=


Программа PtManager 2.4
При импорте точек из файла *.txt, они вставляются в мировую систему координат, хотя на панели инструментов у меня установлена именованная (моя) система.
Пробовала в разных файлах, результат тот же, как исправить ситуацию?

Последний раз редактировалось lara, 06.07.2015 в 10:21.
lara вне форума  
 
Непрочитано 06.07.2015, 11:23
#79
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


lara,
1. Правило хорошего тона подразумевают, что система координат той местности, где вы работаете совпадает с мировой системой координат Автокада. Читать здесь, здесь и здесь. Поэтому лучше изменить свой стиль работы
2. Обратиться к автору
3. Попробовать другую программу Импорт координат из текстовых файлов форматов txt, sdr, csv и других в AutoCAD или отсюда Import coordinates from a text file txt (sdr csv) in AutoCAD
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 06.07.2015 в 13:54.
VVA вне форума  
 
Непрочитано 06.07.2015, 13:25
#80
lara

инженер-конструктор, инженер генплана
 
Регистрация: 18.06.2007
Ставрополь
Сообщений: 79
<phrase 1=


Спасибо за помощь, очень приятно и полезно.
У меня начальные знания по ПСК, буду разбираться.
По поводу программы "Импорт координат ...AutoCAD 2.10", была я до этого на сайте Геодезист, т.к. регистрация требуется, я не смогла скачать. Теперь попробую.
Не так быстро, но после разбора, отпишусь что и как.
lara вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Экспорт координат выбранных точек в *.txt

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экспорт координат из dxf в txt eilukha Вертикальные решения на базе AutoCAD 14 26.04.2008 21:53
Нумерация точек на плане и вывод их координат в полярной системе kukuikar Программирование 1 17.02.2008 11:15
Получение текстового массива координат точек. Камыч AutoCAD 5 30.07.2007 12:28
Помощь по Лире Серега М Лира / Лира-САПР 52 28.05.2007 02:47
простановка реальных ординатных размеров (координат точек) AnnaT AutoCAD 7 15.06.2005 17:56