3DCenter.ru

Здравствуйте, гость ( Вход | Регистрация )

191 страниц V  « < 171 172 173 174 175 > »   
Reply to this topicStart new topic
> А нет-ли такого скрипта?
Ded_
сообщение 27/11/2017, 23:38
Сообщение #2581


MaxMan
Иконка группы

Группа: Пользователи
Сообщений: 180
Регистрация: 04/05/2006
Из: Ryazan
Пользователь №: 30 816



Цитата(Jahman @ 27/11/2017, 21:09) *
Вопрос на миллион, конечно.
Я бы начал с разбиения всех криволинейных участков сплайна на отрезки некоторой длины (какой-то минимальный шаг для сохранения кривизны, возможно как-раз зависимый от кривизны). Затем по всем этим координатам для каждого сплайна по отдельности генерить код команд для резака и форматом его писать в файл.


Код
ss = stringstream ""

cmd = "G01"
pts = #([1,1,0],[2,2,0],[2,3,0],[4,4,0],[3,5,0])

for p in pts do (

    format "% X% Y% Z%\n" cmd p.x p.y p.z to:ss

)


Я не смогу применить, не знаю вернее как, эти команды.
А сплайны в сцене у меня сразу все разбитые, я привык вообще не использовать интерполяцию, всегда в ноль, нет промежуточных линий, при построении использую только линию, без интерполяции, любая фигура у меня состояит из набора прямых линий.
одно время автозаменой пытался вот из этого скрипта делать G-код.
Этот скрипт генерирует "тело" OBJ файла в окне листенера.
Я удалял чтото, чтото менял на команды, но очень много возни, возвращался назад к программе Ace/
Поможешь? Взяв этот скрипт за основу?
CODE
global baseVertex = 0
global baseTVertex = 0
global baseNVertex = 0

function toDec f = (
local i = f as integer
return i
)

function outputHeader =(
format "\n"
format "Copy and paste the following lines into a\n"
format "text editor, and save them as a .obj file.\n"
format "\n"
format "# -----------------\n"
format "# Start of obj file\n"
format "mtllib Unnamed.mtl\n"
flushStringStream
)

function outputFooter =(
format "# end of obj file\n"
format "# ---------------\n"
format "\n"
flushStringStream
)

function outputNode node = (
format "g %\nusemtl %\n" node.name node.material

local m = snapshotAsMesh node
for v = 1 to m.numVerts do (
local vert = m.verts[v]
format "v % % %\n" vert.pos.x vert.pos.y vert.pos.z
flushStringStream
)
format "\n"

if m.numtverts > 0 do (
-- Texture coordinates

for vt = 1 to m.numtverts do (
local tvert = getTVert m vt
format "vt % % %\n" tvert.x tvert.y tvert.z
)
format "\n"

-- Also print out the normals, because some importers
-- can't handle faces with textures but not normals

for f =1 to m.numFaces do (
local vn = getFaceNormal m f
format "vn % % %\n" vn.x vn.y vn.z
flushStringStream
)
format "\n"
)

local mv = m.verts
for f =1 to m.numFaces do (
local vface =getface m f
local x = baseVertex + toDec(vface.x)
local y = baseVertex + toDec(vface.y)
local z = baseVertex + toDec(vface.z)

if m.numtverts > 0 then
(
local tvface = gettvface m f
local tx = baseTVertex + toDec(tvface.x)
local ty = baseTVertex + toDec(tvface.y)
local tz = baseTVertex + toDec(tvface.z)
local n = baseNVertex + f
format "f %/%/% %/%/% %/%/%\n" x tx n y ty n z tz n
flushStringStream
)
else (
format "f % % %\n" x y z
)
)
format "\n"
baseVertex = baseVertex + m.numVerts
baseTVertex = baseTVertex + m.numtverts
baseNVertex = baseNVertex + m.numFaces
)

function PrintObj = (
outputHeader()
for c in rootNode.children do outputNode c
outputFooter()
)

PrintObj()


В вложении сцена с примером для реза и бигования одного из листов A4

Сообщение отредактировал Ded_ - 27/11/2017, 23:48
Прикрепленные файлы
Прикрепленный файл  Primer_List_A4.zip ( 16,52 килобайт ) Кол-во скачиваний: 29
 
Go to the top of the page
 
+Quote Post
Jahman
сообщение 28/11/2017, 00:43
Сообщение #2582


уже всё сделал
Иконка группы

Группа: Пользователи
Сообщений: 2 456
Регистрация: 01/06/2005
Из: z3л3№гр@d
Пользователь №: 13 838



выделяешь шейп и запускаешь.
само собой это лишь пример

CODE
outputStream = StringStream ""

shp = selection[1]

shapePoints = for splineIndex = 1 to numSplines shp collect (
    
    pts = for knotIndex = 1 to numKnots shp splineIndex collect getKnotPoint shp splineIndex knotIndex
    
    if isClosed shp splineIndex do append pts pts[1]
        
    pts
    
)



fn laserStop   ss:outputStream = format "M5\n" to:ss
fn laserStart  ss:outputStream = format "M3\n" to:ss    
fn goto cmd pt ss:outputStream  = format "% X% Y% Z%\n" cmd (formattedPrint pt.x format:".4f") (formattedPrint pt.y format:".4f") (formattedPrint pt.z format:".4f") to:ss


G00 = "G00"
G01 = "G01"
-- ...
-- etc

laserStop()

for item in shapePoints do (
    
    goto G00 item[1]
    laserStart()
    
    for pt in item do goto G01 pt
    
    laserStop()
    
)

clearListener()

format "%\n" outputStream
Go to the top of the page
 
+Quote Post
Ded_
сообщение 28/11/2017, 12:00
Сообщение #2583


MaxMan
Иконка группы

Группа: Пользователи
Сообщений: 180
Регистрация: 04/05/2006
Из: Ryazan
Пользователь №: 30 816



Цитата(Jahman @ 28/11/2017, 01:43) *
выделяешь шейп и запускаешь.
само собой это лишь пример

Код
outputStream = StringStream ""

shp = selection[1]

shapePoints = for splineIndex = 1 to numSplines shp collect (
    
    pts = for knotIndex = 1 to numKnots shp splineIndex collect getKnotPoint shp splineIndex knotIndex
    
    if isClosed shp splineIndex do append pts pts[1]
        
    pts
    
)



fn laserStop   ss:outputStream = format "M5\n" to:ss
fn laserStart  ss:outputStream = format "M3\n" to:ss    
fn goto cmd pt ss:outputStream  = format "% X% Y% Z%\n" cmd (formattedPrint pt.x format:".4f") (formattedPrint pt.y format:".4f") (formattedPrint pt.z format:".4f") to:ss


G00 = "G00"
G01 = "G01"
-- ...
-- etc

laserStop()

for item in shapePoints do (
    
    goto G00 item[1]
    laserStart()
    
    for pt in item do goto G01 pt
    
    laserStop()
    
)

clearListener()

format "%\n" outputStream


Спасибо огромное!

Jahman, а это твоя страница? :
https://gumroad.com/maxscript

Учиться я не могу, не мое это, голова занята другим, поэтому рассчитываю на твою помощь всегда.
У меня нет не чего коммерческого, я не зарабатываю на этом, просто увлечение на время когда дома сижу, работаю в сервисе, ремонтирую бытовую технику.
Но уже стыдно клянчить )
Скажи куда перевести, или что, где купить у тебя?

И еще , есть много людей кто мучается с DXF файлами и невозможностью открыть их в программе для ЧПУ станка, конкретно Laseraxes, я сниму видео по твоему скрипту и ссылку на подробную информацию отправлю на твой ресурс. Куда мне их направлять. Ты для продажи им сделай с учетом интерполяции вершин созданных в максе.


Сообщение отредактировал Ded_ - 28/11/2017, 12:18
Go to the top of the page
 
+Quote Post
Jahman
сообщение 28/11/2017, 12:56
Сообщение #2584


уже всё сделал
Иконка группы

Группа: Пользователи
Сообщений: 2 456
Регистрация: 01/06/2005
Из: z3л3№гр@d
Пользователь №: 13 838



Да не надо ничего покупать smile.gif Я чисто ради фана.
Гугл говорит, что в кореле можно на VisualBasic'e скриптить кстати. Так что макс тут наверняка даже лишний
Go to the top of the page
 
+Quote Post
Ded_
сообщение 28/11/2017, 13:25
Сообщение #2585


MaxMan
Иконка группы

Группа: Пользователи
Сообщений: 180
Регистрация: 04/05/2006
Из: Ryazan
Пользователь №: 30 816



Цитата(Jahman @ 28/11/2017, 13:56) *
Да не надо ничего покупать smile.gif Я чисто ради фана.
Гугл говорит, что в кореле можно на VisualBasic'e скриптить кстати. Так что макс тут наверняка даже лишний

Да Корел в той среде - основная программа.
То что я все пытаюсь открыть в Максе, это мой архаизм, или лень, изучать что-то другое. А там Макс тоже не популярен, там Корел или Скетч только основные программы.
http://only-paper.ru/forum/
Но для меня этот скрипт просто панацея, чтобы за оставшиеся пару часов вечера успеть чтото вырезать и склеить, чем сидеть конвертировать векторы из разных программ и потом еще ждать когда станок вырежет, а тут я заново создам все линии используя привязку, чтобы вручную указать оптимальные движение по линиям, все программы для разверток делают чихарду из последовательности вершин, очень много порожняка в движении головки, он больше кактается из угла в улол, чем режет.
Благодаря этому скрипту я понатукаю линию так , как мне нужно для минимального холостого хода между линиями и сразу готов G-код. Спасибо.

Сообщение отредактировал Ded_ - 28/11/2017, 13:33
Go to the top of the page
 
+Quote Post
Jahman
сообщение 28/11/2017, 13:49
Сообщение #2586


уже всё сделал
Иконка группы

Группа: Пользователи
Сообщений: 2 456
Регистрация: 01/06/2005
Из: z3л3№гр@d
Пользователь №: 13 838



QUOTE
я заново создам все линии используя привязку, чтобы вручную указать оптимальные движение по линиям

ты имортишь dxf и потом по нему руками все шейпы переделываешь?

QUOTE
все программы для разверток делают чихарду из последовательности вершин

а можно какойнить примитивный пример? сам исходник и максовский файл

вдруг еще какую свистелку получится прикрутить

Сообщение отредактировал Jahman - 28/11/2017, 13:50
Go to the top of the page
 
+Quote Post
Ded_
сообщение 28/11/2017, 17:36
Сообщение #2587


MaxMan
Иконка группы

Группа: Пользователи
Сообщений: 180
Регистрация: 04/05/2006
Из: Ryazan
Пользователь №: 30 816



Цитата(Jahman @ 28/11/2017, 14:49) *
Цитата
я заново создам все линии используя привязку, чтобы вручную указать оптимальные движение по линиям

ты имортишь dxf и потом по нему руками все шейпы переделываешь?

Ага , руками все перерисовываю, для оптимизации холостого хода. и соединения вершин где можно.
Цитата(Jahman @ 28/11/2017, 14:49) *
Цитата
все программы для разверток делают чихарду из последовательности вершин

а можно какойнить примитивный пример? сам исходник и максовский файл

вдруг еще какую свистелку получится прикрутить


Пример - конечно, я даже очень рад )
Он простой , но не бесполезный, только что нарисовал по фото с нуля, это маска "голова кошки", к новому году может кому пригодится, размер головы 53-57, очень просто клеить. мало сегментов. Забавная штука для детей будет, бумагу лучше брать больше 200 грамм на метр плотность, маска без ребер жесткости.
В общем выкладываю все файлы в вложении, всю последовательность моих действий от модели до развертки в формате DXF:
- первый файлПрикрепленный файл  1_Cat_papercraft_MAX.zip ( 26,19 килобайт ) Кол-во скачиваний: 104
сцена из макса


- второй файлПрикрепленный файл  2_Cat_papercraft_3DS.zip ( 2,26 килобайт ) Кол-во скачиваний: 103
это экспортер из сцены макса для программы развертки

- третий файлПрикрепленный файл  3_Cat_for_Pepakura.v4_PDO.zip ( 14,6 килобайт ) Кол-во скачиваний: 113
готовая сцена в программе которая развертывает модель, по принципу это как Unwrap UVW (diamond mapping) с функциями сохраненияв вектор и добавления клапанов для склейки и редактирования... в программе указал видимые ребра для бигования с углом только менее 169 градусов


- четвертый файлПрикрепленный файл  4_Cat_Pepakura_export_DXF_6_list.zip ( 7,97 килобайт ) Кол-во скачиваний: 115
это файлы листов для печати в формате DXF (6 листов в архиве)

Сообщение отредактировал Ded_ - 28/11/2017, 17:40
Go to the top of the page
 
+Quote Post
Jahman
сообщение 28/11/2017, 23:12
Сообщение #2588


уже всё сделал
Иконка группы

Группа: Пользователи
Сообщений: 2 456
Регистрация: 01/06/2005
Из: z3л3№гр@d
Пользователь №: 13 838



Глянул как dxf импортится, вроде все годно выглядит.
Особенно после того как выделяешь все вершины cutline шейпа и делашь weld с минимальным порогом, ну и corner всем узлам после этого.
Ты вероятно только mountainLine и valleyLine перерисовываешь для оптимального прохода?

А вот алгоритм нахождения оптимальной последовательности резов, наверное как раз и есть вопрос на миллион. Типичная задача коммивояжера

Сообщение отредактировал Jahman - 28/11/2017, 23:14
Go to the top of the page
 
+Quote Post
Ded_
сообщение 28/11/2017, 23:57
Сообщение #2589


MaxMan
Иконка группы

Группа: Пользователи
Сообщений: 180
Регистрация: 04/05/2006
Из: Ryazan
Пользователь №: 30 816



Цитата(Jahman @ 29/11/2017, 00:12) *
Глянул как dxf импортится, вроде все годно выглядит.
Особенно после того как выделяешь все вершины cutline шейпа и делашь weld с минимальным порогом, ну и corner всем узлам после этого.
Ты вероятно только mountainLine и valleyLine перерисовываешь для оптимального прохода?

А вот алгоритм нахождения оптимальной последовательности резов, наверное как раз и есть вопрос на миллион. Типичная задача коммивояжера

Ага, только mountainLine и valleyLine, в принципе не так долго, детальки крупные теперь, до этого у меня были очень мелкие развертки, я пока разворачивал устал, а клеить не захотел вообще )
Go to the top of the page
 
+Quote Post
Jahman
сообщение 29/11/2017, 00:14
Сообщение #2590


уже всё сделал
Иконка группы

Группа: Пользователи
Сообщений: 2 456
Регистрация: 01/06/2005
Из: z3л3№гр@d
Пользователь №: 13 838



QUOTE
Задача коммивояжёра относится к числу трансвычислительных: уже при относительно небольшом числе городов (66 и более) она не может быть решена методом перебора вариантов никакими теоретически мыслимыми компьютерами за время, меньшее нескольких миллиардов лет.


smile.gif

А в какой последовательности в конечном счете эти резы производятся?
1.mountainLine 2.valleyLine 3. cutLine ??

Сообщение отредактировал Jahman - 29/11/2017, 00:15
Go to the top of the page
 
+Quote Post
BorisK
сообщение 29/11/2017, 11:38
Сообщение #2591


Давно уже
Иконка группы

Группа: Координатор
Сообщений: 9 675
Регистрация: 24/06/2002
Из: Зеленоград
Пользователь №: 158



Помнится был скриптец который назначал Object ID и Material ID случайно ил или на все, или на выбранные объекты. Чего-то найти не могу.
Go to the top of the page
 
+Quote Post
Ded_
сообщение 29/11/2017, 13:08
Сообщение #2592


MaxMan
Иконка группы

Группа: Пользователи
Сообщений: 180
Регистрация: 04/05/2006
Из: Ryazan
Пользователь №: 30 816



Цитата(Jahman @ 29/11/2017, 01:14) *
Цитата
Задача коммивояжёра относится к числу трансвычислительных: уже при относительно небольшом числе городов (66 и более) она не может быть решена методом перебора вариантов никакими теоретически мыслимыми компьютерами за время, меньшее нескольких миллиардов лет.


smile.gif

А в какой последовательности в конечном счете эти резы производятся?
1.mountainLine 2.valleyLine 3. cutLine ??

Я объединению все линии сгиба в один сплайн, перерисовывая его по своему, как ты говорил, про коммивояжера. Прохожу лазерем по нему снача с маленьким током, чтобы не прорезал бумагу, потом беру Cut линию и следом режу по ней сильным током. " этапа получается.
И вот я что подумал, лазер когда холодные режет чуть лучше, а когда нагревается похуже, и линии сгиба (внутрь или наружу, не важно) получаются неоднородные на разных листах.
Вот бы все резать одним сплайном! только вместо линий для сгиба использовать пунктир, что бы была перфорация, это было бы вообще круто, размер перфорации 1мм через 2 мм или настраивать как в векторных редакторах.
Тогда для реза одного листа будет достаточно одного кода.
Go to the top of the page
 
+Quote Post
Ded_
сообщение 29/11/2017, 13:14
Сообщение #2593


MaxMan
Иконка группы

Группа: Пользователи
Сообщений: 180
Регистрация: 04/05/2006
Из: Ryazan
Пользователь №: 30 816



Цитата(BorisK @ 29/11/2017, 12:38) *
Помнится был скриптец который назначал Object ID и Material ID случайно ил или на все, или на выбранные объекты. Чего-то найти не могу.

Может это?
http://3dcenter.ru/forum/index.php?showtop...st&p=919865
+
Опс, да, он недоступен и названия нет.
Тогд вот
, в описании , что добавлена кнопка случайного назаначения ID
http://www.scriptspot.com/3ds-max/scripts/hoha-material-id

Сообщение отредактировал Ded_ - 29/11/2017, 13:35
Go to the top of the page
 
+Quote Post
Jahman
сообщение 29/11/2017, 15:15
Сообщение #2594


уже всё сделал
Иконка группы

Группа: Пользователи
Сообщений: 2 456
Регистрация: 01/06/2005
Из: z3л3№гр@d
Пользователь №: 13 838



сперва запускаем такой вот скрипт, он определит функцию для конверта сплайна в прерывистый
CODE
fn shapeToDotShape shp step gap = if isKindOf shp SplineShape do (

    local shp2 = splineShape name:(uniqueName (shp.name + "_dotted"))
    shp2slineCount = 0

    for i=1 to numsplines shp do (
        
        count = numKnots shp i
        
        for k=1 to count do (
            
            kk = k+1
            
            if k == count do (
                
                kk = 1
                
                if not isClosed shp i do continue
                
            )
                
            p1 = getKnotPoint shp i k
            p2 = getKnotPoint shp i kk
            vec = normalize (p2 - p1)
            dist = distance p1 p2
            
            if dist >= (gap + step) then (
                
                for x=1 to dist / (gap + step) do (
                    
                    addNewSpline shp2
                    shp2slineCount += 1
                    addKnot shp2 shp2slineCount #corner #line p1
                    addKnot shp2 shp2slineCount #corner #line (p1 + vec * step)
                    
                    p1 += vec * (gap + step)
                    
                )
                
                if distance p1 p2 >= step do (
                    
                    addNewSpline shp2
                    shp2slineCount += 1
                    addKnot shp2 shp2slineCount #corner #line p1
                    addKnot shp2 shp2slineCount #corner #line (p1 + vec * step)
                    
                    p1 += vec * (gap + step)
                    
                )
                
                updateShape shp2
            
            )
            
        )
                
    )
    
    if shp2slineCount == 0 then delete shp2 else shp2

)


затем выделяем нужные сплайны, вбиваем в листенер сиё с нужными значениями шага и пропуска и на танцы cool.gif
CODE
select ( for s in selection collect ( if (ss = shapeToDotShape s 1.0 2.0) != undefined then ss else dontCollect))


Сообщение отредактировал Jahman - 29/11/2017, 15:20
Go to the top of the page
 
+Quote Post
BorisK
сообщение 29/11/2017, 16:08
Сообщение #2595


Давно уже
Иконка группы

Группа: Координатор
Сообщений: 9 675
Регистрация: 24/06/2002
Из: Зеленоград
Пользователь №: 158



Цитата(Ded_ @ 29/11/2017, 13:14) *
Цитата(BorisK @ 29/11/2017, 12:38) *
Помнится был скриптец который назначал Object ID и Material ID случайно ил или на все, или на выбранные объекты. Чего-то найти не могу.

Может это?



Не, я не про эти - те которые в элементах. Вроде нашел http://www.scriptspot.com/3ds-max/scripts/effectschannelset
Go to the top of the page
 
+Quote Post
Bots
сообщение Системное сообщение






191 страниц V  « < 171 172 173 174 175 > » 
Reply to this topicStart new topic

5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 25/04/2024 - 19:39