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

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

Как построить тело по 3D точкам с целью определения его объема

Ответ
Поиск в этой теме
Непрочитано 13.07.2009, 15:21 #1
Как построить тело по 3D точкам с целью определения его объема
Малявка
 
Егорьевск Моск.обл.
Регистрация: 28.02.2007
Сообщений: 206

Доброго всем здравствования!
Заинтересовалась постом Юты "Поставить точки в местах пересечений" и поняла, что эти точки - не конечная её цель. Конечная цель - определить объем котлована. Чтобы не путать форум, открываю новую ветку.
Итак, возможно ли (и как именно), имея точки рельефа и точки дна котлована, сразу построить тело и потом, естественно, massprop.
Может быть ЛИСПом, а может быть в автокаде уже есть такая фенечка.
Работаю в 2008, 2009, 2010.
Спасибо за внимание.
Просмотров: 6361
 
Непрочитано 13.07.2009, 19:58
#2
VVA

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


Сам не пробовал, но родился такой алгоритм:
1. По точкам дна котлована строим треугольники (3dface) с помощью triangulate Евгения Елпанова
2. Треуголькини (3DFACE) конвертируем в сеть (3DMESH).
Делаем это с помощью _3DSOUT (export) и _3DSIN (import). Источник
3. п.1 и п.2 повторяем для точек котлована.
4. В итоге имеем 2 3dmesh сети. Отсалось преобразовать их в тела. Смотрим как пост #5
5. найти пересечение тел
Осталось только проверить на практике. Пример можно взять здесь
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 14.07.2009, 08:33
#3
Солидворкер
Moderator

Конструктор (машиностроение)
 
Регистрация: 23.10.2006
Россия
Сообщений: 22,991
<phrase 1=


Offtop: Мне всегда казалось, что точка вообше не имеет измерений, а тут ей аж 3 сразу...
Солидворкер вне форума  
 
Автор темы   Непрочитано 14.07.2009, 10:53
#4
Малявка


 
Регистрация: 28.02.2007
Егорьевск Моск.обл.
Сообщений: 206


Цитата:
Мне всегда казалось, что точка вообше не имеет измерений, а тут ей аж 3 сразу...
А вам, мальчишкам, только бы поржать над блондинками от автокада...
Ну не измерения, а что там - свойства, что ли? типа X, Y, Z
Малявка вне форума  
 
Непрочитано 14.07.2009, 12:32
#5
Солидворкер
Moderator

Конструктор (машиностроение)
 
Регистрация: 23.10.2006
Россия
Сообщений: 22,991
<phrase 1=


Цитата:
Сообщение от Малявка Посмотреть сообщение
Ну не измерения, а что там - свойства, что ли? типа X, Y, Z
Это называется "координаты"
Солидворкер вне форума  
 
Непрочитано 14.07.2009, 13:08
#6
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


Цитата:
5. найти пересечение тел
Осталось только проверить на практике. Пример можно взять здесь
На практике уже проверено, так и работаем, только пункт 2 не нужен.
Sleekka вне форума  
 
Непрочитано 14.07.2009, 13:14
#7
VVA

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


Sleekka, А как ты преобразуешь 3dface в тело?
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 14.07.2009, 13:56
#8
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


http://forum.dwg.ru/showpost.php?p=377667&postcount=4 - ну тут я приводил лисп (не мой кстати я тока под 2008 кад адаптировал) для 3dmesh а 3dmesh - это тупо набор фэйсов, лисп для набора 3дфайсов у меня на другом компе, если надо могу выложить, но тут и так понятно что переделывать не много.
Sleekka вне форума  
 
Непрочитано 14.07.2009, 17:10
#9
VVA

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


Sleekka,
Цитата:
лисп для набора 3дфайсов у меня на другом компе, если надо могу выложить
Это я и имел ввиду. Выложи, не помешает
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 14.07.2009, 17:27
#10
Eu

монтаж
 
Регистрация: 22.10.2006
Украина
Сообщений: 109


Мне кажется, провести сплайны через известные точки, расположенные на одинаковой высоте. Получится набор замкнутых кривых на разных высотах. Затем - Loft, получится какое-то тело, со свойствами, их и изучать.
__________________
Eu
Eu вне форума  
 
Непрочитано 14.07.2009, 17:32
#11
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


Ну раз не помешает, то на, я так жутко не люблю лиспы выкладывать, надо всяки обработчики и защиты вслепую отрезать и потом не знаешь будет работать или нет =)
Итак команда выдавливающая тело вниз по выбранному набору 3dface-ов.
Код:
[Выделить все]

  (defun C:sl_do_solid_from_relief_ (/ ss lstLen sl_list_pts_)
      (vl-load-com)


(defun LOFT (r1 r2 r3 s1 s2 s3 bot / e1 extr highest) 
  (command "_area" s1 s2 s3 "") 
  (if (not (equal (getvar "area") 0.0 0.00000001)) 
    (progn 
      (command "_pline" s1 s2 s3 "_c") 
      (setq highest (max (caddr r1) (caddr r2) (caddr r3))) 
      (setq extr (- highest bot)) 
      (command "_extrude" (entlast) "" extr)
      
      (command "_slice" (entlast) "" "_3points" r1 r2 r3 s1) 
      (setq e1 (entlast)) 
      (ssadd e1 ssrow) 
      );progn 
    );if 
  )


    
(setq ss (ssget  '((0 . "3DFACE"))));(66 . 1))))
  
  (setq lstLen (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))

(setq sl_height_ (getreal "Введите пожалуйста нижнюю координату солида рельефа: "))
    (setq sl_list_pts_ (list))
    (foreach ent lstLen
      

      
    (setq sl_list_pts_ (append sl_list_pts_ (list (mip_MakeUniqueMembersOfList (append (list (cdr (assoc 10 (entget ent))))
			      (list (cdr (assoc 11 (entget ent))))
			      (list (cdr (assoc 12 (entget ent))))
			      (list (cdr (assoc 13 (entget ent))))
			     )))
	    ))
      )

;(princ sl_list_pts_)
    (setq sl_list_pts_ (mapcar
      '(lambda (gg)
	 gg sl_list_pts_
    (append gg (mapcar
      '(lambda (x)

	      
	(list (car x) (cadr x) sl_height_)


	   
	 )
gg
      ))
      )
      sl_list_pts_
      ))


  ;(setq sl_list_pts_ (mip_MakeUniqueMembersOfList sl_list_pts_))



    
    (foreach re sl_list_pts_
      ;(princ (eval (cons 'loft re)))
      ;(princ (sl_get_without_num_from_list_begin_ 4 re))
      ;(princ (cadddr re))
      ;(princ (car (sl_get_without_num_from_list_begin_ 4 re)))
      (loft (car re) (cadr re) (caddr re) (cadddr re) (car (sl_get_without_num_from_list_begin_ 4 re))
	    (car (sl_get_without_num_from_list_begin_ 5 re))
	    (- sl_height_ 20))
    
)
    
(command "_union" ssrow "")

    


  (princ)
  
)


;(C:sl_do_solid_from_relief_)
Sleekka вне форума  
 
Непрочитано 15.07.2009, 13:40
#12
Юта


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


ЛЮДИ! У МЕНЯ ПОЧТИ ПОЛУЧИЛОСЬ!!!
кто может помочь, посмотрите приклеенный файлик.
Осталось определить объем получившегося "гробика" из двух сеток - рельефа и дна котлована.
Как это сделать? Очень прошу, подскажите командочку.
Работаю в 2010 автокаде.
Спасибо
___
Вот всегда так: когда очень надо, так файл не приклеивается...
Вложения
Тип файла: dwg
DWG 2004
Котлован_объем.dwg (1.04 Мб, 1090 просмотров)

Последний раз редактировалось Юта, 15.07.2009 в 14:21. Причина: Файл не приклеился
Юта вне форума  
 
Непрочитано 27.07.2009, 12:30
#13
Юта


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


Значит, никто не посмотрит...
Юта вне форума  
 
Непрочитано 27.07.2009, 12:47
#14
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,825
<phrase 1=


Цитата:
Сообщение от Юта Посмотреть сообщение
Осталось определить объем получившегося "гробика" из двух сеток - рельефа и дна котлована.
1 - _massprop
2 - _properties
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon на форуме  
 
Непрочитано 27.07.2009, 13:46
#15
Кулик Алексей aka kpblc
Moderator

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


За #13: http://forum.dwg.ru/showthread.php?t=30619
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как построить тело по 3D точкам с целью определения его объема

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как построить следующее тело?... Shtirlitz AutoCAD 15 10.06.2013 13:09
Мониторы LCD CRT Разное 94 17.06.2008 10:51
ЮМОР 2006 =) Perezz!! Разное 1122 04.01.2007 00:46