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

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

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

Ответ
Поиск в этой теме
Непрочитано 14.05.2008, 16:06 #1
Экспорт координат выбранных точек в *.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> Если требуются еще исходные данные - готов в найкротчайшие сроки предоставить их.
Просмотров: 245404
 
Непрочитано 14.05.2008, 17:49
#2
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Ну тебе прямой наводкой сюда:
"Снять" координаты с поворотных точек
Там есть COOR - координаты в txt, csv, exel
и COORN - тоже с нумерацией
Все это и еще больше лежит в #7
PS (шепотом) Express покупать не нужно, он входит в стандартную поставку
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 10.06.2010 в 09:55. Причина: Навел порядок
VVA вне форума  
 
Автор темы   Непрочитано 14.05.2008, 18:05
#3
slan.ru


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


Уважаемый, VVA, там я был.. Как говориться по усам текло - в рот не попало. Тяжко для начала. Два очень навороченныхъ LISP'а. Хочу разобраться с работой такого LISP с самых низов.

Вот, что я нашел во всемирной паутине:
Код:
[Выделить все]
;;; CDF - строки ограниченные запятыми
  (defun cdf-point (pt)
    (strcat (car pt) ", " (cadr pt) ", " (caddr pt)))
  ;;; SDF - ограниченные прбелами,
  ;;; легко обратно считывается AutoCAD
  (defun sdf-point (pt)
    (strcat (car pt) " " (cadr pt) " " (caddr pt)))
  ;;; Преобразует SDF фомат обратно в точку
  (defun str->point (s)
    (eval (read (strcat "(" s ")"))))

  ;;; Записывает в XYZ файл все выбранные
  ;;; объекты (SDF см. ниже)
  (defun C:XYZ (/ ss fname f)
    (if (and (setq ss (ssget))
          (setq fname (getfiled "Запись XYZ в файл"
                  (strcat (getvar "DWGNAME") ".XYZ") "XYZ" 7))
          (setq f (open fname "w")))
      (foreach ele (sslist ss)          ; -> [20.4]
        (foreach pt (getpts ele)        ; -> [23.1]
          (write-line (cdf-point pt) f)
        )
      )
    )
    (if f (close f))
  )
  ;;; => <fname>.xyz
  ;;; 0.45, 12.3, -34.0


Для преобразования в ASC файл (SDF-формат) нужно заменить все XYZ на ASC, и cdf-точку(cdf-point) на sdf-точку(sdf-point). 
Другой способ: создавай PLINES используя ascii x,y файл, лучше всего преобразовать файл в некий скрипт похожий на: 

PLINE
300.2,10
350.4,10.4
Моглы бы Вы мне его по-подробнее расскоментировать?

P.S> На всякий случай: если нет времени, сил и желания отвечать каждому новичку, по-сути спрашивающих одно и то же - я все понимаю.
slan.ru вне форума  
 
Непрочитано 14.05.2008, 19:16
#4
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Подробности в коментариях
Код:
[Выделить все]
  ;;; Записывает в XYZ файл координаты вабранных точек в порядке выбора
  ;;; Формат файла
  ;;; Порядковый номер Координата_X Координата_Y Координата_Z
  (defun C:XYZ (/ ss fname f i en pt str)
    (if (and
          (setq ss (ssget '((0 . "POINT")))) ;_Выбираем объект Автокада ТОчка
          (setq fname (getfiled "Запись XYZ в файл"
                  (strcat (getvar "DWGNAME") ".XYZ") "XYZ" 7)) ;_Запрашиваем файл
          (setq f (open fname "w"))                           ;_Открываем для записи
          );_ and
      (progn
        (setq i 0)
        (while (< i (sslength ss))
          (setq en (ssname ss i)) ;_Берем из набора i-й злемент
          (setq pt (cdr(assoc 10 (entget en)))) ;_ТОчка вставки объекта Автокада "Точка" (point)
          (setq str             ;_Формbруем строку из номера, координат X Y и Z? разделенных пробелом
          (strcat (itoa (1+ i)) ;_Порядковый номер, начиная с 1, переводим в строку
                  " "           ;_Пробел - разделитель
                  (rtos
                  (car pt)      ;_Координата X
                  2 12)
                  " "           ;_Пробел - разделитель
                  (rtos
                  (cadr pt)      ;_Координата Y
                  2 12)
                  " "           ;_Пробел - разделитель
                  (rtos
                  (caddr pt)      ;_Координата Z
                  2 12)
                  )
                )
          (write-line str f) ;_Пишем строку str в файл f
          (setq i (1+ i))    ;_Наращиваем счетчик
          )
    (if f (close f)) ;_Закрывем файл
        )
      )
  )
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 14.05.2008, 19:43
#5
slan.ru


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


Спасибо большое, уважаемый VVA! Дали пищу для ума. Хватит на пару дней поразбираться.

По сути, когда писал первое сообщение - надеялся в конце концов создать лисп, похожий на Ваш COORN, только с несколько обратной задачей по нумерации точек. Т.е. брать их названия с чертежа, в идеале, если они есть. Я видел тут нечто подобное. Посмотрите, пожалуйста файл в аттаче и по-возможности подскажите - реально ли задуманное мною?

P.S> За файл COORN, IMHO, Вас пользователи на руках должны носить, в ряды которых я готов вступить при первой же возможности!
Вложения
Тип файла: dwg
DWG 2004
KOORD.dwg (118.5 Кб, 30064 просмотров)
slan.ru вне форума  
 
Непрочитано 14.05.2008, 22:45
#6
Sync02


 
Регистрация: 07.12.2007
Брест
Сообщений: 243


Попробуй на VBA (как для меня то попроще чем лисп)
Вот для твоего файла примерчик
Вложения
Тип файла: dvb pt2txt.dvb (48.0 Кб, 2371 просмотров)

Последний раз редактировалось Sync02, 15.05.2008 в 09:15. Причина: Заменил файл (что-то с вечера намудрил)
Sync02 вне форума  
 
Непрочитано 16.05.2008, 13:34
9 | #7
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


slan.ru Пробуй COORT для твоего примера
Описание
Экспорт координат указанных точек, выбранных объектов: точек, блоков, полилиний, сплайнов в текстовый файл, ексел с простановкой номеров
Текстовый файл — либо txt, либо csv.
Округление координат в соответствии с текущими настройками команды _UNITS (переменная LUPREC !!!)
!!!!!!!!!!!!!
Набрать в командной строке LUPREC и установить нужную точность округления.
!!!!!!!!!!

Определены 3 команды
COOR - экспорт координат
COORN -экспорт координат с нумерацией
COORT -экспорт координат с нумерацией, где номером считается ближайший к точке текст

*** Добавлено 26 августа
Из темы Lisp: coordinates of points to excel sheet (+point number)
Модифицированны и оптимизированы команды COOR, COORN, COORT, добавлена команда COORNP
COORNP - COORNP + Point - отрисовка точек в узлах полилинии. Файл Ecoor.zip
*** Добавлено 15 мая 2010
В архиве Ecoor.zip изменен принцип получения координат LW полилинии. Теперь координаты полилинии получаются как X,Y,Elevation (уровень)
================== 2012.03.28 ===========================
EcoorE тоже что Ecoor, но убраны русские сообщения в связи с проблемами при загрузке у китайских товарищей
На cadtutor'e эта тема получила дальнейшее развитие и в результате имеем
COOR - экспорт координат
COORN -экспорт координат с нумерацией
COORT -экспорт координат с нумерацией, где номером считается ближайший к точке текст
CoorNP-Координаты+Нумерация+Точки. Точки рисуются текущими режимами PDMODE and PDSIZE
COORNB - Координаты+Блок (в блок входят точка и атрибут с номером)
Так же добавлены настройки:
Суффикс, префикс, шаг инкремента, смещения, высоты текста, и символа-разделителя.
Если задать символ-разделитель, то можно получить список координат и отделить одну полилинию от другой. Что-то вида
Цитата:
-6473.5946,-556.051,0
-6472.4554,-554.5869,0
-6470.0142,-555.1834,0
X
-6477.8259,-552.3095,0
-6475.439,-550.52,0
-6472.7266,-552.1468,0
X
В rev. 9 добавлены настройки для округления при экспорте и возможность экспортировать координаты в виде XYZ и YXZ. Читать или смотреть

rev.11 - Добавлена обработка MPolygon. В настройках добавлена опция при запросе разделителя координат опция ADD Number. В этом случае координаты получают префикс (начиная с 1) номера полилинии, сплайна, мполигона (если их выбрано несколько)
!!!Другие решения для экспорта: Ссылки здесь
Миниатюры
Нажмите на изображение для увеличения
Название: setting.png
Просмотров: 52834
Размер:	15.4 Кб
ID:	173479  
Вложения
Тип файла: rar coord.rar (12.1 Кб, 13762 просмотров)
Тип файла: zip ECoor.zip (6.7 Кб, 6028 просмотров)
Тип файла: zip ECoorE rev11c.zip (13.5 Кб, 2180 просмотров)
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 10.05.2019 в 23:42. Причина: Обработка внешнего и внутреннего контура mpolygon
VVA вне форума  
 
Автор темы   Непрочитано 21.05.2008, 10:28
#8
slan.ru


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


Большое человеческое СПАСИБО! Обязательно протестииую и возьму на вооружение. О результатах теста отпишусь.
slan.ru вне форума  
 
Автор темы   Непрочитано 02.06.2008, 11:19
#9
slan.ru


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


VVA, протестировал. Все работает на отлично. Это именно то что и нужно было. Еще раз спасибо.
slan.ru вне форума  
 
Непрочитано 05.10.2008, 07:32
#10
reyt-z


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


VVA, пытаюсь немного модернизировать ваш лисп, дабы приспособить его для снятия координат точек и передачи их в ANSYS в виде *.mac файлов. Конечный формат файла с координатами сменить удалось. Но никак не пойму, что нужно исправить и дописать, чтобы в этом файле перед номерами точек стояло два символа: k,
reyt-z вне форума  
 
Непрочитано 05.10.2008, 12:33
#11
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Я так понимаю, что модифицируешь COORN
Тогда что-то типа такого (выделено красным)
Код:
[Выделить все]
(defun c:COORN1 (/ cFile curPt filPath objSet oFlag oldMode ptLst sFlag lw isRus Npt)
(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)
(foreach lw (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp(mapcar 'cadr(ssnamex SelSet))))
  (cond ((wcmatch (vla-get-ObjectName lw) "*Polyline")
  (setq ret (append ret (group-by-num (vlax-get lw 'Coordinates)
  (if (=(vla-get-ObjectName lw) "AcDbPolyline") 2 3)))))
       ((=(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)
  (vl-load-com)(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 +++++++++")
(setq Npt (getint (if IsRus "\nНачальный номер точки <Не маркировать> : " "\nStart number of points <Don't mark> : " )))
(initget "Файл Excel Не Text Excel Not _Text Excel Not Text Excel Not")
(setq sFlag (getkword (if IsRus "\nСохранить координаты в [Файл/Excel/Не сохранять] <Файл> : "
"\nSave coordinates to [Text file/Excel/Not save] <Text> : ")))
(if(null sFlag)(setq sFlag "Text"))(setq oFlag Npt)(if (numberp Npt)
(foreach ln ptlst
  (text-draw                 ;_Отрисовка текста
    (itoa Npt)               ;_Номер точки
    (polar ln (/ pi 4) 1.)   ;_Координаты на 1 ед по углом 45 градусов
    (getvar "TEXTSIZE")      ;_ Текущей высотой текста
    0                        ;_Угол поворота
    nil
    )
  (setq Npt (1+ Npt))))
(setq Npt oFlag)    
(setq ptLst (mapcar '(lambda(x)(mapcar 'rtos x)) ptlst))
(cond ((and (= "Text" sFlag)(setq filPath
       (getfiled (if IsRus "Сохранение координат в текстовый файл" "Save Coordinates to Text File") "Coordinates.txt" "txt;csv" 33)))
       (setq cFile(open filPath "w"))(foreach ln ptLst (write-line (strcat "k," (if (numberp Npt)(strcat (itoa Npt) ",") "")(car ln)","(cadr ln)
         (if(= 3(length ln))(strcat ","(nth 2 ln)))) cFile)(if (numberp Npt)(setq Npt (1+ Npt))))(close cFile)(initget "Yes No")
       (setq oFlag(getkword (if IsRus "\nОткрыть файл? [Yes/No] <No> : " "\nOpen text file? [Yes/No] <No> : " )))
       (if(= oFlag "Yes")(startapp "notepad.exe" filPath))); end condition #1
     ((= "Excel" sFlag)(if (numberp Npt)(progn
      (setq ptlst (mapcar '(lambda(x)(cons (1- (setq Npt (1+ Npt))) x)) ptlst))
      (xls ptlst '("N" "X" "Y" "Z") nil "COORN"))
      (xls ptLst nil nil "COOR"))); end condition #2
     (t nil)))) (princ)); end of c:COOR
Остальные ф-ции в #7
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 05.10.2008, 17:00
#12
reyt-z


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


VVA, спасибо большое Все работает
reyt-z вне форума  
 
Непрочитано 18.06.2009, 08:03
#13
Disney

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


Владимир, огромное спасибо!
Я понимаю, что прошло уже больше полу года, и возвращаться к старым программам нет большого желания, но хотел бы вас попросить, если возможно, добавить в вашу программу следующие возможности:
1) К списку типов объектов: круг и текст,
2) Для 2D полилинии, в качестве Z, брать её уровень,
3) По запросу, в качестве Z, брать значение из близлежащего текста.
4) При маркировке, использовать префикс в номере точки.
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Непрочитано 18.06.2009, 11:18 Экспорт координат выбранных точек в txt
#14
liberakatnem

Rossiya
 
Регистрация: 02.06.2009
Rossiya
Сообщений: 2


Это просто делается в "Инструментарии для MapInfo". Там можно выгрузить координаты селектированных объектов в TXT, XLS и Word. Сами координаты могут быть как в прямоугольных координатах, так и в виде длин и дирекционных углов или измеренных углов.
liberakatnem вне форума  
 
Непрочитано 07.07.2009, 00:06
#15
Кулик Алексей aka kpblc
Moderator

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


liberakatnem, ты тему внимательно прочитал? По-моему, нет.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 27.12.2009, 00:51
#16
bogdanov

Инженер
 
Регистрация: 27.12.2009
Ростов-на-Дону
Сообщений: 3


Здравствуйте VVA,подскажите пожалуйста, а можно ли в этом лиспе:
1. вместо простановки точек ставить круги диаметром 2 мм и от них делать выноску с номером?
2. при экспорте координат поменять Х и У местами,а также выводить их не только во внешние файлы, а в таблицу AutoCad?
bogdanov вне форума  
 
Непрочитано 27.12.2009, 01:19
#17
Кулик Алексей aka kpblc
Moderator

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


Если будет образец, то можно будет и поковыряться...
1. Обязательна ли выноска (LEADER) или можно просто вставлять текст?
2. Стиль табличный нужен, как минимум.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 27.12.2009, 01:47
#18
bogdanov

Инженер
 
Регистрация: 27.12.2009
Ростов-на-Дону
Сообщений: 3


Вот он пример правда он немного кривой,т.к. делался вручную в максимально сжатые сроки...Выноска обязательна...требуется оформлением((И еще такой вопросик,можно ли проставлять эту нумерацию например, слева от линии или справа,для того чтобы потом вручную не относить каждый номер ?
Вложения
Тип файла: dwg
DWG 2007
Пример.dwg (235.8 Кб, 28240 просмотров)
bogdanov вне форума  
 
Непрочитано 27.12.2009, 03:20
#19
Кулик Алексей aka kpblc
Moderator

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


Слушай, да у тебя там следы Civil'a и ADT. Может, действительно попробовать Civil'овские инструменты (если, конечно, Civil вообще имеется)?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 27.12.2009, 12:32
#20
bogdanov

Инженер
 
Регистрация: 27.12.2009
Ростов-на-Дону
Сообщений: 3


Civil имеется но как в нем работать у нас к сожалению никто не знает....((
не знаю что такое ADT... а делался этот чертеж с применением ПК Развязка
bogdanov вне форума  
 
Непрочитано 14.01.2010, 18:23
#21
Агент СмиТ

Gti
 
Регистрация: 14.01.2010
МО Железнодорожный
Сообщений: 121


Уважаемый VVA! Большое вам спасибо за COOR, всё работает! Если вам не трудно не могли бы вы подкорректировать эту функцию, т.к. при работе с двухмерными чертежами она возвращает и координату Z, которая хоть и равна нулю, но при последующем построении полилинии вставкой массива координат из буфера обмена, останавливает выполнение команды после первой же точки!
Агент СмиТ вне форума  
 
Непрочитано 03.03.2010, 18:40
1 | #22
Disney

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


Мои программы по этой теме:
Экспорт координат выбранных объектов из AutoCAD в *.txt
Импорт координат из текстового файла txt (sdr csv) в AutoCAD
__________________
Почему все вдруг становятся умными, когда уже не надо?

Последний раз редактировалось Disney, 05.11.2013 в 09:11.
Disney вне форума  
 
Непрочитано 10.03.2010, 11:22
#23
Агент СмиТ

Gti
 
Регистрация: 14.01.2010
МО Железнодорожный
Сообщений: 121


Здравствуйте уважаемый Disney! Протестировал Вашу программу, очень порадовало наличие функции подписей на чертеже! Однако есть и несколько просьб по доработке программы

При экспорте координат точек в файл желательно:
1. при необходимости отключать номера точек;
2. отключать координату Z.

По возможности: упростить имя команды запуска программы.

Заранее спасибо!
Агент СмиТ вне форума  
 
Непрочитано 10.03.2010, 14:53
#24
Disney

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


Цитата:
Сообщение от Агент СмиТ Посмотреть сообщение
При экспорте координат точек в файл желательно:
1. при необходимости отключать номера точек;
2. отключать координату Z.
Вот как раз за Номер, Z и Комментарий я и боролся, если они тебе не нужны то вот, даже более навороченная программа Point Manager, (для скачивания нужна регистрация, прикрепляю последнею версию программы)

Цитата:
Сообщение от Агент СмиТ Посмотреть сообщение
По возможности: упростить имя команды запуска программы.
Чем проще имя команды, тем больше вероятности, что оно совпадёт с другой , при серьёзном обновлении программы добавлю альтернативное короткое название, а вообще удобнее повесить команду на кнопку, вот макрос, причём файл должен лежать в путях поиска AutoCAD, ну или на худой конец в автозагрузке
Код:
[Выделить все]
^C^C^P(if (not C:geo_export)(load "Geo_export_3_03_10"));^Pgeo_export;
Вложения
Тип файла: lsp PtManager V2.4.lsp (68.2 Кб, 866 просмотров)
__________________
Почему все вдруг становятся умными, когда уже не надо?

Последний раз редактировалось Disney, 14.06.2010 в 16:55. Причина: Обновление Point Manager
Disney вне форума  
 
Непрочитано 10.06.2010, 00:34
#25
vladimir1963


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


Цитата:
Сообщение от Disney Посмотреть сообщение
Написал программу по экспорту координат(как геодезических так и математических) из AutoCADа
Disney, подскажите пожалуйста, как ее запустить?
vladimir1963 вне форума  
 
Непрочитано 10.06.2010, 09:28
#26
Агент СмиТ

Gti
 
Регистрация: 14.01.2010
МО Железнодорожный
Сообщений: 121


To vladimir1963

Цитата:
Сообщение от vladimir1963 Посмотреть сообщение
Disney, подскажите пожалуйста, как ее запустить?
Смотрите пост #2 в этой теме-всё подробно изложено!
Агент СмиТ вне форума  
 
Непрочитано 10.06.2010, 09:39
#27
zaabifff

проектировщик
 
Регистрация: 15.05.2009
Воронеж
Сообщений: 81


Особенно, если учесть, что темы с поста #2 уже не существует.
zaabifff вне форума  
 
Непрочитано 10.06.2010, 09:50
#28
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от zaabifff Посмотреть сообщение
Особенно, если учесть, что темы с поста #2 уже не существует.
Во #2 посте 2 ссылки. Та, которой не существует повторена в виде кода и улучшена в #7
Вторая ниже, в моей подписи. Именно ее и имели ввиду
------------------------------------------------------|
------------------------------------------------------|
------------------------------------------------------V Вот эта
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 10.06.2010, 09:56
#29
Агент СмиТ

Gti
 
Регистрация: 14.01.2010
МО Железнодорожный
Сообщений: 121


Цитата:
Сообщение от zaabifff Посмотреть сообщение
Особенно, если учесть, что темы с поста #2 уже не существует.
Иногда получение новых знаний требует приложения определенных усилий. Речь шла о второй ссылке.
Агент СмиТ вне форума  
 
Непрочитано 10.06.2010, 10:06
1 | #30
Disney

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


Цитата:
Сообщение от vladimir1963 Посмотреть сообщение
Disney, подскажите пожалуйста, как ее запустить?
Increase Size Decrease Size Нажмите для просмотра
http://www.youtube.com/watch?v=9v2x_cH7Dl4
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Непрочитано 13.06.2010, 09:34
#31
vladimir1963


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


Доброго времени суток, Disney. Спасибо за видеотутор. Протестировал програмку - понравилась(очень просто пользоваться). Хотелось бы еще вывод координат на чертеж автоматически. Можно конечно просто скопировать с блокнота координаты, да вставить в отметку или описание на чертеже, но хотелось бы автоматом. Возможно ли это?
vladimir1963 вне форума  
 
Непрочитано 14.06.2010, 07:27
1 | #32
Disney

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


Цитата:
Сообщение от vladimir1963 Посмотреть сообщение
вывод координат на чертеж автоматически
Increase Size Decrease Size Нажмите для просмотра
http://www.youtube.com/watch?v=F7qf3R01kqo
  1. Если блоки с полями создавать не умеешь, можешь взять готовый, например тут или посмотреть пример создания аналогичного здесь
  2. Программу PoinManager возьми из #24
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Непрочитано 14.06.2010, 12:04
#33
vladimir1963


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


Еще раз хочу сказать Вам спасибо Disney, за видеотутор, все отлично получается.
vladimir1963 вне форума  
 
Непрочитано 24.12.2010, 03:05
#34
MANUL

Авиация
 
Регистрация: 27.11.2010
Санкт-Петербург
Сообщений: 20
<phrase 1= Отправить сообщение для MANUL с помощью Skype™


Добрый день Товарищи.
Впоисках проги, наносящей на чертёж точки и подписывающей их номера обрадовался ветке.
Но рано обрадовался...
Цитата:
Сообщение от Агент СмиТ Посмотреть сообщение
Здравствуйте уважаемый Disney! Протестировал Вашу программу, очень порадовало наличие функции подписей на чертеже!
Это как? Я вот пробовал такое проделать с точками из текстового файла exp_1. (вложение).
Geo_Export - не наносит точки на чертёж и не подписывает, а я надеялся что рядом с точкой пропишет атрибут из 4го столбца (её название, или номер).
Так прога даже не чертит точки.

Попробовал с другой программой: IMPORTXYZ (см.вложение). Тоже ни хрена не чертит точки, вместо этого ругается:
Команда: IMPORTXYZ
Displaying data... Done.
Opening TXT file...
Determining delimiter... Done.
Counting line numbers... Done.
Extracting coords... Done.
Closed TXT file.
Displaying data... Done.
Saving variables from dialog box... Done.
Inserting block # 1Неизвестная команда "-INSERT". Для вызова справки нажмите
F1.
1.000000
Неизвестная команда "IMPORTXYZ". Для вызова справки нажмите F1.
Неизвестная команда "IMPORTXYZ". Для вызова справки нажмите F1.
0
; ошибка: неверный тип аргумента: lentityp nil

PtManager V2.4 тоже ничего не делает.

Помогите пожалуйста разобраться в чём дело.
Вложения
Тип файла: rar exp_1.rar (133 байт, 391 просмотров)
Тип файла: rar IMPORTXYZ.rar (12.0 Кб, 320 просмотров)
MANUL вне форума  
 
Непрочитано 24.12.2010, 07:57
#35
hwd

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


Цитата:
Сообщение от MANUL Посмотреть сообщение
Впоисках проги, наносящей на чертёж точки и подписывающей их номера обрадовался ветке.
Здесь я рассматривал ряд задач, одной из них была ваша (как мне кажется). Вот ещё что-то с точками...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 30.04.2013 в 08:30. Причина: обновил устаревшие ссылки.
hwd вне форума  
 
Непрочитано 24.12.2010, 11:51
#36
Disney

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


MANUL, пока посмотри тут
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Непрочитано 24.12.2010, 12:09
#37
Олег (jr.)

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


Цитата:
Сообщение от MANUL Посмотреть сообщение
Добрый день Товарищи.
Впоисках проги, наносящей на чертёж точки и подписывающей их номера обрадовался ветке.
Но рано обрадовался...


Это как? Я вот пробовал такое проделать с точками из текстового файла exp_1. (вложение).
Geo_Export - не наносит точки на чертёж и не подписывает, а я надеялся что рядом с точкой пропишет атрибут из 4го столбца (её название, или номер).
Так прога даже не чертит точки.

Попробовал с другой программой: IMPORTXYZ (см.вложение). Тоже ни хрена не чертит точки, вместо этого ругается:
Команда: IMPORTXYZ
Displaying data... Done.
Opening TXT file...
Determining delimiter... Done.
Counting line numbers... Done.
Extracting coords... Done.
Closed TXT file.
Displaying data... Done.
Saving variables from dialog box... Done.
Inserting block # 1Неизвестная команда "-INSERT". Для вызова справки нажмите
F1.
1.000000
Неизвестная команда "IMPORTXYZ". Для вызова справки нажмите F1.
Неизвестная команда "IMPORTXYZ". Для вызова справки нажмите F1.
0
; ошибка: неверный тип аргумента: lentityp nil

PtManager V2.4 тоже ничего не делает.

Помогите пожалуйста разобраться в чём дело.
Пробуем
Код:
[Выделить все]
(defun C:PTCAD	(/ fname fd hgt p1 p2 strline strlist strtext)

  (defun emake-pt  (pt)
    (entmake
      (list
	(cons 0 "POINT")
	(cons 100 "AcDbEntity")
	(cons 100 "AcDbPoint")
	(cons 10 pt)
	(cons 8 "0")
	)
      )
    )

  (defun emake-mtext  (p1 p2 txt)
    (entmake
      (list
	(cons 0 "MTEXT")
	(cons 100 "AcDbEntity")
	(cons 100 "AcDbMText")	
	(cons 10 p1)
	(cons 40 (getvar "TEXTSIZE"))
	(cons 41 (abs (- (car p2) (car p1))))
	(cons 7 (getvar "TEXTSTYLE"))
	(cons 1 txt)
	(cons 71 4)
	(cons 72 5)
	(cons 73 1)

	)
      )
    )


  (defun str2lst  (str sep / pos)
    (if	(setq pos (vl-string-search sep str))
      (cons (substr str 1 pos)
	    (str2lst
	      (substr str (+ (strlen sep) pos 1))
	      sep
	      )
	    )
      (list str)
      )
    )
  (if (and (setq fname (getfiled "Select a Points Data File"
				 (getvar "dwgprefix")
				 "txt"
				 4)
		 )
	   (setq fd (open fname "r")
		 )
	   )
    (progn

      (while (setq strline (read-line fd))
	(setq strlist (cons strline strlist))
	)

      (if fd
	(close fd))
      (setq strlist
	     (mapcar '(lambda (x) (str2lst x " ")) strlist)
	    )
      (if (/= (getvar "textsize") 2.5)		  ;<--change text size
	(progn
	  (setvar "textsize" 2.5)		  ;<--change text size
	  (setq hgt (getvar "textsize")))
	(setq hgt (getvar "textsize")))
      (setvar "PDSIZE" 2.5)
      (setvar "PDMODe" 34)
      (foreach item  strlist

	(emake-pt
	  (setq p1 (mapcar 'atof (list (car item) (cadr item) (caddr item)))))
	(emake-mtext
	  (polar p1 0 (* hgt 2))
	  (polar p1 (/ pi 4) (* hgt 10))
	  (last item))
	)
      )
    )
  (princ)
  )
(prompt "\n|t***\tProgram loaded")
(C:PTCAD)
(prin1)
Олег (jr.) вне форума  
 
Непрочитано 04.01.2011, 09:39
#38
MANUL

Авиация
 
Регистрация: 27.11.2010
Санкт-Петербург
Сообщений: 20
<phrase 1= Отправить сообщение для MANUL с помощью Skype™


Олег (jr.) код работает, вставляет точки и подписывает их.
Но есть проблема: нанесение точек на чертёж в соответсвии с какой то другой системой координат. Не в той что я выставил. ((( (см. вложение)
Это как то можно исправить?

(exp_1 - данные о точках)
Миниатюры
Нажмите на изображение для увеличения
Название: ошибка в СК.jpg
Просмотров: 559
Размер:	37.7 Кб
ID:	51005  
Вложения
Тип файла: rar exp_1.rar (116 байт, 218 просмотров)
MANUL вне форума  
 
Непрочитано 05.01.2011, 03:00
#39
Олег (jr.)

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


Цитата:
Сообщение от MANUL Посмотреть сообщение
Олег (jr.) код работает, вставляет точки и подписывает их.
Но есть проблема: нанесение точек на чертёж в соответсвии с какой то другой системой координат. Не в той что я выставил. ((( (см. вложение)
Это как то можно исправить?

(exp_1 - данные о точках)
Завтра освобожусь и попытаюсь переделать
(Посмотри функцию trans в справке)
Олег (jr.) вне форума  
 
Непрочитано 05.01.2011, 22:33
#40
Disney

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


MANUL, попробуй такую программу
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Непрочитано 06.01.2011, 02:34
#41
G-RAV

Геодезист
 
Регистрация: 16.08.2009
г.Новосибирск
Сообщений: 86
<phrase 1=


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

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


Цитата:
Сообщение от G-RAV Посмотреть сообщение
Цитата:
Сообщение от Disney Посмотреть сообщение
3) По запросу, в качестве Z, брать значение из близлежащего текста.
Есть ли решение по 3-му пункту? Очень было бы полезно, потому как "вертикалка" обычно "прилетает", состоящая не из блоков, а из круг/точка и текст/мтекст...
Посмотри темы Создание точек с высотой из окружностей и близлежащего текста и Перенос из содержания текста в координату z рядом стоящей точки
__________________
Почему все вдруг становятся умными, когда уже не надо?

Последний раз редактировалось Disney, 10.01.2011 в 20:35.
Disney вне форума  
 
Непрочитано 10.01.2011, 06:54
#43
MANUL

Авиация
 
Регистрация: 27.11.2010
Санкт-Петербург
Сообщений: 20
<phrase 1= Отправить сообщение для MANUL с помощью Skype™


о программе вставке и подписывания: Олегу и Диснею.
Однако. Щас буим пробовать.
Команда trans не прошла. PTCAD вставляет отлично только в первоначальной системе. Очень подозрительно однокос. Неужели я нечто не верно делаю?
во всяком случае попробую сейчас Geo_Import_v1_3.VLX.
Если инет будет работать с ближайшие часы то отпишусь.

Последний раз редактировалось MANUL, 10.01.2011 в 13:04.
MANUL вне форума  
 
Непрочитано 10.01.2011, 20:34
#44
Олег (jr.)

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


Цитата:
Сообщение от MANUL Посмотреть сообщение
о программе вставке и подписывания: Олегу и Диснею.
Однако. Щас буим пробовать.
Команда trans не прошла. PTCAD вставляет отлично только в первоначальной системе. Очень подозрительно однокос. Неужели я нечто не верно делаю?
во всяком случае попробую сейчас Geo_Import_v1_3.VLX.
Если инет будет работать с ближайшие часы то отпишусь.
Пробуй еще раз
Код:
[Выделить все]
(defun C:PTCAD	(/ fname fd hgt p1 p2 strline strlist strtext)

  (defun emake-pt  (pt)
    (entmake
      (list
	(cons 0 "POINT")
	(cons 100 "AcDbEntity")
	(cons 100 "AcDbPoint")
	(cons 10 (trans pt 1 0));<--WCS
	(cons 8 "0")
	)
      )
    )

  (defun emake-mtext  (p1 p2 txt)
    (entmake
      (list
	(cons 0 "MTEXT")
	(cons 100 "AcDbEntity")
	(cons 100 "AcDbMText")	
	(cons 10 p1 )
	(cons 40 (getvar "TEXTSIZE"))
	(cons 41 (abs (- (car p2) (car p1))))
	(cons 7 (getvar "TEXTSTYLE"))
	(cons 1 txt)
	(cons 71 4)
	(cons 72 5)
	(cons 73 1)

	)
      )
    )


  (defun str2lst  (str sep / pos)
    (if	(setq pos (vl-string-search sep str))
      (cons (substr str 1 pos)
	    (str2lst
	      (substr str (+ (strlen sep) pos 1))
	      sep
	      )
	    )
      (list str)
      )
    )
  (if (and (setq fname (getfiled "Select a Points Data File"
				 (getvar "dwgprefix")
				 "txt"
				 4)
		 )
	   (setq fd (open fname "r")
		 )
	   )
    (progn

      (while (setq strline (read-line fd))
	(setq strlist (cons strline strlist))
	)

      (if fd
	(close fd))
      (setq strlist
	     (mapcar '(lambda (x) (str2lst x " ")) strlist)
	    )
      (if (/= (getvar "textsize") 2.5)		  ;<--change text size
	(progn
	  (setvar "textsize" 2.5)		  ;<--change text size
	  (setq hgt (getvar "textsize")))
	(setq hgt (getvar "textsize")))
      (setvar "PDSIZE" 2.5)
      (setvar "PDMODe" 34)
      (foreach item  strlist

	(emake-pt (trans 
	  (setq p1 (mapcar 'atof (list (car item) (cadr item) (caddr item)))) 0 1));<--UCS
	(emake-mtext
	 (trans (trans (polar p1 0 (* hgt 2)) 1 0) 0 1);<--WCS
	  (trans(trans (polar p1 (/ pi 4) (* hgt 10)) 1 0)0 1);<--WCS
	  (last item))
	)
      (command "_.zoom" "_O" "_L" ""
	       "_.zoom" ".5x")
      )
    )
  (princ)
  )
(prompt "\n|t***\tProgram loaded")
(C:PTCAD)
(prin1)
Олег (jr.) вне форума  
 
Непрочитано 15.01.2011, 05:14
#45
MANUL

Авиация
 
Регистрация: 27.11.2010
Санкт-Петербург
Сообщений: 20
<phrase 1= Отправить сообщение для MANUL с помощью Skype™


Олег здравствуйте, я попробовал с новым кодом. Наконец то приехал в Питер и могу отписаться в срочном порядке.
Нет эффекта с новым кодом.
Делал так, раз уж загружен предидущий код (ваш пост ) под названием PTCAD то файл в новым кодом я назвал PTCADa. Но с таким названием он не хочет работать (неизвестная команда PTCADa, нажмите F1) поэтому я просто изменил содержимое файла на новый код.
Ничего: вставляет так же в соответсвии с СК у которой ось X направлена на восток.Подразумеваю что ось Х координат направлена на восток а ось У направлена на север. Наверно это исходная система координат. Но МОЯ ПОЛЬЗОВАТЕЛЬСКАЯ повёрнута на угол 181.67 градусов против часовой стрелки. По пользовательской не получится вставить?

Есть ещё вопросы. Но хотелось бы решить сначала этот.

Делюсь опытом. Пользовался программой Диснея http://geodesist.ru/forum/topic.php?...274#1295056274
Та же проблема СК. Отписался с вопросами.
Может дело в выставлении геоположения и направления на север? Подскажите пожалуйста.
Миниатюры
Нажмите на изображение для увеличения
Название: PTCADa problem.jpg
Просмотров: 275
Размер:	61.8 Кб
ID:	51647  
MANUL вне форума  
 
Непрочитано 15.01.2011, 13:19
#46
Disney

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


Цитата:
Сообщение от MANUL Посмотреть сообщение
Но МОЯ ПОЛЬЗОВАТЕЛЬСКАЯ повёрнута на угол 181.67 градусов против часовой стрелки
Дело в том что у тебя Map 3D, и я подозреваю там пользовательская СК, задаётся как-то иначе, чем в "голом" AutoCAD, и соответственно trans в неё не переводит. Попробуй вместо точек кружочки, их не надо trans-ить, они всегда создаются в текущей(пользовательской) СК
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Непрочитано 15.01.2011, 14:34
#47
Олег (jr.)

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


Цитата:
Сообщение от MANUL Посмотреть сообщение
Олег здравствуйте, я попробовал с новым кодом. Наконец то приехал в Питер и могу отписаться в срочном порядке.
Нет эффекта с новым кодом.
Делал так, раз уж загружен предидущий код (ваш пост ) под названием PTCAD то файл в новым кодом я назвал PTCADa. Но с таким названием он не хочет работать (неизвестная команда PTCADa, нажмите F1) поэтому я просто изменил содержимое файла на новый код.
Ничего: вставляет так же в соответсвии с СК у которой ось X направлена на восток.Подразумеваю что ось Х координат направлена на восток а ось У направлена на север. Наверно это исходная система координат. Но МОЯ ПОЛЬЗОВАТЕЛЬСКАЯ повёрнута на угол 181.67 градусов против часовой стрелки. По пользовательской не получится вставить?

Есть ещё вопросы. Но хотелось бы решить сначала этот.

Делюсь опытом. Пользовался программой Диснея http://geodesist.ru/forum/topic.php?...274#1295056274
Та же проблема СК. Отписался с вопросами.
Может дело в выставлении геоположения и направления на север? Подскажите пожалуйста.
Следующая попытка (вроде все учел)
у меня работает нормально при любых вариантах которые я использовал
(крутил все 3 оси в разные стороны)

Код:
[Выделить все]
(defun C:PTCAD	(/ *error* fname fd hgt p1 p2 strline strlist strtext)
  (defun *error* (msg)
    (or (= msg "Fuction cancelled")
        (princ (strcat "Error: " msg))
    )
    (command "_undo" "_end")
    (princ)
  )
  (defun emake-pt  (pt)
    (entmake
      (list
	(cons 0 "POINT")
	(cons 100 "AcDbEntity")
	(cons 100 "AcDbPoint")
	(cons 10 (trans pt 1 0));<--WCS
	(cons 8 "0")
	)
      )
    )

  (defun emake-mtext  (p1 p2 txt)
    (entmake
      (list
	(cons 0 "MTEXT")
	(cons 100 "AcDbEntity")
	(cons 100 "AcDbMText")	
	(cons 10 (trans p1 1 0) )
	(cons 40 (getvar "TEXTSIZE"))
	(cons 41 (abs (- (car p2) (car p1))))
	(cons 7 (getvar "TEXTSTYLE"))
	(cons 1 txt)
	(cons 71 4)
	(cons 72 5)
	(cons 73 1)

	)
      )
    )


  (defun str2lst  (str sep / pos)
    (if	(setq pos (vl-string-search sep str))
      (cons (substr str 1 pos)
	    (str2lst
	      (substr str (+ (strlen sep) pos 1))
	      sep
	      )
	    )
      (list str)
      )
    )
  (command "_undo" "_begin")
  (if (and (setq fname (getfiled "Select a Points Data File"
				 (getvar "dwgprefix")
				 "txt"
				 4)
		 )
	   (setq fd (open fname "r")
		 )
	   )
    (progn

      (while (setq strline (read-line fd))
	(setq strlist (cons strline strlist))
	)

      (if fd
	(close fd))
      (setq strlist
	     (mapcar '(lambda (x) (str2lst x " ")) strlist)
	    )
      (if (/= (getvar "textsize") 2.5)		  ;<--change text size
	(progn
	  (setvar "textsize" 2.5)		  ;<--change text size
	  (setq hgt (getvar "textsize")))
	(setq hgt (getvar "textsize")))
      (setvar "PDSIZE" 2.5)
      (setvar "PDMODe" 34)
      (foreach item  strlist

	(emake-pt (trans 
	  (trans (setq p1 (mapcar 'atof (list (car item) (cadr item) (caddr item)))) 1 0)0 1 t));<--WCS
	(emake-mtext
	 (trans (trans (polar p1 0 (* hgt 2)) 1 0) 0 1 t);<--WCS
	  (trans(trans (polar p1 (/ pi 4) (* hgt 10)) 1 0)0 1 t);<--WCS
	  (last item))
	)
      (command "_.zoom" "_O" "_L" ""
	       "_.zoom" ".5x")
      )
    )
  (princ)
  )
(prompt "\n\t***\tВведите: PTCAD для старта программы")

(prin1)
Олег (jr.) вне форума  
 
Непрочитано 17.01.2011, 01:21
#48
MANUL

Авиация
 
Регистрация: 27.11.2010
Санкт-Петербург
Сообщений: 20
<phrase 1= Отправить сообщение для MANUL с помощью Skype™


Олег, спасибо огромное. Теперь отметки точек отображаются в соответсвии с моей СК.

С вашего позволения к вам ещё один вопрос Вам:
Не сочтите за идиотизм, но нельзя ли сделать так чтобы нименование точк не накладывалось на саму отметку? (см.вложение: "indication problem")


Товарищи, общий вопрос:
Каким образом отслеживать ещё и географические коодинаты? При условии что положение геомаркера задано и и текущему чертежу вроде назначена СК: LL84 (см. вложение: "LL84 problem"). Шаблон: map2d.

Заранее благодарю за внимание и лично кто в Питере.
Миниатюры
Нажмите на изображение для увеличения
Название: indication problem.jpg
Просмотров: 233
Размер:	98.7 Кб
ID:	51723  Нажмите на изображение для увеличения
Название: LL84 problem.jpg
Просмотров: 233
Размер:	25.5 Кб
ID:	51724  
MANUL вне форума  
 
Непрочитано 17.01.2011, 07:03
#49
Disney

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


Цитата:
Сообщение от Олег (jr.) Посмотреть сообщение
Код:
[Выделить все]
(trans(trans point 1 0)0 1 t);<--WCS
Олег, объясни пожалуйста принцип этого "транс перетранс", в справке нашёл, что при t point рассматривается не как точка, а как координаты вектор перемещения. вроде всё чёрным по-русскому написано, но что-то не доходит, наверно я в школе уроки векторной алгебры прогулял...
Ну если мы вставляем в ПСК, то мне кажется, ещё стоит и вектор выдавливания DXF код 210, тоже trans-ить


Цитата:
Сообщение от MANUL Посмотреть сообщение
Каким образом отслеживать ещё и географические коодинаты?
Спроси у у пользователей Map в ветке Вертикальные решения на базе AutoCAD
А в голом AutoCAD, можно настроить географическое отображение координат(если предварительно установить ГЕОПОЛОЖЕНИЕ) в строке состояния см. вложение.

Соответственно вопрос знатокам: от куда и как можно выудить заданные параметры геоположения?
Вложения
Тип файла: flv Коорд.flv (833.6 Кб, 237 просмотров)
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Непрочитано 17.01.2011, 08:42
#50
hwd

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


Цитата:
Сообщение от MANUL Посмотреть сообщение
...
Не сочтите за идиотизм, но нельзя ли сделать так чтобы нименование точк не накладывалось на саму отметку? (см.вложение: "indication problem")...
можно. например так, как это показано здесь (использовать дин.блок).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 30.04.2013 в 08:41. Причина: исправлена устаревшая ссылка
hwd вне форума  
 
Непрочитано 01.02.2011, 01:45
#51
MANUL

Авиация
 
Регистрация: 27.11.2010
Санкт-Петербург
Сообщений: 20
<phrase 1= Отправить сообщение для MANUL с помощью Skype™


Ещё раз здравствуйте.
Дисней, спасибо за совет но я так и не понял как сдвинуть блок атрибута (ну чтобы надпись не на точке светилась). Если есть где понятнее то не будете ли вы так любезны кинуть ссылку на видео ролик?

Олег, спасибо за PTCAD. но оказалась проблема.
я применил прогу к старому файлу (прилагаю). В нм есть уже географическая привязка, так как точки импортированы из Аксесса.

Но при нанесении точек на слой "0" содержимое остальных слоёв не индицируется. И на оборот: если я покажу слой какой то на карте (например там есть нужный мне для работы waypoints) то воспользовавшись командой PTCAD я не увижу точек.
Не могли бы вы помочь в этом? В чём дело? Вашей программе не пофигу где работать, есть же система координат привязанная к одной точке на карте. Странно, с новым файлом работает однако. С этим нет.
Вложения
Тип файла: dwg
DWG 2010
project.dwg (1.49 Мб, 3790 просмотров)

Последний раз редактировалось MANUL, 01.02.2011 в 01:51.
MANUL вне форума  
 
Непрочитано 01.02.2011, 13:22
#52
Олег (jr.)

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


Цитата:
Сообщение от MANUL Посмотреть сообщение
Странно, с новым файлом работает однако. С этим нет.
У меня не открывается твой чертеж (имею только версию 2009)
С другой стороны не уверен что помогу, поскольку в геграфических не работал вовсе,
смогу помочь только в общих вопросах)
Но на всякий случай перегрузи на указанную версию...

Последний раз редактировалось Олег (jr.), 01.02.2011 в 17:39. Причина: не открыть документ
Олег (jr.) вне форума  
 
Непрочитано 02.02.2011, 01:27
#53
MANUL

Авиация
 
Регистрация: 27.11.2010
Санкт-Петербург
Сообщений: 20
<phrase 1= Отправить сообщение для MANUL с помощью Skype™


вот файл из архива. Содержание тоже самое
дал сохранить только в LT2007. Не было выбора МАПа 2009.
Вложения
Тип файла: dwg
DWG 2010
complex.dwg (1.66 Мб, 3769 просмотров)
MANUL вне форума  
 
Непрочитано 02.02.2011, 18:27
#54
Олег (jr.)

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


Цитата:
Сообщение от MANUL Посмотреть сообщение
вот файл из архива. Содержание тоже самое
дал сохранить только в LT2007. Не было выбора МАПа 2009.
Не могу открыть даже через конвертер DwgTrueView
Вот лог:


Conversion File Format: AutoCAD 2007/LT 2007 Drawing Format
Conversion package type: In-place (overwrite files)
Converted DWG files: 0
Recovered DWG files: 0
Conversion errors: 1


Conversion Errors
Unconverted files:
The files listed below could not be saved due to a sharing violation or disk write problem.
C:\...\Олег\...\DwgRu\complex.dwg
Олег (jr.) вне форума  
 
Непрочитано 02.02.2011, 18:50
#55
Елпанов Евгений

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


открыл файл в 2011 акаде и пересохранил в версии 2004.
Проверил в акаде 2008 - открывается...
Вложения
Тип файла: dwg
DWG 2004
complex.dwg (1.52 Мб, 3781 просмотров)
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Непрочитано 02.02.2011, 19:28
#56
Олег (jr.)

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


Спасибо


MANUL
Я тут нашел ссылку:
http://www.movable-type.co.uk/scripts/latlong.html
моих мозгов маловато чтобы тут помочь, тут спец знания
вопроса нужны
Так что извини

А на нужный слой можешь поменять в коде сам - ищи группы в
локальных функциях:
(cons 8 "0")
и замени на:
(cons 8 "waypoints") или добавляй туда имя слоя как аргумент

Последний раз редактировалось Олег (jr.), 02.02.2011 в 20:29.
Олег (jr.) вне форума  
 
Непрочитано 24.02.2011, 09:40
#57
isheedo


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


Цитата:
Сообщение от VVA Посмотреть сообщение
slan.ru Пробуй COORT для твоего примера
Описание
Экспорт координат указанных точек, выбранных объектов: точек, блоков, полилиний, сплайнов в текстовый файл, ексел с простановкой номеров
Текстовый файл — либо txt, либо csv.
Округление координат в соответствии с текущими настройками команды _UNITS (переменная LUPREC !!!)
!!!!!!!!!!!!!
Набрать в командной строке LUPREC и установить нужную точность округления.
!!!!!!!!!!

Определены 3 команды
COOR - экспорт координат
COORN -экспорт координат с нумерацией
COORT -экспорт координат с нумерацией, где номером считается ближайший к точке текст
*** Добавлено 26 августа
Из темы Lisp: coordinates of points to excel sheet (+point number)
Модифицированны и оптимизированы команды COOR, COORN, COORT, добавлена команда COORNP
COORNP - COORNP + Point - отрисовка точек в узлах полилинии. Файл Ecoor.zip
*** Добавлено 15 мая 2010
В архиве Ecoor.zip изменен принцип получения координат LW полилинии. Теперь координаты полилинии получаются как X,Y,Elevation (уровень)
Хотя предназначалось не для меня,но хотел бы поблагодарить. Сильно облегчило жизнь
isheedo вне форума  
 
Непрочитано 24.02.2011, 12:39
#58
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


isheedo, Наздоровье
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 17.03.2011, 09:05
#59
isheedo


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


2VVA
Если использовать команду coorn,то на чертеже проставляются номера точек,что чрезвычайно удобно. Нельзя ли добавить возможность помимо номеров точек отрисовывать окружность вокруг точки с задаваемым радиусом? В автолиспе не понимаю,но догадываюсь,что делается это несложно. Заранее спасибо
isheedo вне форума  
 
Непрочитано 17.03.2011, 11:07
#60
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


isheedo,
Цитата:
COORNP - COORNP + Point - отрисовка точек в узлах полилинии. Файл Ecoor.zip
Если для точки настроить PDMODE = 33 (круг) и соответственно установить нужный PDSIZE не подойдет?
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 18.03.2011 в 10:00. Причина: орфография
VVA вне форума  
 
Непрочитано 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,107


Чтобы отслеживать координаты в 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
С.-Петербург
Сообщений: 40,406


Строку (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,996


Цитата:
Сообщение от 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ä
Сообщений: 811


Цитата:
Сообщение от 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,996


Тема экспорта координат в последние пару дней получила бурное развитие на 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,996


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,996


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: azarko@yandex.ru)
;;;; 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,996


По просьбе отсюда в 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,996


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 вне форума  
 
Непрочитано 15.09.2015, 13:21
#81
config


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


Доброго времени суток! Уважаемые форумчане, подскажите, а как сделать так, чтобы координаты блоков экспортировались в "правильном" порядке и вообще правильно? Может быть какой-то косяк в моем чертеже? Спасибо.
Вложения
Тип файла: dwg
DWG 2007
Образец-1.dwg (503.9 Кб, 1455 просмотров)

Последний раз редактировалось config, 15.09.2015 в 13:31.
config вне форума  
 
Непрочитано 15.09.2015, 13:23
#82
Кулик Алексей aka kpblc
Moderator

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


Пять баллов! Что за "правильный" порядок? Что за чертеж? Сплошные загадки.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.09.2015, 13:32
#83
config


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


Offtop: Прошу прощения за невнимательность. Прикрепил
config вне форума  
 
Непрочитано 15.09.2015, 15:45
1 | #84
Кулик Алексей aka kpblc
Moderator

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


Первая часть вопроса: что есть "правильный" порядок? И ты вообще про какой код? Хоть бы ссылку показал
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.09.2015, 19:01
#85
config


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Первая часть вопроса: что есть "правильный" порядок?
В порядке нумерации атрибутов блока NOMER. А по поводу кода, разными программами пытался. Вот и задал в этой ветке вопрос, что возможно существует в "природе" программа по экспорту, в которой можно указать начальный блок точки, от которого будет производиться дальнейший отсчет. Или автор сможет внести такое дополнение, если это не очень трудно и затратно по времени.
config вне форума  
 
Непрочитано 15.09.2015, 19:15
1 | #86
engngr

сети
 
Регистрация: 03.11.2008
Московия*
Сообщений: 5,921


Так при dataextraction отсортировать по атрибуту? Пост-обработка в табличном процессоре?
engngr вне форума  
 
Непрочитано 15.09.2015, 20:20
1 | #87
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


при извлечении данных можно сразу отсортировать по столбцу.. правда.. из-за отсутствия лидирующих нулей в атрибуте Nomer порядок будет 1, 10, 11,...2..
Сергей812 вне форума  
 
Непрочитано 16.09.2015, 09:07
1 | #88
Кулик Алексей aka kpblc
Moderator

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


Тупо добавить еще один столбец в Excel, куда вколотить "=Число(A1)" или что-то подобное - не?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.10.2015, 20:05
#89
Berty002


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


Доброго времени суток. У меня вопрос: можно ли как то при помощи команды coorn экспортировать координаты в excel, так что бы программа разделяла координаты разных полилиний?
Berty002 вне форума  
 
Непрочитано 13.10.2015, 09:01
#90
Агент СмиТ

Gti
 
Регистрация: 14.01.2010
МО Железнодорожный
Сообщений: 121


Berty002 Для того, что бы отделить координаты одной полилинии от другой, необходимо после вызова команды выбрать пункт "settings", третьим пунктом которого и будет предложение задать символ для разделения списков координат.

VVA Опробовал работу coorn и coor из ECoorE rev10a, не удалось выполнить экспорт в эксель (пользуюсь ECoorE rev6, всё работает).
Очень понравилась возможность выбора округления и XYZ -> YXZ, т.к. постоянно приходилось менять столбцы вручную.

Код:
[Выделить все]
Команда: _coorn

Settings: Text offset=(0.5,0.5,0.0) Text heigth=2.5 Separate coordinates 
flag=<AAA> Coordinate type=YXZ Round=NOT
Specify mode [Pick/pOints/Blocks/Circle/poLyline or spline/Settings] 
<poLyline>: S

Type offset the text from the point <0.5,0.5,0.0> :

Type text height <2.5> :

Type flag, which separates the coordinates or press ENTER - none: AAA

Settings: Text offset=(0.5,0.5,0.0) Text heigth=2.5 Separate coordinates 
flag=<AAA> Coordinate type=YXZ Round=NOT
Specify mode [Pick/pOints/Blocks/Circle/poLyline or spline/Settings] 
<Settings>: L

Select polyline and press Enter
Выберите объекты: найдено: 1

Выберите объекты: найдено: 1, всего: 2

Выберите объекты:

+++++++ Coordinates list +++++++

139.92,156.73,0.00
251.88,234.70,0.00
428.77,109.27,0.00
AAA
138.47,102.98,0.00
250.42,180.95,0.00
427.32,55.52,0.00
AAA

+++++++++ End of list +++++++++
Type prefix:(If you want to delete prefix type ' ' (press SPACE key on 
keyboard) <t> :

Type suffix:(If you want to delete prefix type ' ' (press SPACE key on 
keyboard) <suff> :

Start number of points <7>: 1

Increment of number <1>:

Save coordinates (type=YXZ round=NOT) to [Text file/Csv file/Excel/Not 
save/Settings] <Excel> : E

Код:
[Выделить все]
Команда: _coor

Settings: Text offset=(0.5,0.5,0.0) Text heigth=2.5 Separate coordinates 
flag=<AAA> Coordinate type=YXZ Round=NOT
Specify mode [Pick/pOints/Blocks/Circle/poLyline or spline/Settings] 
<poLyline>: S

Type offset the text from the point <0.5,0.5,0.0> :

Type text height <2.5> :

Type flag, which separates the coordinates or press ENTER - none: AAA

Settings: Text offset=(0.5,0.5,0.0) Text heigth=2.5 Separate coordinates 
flag=<AAA> Coordinate type=YXZ Round=NOT
Specify mode [Pick/pOints/Blocks/Circle/poLyline or spline/Settings] 
<Settings>: L

Select polyline and press Enter
Выберите объекты: найдено: 1

Выберите объекты: найдено: 1, всего: 2

Выберите объекты:

+++++++ Coordinates list +++++++

139.92,156.73,0.00
251.88,234.70,0.00
428.77,109.27,0.00
AAA
138.47,102.98,0.00
250.42,180.95,0.00
427.32,55.52,0.00
AAA

+++++++++ End of list +++++++++
Save coordinates (type=YXZ round=NOT) to [Text file/Csv file/Excel/Not 
save/Settings] <Excel> : E
__________________
Каждая система стремится к равновесию.
Агент СмиТ вне форума  
 
Непрочитано 13.10.2015, 09:28
1 | #91
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Berty002, Можно. Coorn последней версии из архива ECoorE rev10a.zip
Добавлена опция Setting
Цитата:
Команда: coorn
Specify mode [Pick/pOints/Blocks/Circle/poLyline or spline/Settings]
<poLyline>: S
Type offset the text from the point <0.5,0.5,0.0> :
Type text height <1.5> :
Type flag, which separates the coordinates or press ENTER - none: ~
Результат
Цитата:
1 3285.23 1201.60 0.00
2 2876.38 1386.28 0.00
3 2656.23 1103.37 0.00
4 2498.98 1166.24 0.00
~
5 2070.47 1378.42 0.00
6 2373.18 1763.50 0.00
7 2844.93 1519.88 0.00
8 3045.42 1692.77 0.00
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 13.10.2015, 10:00
#92
Berty002


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


все с разделение заработало, но команда coorn почему-то не выставляет нумерацию на самом чертеже
Berty002 вне форума  
 
Непрочитано 13.10.2015, 16:04
#93
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Berty002, Только что проверил - выставляет.
1. Проверь, не отключен ли текущий слой
2. Выложи пример чертежа, где не выставляет
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 13.10.2015, 17:48
#94
Berty002


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


Уже разобрался. Спасибо огромное
Berty002 вне форума  
 
Непрочитано 14.10.2015, 22:32
#95
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от Агент СмиТ Посмотреть сообщение
VVA Опробовал работу coorn и coor из ECoorE rev10a, не удалось выполнить экспорт в эксель (пользуюсь ECoorE rev6, всё работает).
Дай больше информации:
- какую ошибку выдает
- версия/разрядность Автокада, версия/разрядность Winsows, версия MS Office
- ошибка постоянно, периодически. Если возможно, выложи пример.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 16.10.2015, 10:31
#96
Агент СмиТ

Gti
 
Регистрация: 14.01.2010
МО Железнодорожный
Сообщений: 121


VVA
  1. Ошибки не выдаёт никакой, листинг команд привёл в посте #90.
  2. Версия ОС - Win7x64 Домашняя базовая, Автокад 2011х64, MS Office 2010х64.
  3. Методом тыка в течении 15 минут нащупал, что экспорт срабатывает (txt и csv - диалог сохранения, Excel - создание листа с результатом) независимо от того, одна полилиния или две, но только при "пустом флаге" в настройках. Если в настройках задаю какой либо символ-разделитель, то программа доходит до команды на экспорт и далее ничего не происходит.
__________________
Каждая система стремится к равновесию.
Агент СмиТ вне форума  
 
Непрочитано 16.10.2015, 13:48
1 | #97
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от Агент СмиТ Посмотреть сообщение
но только при "пустом флаге" в настройках
Да, было такое при сортировке YXZ. Исправил, обновил #7
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 16.10.2015, 14:38
#98
Berty002


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


Всем привет. у меня такой вопрос: может ли лисп ECoorE rev10a или какая то альтернатива ему выводить координаты разделяя полилинии и нумеруя каждую из них?

1 1 xyz
1 2 xyz
1 3 xyz

2 3 xyz
2 4 xyz
и так далее
Berty002 вне форума  
 
Непрочитано 07.03.2016, 14:12
#99
subbotinPV

www.qualityengineering.ru
 
Регистрация: 24.02.2016
Подольск
Сообщений: 1


Доброго времени суток!

Вопрос к знатокам: возможно поправить функцию Coorn таким образом, чтобы помимо координат, в Excel выводились расстояния между характерными точками (длины отрезков)?

Формула теоремы Пифагора известна с девятого класса: |AB|² = (y2 - y1)² + (x2 - x1)² Приходится добавлять вручную ещё один столбец.

Теоретически, понимаю что это не трудно. Но, незнание lispa усложняет работу.
subbotinPV вне форума  
 
Непрочитано 13.03.2016, 15:43 Экспорт координат выбранных точек в txt
#100
sam_nesung


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


В DW6 нужного нет. А че такое DRKB?
sam_nesung вне форума  
 
Непрочитано 12.05.2016, 12:15
#101
Lafaet


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


Добрый день! На данном файле, мне необходимо поставить точки (чтоб их видно было кружочком или еще каким то образом) , подписать номер точки и получить каталог координат. С помощью функции COORNP я получила координаты узлов полилиний, с расстановкой точек и подписанием номеров, но там где полилинии имеют общую точку, координаты соответственно задвоились.
Вопрос:
1) Как убрать задвоение точек
2) Или как проставить сначала точки в узлах (не задвоеные в местах где полигоны имеют общую границу)
3) и как точки в узлах сделать объемыми

p/s. Четвертый день поисков по сайтам... не принес мне результатов
Вложения
Тип файла: dwg
DWG 2010
Отвод1.dwg (71.8 Кб, 43 просмотров)
Lafaet вне форума  
 
Непрочитано 12.05.2016, 13:08
1 | #102
engngr

сети
 
Регистрация: 03.11.2008
Московия*
Сообщений: 5,921


1 _overkill (expresstools?)
2 точка не может быть объёмной, точка - это точка.
engngr вне форума  
 
Непрочитано 12.05.2016, 13:42
#103
Lafaet


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


Цитата:
Сообщение от engngr Посмотреть сообщение
1 _overkill (expresstools?)
2 точка не может быть объёмной, точка - это точка.
попробовала, первая функция разбила мне часть объектов, удвоение где-то убралось, где то нет, это я ввела в командную строку _overkill, но желаемого результата я не получила
а про объемную точку, выразилась я не правильно....как обозначить ее кругом, со штриховкой или иным способом, чтоб ее было видно.
Lafaet вне форума  
 
Непрочитано 12.05.2016, 13:55
#104
engngr

сети
 
Регистрация: 03.11.2008
Московия*
Сообщений: 5,921


Цитата:
Сообщение от Lafaet Посмотреть сообщение
удвоение где-то убралось, где то нет, это я ввела в командную строку _overkill, но желаемого результата я не получила
У себя задвоения точек не нашел.
Цитата:
Сообщение от Lafaet Посмотреть сообщение
как обозначить ее кругом, со штриховкой или иным способом, чтоб ее было видно
В поиск. Например: http://forum.dwg.ru/showthread.php?t=36287
engngr вне форума  
 
Непрочитано 12.05.2016, 19:17
#105
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от Lafaet Посмотреть сообщение
1) Как убрать задвоение точек
По быстрому добавил удаление дублирующихся точек (см вложение)
Цитата:
Сообщение от Lafaet Посмотреть сообщение
как обозначить ее кругом, со штриховкой или иным способом, чтоб ее было видно
В дополнение к #104 - используй COORNB. Блок потом отредактируй по своему вкусу
Вложения
Тип файла: lsp ECoorE rev10c.LSP (52.8 Кб, 169 просмотров)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 10.06.2016, 12:35
#106
Jetpriest


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


Огромное спасибо за программу
Jetpriest вне форума  
 
Непрочитано 03.11.2016, 23:52
#107
MrBrown

ПенсионЭр
 
Регистрация: 26.06.2009
Сообщений: 361


Здравствуйте!
Я так понимаю, что макрос "COORT" экспортирует в таблицу в качестве номера/наименования точки ближайший текст/мтекст.
На перегруженных текстами (подписями, обозначениями и т.д.) чертежах ближайшим к точке может оказаться посторонний текст, что приведёт к экспорту в таблицу неправильного номера/наименования точки.
Можно ли включить ещё и функцию ручного выбора текста/мтекста рядом с точкой?
То есть, после приглашения ком. строки к выбору точек указываем курсором точку и текст, точку и текст...
Спасибо.
p.s. так как работаем "ручками", я назвал бы команду "COORH" - от "hands" или "COORM" - от "manual".

Последний раз редактировалось MrBrown, 04.11.2016 в 08:01.
MrBrown вне форума  
 
Непрочитано 04.11.2016, 16:09
#108
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


MrBrown, Команда COORT при поиске ближайшего текста игнорирует тексты на блокированных, выключенных или замороженных слоях (достаточно чего-то одного).
Отсюда алгоритм:
ручками отсортируй посторонний/непосторонний текст, разбросай по разным слоям, заблокируй (выключи, заморозь) лишнее и вызывай COORT
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 04.11.2016, 16:20
#109
MrBrown

ПенсионЭр
 
Регистрация: 26.06.2009
Сообщений: 361


VVA, благодарю за подсказку.
MrBrown вне форума  
 
Непрочитано 21.11.2016, 17:14
#110
SergeyP


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


Здравствуйте!
Спасибо за полезную программу!
Возник вопрос: строю полилинию (привязанную к геометрии на чертеже) состоящую из отрезков и дуг окружностей, затем сохраняю координаты вершин в файл который затем открываю в Matlab и восстанавливаю эту самую линию по координатам и тут возникает проблема, для восстановления дуги не достоточно двух координат вершин. Нужно знать координаты центра и радиус.
Как вариант в Matlab можно передать вместе с координатами вершин координаты средних точек и вычислить искомый центр и радиус.
Может есть другие способы? Можно ли извлечь помимо координат вершин еще какую то информацию о полилинии?
SergeyP вне форума  
 
Непрочитано 21.11.2016, 19:20
#111
trir


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


есть - парсить dxf
trir вне форума  
 
Непрочитано 21.11.2016, 20:04
#112
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от SergeyP Посмотреть сообщение
Можно ли извлечь помимо координат вершин еще какую то информацию о полилинии?
Можно. Для сегмента полилинии хранится его кривизна (Bulge) Polyline Bulges
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 21.11.2016, 20:17
#113
Бася


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


Уважаемые форумчане, помогите пожалуйста!
Есть планировка благоустройства, необходимо ее разбить. Хочу получить точки перелома (характерные) осей и экспортнуть их координаты.
Подскажите, пожалуйста, как автоматически проставить точки на линии оси?
Прикрепляю скрин - некоторые точки уже выставлены руками, а рядом выделила ось, на которой дофига точек - вот как их проставить автоматически?
Миниатюры
Нажмите на изображение для увеличения
Название: 01.png
Просмотров: 91
Размер:	111.7 Кб
ID:	179440  
Бася вне форума  
 
Непрочитано 21.11.2016, 21:20
#114
trir


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


Цитата:
как их проставить автоматически?
напиши код
trir вне форума  
 
Непрочитано 21.11.2016, 22:43
#115
Бася


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


trir, была бы я такая умная - не спрашивала бы...не умею
Бася вне форума  
 
Непрочитано 21.11.2016, 22:48
#116
trir


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


Цитата:
...не умею
учите

Цитата:
точки перелома
это что? Экстремум? И на чём вы хотите брать производную от сплайна?
trir вне форума  
 
Непрочитано 21.11.2016, 23:18
#117
MrBrown

ПенсионЭр
 
Регистрация: 26.06.2009
Сообщений: 361


Бася, может быть, этот макрос поможет:
Код:
[Выделить все]
 ;****** KOORD.LSP *******************************************************
;       Определение координат точки и простановка
;       в рисунке  на плане.
;       Разработал  Громов В.В. Декабрь 2000.
;
(defun C:KOORD (/ pt1 pt2 koord)
       (setvar "cmdecho" 0)
       (setq pt1 T)
    (while pt1
       (setq pt1 (getpoint "\n Укажите точку (ENTER — конец): "))
       (if pt1
       (progn
       (setq koord (strcat (rtos (nth 0 pt1) 2 2) " " (rtos (nth 1 pt1) 2 2)))
       (setq pt2 (getpoint "\n Укажите точку вставки текста: "))
       (command "_text" pt2 "" "" koord)
       (princ)
       ))
     )
       (princ)
)
;Возможный макрос для кнопки или пункта меню:
;^C^C^P(if (not C:KOORD (load "koord")) KOORD
Проставляешь свои точки в нужных местах, макросом KOORD проставляешь их координаты, а потом используешь макрос из #105.
MrBrown вне форума  
 
Непрочитано 21.11.2016, 23:47
#118
Бася


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


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

----- добавлено через ~2 мин. -----
MrBrown, спасибо, но сначала хотелось бы точки проставить автоматически

----- добавлено через ~22 мин. -----
Мне кажется, что это должно быть похоже на функцию "разметить" - автоматически проставляются точки на выбранном Path. Здесь суть нужна та же самая, только точки уже де юро есть, надо их де факто нанести.
Бася вне форума  
 
Непрочитано 22.11.2016, 00:15
1 | #119
MrBrown

ПенсионЭр
 
Регистрация: 26.06.2009
Сообщений: 361


Бася, Для автоматической разметки используй _measure и _device.
И вот ещё хороший макрос, тоже пригодится:
Код:
[Выделить все]
 ;;; возвращает координаты выбранной полилинии
;;; http://forum.dwg.ru/showthread.php?t=3790
(defun c:plcoords (/ coords pline pt_list)
(setq pline (vlax-ename->vla-object (car (nentsel))))
(if (wcmatch (vla-get-objectname pline)
	       "AcDbPolyline,AcDb2dPolyline,AcDb3dPolyline,AcDbLeader")
  (progn
  (setq coords (vlax-get pline 'Coordinates))
  (if (eq (vla-get-objectname pline) "AcDbPolyline")
    (progn
          (repeat (/ (length coords) 2)
            (setq pt_list (cons (list (car coords) (cadr coords)) pt_list))
            (setq coords (cddr coords))
          )
        )
        (progn
          (repeat (/ (length coords) 3)
            (setq pt_list (cons (list (car coords) (cadr coords) (caddr coords)) pt_list))
            (setq coords (cdddr coords))
          )
        )
      )
    (setq pt_list (mapcar (function (lambda (x)
				   (trans x 1 0)))
		       (reverse pt_list)))
  )
  )
  )
;CaLL:(get-wcs-coords)
Он возвращает координаты вершин полилинии (в ком. строке).
MrBrown вне форума  
 
Непрочитано 22.11.2016, 00:33
#120
Бася


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


MrBrown, measure и divide делят на заданные расстояния или определенное количество отрезков.
А мне нужно как: выбрал линию и программа проставляет точки в местах излома линии. И не важно, их 2 или 122. Просто линий туча, хочется процесс автоматизировать.

Макрос Ваш завтра попробую и отпишусь, спасибо.
Бася вне форума  
 
Непрочитано 22.11.2016, 07:49
#121
Vladimir_Sergeevich

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


Бася, такие задачи решались столько раз, что лень писать еще раз такой же код.
расставить вхождения блоков по полилинии можно таким куском кода:
Код:
[Выделить все]
 (setq pl_ent (entsel "\nУкажите полилинию <Завершить> : ")) ;;всю обработку указания полилинии не прикладываю дабы не загромождать
(setq 
	pl_ent (vlax-ename->vla-object (car pl_ent))
	count (vlax-curve-getEndParam pl_ent)
) 
(while (>= count 0) ;;inserting blk def
	(setq pt_ins (vlax-curve-getPointAtParam pl_ent count)
		ang_ins (+ (* pi 0.5)
		(angle 
			pt_ins 
			(mapcar '+
				pt_ins
				(vlax-curve-getFirstDeriv pl_ent count)
			)
		))
	) 
	
	(vla-InsertBlock (sad-get-CurrentSpace) (vlax-3d-point pt_ins) bl_name 1 1 1 ang_ins )
	
	(setq count (1- count))
) ;;while
bl_name - имя вставляемого блока (по хорошему в коде должна быть проверка наличия этого блока и создание его при отсутствии такового)
(sad-get-CurrentSpace) - заменить на указатель пространства в котором надо рисовать

Лень - двигатель прогресса! Лень рисовать ручками - учись кодить.
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
 
Непрочитано 22.11.2016, 09:34
#122
Бася


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


Vladimir_Sergeevich, спасибо за помощь! не пыталась писать ибо не умею, а ясно, что эта задача не мною придумана и уже давно решена. тут лучше не мучать своими измышлениями гуру, а спросить уже готовое решение.
по поводу кода - вылезла ошибка

Цитата:
Команда: _appload 01.lsp успешно загружено.
01.lsp успешно загружено.
Команда:
Укажите полилинию <Завершить> : ; ошибка: no function definition: SAD-GET-CURRENTSPACE

Последний раз редактировалось Бася, 22.11.2016 в 09:52.
Бася вне форума  
 
Непрочитано 22.11.2016, 13:04
#123
SergeyP


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


Цитата:
Сообщение от VVA Посмотреть сообщение
Можно. Для сегмента полилинии хранится его кривизна (Bulge) Polyline Bulges
Интересная ссылка, спасибо!

Ваша программа станет еще лучше, если сможет сохранять для полилинии помимо координат вершин еще и кривизну участка)
№ x y z bulg

(при этом bulg относится к участку который начинается в данной точке)

Насколько сложно это реализовать?
SergeyP вне форума  
 
Непрочитано 18.05.2017, 11:58
#124
Рyslan


 
Регистрация: 25.07.2007
Сообщений: 2,518


Как в программе COORN изменить нумерация точек? Чтобы не просто цифрой задавался порядок, но и текстом? Например не 1, а Точка (POint) 1
Рyslan вне форума  
 
Непрочитано 18.05.2017, 22:42
#125
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от Рyslan Посмотреть сообщение
Как в программе COORN изменить нумерация точек?
Команда COORN из архива ECoorE rev10b.zip
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 19.05.2017, 05:34
#126
Рyslan


 
Регистрация: 25.07.2007
Сообщений: 2,518


Так у меня уже есть эта программа. Или тут что-то новое?

Аа, вроде разобрался. Спасибо!

VVA подскажи еще. Нужен лисп, если такой существует...Например есть текст, с значением, нужно чтобы этот текст суммировался и далее вставлялся с новым значением. Например 0, 20, 40, 60, 80, 100 и так далее

Последний раз редактировалось Рyslan, 19.05.2017 в 13:23.
Рyslan вне форума  
 
Непрочитано 19.05.2017, 21:45
#127
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


FAQ #23 Как последовательно пронумеровать в чертеже числа?
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 20.05.2017, 06:25
#128
Рyslan


 
Регистрация: 25.07.2007
Сообщений: 2,518


Спасибо большое!
Рyslan вне форума  
 
Непрочитано 22.08.2017, 05:42
#129
Рyslan


 
Регистрация: 25.07.2007
Сообщений: 2,518


VVA подскажи еще, как в программе COORN сделать так, чтобы нумерация точек полилинии начиналась с определенной точки? Например, у меня есть трубопровод, он идет с севера на юг, а программа мне сейчас нумерует с юга на север .
Рyslan вне форума  
 
Непрочитано 22.08.2017, 11:08
#130
Vladimir_Sergeevich

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


Цитата:
Сообщение от Рyslan Посмотреть сообщение
VVA подскажи еще, как в программе COORN сделать так, чтобы нумерация точек полилинии начиналась с определенной точки? Например, у меня есть трубопровод, он идет с севера на юг, а программа мне сейчас нумерует с юга на север .
Разверни линию и все. команда _reverse/Обратить
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
 
Непрочитано 22.08.2017, 11:08
#131
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


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

----- добавлено через ~2 мин. -----
О, не заметил, что речь идет уже про готовую полилинию
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 22.08.2017, 13:30
#132
Рyslan


 
Регистрация: 25.07.2007
Сообщений: 2,518


Спасибо! Развернул. Я полинию скопировал в новый файл и вставил с исходными координатами
Рyslan вне форума  
 
Непрочитано 01.11.2017, 11:30
#133
Eugene.ne.Eugene


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


Уважаемый VVA, а есть возможность извлекать не только координаты точек полилиний, но и название слоев полилиний?
Eugene.ne.Eugene вне форума  
 
Непрочитано 16.02.2018, 10:23
#134
Агент СмиТ

Gti
 
Регистрация: 14.01.2010
МО Железнодорожный
Сообщений: 121


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

2. Не включать в список координат центроиды мполигонов (1-1 и 2-10).
Миниатюры
Нажмите на изображение для увеличения
Название: Мполигоны.jpg
Просмотров: 102
Размер:	51.0 Кб
ID:	199250  
__________________
Каждая система стремится к равновесию.
Агент СмиТ вне форума  
 
Непрочитано 16.02.2018, 17:41
#135
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Агент СмиТ, Обновил #7.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 17.02.2018, 23:02
#136
Агент СмиТ

Gti
 
Регистрация: 14.01.2010
МО Железнодорожный
Сообщений: 121


VVA, проверял работу кода в режиме COORNP.
1. По нумерации вершин: тестил мполигоны созданные конвертацией из существующих прямоугольников, так и созданные напрямую по команде mpolygon с указанием точек. Так и не смог понять логику по которой нумеруются вершины внешнего и внутренних контуров. Желательно, что бы вершины нумеровались по часовой стрелке всегда в каждом контуре и при этом начало нумерации шло с внешнего контура, что не получилось ни в одном из тестов. На рисунке слева большими цифрами показал, в каком порядке показал создавал мполигон, справа результат с правильной последовательностью нумерациии вершин.
2. Центроиды учитываться перестали, это то что нужно.
3. Пропала очень удобная особенность-номер контура, к которому относится вершина (ИМХО такая опция при сортировке и фильтации в эксель гораздо важней флага-разделителя), верните её пожалуйста!
4. Заинтересовал недокументированный режим "COORVIK" - было бы здорово допилить его до таблицы румбов (№, x, y, румб, длина линии), получилась бы тоже очень полезная опция как для мполигонов, так и для остальных примитивов.
Миниатюры
Нажмите на изображение для увеличения
Название: Мполигоны 2.jpg
Просмотров: 67
Размер:	53.6 Кб
ID:	199294  
__________________
Каждая система стремится к равновесию.
Агент СмиТ вне форума  
 
Непрочитано 18.02.2018, 10:12
#137
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Агент СмиТ, Выложи пример с парой разных мполигонов. Я не нашел описания принципа формирования dxf кодов мполигона.

----- добавлено через ~2 ч. -----
Нашел пару примеров в интернете. Немного поменял логику. Тестируй
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 18.02.2018, 17:16
#138
Агент СмиТ

Gti
 
Регистрация: 14.01.2010
МО Железнодорожный
Сообщений: 121


VVA, протестировал код в режиме coornp:
1. Во всех случаях (в т.ч. при порядке вершин против часовой стрелки) нумерация вершин происходит по часовой стрелке - то что нужно!
2. При создании мполигона напрямую (указанием точек вручную) порядок нумерации контуров противоположен порядку их создания, а нумерация в каждом контуре противоположня порядку указания вершин.
3. При создании мполигона путём конвертации существующих прямоугольников важен только порядок указания примитивов, а порядок их создания роли не играет.
Offtop: В процессе тестирования появился вопрос, возможен ли реверс тех контуров мполигона, где чередование вершин идёт против часовой стрелки? Было бы здорово перед снятием координат приводить все мполигоны к единообразию.
Вложения
Тип файла: dwg
DWG 2007
Mpolygons 3.dwg (813.8 Кб, 35 просмотров)
__________________
Каждая система стремится к равновесию.
Агент СмиТ вне форума  
 
Непрочитано 18.02.2018, 18:35
#139
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


внес небольшие правки

Цитата:
Сообщение от Агент СмиТ Посмотреть сообщение
возможен ли реверс тех контуров мполигона, где чередование вершин идёт против часовой стрелки?
надо будет попробовать
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 18.02.2018, 21:21
#140
Агент СмиТ

Gti
 
Регистрация: 14.01.2010
МО Железнодорожный
Сообщений: 121


VVA, попробовал работу COORNP на двух мполигонах в один приём:
1. насколько я понял, программа правильно обрабатывает только те мполигоны, у которых внешний контур создан раньше внутренних (розовый цвет);
2. те мполигоны, у которых создание происходило начиная с внутренних контуров, обрабатываются также в порядке создания контуров, а не начиная с внешнего, что приводит к неправильному порядку нумерации вершин (зелёный цвет).
Т.е. желательно начинать нумерацию принудительно с внешнего контура, а внутренние контуры обрабатывать в порядке их создания.
Миниатюры
Нажмите на изображение для увеличения
Название: Мполигоны 4.1.jpg
Просмотров: 44
Размер:	37.9 Кб
ID:	199318  Нажмите на изображение для увеличения
Название: Мполигоны 4.2.jpg
Просмотров: 37
Размер:	40.2 Кб
ID:	199319  
__________________
Каждая система стремится к равновесию.
Агент СмиТ вне форума  
 
Непрочитано 05.03.2018, 13:50
#141
Browning Zed


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


VVA, в посте #7 есть скриншот диалогового окна программы. Существует ли в природе версия данной проги с DCL-файлом?
Browning Zed вне форума  
 
Непрочитано 05.03.2018, 17:47
1 | #142
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от Browning Zed Посмотреть сообщение
VVA, в посте #7 есть скриншот диалогового окна программы. Существует ли в природе версия данной проги с DCL-файлом?
В том же посте ECoorE rev11c.zip
DCL файл пишется лиспом "на лету". См опцию "Settings"
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 22.03.2018, 09:59
#143
lesha_rz


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


Прочитал несколько веток по проблеме, решил написать сюда.
Схожая с моей была поднята в сообщении #48, но ответа по всей видимости не было

Цитата:
Сообщение от MANUL Посмотреть сообщение
Товарищи, общий вопрос:
Каким образом отслеживать ещё и географические коодинаты? При условии что положение геомаркера задано и и текущему чертежу вроде назначена СК: LL84
В изыскательском файле есть географическая привязка и ACAD и Civil в строке состояния показывает координаты в градусах и минутах. Civil без проблем экспортирует полилинию в kmz, которая корректно отображается и в GE и в SAS Planet-е.
Теперь, мой дилетантский вопрос: как при всем этом богатстве материалов выгрузить координаты вершин в географических координатах?
_list и описываемые здесь lispы выгружают прямоугольные.
lesha_rz вне форума  
 
Непрочитано 22.03.2018, 10:25
#144
trir


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


как я сразу и говорил - работать через FDO
trir вне форума  
 
Непрочитано 22.03.2018, 10:53
#145
lesha_rz


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


Цитата:
Сообщение от trir Посмотреть сообщение
как я сразу и говорил - работать через FDO
Если не сложно, можно поподробнее?
lesha_rz вне форума  
 
Непрочитано 22.03.2018, 11:07
#146
trir


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


1. Создаёшь слои
2. Экспортируешь в нужную СК
trir вне форума  
 
Непрочитано 22.03.2018, 11:12
#147
lesha_rz


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


Спасибо, за два бесполезных ответа.
lesha_rz вне форума  
 
Непрочитано 22.03.2018, 11:47
#148
trir


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


команда MAPEXPORT и сохранить в gml в нужной СК - получишь текстовый файл с координатами
лично я предпочитаю просто копировать слой в пределах БД
trir вне форума  
 
Непрочитано 22.03.2018, 13:03
#149
lesha_rz


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


Цитата:
Сообщение от trir Посмотреть сообщение
команда MAPEXPORT и сохранить в gml в нужной СК - получишь текстовый файл с координатами
лично я предпочитаю просто копировать слой в пределах БД
Спасибо, попробую, во множестве выводимых атрибутов и свойств наверняка найду Долготу/Широту
Пока вышел из положения следующим образом: по имеющейся полилинии создал точки COGO и из Навигатора Области Инструментов просто скопипастил в Excel.
Параллельно можно добавить маркеры точек с номерами и координатами для вывода графики.
lesha_rz вне форума  
 
Непрочитано 29.08.2018, 11:24
#150
Vikulassuk

генпланист
 
Регистрация: 23.09.2009
Череповец
Сообщений: 31


Цитата:
Сообщение от VVA Посмотреть сообщение
slan.ru Пробуй COORT для твоего примера
Описание

Модифицированны и оптимизированы команды COOR, COORN, COORT, добавлена команда COORNP
COORNP - COORNP + Point - отрисовка точек в узлах полилинии. Файл Ecoor.zip
*** Добавлено 15 мая 2010

CoorNP-Координаты+Нумерация+Точки. Точки рисуются текущими режимами PDMODE and PDSIZE

[/more]!!!Другие решения для экспорта: Ссылки здесь
Здравствуйте! Ваш лисп просто супер! Спасибо вам большое!
Помогите, пожалуйста, разобраться в нем немного.
Как сделать, чтобы в точках рисовался кружочек? У вас , вроде, такое есть, но никак не могу это осуществить.
И еще такой вопрос - реально ли сделать, чтобы нумерация была на выноске с текстом "т.1", "т.2" и т.д?

Заранее спасибо, если найдете время ответить
Vikulassuk вне форума  
 
Непрочитано 03.05.2019, 15:48
#151
anastaskot


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


Добрый день! Пользуюсь ECoor для выгрузки координат в Excel, и соответственно нумерую точки (1,2,3...). Но далее мне нужно увеличить шрифт до 2.5 и проставить кружки на точки радиусом 1, после чего нумерация наползает на полилинию и точку, приходится потом растаскивать все вручную. Есть ли возможность, чтобы это все автоматически растаскивалось? А то по 2 тысячи и более точек вручную растащить - это смерть. Приложила фото, на 1 - как получается и на 2 - как должно быть.

PS: я просто сама не смыслю в коде ничего, но мне кажется там должно быть уточнение, что текст (номер точки) не должен залезать на полилинию и/или на другой текст(номер точки). Буду очень признательна если поможете это написать.
Миниатюры
Нажмите на изображение для увеличения
Название: автокад.jpg
Просмотров: 121
Размер:	106.6 Кб
ID:	213794  Нажмите на изображение для увеличения
Название: автока.jpg
Просмотров: 117
Размер:	116.9 Кб
ID:	213795  

Последний раз редактировалось anastaskot, 03.05.2019 в 16:24.
anastaskot вне форума  
 
Непрочитано 10.05.2019, 23:54
#152
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


anastaskot, Найди строку
Цитата:
(polar ln (/ pi 4) 1.) ;_Координаты на 1 ед по углом 45 градусов
Здесь определяется точка отрисовки текста (на 1 ед под углом 45 градусов от вершины полилинии)
Попробуй заменить 1. на большее число.
Если устроит, можно задавать не угол, а смещение по x y от вершины полилинии
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 12.05.2019, 21:26
#153
anastaskot


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


Цитата:
Сообщение от VVA Посмотреть сообщение
anastaskot, Найди строку

Здесь определяется точка отрисовки текста (на 1 ед под углом 45 градусов от вершины полилинии)
Попробуй заменить 1. на большее число.
Если устроит, можно задавать не угол, а смещение по x y от вершины полилинии
Спасибо за подсказку! Теперь легче, хоть и приходится ручками дорабатывать.

PS: а смещение по х и у также в коде или из автокада можно настроить?
anastaskot вне форума  
 
Непрочитано 12.05.2019, 21:30
#154
Кулик Алексей aka kpblc
Moderator

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


anastaskot, посмотри справку по функции polar - там все внятно достаточно описано.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.05.2019, 23:39
#155
trir


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


Цитата:
А то по 2 тысячи и более точек вручную растащить - это смерть.
Ну так в Civil 3D на это есть штатный функционал...
trir вне форума  
 
Непрочитано 15.05.2019, 08:07
#156
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от anastaskot Посмотреть сообщение
PS: а смещение по х и у также в коде или из автокада можно настроить?
Вместо строки
Цитата:
(polar ln (/ pi 4) 1.) ;_Координаты на 1 ед по углом 45 градусов
впиши
Цитата:
(mapcar '+ ln '(1. 2. 3.))
где
1 - смещение по X со своим знаком
2 - смещение по Y со своим знаком
3 - смещение по Z со своим знаком
Пример смещения от вершины, координаты которой хранятся в переменной ln на -2.5 по Х ; 3.2 по Y и 0 по Z
Цитата:
(mapcar '+ ln '(-2.5 3.2 0.))
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 29.07.2019, 09:46
#157
bengan777


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


Добрый день. Используем для нумерации точек и выгрузки координат в exel ваш лисп ECoorE rev11c.LSP, за что вам огромное спасибо.
Возник вопрос. Появилось желание немного переделать нумерацию точек. Сейчас текст с номером точки появляется с одинаковым смещением по диагонали на северо-восток относительно узловой точки.
Есть ли возможность сделать так, чтобы текст вставлялся только с внешней стороны фигуры(как на скрине 2)?

Последний раз редактировалось bengan777, 10.03.2020 в 16:24.
bengan777 вне форума  
 
Непрочитано 30.07.2019, 14:17
#158
bengan777


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


Если не ошибаюсь, реализовывать это надо по одному из описанных тут алгоритмов^
https://ru.wikipedia.org/wiki/%D0%97...B8%D0%BA%D1%83
К сожалению, сам я делать это буду очень долго( Если кто нибудь поможет, буду очень признателен.
bengan777 вне форума  
 
Непрочитано 01.08.2019, 12:37
1 | #159
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


bengan777, В этой реализации программы такой возможности нет. Можно только отредактировать смещение для всех точек. Координаты обрабатываются поточно, возможность определять и хранить для каждой точки свое смещение не предусмотрено.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 01.08.2019, 12:42
1 | #160
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611


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

ИМХО, алгоритм то там простой:
берете координаты вершины и смещаете на единичный вектор в сторону средней точки между предыдущей и последующей вершинами, потом проверяете полученные координаты на попадание в контур, если попали внутрь, то умножаем вектор на -1. Собственно всё. Далее умножаем полученный вектор на требуемую величину смещения. Код проверки на попадание в контур можно найти тут на форуме, хотя можно и самому написать, там ничего сложного нет, тут уж как удобнее.

Цитата:
Сообщение от bengan777 Посмотреть сообщение
К сожалению, сам я делать это буду очень долго(
Дорогу осилит идущий.

Цитата:
Сообщение от bengan777 Посмотреть сообщение
Если кто нибудь поможет, буду очень признателен.
Надеюсь помог.
Boxa вне форума  
 
Непрочитано 02.08.2019, 08:49
#161
bengan777


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


Всем большое спасибо. Буду ковырять.
bengan777 вне форума  
 
Непрочитано 02.08.2019, 09:56
#162
kacugu

начинающий инженер-гидротехник
 
Регистрация: 18.04.2010
Санкт-Петербург
Сообщений: 910


Цитата:
Сообщение от Boxa Посмотреть сообщение
ИМХО, алгоритм то там простой
Offtop: А если расставлять номера точек в вершины подобной фигуры? Т.е. есть какой-то контур, строим его подобие во внешнюю сторону, расставляем номера точек в вершины новой фигуры, удаляем новую фигуру. Сходу не соображу есть ли подводные камни у такого варианта
kacugu вне форума  
 
Непрочитано 02.08.2019, 09:59
1 | #163
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от kacugu Посмотреть сообщение
Offtop: А если расставлять номера точек в вершины подобной фигуры? Т.е. есть какой-то контур, строим его подобие во внешнюю сторону, расставляем номера точек в вершины новой фигуры, удаляем новую фигуру. Сходу не соображу есть ли подводные камни у такого варианта
Цитата:
Сообщение от VVA Посмотреть сообщение
В этой реализации программы такой возможности нет. Можно только отредактировать смещение для всех точек.
Если программа не гарантирует размещение номеров внутри контура...
Сергей812 вне форума  
 
Непрочитано 02.08.2019, 11:56
1 | #164
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611


kacugu, ну вычислять то направление оффсета все равно придется, плюс при оффсете могут вырождаться грани, про накладные расходы на создание доп объекта и последующая чистка: тут надо смотреть на конкретных примерах, где то выиграете, где то нет...
а вообще экспериментируйте
Boxa вне форума  
 
Непрочитано 05.09.2019, 15:13
#165
alexx_z25


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


Спасибо VVA за такой классный lisp! А нельзя ли сделать, так, чтобы в файле txt можно было выбрать разделитель между координатами, у Вас идёт 6 пробелов, а мне до зарезу нужна просто запятая?!

Последний раз редактировалось alexx_z25, 05.09.2019 в 15:25.
alexx_z25 вне форума  
 
Непрочитано 05.09.2019, 16:48
#166
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


если фиксированные 6 пробелов - то легко заменой в любом текстовом редакторе делается
Сергей812 вне форума  
 
Непрочитано 05.09.2019, 16:50
#167
Кулик Алексей aka kpblc
Moderator

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


Я полагаю, что там на самом деле символ табуляции стоит (код не смотрел).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.09.2019, 10:34
#168
alexx_z25


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
если фиксированные 6 пробелов - то легко заменой в любом текстовом редакторе делается
Спасибо! Действительно, легко и быстро 6 пробелов меняются на одну запятую, но если бы такая возможность была в лиспе - было бы ещё быстрее
alexx_z25 вне форума  
 
Непрочитано 09.09.2019, 13:45
#169
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от alexx_z25 Посмотреть сообщение
но если бы такая возможность была в лиспе - было бы ещё быстрее
искать, где ссылка на лисп - лень) Если там 6 пробелов, то ищите в коде конструкцию вида
Код:
[Выделить все]
 (setq %Какая то переменная% "      ")
по строковой константе в 6 пробелов
Цитата:
" "
и заменяете их на нужный разделитель вместо пробелов внутри кавычек.

----- добавлено через ~4 мин. -----
или в аргументах strcat может быть строковая константа в коде, например
Сергей812 вне форума  
 
Непрочитано 09.09.2019, 13:51
#170
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от alexx_z25 Посмотреть сообщение
у Вас идёт 6 пробелов, а мне до зарезу нужна просто запятая?!
Сохраняй как csv файл, разделитель будет точка с запятой. Или настраивай программу импорта на разделитель ; или меняй в редакторе ; на ,
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 14.10.2019, 14:40
#171
probkoball


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


Как отделаться от введения prefix и suffix при вводе команды coorn. Ввожу пробел, как там написано, а он не воспринимается.
probkoball вне форума  
 
Непрочитано 14.10.2019, 15:22
#172
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


У меня воспринимается. Только что проверил версию ECoorE rev11c.zip отсюда

----- добавлено через ~2 мин. -----
Если они пустые и не нужны, просто жми Enter на запросы

Цитата:
Type prefix: (If you want to delete prefix type ' ' (press SPACE key on keyboard) <> :
Type suffix: (If you want to delete prefix type ' ' (press SPACE key on keyboard) <> :
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 14.10.2019, 15:29
#173
probkoball


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


Цитата:
Сообщение от VVA Посмотреть сообщение
У меня воспринимается. Только что проверил версию ECoorE rev11c.zip отсюда

----- добавлено через ~2 мин. -----
Если они пустые и не нужны, просто жми Enter на запросы
Перезапустил автокад и заработало. Спасибо большое.
probkoball вне форума  
 
Непрочитано 06.11.2019, 21:53
#174
Valeranna


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Я полагаю, что там на самом деле символ табуляции стоит (код не смотрел).
В Notepad++ с табуляцией можно работать в режиме замены (расширенный поиск). Подходящее сочетание — \t.
Valeranna вне форума  
 
Непрочитано 04.12.2019, 13:25
#175
bengan777


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


Цитата:
Сообщение от Boxa Посмотреть сообщение
Надеюсь помог.
Очень помог)
Этот кусок я реализовал.
Осталось понять как это все в эксель теперь запихать)
Когда доделаю, выложу что получилось.
bengan777 вне форума  
 
Непрочитано 05.12.2019, 17:38
#176
bengan777


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


Код:
[Выделить все]
 (defun C:Nplne (/ pt pt1 pt2 pt4 ent ent2 lst_point sys_var htxt mysset counter n coun2 temp)
  (vl-load-com)
  (setq Htxt 2) ;_Высота текста
  (setq sys_var (mapcar 'getvar '("osmode" "cmdecho")))	; Сохранение значений системных переменных
  (setvar "osmode" 0)
  (setvar "cmdecho" 0)
  (if (not (numberp *NPoint*))(setq *NPoint* 1))	; Проверка, пуста ли глобальная переменная *NPoint*
  (princ "\nНачальный номер <")(princ *NPoint*)(princ ">: ")
  (if (null (setq n (getint)))(setq n *NPoint*))	; Возможность ввести начальный номер руками
 (setq mysset (ssget))	; Выбор набора объектов
 (setq counter 0)
 (while (< counter (sslength mysset))	; Начало перебора объектов набора
    (setq ent (ssname mysset counter))	; Получение координат вершин списком
  (setq  lst_point (mapcar 'cdr				
        (vl-remove-if-not
          '(lambda (x) (= (car x) 10))
          (entget ent)
        ) ;_ end of vl-remove-if-not
      		   ) ;_ end of mapcar
  ) ;_ end of setq
(setq coun2 0)
   (while (< coun2 (length lst_point))
     (setq pt (nth coun2 lst_point))
	(if (= coun2 (- (length lst_point) 1)) (setq pt1 (nth 0 lst_point))
	  (setq pt1 (nth (1+ coun2) lst_point))); координаты следующей вершины
     	 (if (= coun2 0) (setq pt2 (nth coun2 (reverse lst_point)))
	   (setq pt2 (nth (- coun2 1) lst_point))) ; координаты предыдущей вершины
     
       	    (setq pt4 (polar pt (- (angle pt2 pt) (/ (- (angle pt2 pt) (angle pt1 pt)) 2)) 1)); получаем координату смещения на 1 нашего узла к середине внутреннего угла
	(vl-cmdf "_ray" pt4 "@5<90" "") ; Проводим луч из pt2 к северу
	(setq ent2 (entlast)) ; пишем в переменную имя луча
	(setq temp
         (vla-intersectwith
          (vlax-ename->vla-object ent)
          (vlax-ename->vla-object ent2)
          acExtendnone
          )
	 )
	(setq temp
	 (vlax-safearray-get-u-bound
	 (vlax-variant-value temp) 1)
	) ; Получаем количество пересечений (-1 если их нет, 2 если одно, 5 если 2 итд.)
	     (if (= (abs (rem temp 2)) 1)
     		(vl-cmdf "_text" "_none" (polar pt (angle pt pt4) (+ 2 Htxt)) Htxt 0 (itoa n) "")
     		(vl-cmdf "_text" "_none" (polar pt (- (angle pt pt4) 3.1415) (+ 2 Htxt)) Htxt 0 (itoa n) "")
	     ) ; вставляем текст учитывая внутри, или снаружи фигуры находится точка луча
     (vl-cmdf "_erase" ent2 "") ; стираем луч
    (setq coun2 (1+ coun2))
    (setq n (1+ n))
   ); end while
     (setq *Npoint* n)
   (setq counter (+ counter 1))
 );_end of while
  (mapcar 'setvar '("osmode" "cmdecho") sys_var)
  (princ)
) ;_ end of defun
(princ "\nНаберите Nplne в командной строке")
Извиняюсь если накосячил с форматом кода. Пока реализовал подписывание узлов. Разберусь с экселем, тоже выложу что получилось.
bengan777 вне форума  
 
Непрочитано 25.12.2019, 12:30
#177
miha_1k


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



Идея классная, но в программе закралась ошибка.
Полигоны нумеруются не совсем корректно((
miha_1k вне форума  
 
Непрочитано 15.01.2020, 13:21
#178
bengan777


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


Прошу помощи у знающих людей.
Вот координаты фигуры:

4364751.528,5006349.857
4364772.986,5006353.912
4364774.609,5006369.05
4364776.683,5006353.912
4364795.166,5006352.019
4364776.412,5006349.676
4364775.962,5006335.078
4364771.814,5006349.406
Здесь 5 точка оказывается внутри фигуры((

луч в этом случае попадает внутрь фигуры и имеет одно пересечение с ней, однако, программа почему то считает что пересечений 2
(setq temp
(vlax-safearray-get-u-bound
(vlax-variant-value temp) 1)
) выдает в этом случае значение 5
bengan777 вне форума  
 
Непрочитано 15.01.2020, 13:25
#179
Кулик Алексей aka kpblc
Moderator

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


И как этот вопрос связан со стартовым постом темы?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.01.2020, 13:35
#180
bengan777


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


Извиняюсь, думал что будет удобнее в одной той же теме обсудить. Если нужно, создам отдельную тему.
bengan777 вне форума  
 
Непрочитано 15.01.2020, 13:43
#181
Кулик Алексей aka kpblc
Moderator

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


Лучше отдельную - потому что потом фиг чего найдешь.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.07.2020, 00:56
#182
Barmaley Bubusikin


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


Использую COORN и не пойму как удалить префикс и суффикс в нумерации точек. Нажимаю "пробел" - поле очищается, но после нажатия "enter" восстанавливается старое значение. Подскажите, пожалуйста, как очистить значения префикса/суффикса.
Barmaley Bubusikin вне форума  
 
Непрочитано 25.07.2020, 19:28
1 | #183
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Barmaley Bubusikin, На запрос
Цитата:
Type prefix: (If you want to delete prefix type ' ' (press SPACE key on keyboard) <> :
нажимаешь пробел и enter. Проверял на версии ECoorE rev11c
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 23.03.2023, 05:10
#184
TMK


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


Здравствуйте! Пользуюсь COORN уже много лет, но местное управление архитектуры стало требовать менять координаты X и Y местами. Каждый раз делать это все вручную очень проблематично. Подскажите, может есть какой-нибудь lisp, выводящий координаты в эксель с переставленными X и Y?
TMK вне форума  
 
Непрочитано 23.03.2023, 08:17
3 | #185
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Это делает сама команда, смотри настройки (опция Settings). Версия по ссылке с поста #183

Миниатюры
Нажмите на изображение для увеличения
Название: coorn.png
Просмотров: 194
Размер:	163.6 Кб
ID:	254424  
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 24.03.2023 в 16:04.
VVA вне форума  
Ответ
Вернуться   Форум 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