Вложений: 1
Рисование параметрических поверхностей в автокаде
Часто бывает нужно нарисовать поверхности, которые описываются в пространстве формулами.
Хоть гиперболу, хоть эллипсоид.
Очень легко рисовать параметрические меши в автокаде.
Вот пример подпрограммки, которая рисует разомкнутый цилиндр из сегментов 10x10.
Функция F(u v) возвращает точку (x y z)
(defun 3dmesh_plot()
(command "3dmesh" 10 10)
(setq i 0 j 0)
(while (< j 10)
(while (< i 10)
(setq u (* (/ pi 5) i) v j)
(setq pt (F u v))
(command pt)
(setq i (1+ i))
)
(setq j (1+ j) i 0)
)
)
(defun F(u v)
; это рисует цилиндр: первый в списке X, потом Y и Z коорд
(setq r 2.0)
(list (* r (cos u)) (* r (sin u)) v)
)
Сохраняем содержимое в файле, допустим, test.lsp (файл должен быть в доступном директории, например в текущем), в командной строке вводим
(load "test.lsp")
и затем
(3dmesh_plot)
Должен нарисоваться разомкнутый цилиндр. Если хотите, можете его куда-нибудь экспортировать, в 3dMax тот же.
Я специально привел упрощенную схему, чтобы понял даже самый непонятливый.
Ответ: Рисование параметрических поверхностей в автокаде
Спасибо. А какой-нибудь практический пример можно? Чтобы сделать объект таким способом с экспортом в Мах было проще(или быстрее) чем в самом Мах-е?
Ответ: Рисование параметрических поверхностей в автокаде
Цитата:
Сообщение от naryv
Спасибо. А какой-нибудь практический пример можно? Чтобы сделать объект таким способом с экспортом в Мах было проще(или быстрее) чем в самом Мах-е?
Сложный вопрос. Рассматривайте это как хинт, еще один способ работы. Что уж из него можно извлечь (гиперболические мачты амерских линкоров или моделирование террейна, параметрические гайки, швеллеры и нервюры) - дело вашей фантазии, it's up to you как говорят англичане. Хотите, нарисуйте параметрическое крыло этим же методом, или фюзеляж.
Я в курсе, что в максе есть скрипты, но не видел ни одного толкового примера. С другой стороны, языка проще чем Лисп, придумать, мне кажется, невозможно.
Вложений: 1
Ответ: Рисование параметрических поверхностей в автокаде
Вот, например, заменим функцию F:
(defun 3dmesh_plot()
(command "3dmesh" 6 11)
(setq i 0 j 0)
(while (< j 6)
(while (< i 11)
(setq u (* (/ pi 5) i) v j)
(setq pt (F u v))
(command pt)
(setq i (1+ i))
)
(setq j (1+ j) i 0)
)
)
(defun F(u v)
(list (* (- 10 (* 0.9 v)) (cos u)) (* (- 10 (* 0.2 v)) (sin u)) (* v 10))
)
Получим вот такую секцию фюзеляжа:
Ответ: Рисование параметрических поверхностей в автокаде
Цитата:
Сообщение от =FPS=Altekerve
Сложный вопрос. Рассматривайте это как хинт, еще один способ работы.
Это-то понятно, просто хотелось узнать - может Вы уже что-то делали таким способом, для наглядности.
Цитата:
Сообщение от =FPS=Altekerve
Что уж из него можно извлечь (гиперболические мачты амерских линкоров или моделирование террейна, параметрические гайки, швеллеры и нервюры) - дело вашей фантазии, it's up to you как говорят англичане. Хотите, нарисуйте параметрическое крыло этим же методом, или фюзеляж.
Я потому и написал - чтобы проще или быстрее было чем в Мах-е, что понятно, что можно и крыло и фюзеляж сделать так, но вопрос в трудо/время-затратах. Про гиперболические мачты - видимо хороший пример - похоже таким образом действительно будет просто и быстро их сделать.
Цитата:
Сообщение от =FPS=Altekerve
Я в курсе, что в максе есть скрипты, но не видел ни одного толкового примера.
А в папке samples Мах-а смотрели? Мне понравился PaintCylinder :).
Цитата:
Сообщение от =FPS=Altekerve
С другой стороны, языка проще чем Лисп, придумать, мне кажется, невозможно.
Это да:).
Цитата:
Сообщение от =FPS=Altekerve
Получим вот такую секцию фюзеляжа:
Не очень хорошо видно на скриншоте - это получился конус, с одной стороны - окружность, с другой эллипс?
Ответ: Рисование параметрических поверхностей в автокаде
Цитата:
Сообщение от naryv
Это-то понятно, просто хотелось узнать - может Вы уже что-то делали таким способом, для наглядности.
Еще нет. Но результаты мне нравятся.
Цитата:
Сообщение от naryv
Я потому и написал - чтобы проще или быстрее было чем в Мах-е, что понятно, что можно и крыло и фюзеляж сделать так, но вопрос в трудо/время-затратах.
Макс, с моей ТЗ, вообще одно сплошное недоразумение в плане геометрии. Я вообще не понимаю, как в нем кто-то геометрию рисует.
Привязки - не поймешь что. 2D, 3D, 2.5D. Как разметить линию или сплайн на участки равной длины или на целое число участков? Нету командной строки? Нету дубликатов команд с параметрами с клавиатуры. Если в Автокаде надо что-нибудь быстро сосчитать, пишешь в командной строке (* 2 2) и все.
Что касается последней секции фюзеляжа - работы было ровно на 30 секунд (изменить F). Сделайте за то же время такую же секцию в максе.
Цитата:
Сообщение от naryv
А в папке samples Мах-а смотрели? Мне понравился PaintCylinder :).
Цитата:
Сообщение от naryv
Не очень хорошо видно на скриншоте - это получился конус, с одной стороны - окружность, с другой эллипс?
Каждое сечение - эллипс, но с разными осями. В плане и сбоку - трапеция. Формулу для F смотрим.
Ответ: Рисование параметрических поверхностей в автокаде
Цитата:
Сообщение от =FPS=Altekerve
Еще нет. Но результаты мне нравятся.
Ок, как будет какой-нибудь пример, покажите здесь?
Цитата:
Сообщение от =FPS=Altekerve
Макс, с моей ТЗ, вообще одно сплошное недоразумение в плане геометрии. Я вообще не понимаю, как в нем кто-то геометрию рисует.
Привязки - не поймешь что. 2D, 3D, 2.5D. Как разметить линию или сплайн на участки равной длины или на целое число участков?
:) ну не всё так плохо, кое что, конечно через одно место делать приходится, а вобщем нормально:)
Цитата:
Сообщение от =FPS=Altekerve
Нету командной строки?
Как нет ? В левом нижнем оглу, она же ScriptListener Window.
Цитата:
Сообщение от =FPS=Altekerve
Нету дубликатов команд с параметрами с клавиатуры.
Есть, всё там-же , например :
Cylinder smooth:on heightsegs:5 capsegs:1 sides:18 height:10.4695 radius:10.7213 mapCoords:off transform:(matrix3 [1,0,0] [0,0,1] [0,-1,0] [60.0885,4.36545e-007,-9.987]) isSelected:on делает цилиндр.
Цитата:
Сообщение от =FPS=Altekerve
Если в Автокаде надо что-нибудь быстро сосчитать, пишешь в командной строке (* 2 2) и все.
:) Там же, только 2*2 надо писать :).
Цитата:
Сообщение от =FPS=Altekerve
Что касается последней секции фюзеляжа - работы было ровно на 30 секунд (изменить F). Сделайте за то же время такую же секцию в максе.
Верю :).
Цитата:
Сообщение от =FPS=Altekerve
Каждое сечение - эллипс, но с разными осями. В плане и сбоку - трапеция. Формулу для F смотрим.
Угу, на картинку сразу ткнул, поленился формулу смотреть :)
Ответ: Рисование параметрических поверхностей в автокаде
Цитата:
Сообщение от naryv
Ок, как будет какой-нибудь пример, покажите здесь?
Что-то мне тут какой-то сарказм мерещится.
Да, все точно. Максовский скрипт аналог лиспа. И командная строка есть, только я не имел представления что это такое. И пример с рисованием параметрического меша там же есть.
Но почему он мне кажется таким неудобным, макс?
В автокаде есть лисп, в максе скрипт.
В автокаде я могу написать свое приложение на object_arx, но и в максе есть свой SDK.
Конечно, для рендеринга и текстуринга макс лучше. И в отличие от автокада есть булевы операции с сетками. Но возиться с геометрией в максе для меня почему-то мучение, в CADе я все делаю на два порядка быстрее. Дело привычки?
Ответ: Рисование параметрических поверхностей в автокаде
Цитата:
Сообщение от =FPS=Altekerve
Что-то мне тут какой-то сарказм мерещится.
Да нет, нет никакого сарказма. Просто хочется видеть - в каких конкретных случаях такой способ будет удобнее, чтобы его применять - самому выяснять - со временем несколько напряжно, а раз уж Вы занялись этим вопросом - хочется "на халяву" получить совет - в таком то случае стоит применять связку Акад-Мах, в другом - проще в Мах-е всё сделать.
Так что сорри, если выглядит как сарказм - и в мыслях не было.
Цитата:
Сообщение от =FPS=Altekerve
Да, все точно. Максовский скрипт аналог лиспа. И командная строка есть, только я не имел представления что это такое. И пример с рисованием параметрического меша там же есть.
Но почему он мне кажется таким неудобным, макс?
В автокаде есть лисп, в максе скрипт.
В автокаде я могу написать свое приложение на object_arx, но и в максе есть свой SDK.
Конечно, для рендеринга и текстуринга макс лучше. И в отличие от автокада есть булевы операции с сетками. Но возиться с геометрией в максе для меня почему-то мучение, в CADе я все делаю на два порядка быстрее. Дело привычки?
Наверное привычка + если не ошибаюсь, АCAD работает в 3Д с телом, а Мах - с поверхностью, м.б. для Вас удобнее с объектами-телами работать? Или ACAD и с поверхностями тоже сейчас работает(я в нём давно серьёзного ничего не делал)? Ну и система привязок кажется в ACADе немного более удобной - в Мах-е вроде всё практически то-же самое есть, но пользоваться мне ими не очень удобно.
Ответ: Рисование параметрических поверхностей в автокаде
Плюс в том, что поверхность, построенная таким методом, совершенно гладкая. Ее точки лежат на гладкой поверхности. Это очевидно из того, что сами функции задания гладкие. При ручной расстановк точек может получиться лишь приближение к реальной поверхности. Кроме того, в параметрической поверхности известны нормали, что полезно в движке для правильного шейдинга, в поверхности же вручную собираемой нориали расставляет движок абы как.
Ответ: Рисование параметрических поверхностей в автокаде
А минус в том, чтоб сделать этими функциями что-то конкретное(ту же секцию фюзеляжа) - надо иметь функции для чего-то конкретного(а их наверняка не существует для тех же фюзеляжей). Абстрактное нечто, пусть совершенно гладкое, но не соответствующее моделируемому обьекту, никому не нужно. По крайней мере выглядит это именно так. Потому остается вопрос насчет хоть какого-то примера применения ентой вещи на практике.
Ответ: Рисование параметрических поверхностей в автокаде
Ошибаешься. Интерполировать кривые многочлеными с чертежей легко.
Ответ: Рисование параметрических поверхностей в автокаде
скажу просто, в максе все есть тока надо знать где что лежит и как этим пользоваться, сравнивать несравнимые по своей сути проги я считаю неуместным. А в чем и как делать ту или иную весч пускай решит для себя каждый в силу знания той или иной проги.
Ответ: Рисование параметрических поверхностей в автокаде
Цитата:
Сообщение от =FPS=Altekerve
Ошибаешься. Интерполировать кривые многочлеными с чертежей легко.
Тогда объясни как. Собственно к тому я и писал про конкретный пример, чтоб наглядней и понятней было :)
Ответ: Рисование параметрических поверхностей в автокаде
Цитата:
Сообщение от Stalevar
Тогда объясни как. Собственно к тому я и писал про конкретный пример, чтоб наглядней и понятней было :)
Попозжее чуток. Вот времени полчасика появится, тогда.