При открытии каких либо файлов, напимер JPG, размер которых к примеру 700*650 пикселей, происходит небольшое несоответствие в скрипте:
plugin textureMap drawMap
name:"DrawMap"
classid:#(0xb01b213a,0xdbe89dc8)
extends:bitmaptexture
replaceui:true
(
local pointarray = #(),tmap,t_draw
fn getuvinfo obj sray =
(
local intray,tvface,tvarray,tv
if obj == undefined do return()
intray = intersectrayex obj sray
if intray == undefined do return()
try
(
tvface = gettvface obj intray[2]
)
catch (
print "No tv faces"
return()
)
tvarray = #(gettvert obj tvface.x,
gettvert obj tvface.y,gettvert obj tvface.z)
tv = (tvarray[1]*intray[3].x)+(tvarray[2] * intray[3].y)+(tvarray[3] * intray[3].z)
)
fn drawhelper obj sray =
(
local intray
if obj == undefined do return()
intray = intersectray obj sray
if intray == undefined do return()
append pointArray (point pos:intRay.pos showaxis:false)
)
parameters main rollout😛arams
(
clp_color type:#color ui:clp_color
cbt_draw type:#boolean ui:cbt_draw
on cbt_draw set state do
(
if $ == undefined do (
cbt_draw = false;return()
)
if not (iskindof $ editadlemesh) do addmodifier $ (normalmodifier())
while state == true do (
starttool t_draw
)
if state == false do stoptool t_draw
)
)--end rol params
Он продолжает работать : наносить пиксели на объект во вьюпортах, но когда размер карты большой более 700 пикселе в длину и ширину, то чтоб он нанёс пиксель надо тыкнуть много раз мышкой,а это очень не удобно, когда битмап 250*250 пикселей то нанести очень легко и удобно.Так вот можно ли при открытии JPG изменить её размер, до 250 пикселей хотябы или нет, если можно,то каким образом.ЗАранее благодарен.А!!!Заодно ещё раз спасибо DENIS' у!!!!!
Спасибо за совет! Я посмотрел этот скрипт, он ооочень большой, я с ним не разбирался, т.е. как он работает а просмотрел только текст. В неоторых месте нашёл что-то похожее на размеры загружаемых файлов.
global out_file16 = bitmap 16 15-- это пременная битмэп с размером 16*15 пикслей, это не то, кажется?
for i = 0 to 14 do
(
pixel_line = getpixels input_file16 [(icon_number.value-1)*16,i] 16
setpixels out_file16 [0,i] pixel_line
) Тут они что-то получают размер чтоль, а потом изменяют его???
А может сделать пустой растр размером 300*300 пикселей, а потом поместить
в него изображение загружаемого, хотя не получится, нельзя же копировать содержимое растра...
rollout unnamedRollout "rol" width:295 height:229
(
button btn1 "button" pos:[8,75] width:120 height:32
editText edt6 "" pos:[11,6] width:126 height:19
on btn1 pressed do
(
b = bitmap 300 300
f = getOpenFileName \
types:"bmp(*.bmp)|*.bmp|"
if f != undefined then
( open = openbitmap(getFilenamePath f+filenameFromPath f)
copy open b
edt6.text = b.height as string +"*"+ b.width as string
close b
)
))
createDialog unnamedRollout width:162 height:130
таким образом создаём битмап B , который имеет размеры 300*300 пикселей.
потом открываем OPEN из диалога открытия, теперь open имеет к-л размеры.
И копируем этот OPEN в В, при этом если размеры не совпадают, то OPEN будет масштабироваться до размеров В, это вродь то что надо, только у меня не получается сохранить БИТМАП В. пОМОГИТЕ, пожалуйста. в нужный файл , он ругается ...
f = getOpenFileName \
types:"bmp(*.bmp)|*.bmp|"
if f != undefined then
( open = openbitmap f
b = bitmap 300 300 filename:f
copy open b
close open
edt6.text = b.height as string +"*"+ b.width as string
save b
close b
)
))
СПАСИБО ЗА ПОМОЩЬ, не хочу быть надоедливым, но сам я не могу понять .Надеюсь на Вашу помощь.
В средстве работы с мышью есть событие ON MOUSEMOVE , ОНО ВЫЗЫВАЕТСЯ ПРИ КАЖДОМ ДВИЖЕНИИ МЫШИ. Это я всё по тому же скрипту, который Вы помогли сделать:
plugin textureMap drawMap
name:"DrawMap"
classid:#(0xb01b213a,0xdbe89dc8)
extends:bitmaptexture
replaceui:true
(
local pointarray = #(),tmap,t_draw
--local color = #(color 255 255 0)
fn getuvinfo obj sray =
(
local intray,tvface,tvarray,tv
if obj == undefined do return()
intray = intersectrayex obj sray
if intray == undefined do return()
try
(
tvface = gettvface obj intray[2]
)
catch (
print "No tv faces"
return()
)
tvarray = #(gettvert obj tvface.x,
gettvert obj tvface.y,gettvert obj tvface.z)
tv = (tvarray[1]*intray[3].x)+(tvarray[2] * intray[3].y)+(tvarray[3] * intray[3].z)
)
/*
fn drawbitmap bmap uvdata =
(
local ppos
ppos = [(uvdata.x * bmap.width) as integer, (bmap.height - (uvdata.y * bmap.height)) as integer]
c = params.clp_color.color
setpixels bmap ppos c -- #(color 255 255 0)
)
*/
fn drawhelper obj sray =
(
local intray
if obj == undefined do return()
intray = intersectray obj sray
if intray == undefined do return()
append pointArray (point pos:intRay.pos showaxis:false)
)
parameters main rollout😛arams
(
clp_color type:#color ui:clp_color
cbt_draw type:#boolean ui:cbt_draw
on cbt_draw set state do
(
if $ == undefined do (
cbt_draw = false;return()
)
if not (iskindof $ editadlemesh) do addmodifier $ (normalmodifier())
while state == true do (
starttool t_draw
)
if state == false do stoptool t_draw
)
)
)
fn drawbitmap bmap uvdata =
(
local ppos
ppos = [(uvdata.x * bmap.width) as integer, (bmap.height - (uvdata.y * bmap.height)) as integer]
c = params.clp_color.color
setpixels bmap ppos #(c) -- #(color 255 255 0)
)
tool t_draw
(
local uvdata
on mousepoint click do
(
if click == 1 then (
uvdata = getuvinfo $ (mapscreentoworldray viewpoint)
if uvdata == undefined do return()
drawbitmap delegate.bitmap uvdata
drawhelper $ (mapscreentoworldray viewpoint)
)
else
(
delete pointarray; pointarray = #()
delegate.apply = true
#stop
)
)
on mouseabort click do cbt_draw = false
)
on create do
(
save (bitmap 256 256 filename🙁"c:\\drawmap.bmp"😉)
tmap = (openbitmap ("c:\\drawmap.bmp"😉);close tmap
delegate.filename = ("c:\\drawmap.bmp"😉
)
)
Тут в одном фрагменте рассматривается действия при щелчке мыши.
on mousepoint click do
(
if click == 1 then (
uvdata = getuvinfo $ (mapscreentoworldray viewpoint)
if uvdata == undefined do return()
drawbitmap delegate.bitmap uvdata
drawhelper $ (mapscreentoworldray viewpoint)
)
else
(
delete pointarray; pointarray = #()
delegate.apply = true
#stop
)
)
--На этом месте должно быть следущее,
--ON MOUSEMOVE do cbt_draw = true, дак вот, он не запускается, по идее должно
--происходить следущее, нажимаем кнопку, происходят вышеуказанные действия и если
--она не отжата и происходит движение, то выполняется ON mouseMove, где
--повторяется нанесение штрихов(пикселей) таким образом получаются линии до
--отжатия кнопки мыши. Но этого нету.Может вы знаете как этот ON MouseMove
--работает???Помогите, пожалуйста.
on mouseabort click do cbt_draw = false
)
plugin textureMap drawMap
name:"DrawMap"
classid:#(0xb01b213a,0xdbe89dc8)
extends:bitmaptexture
replaceui:true
(
local pointarray = #(),tmap,t_draw
--local color = #(color 255 255 0)
fn getuvinfo obj sray =
(
local intray,tvface,tvarray,tv
if obj == undefined do return()
intray = intersectrayex obj sray
if intray == undefined do return()
try
(
tvface = gettvface obj intray[2]
)
catch (
print "No tv faces"
return()
)
tvarray = #(gettvert obj tvface.x,
gettvert obj tvface.y,gettvert obj tvface.z)
tv = (tvarray[1]*intray[3].x)+(tvarray[2] * intray[3].y)+(tvarray[3] * intray[3].z)
)
/*
fn drawbitmap bmap uvdata =
(
local ppos
ppos = [(uvdata.x * bmap.width) as integer, (bmap.height - (uvdata.y * bmap.height)) as integer]
c = params.clp_color.color
setpixels bmap ppos c -- #(color 255 255 0)
)
*/
fn drawhelper obj sray =
(
local intray
if obj == undefined do return()
intray = intersectray obj sray
if intray == undefined do return()
append pointArray (point pos:intRay.pos showaxis:false)
)
parameters main rollout😛arams
(
clp_color type:#color ui:clp_color
cbt_draw type:#boolean ui:cbt_draw
on cbt_draw set state do
(
if $ == undefined do (
cbt_draw = false;return()
)
if not (iskindof $ editadlemesh) do addmodifier $ (normalmodifier())
while state == true do (
starttool t_draw
)
if state == false do stoptool t_draw
)
)
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
Гость
plugin textureMap drawMap
name:"DrawMap"
classid:#(0xb01b213a,0xdbe89dc8)
extends:bitmaptexture
replaceui:true
(
local pointarray = #(),tmap,t_draw
fn getuvinfo obj sray =
(
local intray,tvface,tvarray,tv
if obj == undefined do return()
intray = intersectrayex obj sray
if intray == undefined do return()
try
(
tvface = gettvface obj intray[2]
)
catch (
print "No tv faces"
return()
)
tvarray = #(gettvert obj tvface.x,
gettvert obj tvface.y,gettvert obj tvface.z)
tv = (tvarray[1]*intray[3].x)+(tvarray[2] * intray[3].y)+(tvarray[3] * intray[3].z)
)
fn drawhelper obj sray =
(
local intray
if obj == undefined do return()
intray = intersectray obj sray
if intray == undefined do return()
append pointArray (point pos:intRay.pos showaxis:false)
)
parameters main rollout😛arams
(
clp_color type:#color ui:clp_color
cbt_draw type:#boolean ui:cbt_draw
on cbt_draw set state do
(
if $ == undefined do (
cbt_draw = false;return()
)
if not (iskindof $ editadlemesh) do addmodifier $ (normalmodifier())
while state == true do (
starttool t_draw
)
if state == false do stoptool t_draw
)
)--end rol params
rollout params "DrawMap Parameters" width:310 height:303
(
button btn "Open" pos:[135,3] width:53 height:21
colorPicker clp_color "SetColor" pos:[14,36] width:84 height:20 color🙁color 255 255 0)
checkbutton cbt_draw "Draw" pos:[131,62] width:60 height:21 highlightColor🙁color 180 255 180)
bitmap bmp1 "Bitmap" pos:[31,90] width:256 height:208 fileName:"d:\!distr\qwe.bmp"
button btn29 "ABOUT" pos:[215,31] width:72 height:24
on btn pressed do
(f = getOpenFileName \
types:"Jpg(*.Jpg)|*.Jpg|All|*.*|"
tmap = (openbitmap (getFilenamePath f+filenameFromPath f));close tmap
delegate.filename = (getFilenamePath f+filenameFromPath f)
)
on btn29 pressed do
(
messagebox"This Script "
)
)fn drawbitmap bmap uvdata =
(
local ppos
ppos = [(uvdata.x * bmap.width) as integer, (bmap.height - (uvdata.y * bmap.height)) as integer]
c = params.clp_color.color
setpixels bmap ppos #(c)
)
tool t_draw
(
local uvdata
on mousepoint click do
(
if click == 1 then (
uvdata = getuvinfo $ (mapscreentoworldray viewpoint)
if uvdata == undefined do return()
drawbitmap delegate.bitmap uvdata
drawhelper $ (mapscreentoworldray viewpoint)
)
else
(
delete pointarray; pointarray = #()
delegate.apply = true
#stop
)
)
on mouseabort click do cbt_draw = false
)
on create do
(f = getOpenFileName \
types:"Jpg(*.Jpg)|*.Jpg|All|*.*|"
save (bitmap 256 256 filename🙁"c:\\drawmap.bmp"😉)
tmap = (openbitmap (getFilenamePath f+filenameFromPath f));close tmap
delegate.filename = (getFilenamePath f+filenameFromPath f))
)
Он продолжает работать : наносить пиксели на объект во вьюпортах, но когда размер карты большой более 700 пикселе в длину и ширину, то чтоб он нанёс пиксель надо тыкнуть много раз мышкой,а это очень не удобно, когда битмап 250*250 пикселей то нанести очень легко и удобно.Так вот можно ли при открытии JPG изменить её размер, до 250 пикселей хотябы или нет, если можно,то каким образом.ЗАранее благодарен.А!!!Заодно ещё раз спасибо DENIS' у!!!!!
Savin Denis
надо либо написать свою фукцию либо глянуть раширения
возможно есть где
Savin Denis
вороде там чтото на эту тему есть
Гость
global out_file16 = bitmap 16 15-- это пременная битмэп с размером 16*15 пикслей, это не то, кажется?
Вот смотри:
input_file16 = openbitmap (pathname.text+"\\"+lib_list[lls]+"_16i.bmp"😉 --это открывается битмап просто?
Наиболее похожим является эта часть
for i = 0 to 14 do
(
pixel_line = getpixels input_file16 [(icon_number.value-1)*16,i] 16
setpixels out_file16 [0,i] pixel_line
) Тут они что-то получают размер чтоль, а потом изменяют его???
А может сделать пустой растр размером 300*300 пикселей, а потом поместить
в него изображение загружаемого, хотя не получится, нельзя же копировать содержимое растра...
Гость
УДАЧИ!!!!!!!
Гость
rollout unnamedRollout "rol" width:295 height:229
(
button btn1 "button" pos:[8,75] width:120 height:32
editText edt6 "" pos:[11,6] width:126 height:19
on btn1 pressed do
(
b = bitmap 300 300
f = getOpenFileName \
types:"bmp(*.bmp)|*.bmp|"
if f != undefined then
( open = openbitmap(getFilenamePath f+filenameFromPath f)
copy open b
edt6.text = b.height as string +"*"+ b.width as string
close b
)
))
createDialog unnamedRollout width:162 height:130
таким образом создаём битмап B , который имеет размеры 300*300 пикселей.
потом открываем OPEN из диалога открытия, теперь open имеет к-л размеры.
И копируем этот OPEN в В, при этом если размеры не совпадают, то OPEN будет масштабироваться до размеров В, это вродь то что надо, только у меня не получается сохранить БИТМАП В. пОМОГИТЕ, пожалуйста. в нужный файл , он ругается ...
Savin Denis
(
button btn1 "button" pos:[8,75] width:120 height:32
editText edt6 "" pos:[11,6] width:126 height:19
on btn1 pressed do
(
f = getOpenFileName \
types:"bmp(*.bmp)|*.bmp|"
if f != undefined then
( open = openbitmap f
b = bitmap 300 300 filename:f
copy open b
close open
edt6.text = b.height as string +"*"+ b.width as string
save b
close b
)
))
Гость
В средстве работы с мышью есть событие ON MOUSEMOVE , ОНО ВЫЗЫВАЕТСЯ ПРИ КАЖДОМ ДВИЖЕНИИ МЫШИ. Это я всё по тому же скрипту, который Вы помогли сделать:
plugin textureMap drawMap
name:"DrawMap"
classid:#(0xb01b213a,0xdbe89dc8)
extends:bitmaptexture
replaceui:true
(
local pointarray = #(),tmap,t_draw
--local color = #(color 255 255 0)
fn getuvinfo obj sray =
(
local intray,tvface,tvarray,tv
if obj == undefined do return()
intray = intersectrayex obj sray
if intray == undefined do return()
try
(
tvface = gettvface obj intray[2]
)
catch (
print "No tv faces"
return()
)
tvarray = #(gettvert obj tvface.x,
gettvert obj tvface.y,gettvert obj tvface.z)
tv = (tvarray[1]*intray[3].x)+(tvarray[2] * intray[3].y)+(tvarray[3] * intray[3].z)
)
/*
fn drawbitmap bmap uvdata =
(
local ppos
ppos = [(uvdata.x * bmap.width) as integer, (bmap.height - (uvdata.y * bmap.height)) as integer]
c = params.clp_color.color
setpixels bmap ppos c -- #(color 255 255 0)
)
*/
fn drawhelper obj sray =
(
local intray
if obj == undefined do return()
intray = intersectray obj sray
if intray == undefined do return()
append pointArray (point pos:intRay.pos showaxis:false)
)
parameters main rollout😛arams
(
clp_color type:#color ui:clp_color
cbt_draw type:#boolean ui:cbt_draw
on cbt_draw set state do
(
if $ == undefined do (
cbt_draw = false;return()
)
if not (iskindof $ editadlemesh) do addmodifier $ (normalmodifier())
while state == true do (
starttool t_draw
)
if state == false do stoptool t_draw
)
)
rollout params "DrawMap Parameters"
(
colorpicker clp_color "SetColor" color🙁color 255 255 0)
checkbutton cbt_draw "Draw" highlightcolor🙁color 180 255 180)
)
fn drawbitmap bmap uvdata =
(
local ppos
ppos = [(uvdata.x * bmap.width) as integer, (bmap.height - (uvdata.y * bmap.height)) as integer]
c = params.clp_color.color
setpixels bmap ppos #(c) -- #(color 255 255 0)
)
tool t_draw
(
local uvdata
on mousepoint click do
(
if click == 1 then (
uvdata = getuvinfo $ (mapscreentoworldray viewpoint)
if uvdata == undefined do return()
drawbitmap delegate.bitmap uvdata
drawhelper $ (mapscreentoworldray viewpoint)
)
else
(
delete pointarray; pointarray = #()
delegate.apply = true
#stop
)
)
on mouseabort click do cbt_draw = false
)
on create do
(
save (bitmap 256 256 filename🙁"c:\\drawmap.bmp"😉)
tmap = (openbitmap ("c:\\drawmap.bmp"😉);close tmap
delegate.filename = ("c:\\drawmap.bmp"😉
)
)
Тут в одном фрагменте рассматривается действия при щелчке мыши.
on mousepoint click do
(
if click == 1 then (
uvdata = getuvinfo $ (mapscreentoworldray viewpoint)
if uvdata == undefined do return()
drawbitmap delegate.bitmap uvdata
drawhelper $ (mapscreentoworldray viewpoint)
)
else
(
delete pointarray; pointarray = #()
delegate.apply = true
#stop
)
)
--На этом месте должно быть следущее,
--ON MOUSEMOVE do cbt_draw = true, дак вот, он не запускается, по идее должно
--происходить следущее, нажимаем кнопку, происходят вышеуказанные действия и если
--она не отжата и происходит движение, то выполняется ON mouseMove, где
--повторяется нанесение штрихов(пикселей) таким образом получаются линии до
--отжатия кнопки мыши. Но этого нету.Может вы знаете как этот ON MouseMove
--работает???Помогите, пожалуйста.
on mouseabort click do cbt_draw = false
)
Savin Denis
name:"DrawMap"
classid:#(0xb01b213a,0xdbe89dc8)
extends:bitmaptexture
replaceui:true
(
local pointarray = #(),tmap,t_draw
--local color = #(color 255 255 0)
fn getuvinfo obj sray =
(
local intray,tvface,tvarray,tv
if obj == undefined do return()
intray = intersectrayex obj sray
if intray == undefined do return()
try
(
tvface = gettvface obj intray[2]
)
catch (
print "No tv faces"
return()
)
tvarray = #(gettvert obj tvface.x,
gettvert obj tvface.y,gettvert obj tvface.z)
tv = (tvarray[1]*intray[3].x)+(tvarray[2] * intray[3].y)+(tvarray[3] * intray[3].z)
)
/*
fn drawbitmap bmap uvdata =
(
local ppos
ppos = [(uvdata.x * bmap.width) as integer, (bmap.height - (uvdata.y * bmap.height)) as integer]
c = params.clp_color.color
setpixels bmap ppos c -- #(color 255 255 0)
)
*/
fn drawhelper obj sray =
(
local intray
if obj == undefined do return()
intray = intersectray obj sray
if intray == undefined do return()
append pointArray (point pos:intRay.pos showaxis:false)
)
parameters main rollout😛arams
(
clp_color type:#color ui:clp_color
cbt_draw type:#boolean ui:cbt_draw
on cbt_draw set state do
(
if $ == undefined do (
cbt_draw = false;return()
)
if not (iskindof $ editadlemesh) do addmodifier $ (normalmodifier())
while state == true do (
starttool t_draw
)
if state == false do stoptool t_draw
)
)
rollout params "DrawMap Parameters"
(
colorpicker clp_color "SetColor" color🙁color 255 255 0)
checkbutton cbt_draw "Draw" highlightcolor🙁color 180 255 180)
)
fn drawbitmap bmap uvdata =
(
local ppos
ppos = [(uvdata.x * bmap.width) as integer, (bmap.height - (uvdata.y * bmap.height)) as integer]
c = params.clp_color.color
setpixels bmap ppos #(c) -- #(color 255 255 0)
)
tool t_draw
(
local uvdata
on mousepoint click do
(
if click == 1 then (
uvdata = getuvinfo $ (mapscreentoworldray viewpoint)
if uvdata == undefined do return()
drawbitmap delegate.bitmap uvdata
drawhelper $ (mapscreentoworldray viewpoint)
)
else
(
delete pointarray; pointarray = #()
delegate.apply = true
#stop
)
)
on mouseMove clickno do
(
uvdata = getuvinfo $ (mapscreentoworldray viewpoint)
if uvdata == undefined do return()
drawbitmap delegate.bitmap uvdata
drawhelper $ (mapscreentoworldray viewpoint)
)
on mouseabort click do cbt_draw = false
)
on create do
(
save (bitmap 256 256 filename🙁"c:\\drawmap.bmp"😉)
tmap = (openbitmap ("c:\\drawmap.bmp"😉);close tmap
delegate.filename = ("c:\\drawmap.bmp"😉
)
)