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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как сделать 2-д топосъёмку трёхмерной?

Как сделать 2-д топосъёмку трёхмерной?

Ответ
Поиск в этой теме
Непрочитано 15.01.2020, 23:54 #1
Как сделать 2-д топосъёмку трёхмерной?
lisiy29
 
НВК
 
Королёв
Регистрация: 10.12.2009
Сообщений: 30

Всем привет!
Есть топосъёмка, где указаны отметки текстом и окружностями (центр окружности - точка, рядом текстом - высотная отметка).
Также вертикалка, где отрисованы горизонтали и они не имеют отметку Z или имеют, но не ту, что написана.

Как вот это вот всё сделать правильно в autocad или civil 3d (где проще и быстрее)?
То есть чтобы точки топосъёмки встали на свои отметки; горизонтали были на своих высотах (чтобы потом можно было создать ЦММ).
Просмотров: 4592
 
Непрочитано 16.01.2020, 00:39
#2
MrBrown

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


Есть лиспик от здешних гуру, которым пользуюсь в таких случаях (см. вложение).
Загружаем. Запускаем командой "12". тыкаем в текст, потом в центр окружности. Тыкаем дальше по циклу.
Удовлетворённо делаем очередной глоток кофе.
Удачи!
Вложения
Тип файла: lsp 12.lsp (1.3 Кб, 109 просмотров)
MrBrown вне форума  
 
Непрочитано 16.01.2020, 00:55
#3
engngr

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


Цитата:
Сообщение от lisiy29 Посмотреть сообщение
горизонтали были на своих высотах (чтобы потом можно было создать ЦММ).
https://forum.dwg.ru/showthread.php?t=148138

Цитата:
Сообщение от lisiy29 Посмотреть сообщение
чтобы точки топосъёмки встали на свои отметки
Точки или текст с отметкой? - для текста есть штатный фунционал c3d.

Цитата:
Сообщение от lisiy29 Посмотреть сообщение
Как вот это вот всё сделать правильно
Как тебе удобно и по-твоему правильно.
engngr вне форума  
 
Непрочитано 16.01.2020, 03:37
#4
Константин Д


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


Цитата:
Сообщение от MrBrown Посмотреть сообщение
Есть лиспик от здешних гуру, которым пользуюсь в таких случаях (см. вложение). Загружаем. Запускаем командой "12". тыкаем в текст, потом в центр окружности. Тыкаем дальше по циклу. Удовлетворённо делаем очередной глоток кофе. Удачи!
А если точек тысяч двадцать? Кофе закончится! Делаю проще. В целом "по площадям" - как есть текст с высотными отметками, так и оставляем. Там где принципиальна точность "до муллиметра" (бордюры, откосы, ручьи и тд на трассе трубопровода) вручную перетаскиваю точки привязки текста в места точек съемки (центр кругов). Потом MOVETEXTTOELEVATION, DATAEXTRACTION (ДАННЫЕИЗВЛ) - естественно указываем источником только текст с высотными отметками. Полученный файл прогоняем через эксель, отфильтровываем мусор, точки без высотных отметок и очевидные глюки. Результат сохраняем в текстовый файл в формате который будет читать цивил (PNEZ, ENZ и тд). Потом в цивиле делаем импорт точек, и по ним создаем поверхность. Или сразу в определении поверхности файл точек указываем. Все. После сборки обработать напильником (с).

А по поводу текста с кругами - видел где-то ролик, есть какой-то функционал объединения объекта с текстом, но там через подключение к БД, у меня так и не заработало, хз почему...
Константин Д вне форума  
 
Непрочитано 16.01.2020, 08:15
#5
Oleg T


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


Буквально недавно слепил программку для этих целей (без горизонталей).
Выбор текстов (значений отметок) - установка их в нужный уровень - отрисовка точек здесь же.
Код:
[Выделить все]
 ;Преобразование значений отметок (текстов) в точки 3D
(defun c:111 ()
	(prompt "\n Выберите исходные тексты")
	(setq nab (ssget))
	(setq nab1 (ssadd))
	(setq kol (sslength nab))
	(setq n -1)
	(repeat kol
		(setq n (+ n 1))
		(setq pr (ssname nab n))
		(setq pr_ (cdr (assoc '0 (entget pr))))
		(if (= pr_ "TEXT")
			(ssadd pr nab1)
		)
	)
	(setq kol (sslength nab1))
	(setq n -1)
	(repeat kol
		(setq n (+ n 1))
		(setq pr_ (entget (ssname nab n)))
		(setq z_koord (atof (cdr (assoc '1 pr_))))
		(setq 10_old (assoc '10 pr_))		;изменение точки вставки текста
		(setq y_x (cdr (reverse (cdr 10_old))))
		(setq x_y_z (reverse (cons z_koord y_x)))
		(setq 10_new (cons 10 x_y_z))
		(setq pr_ (subst 10_new 10_old pr_))
		(entmod pr_)
		(entmake (list '(0 . "POINT") '(100 . "AcDbEntity") '(100 . "AcDbPoint") (cons 10 x_y_z)))
	)
	(princ)
)
Присвоить полилиниям нужный уровень можно и стандартными средствами, а можно опять же некий макрос написать (выбор текста - выбор полилинии).

Последний раз редактировалось Oleg T, 16.01.2020 в 08:39.
Oleg T вне форума  
 
Непрочитано 16.01.2020, 08:23
#6
engngr

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


А вообще правильно заказать и получить съёмку в 3д.
engngr вне форума  
 
Непрочитано 16.01.2020, 09:17
#7
MrBrown

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


Константин Д,
Цитата:
А если точек тысяч двадцать?
Увы, корячусь до вечера. Даже допилил программульку под себя - чтобы не дублировать действия с одним текстом, он автоматически меняет цвет на зелёный (красный, синий - по желанию, короче).
ЛИСП простановки отметок стадом (при выделении рамкой) работал криво из-за неправильного расположения текстов относительно кружков при большой плотности чертежа. Мне не понравился.
А к вашему методу присмотрюсь, попробую, спасибо.
p.s. но, всё равно этим ЛИСПом быстрее, чем редактировать полностью ручками.
MrBrown вне форума  
 
Непрочитано 16.01.2020, 09:24
#8
Константин Д


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


Цитата:
Сообщение от MrBrown Посмотреть сообщение
p.s. но, всё равно этим ЛИСПом быстрее, чем редактировать полностью ручками.
Согласен. Но я обычно вообще не делаю ручками на этом этапе. Как правило проще бордюрчики и канавы нанести характерными линиями уже по готовой поверхности в цивиле.
Константин Д вне форума  
 
Непрочитано 16.01.2020, 10:37
1 | #9
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,095


Цитата:
Сообщение от lisiy29 Посмотреть сообщение
горизонтали были на своих высотах
Мой "автоподъемник" горизонталей здесь: https://forum.dwg.ru/showpost.php?p=...1&postcount=18
Обсуждение в других постах той же темы.
"Автоподъемник" точек тоже можно попробовать замутить, но только надо иметь пример Вашей геоподосновы.
kp+ вне форума  
 
Непрочитано 16.01.2020, 11:28
#10
CHESNOK

Инженер-проектировщик автомобильных дорог, генпланист
 
Регистрация: 25.07.2014
Сообщений: 203


Советую еще посмотреть и обратиться на сайте https://geodesist.ru. Там тоже можно найти утилиты и лиспа для данных задач. Лисп поднимающий горизонтали там точно был, помнится и подюем точек на отметку текста тоже был. Поищите сами или спросите там.
CHESNOK вне форума  
 
Непрочитано 16.01.2020, 11:33
#11
Кулик Алексей aka kpblc
Moderator

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


CHESNOK, ага, только там, чтоб скачать хоть что - сначала регистрироваться надо!
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 16.01.2020, 11:55
#12
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,095


Цитата:
Сообщение от CHESNOK Посмотреть сообщение
подюем точек на отметку текста тоже был
Ага, спасибо за наводку! Все написано до нас!
Ссылка в geodesist.ru https://geodesist.ru/threads/nadstro...11/#post-68092 привела на caduser.ru: https://www.caduser.ru/forum/post250189.html#p250189
kp+ вне форума  
 
Непрочитано 16.01.2020, 16:05
#13
PsixVK


 
Регистрация: 19.10.2012
Киев
Сообщений: 749


вот тема там есть лиспы - мне помогли с аналогичной ситуацией
Задание координаты Z у сплайна или полилинии при помощи команды
PsixVK вне форума  
 
Автор темы   Непрочитано 23.01.2020, 20:54
#14
lisiy29

НВК
 
Регистрация: 10.12.2009
Королёв
Сообщений: 30


Цитата:
Сообщение от kp+ Посмотреть сообщение
"Автоподъемник" точек тоже можно попробовать замутить, но только надо иметь пример Вашей геоподосновы.
У меня они двух видов: либо отметки текстом прописаны и окружностями точки съёмки обозначены, либо второй вариант - полилинии (или сплайны), рядом с которыми прописываются отметки. иногда этих горизонталей, а иногда те, что между ними (то есть горизонталь, допустим 150 и 150,5 а между ними текстом 150,42, 150,37 и т.д.)
пример в аттаче.

Последний раз редактировалось lisiy29, 17.05.2021 в 12:33.
lisiy29 вне форума  
 
Непрочитано 24.01.2020, 11:14
#15
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,095


Цитата:
Сообщение от lisiy29 Посмотреть сообщение
У меня они двух видов: либо отметки текстом прописаны и окружностями точки съёмки обозначены либо второй вариант - полилинии (или сплайны), рядом с которыми прописываются отметки.
Второго варианта на приведенном примере нет, а все точки уже на своих отметках. Приведите пример DWG, действительно подлежащий обработке и содержащий все варианты исходных данных.
kp+ вне форума  
 
Непрочитано 24.01.2020, 11:17
#16
PsixVK


 
Регистрация: 19.10.2012
Киев
Сообщений: 749


Цитата:
Сообщение от kp+ Посмотреть сообщение
а все точки уже на своих отметках
не там глупости, отметки не совпадают с написанным
PsixVK вне форума  
 
Непрочитано 24.01.2020, 11:37
1 | #17
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,095


Цитата:
Сообщение от PsixVK Посмотреть сообщение
отметки не совпадают с написанным
Ну не знаю, все не проверял - сильно много их. А те, что попались - с правильными отметками. Тогда можно слегка подхоботить программу уважаемого VVA, поменяв точки на круги.
Важно: перед обработкой отметки как точек, так и текстов обнулить! Иначе результат будет неправильный
Красным выделены мои изменения. Результат прикреплен к посту.
Еще моменты:
- после обработки сами тексты остаются на отм. 0. Надо ли "поднимать" их тоже?
- некоторые подписи отметок - без "своих" точек, что в некоторых случаях приводит к неправильной обработке других близлежащих точек. Эту заморочку теоретически можно обработать, но объем правок кода будет явно больше.

Код:
[Выделить все]
(defun C:ZCtxt ( / objSet Point ptLst tmp1 tmp2 pat txtZList dst *error*)
(vl-load-com)
(defun *error*(msg)(princ msg)
(vla-EndUndoMark (vla-get-activedocument (vlax-get-acad-object)))(princ))
(vla-StartUndoMark (vla-get-activedocument (vlax-get-acad-object)))
(if (and
      (setq objSet(ssget "_:L" '((0 . "CIRCLE"))))
      (setq Point (vl-remove-if 'listp(mapcar 'cadr(ssnamex objSet))))
      (setq ptLst(mapcar 'cdr (mapcar '(lambda(x)(assoc 10 x))(mapcar 'entget Point))))
      (setq objSet nil objSet(ssget "_X" (list '(0 . "*TEXT")(cons 410 (getvar "CTAB")))))
      )
  (progn
    (setq tmp1 (vl-remove-if 'listp(mapcar 'cadr(ssnamex objSet))))
    (setq tmp1 (mapcar '(lambda(x)(setq x (entget x))(list (cdr(assoc 10 x))(cdr(assoc 1 x)))) tmp1))
    (foreach pt ptlst
      (setq tmp2 (mapcar '(lambda(x)(list (distance pt (car x))(cadr x))) tmp1))
      (setq pat (car tmp2))
      (foreach dst tmp2 (if (< (car dst) (car pat))(setq pat dst)))
      (setq txtZList (cons (cadr pat) txtZList))
      )
    (setq txtZList (reverse txtZList))
    (setq txtZList (mapcar '(lambda(x)
                    (vl-string-translate "," "." (vl-string-trim  "%UuoOcC \t"   x))
                   )txtZList))
    (mapcar '(lambda(ptObj pt Z)
               (vla-put-center (vlax-ename->vla-object ptObj)
                (vlax-3d-point (list (car pt)(cadr pt) Z))
               )
               )
           Point ptLst (mapcar 'atof txtZList)
            )
    )
  )
  (vla-EndUndoMark (vla-get-activedocument (vlax-get-acad-object)))
  (princ)
  )
(princ "\nType ZCtxt in command line")
Вложения
Тип файла: dwg
DWG 2010
топо+.dwg (157.3 Кб, 18 просмотров)

Последний раз редактировалось kp+, 24.01.2020 в 11:57.
kp+ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как сделать 2-д топосъёмку трёхмерной?

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно сделать чердачное перекрытие и кровлю? mixxa Конструкции зданий и сооружений 5 16.12.2011 10:33
Проектирование участка водопровода кольцевой сети -200м, запросили сделать расчет всей кольцевой сети, как это сделать? kess35 Водоснабжение и водоотведение 16 07.10.2011 22:34
Как сделать узел вращения? remenikomer Машиностроение 28 25.07.2011 11:39
Как сделать курсив GOST Type A (или B) в размерных выносках? igor_skor AutoCAD 5 22.01.2011 11:42
Как сделать одной из граней SOLID поверхность Polygon mesh kukuikar AutoCAD 1 16.05.2007 07:58