https://www.traditionrolex.com/13
3 страницы 1 2 3
RhinoScript
Пользователь
Регистрация: 10.09.2008
Откуда: Иваново

Сообщений: 31
В друзьях у: 0
Голосов: 0 / 0
Здравствуйте, уважаемые коллеги.
Работал ли кто нибудь с такой замечательной штукой как RhinoScript? Не с макросами, а именно скриптами на VB иже с ним.
Я недавно попробовал написать к Носорогу небольшой плагин для работы с камнями (на Delphi), однако, столкнулся с некоторыми проблемами - в частности, с частым перекобрячиванием тулбаров при запуске и тормозной работой программы в целом.
Но вообще - вопрос в первом абзаце :)
Развернуть ⇓
Пользователь
Регистрация: 10.09.2008
Откуда: Иваново

Сообщений: 31
В друзьях у: 0
Голосов: 0 / 0
Боб в целом прав :) Мышление техническое - люблю кодить. Ну и признания хочу :))) Матрикс у нас один, а сотрудников-то поболе будет. Что-то матриксоподобное пригодится.
Модератор
Регистрация: 25.01.2005
Откуда: Москва

Сообщений: 928
В друзьях у: 1
Голосов: 20 / 7
Хорошо, когда контора финансово мощная ... Вот Матрикс отоварили ..  :roll:
i can your 3D
Пользователь
Регистрация: 10.09.2008
Откуда: Иваново

Сообщений: 31
В друзьях у: 0
Голосов: 0 / 0
Скорее, дальновидная. Мы его отоварили уже давным-давно, год назад где-то. Пользительная штука, как ни крути.
Пользователь
Регистрация: 14.09.2006

Сообщений: 218
В друзьях у: 0
Голосов: 0 / 0
Гм. Я тут эта... :) За полдня сделал перемещение камней по поверхности...  :oops:
Делается довольно просто. Используя все тот же OrientOnSrf с опцией OnSurface.
Модератор
Регистрация: 25.01.2005
Откуда: Москва

Сообщений: 928
В друзьях у: 1
Голосов: 20 / 7
:shock: скоренько ... а потестить дадите? или только в коммерческой версии?  :oops:
PS: Batuhan, я знаю, это всё из-за правильно выбранной аватарки!!!!  :roll:
i can your 3D
Пользователь
Регистрация: 14.09.2006

Сообщений: 218
В друзьях у: 0
Голосов: 0 / 0
Я-то могу дать, тока работает он с камнями в виде блоков. С простыми объектами не работает. Короче, сделан "под себя"... :)
Но саму текстовку скрипта выложу... Слегка под себя переделывайте...

[code:1]Sub MyBlockMove
Dim BlockInstanceObj
Dim PtFrom, PtOrient, Vec
Dim TmpPt
Dim i, Min
Dim arrPoints, arrPoint, arrSrfObj

setlocale("en-us")

BlockInstanceObj = Rhino.GetObject("Ткни блок для перемещения", 4096, vbTrue, vbFalse)
If IsNull(BlockInstanceObj) Then Exit Sub
arrSrfObj = Rhino.GetSurfaceObject("Ткни поверхность")
If Not IsArray(arrSrfObj) Then Exit Sub
SrfObj = arrSrfObj(0)
If IsBlockInstance(BlockInstanceObj) Then
 Rhino.EnableRedRaw(vbFalse)
 PtFrom = Rhino.BlockInstanceInsertPoint(BlockInstanceObj)
 TmpPt = Rhino.AddPoint(Array(0, 1, 0))
 Rhino.Command "-OrientOnSrf SelID " & TmpPt & " Enter " & Pt2Str(Array(0, 0, 0)) _
  & " " & Pt2Str(Array(0, 1, 0)) & " SelID " & SrfObj & " Copy=No " & Pt2Str(PtFrom) & " Enter Enter Cancel"
 PtOrient = Rhino.PointCoordinates(TmpPt)
 Rhino.DeleteObject(TmpPt)
 Rhino.EnableRedRaw(vbTrue)
 Rhino.Command "-OrientOnSrf SelID " & BlockInstanceObj & " Enter o " & " SelID " & SrfObj & " " & Pt2Str(PtFrom) _
  & " " & Pt2Str(PtOrient) & " Copy=No " & "Pause" & " Enter Enter Cancel"
End If

End Sub
[/code:1]

PS С обычными камнями (в виде полисурфов) кстати сложнее будет. У Блока есть "точка вставки", от которой пляшешь, а у полисурфа-то нету. Так что с блоками все гораздо легче.
Пользователь
Регистрация: 10.09.2008
Откуда: Иваново

Сообщений: 31
В друзьях у: 0
Голосов: 0 / 0
Вот спасибо хорошо :) Поделюсь чем-нибудь при случае :)
Модератор
Регистрация: 25.01.2005
Откуда: Москва

Сообщений: 928
В друзьях у: 1
Голосов: 20 / 7
У полика можно явно её задать - в составе группы. Как, например, в ТГ сделано.
i can your 3D
Пользователь
Регистрация: 14.09.2006

Сообщений: 218
В друзьях у: 0
Голосов: 0 / 0
То бишь сделать точку в группе (настоящую Point) и с ней работать?
Не люблю лишнюю геометрию. И так приходится с ней работать... Стараюсь минимизировать.
Модератор
Регистрация: 25.01.2005
Откуда: Москва

Сообщений: 928
В друзьях у: 1
Голосов: 20 / 7
Ну да .. сделать в отдельном слое, если не нужны - спрятать или вовсе удалить. Ну не ну а чё делать ..  :roll:
i can your 3D
Пользователь
Регистрация: 10.09.2008
Откуда: Иваново

Сообщений: 31
В друзьях у: 0
Голосов: 0 / 0
Конвертировать блок обратно в полисурф.
Модератор
Регистрация: 25.01.2005
Откуда: Москва

Сообщений: 928
В друзьях у: 1
Голосов: 20 / 7
Вроде не о том речь? Нужна базовая точка, от которой двигать - без разницы, что. Нет?
i can your 3D
Пользователь
Регистрация: 10.09.2008
Откуда: Иваново

Сообщений: 31
В друзьях у: 0
Голосов: 0 / 0
Блок задаётся не базовой точкой, а матрицей 4х4 - в ней содержится положение точки, а также три вектора, отвечающие за ориентацию блока в пространстве и скэйл по относительным осям. Поэтому заменить блок полисурфом практически невозможно, да и нерационально.
Модератор
Регистрация: 25.01.2005
Откуда: Москва

Сообщений: 928
В друзьях у: 1
Голосов: 20 / 7
Я сейчас с точки зрения моделирования, а не программирования  :roll: А так-то понятно, что полисурф никаких координат не несёт..
i can your 3D
Пользователь
Регистрация: 10.09.2008
Откуда: Иваново

Сообщений: 31
В друзьях у: 0
Голосов: 0 / 0
С точки зрения моделирования - можно использовать Volume Centroid. Но одной точки всё равно мало...
Пользователь
Регистрация: 14.09.2006

Сообщений: 218
В друзьях у: 0
Голосов: 0 / 0
В принципе можно и Centroid использовать. Если чисто камень надо подвигать, без всяких дополнительных сверлений-крапанов...
А точки одной вполне достаточно (я в своем скрипте использую всего одну точку - точку вставки блока), только если эта точка лежит на поверхности, по которой надо подвинуть камень. Я вот на полисурф камня сделал VolumeCentroid - вроде в районе рундиста точка получается. Так что можно и с камнем сделать. Вот с группами я еще не работал в скриптах.
Пользователь
Регистрация: 14.09.2006

Сообщений: 218
В друзьях у: 0
Голосов: 0 / 0
Цитата
Боб в целом прав :) Мышление техническое - люблю кодить. Ну и признания хочу :))) Матрикс у нас один, а сотрудников-то поболе будет. Что-то матриксоподобное пригодится.

А можно вопрос? Признание нужно материальное или моральное? :) И как после удачного кодинга поступите с сотрудниками? Безвозмездная раздача будет?
Так... Просто интересно...  :oops:
Пользователь
Регистрация: 10.09.2008
Откуда: Иваново

Сообщений: 31
В друзьях у: 0
Голосов: 0 / 0
Материальное было бы очень приятным дополнением к моральному ;)
Сотрудникам да, безвозмездно. Однако, удачного кодинга я не особо жду - написал себе несколько нужных скриптов, и работаю с их помощью.
3 страницы 1 2 3
https://www.traditionrolex.com/13