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

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

Как построить прямоугольную сетку по списку точек.

Ответ
Поиск в этой теме
Непрочитано 24.06.2011, 14:15 #1
Как построить прямоугольную сетку по списку точек.
Mozgunov
 
Начинающий проектировщик
 
Санкт-Петербург
Регистрация: 07.02.2008
Сообщений: 443

Ребята, подскажите как построить прямоугольную сетку по списку точек на autolispe. Список точек-узлов сетки был получен на пересечении линий во взаимно-перпендикулярном направлении. Теперь нужно как-то простроить сетку из 3dface. Вот только как теперь выудить из него последовательность построения не соображу никак. Подскажите если есть мысли. Нужно чтобы получилась прямоугольная сетка. Спасибо!
Просмотров: 3148
 
Непрочитано 24.06.2011, 14:27
#2
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,843


пример (что есть и что нужно) нарисуй
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 24.06.2011, 14:33
#3
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Нужно чтобы по пересечению линий рисовалась сетка 3dfase.
Миниатюры
Нажмите на изображение для увеличения
Название: 111.jpg
Просмотров: 86
Размер:	16.3 Кб
ID:	62026  

Последний раз редактировалось Mozgunov, 24.06.2011 в 14:39.
Mozgunov вне форума  
 
Непрочитано 24.06.2011, 14:37
#4
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,843


Ну если тебе нарисовать лень - то мне понимать - каких линий, что у тебя в "списке точек" - все пересечения или только "края", 2D/3d и пр.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 24.06.2011, 14:40
#5
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Мне не лень Дима. Я уже прикрепил. Только 2d.
Mozgunov вне форума  
 
Непрочитано 24.06.2011, 14:46
#6
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,843


Ну если не лень - так нарисуй ЧТО ЕСТЬ и ЧТО НУЖНО ПОЛУЧИТЬ - что там у тебя за "пистолетик" выделенн? чем эти линии нарисованны? - dwg на форум еще прекрепляется.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 24.06.2011, 15:05
#7
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Вот поподробнее. На узле "А" я показал нумерацию вершин 3dfase.
На рисунке "что есть" линии. На рисунке "что должно быть" зелёным цветом 3dfase.
Миниатюры
Нажмите на изображение для увеличения
Название: 222.jpg
Просмотров: 91
Размер:	21.6 Кб
ID:	62027  
Mozgunov вне форума  
 
Непрочитано 24.06.2011, 17:02
#8
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,843


Вот теперь вроде понятно - я так понимаю основная проблема в получении списка координат "квадратиков" (точки пересечения уже полученны, а обернуть add3dface ты, я думаю в состоянии):
Код:
[Выделить все]
 (vl-load-com)
(defun get-kv (lst a1 a2)
  ((lambda (get-pt kv frec) (vl-remove-if '(lambda (kv) (member '() kv)) (frec lst)))
     (lambda (pt ang)
        (if pt (car (vl-sort (vl-remove-if-not
                                '(lambda (x) (and (equal (angle pt x) ang 0.0001)
                                                  (not (equal pt x))))
                                lst)
                             '(lambda (a b) (< (distance pt a) (distance pt b)))))))
     (lambda (pt n)
      (if (< n 4)
          (cons pt (kv (get-pt pt (cond ((= n 0) a2)
                                         ((= n 1) a1)
                                         ((= n 2) ((lambda (x) (if (> x (* 2.0 Pi)) (- x (* 2.0 Pi)) x))
                                                   (+ pi a2)))))
                       (1+ n)))))
     (lambda (lst-pt)
       (if lst-pt (cons (kv (car lst-pt) 0) (frec (cdr lst-pt)))))))
аргументы - lst - список точек пересечения (в неважно каком порядке), a1,a2 углы осей (могут быть не перпердекулярны - получатся "ромбовидные" прямоугольники) - но все "подоси" должны быть строго паралельны.
__________________
Когда в руках молоток все вокруг кажется гвоздями.

Последний раз редактировалось Дима_, 24.06.2011 в 17:49.
Дима_ вне форума  
 
Автор темы   Непрочитано 24.06.2011, 17:16
#9
Mozgunov

Начинающий проектировщик
 
Регистрация: 07.02.2008
Санкт-Петербург
Сообщений: 443
<phrase 1=


Спасибо большое Дима! Сейчас буду разбираться как это всё работает. Да, обернуть смогу.
Дима а будет работать функция если сетка не квадратная а прямоугольная?
Mozgunov вне форума  
 
Непрочитано 24.06.2011, 17:34
#10
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,843


Цитата:
Сообщение от Mozgunov Посмотреть сообщение
Дима а будет работать функция если сетка не квадратная а прямоугольная?
Должна по идее и с разными прямоугольниками (по рядам или столбцам).
p.s. - исправил в программе - вылезала ошибка если угол "переваливал" через 2*PI (сравнивает не углы а значение и соответственнно 0 <>6.28 хотя с точки зрения углов дожны быть равны).
__________________
Когда в руках молоток все вокруг кажется гвоздями.

Последний раз редактировалось Дима_, 24.06.2011 в 17:53.
Дима_ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как построить прямоугольную сетку по списку точек.

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

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