- Рейтинг
- 2
По варианту входного кода нужно повернуть очередной элемент на соответствующий угол и присоединить к предыдущей конструкции.
Упрощённый вариант скрипта уже написан:
(
dataFiles_arry = #()
dataRaw = #()
kk=#()
pro=#()
rootFolder = getFilenamePath (getSourceFileName()) -- определение корневой папки данных по положению .ms файла
if rootFolder != undefined then dataFiles_arry = getFiles (rootFolder+"\\Composite9\\*.txt") --определения файла .txt в папке Composite9
if dataFiles_arry.count == 1 then --если .txt в папке 1 то
(
dataRaw = (dotnetclass "System.IO.File").ReadAllLines(dataFiles_arry[1]) -- чтение данных из первого найденного .txt в массив из строк
str_arry = #()
for d = 1 to dataRaw.count do
(
join str_arry (filterString dataRaw[d] ",") -- создание массива из строк, где "," разделитель между элементами массива
)
for j = 1 to str_arry.count do -- цикл для всех элементов прочитанного из .txt массива
(
kkVal = str_arry[j] as integer -- конвертация из строчного значение в целое число
proVal = 0
if kkVal == 95 then (kkVal = 5; proVal=1)
if kkVal == 97 then (kkVal = 7; proVal=1)
if kkVal == 98 then (kkVal = 8; proVal=1)
append kk kkVal -- присоединение значения к массиву kk
append pro proVal
)
)
--format "kk->%\n" kk
--format "pro->%\n" pro
newmat = multimaterial name:"MyMultiMat" numsubs: (999)
newmat[1].faceted = on
newmat[2].faceted = on
newmat[3].faceted = on
newmat[4].faceted = on
newmat[5].faceted = on
newmat[6].faceted = on
newmat[7].faceted = on
newmat[8].faceted = on
newmat[9].faceted = on
newmat[1].diffuse = (color 255 0 0)
newmat[2].diffuse = (color 0 255 0)
newmat[3].diffuse = (color 0 0 255)
newmat[4].diffuse = (color 180 100 0)
newmat[5].diffuse = (color 255 0 0)
newmat[6].diffuse = (color 255 0 255)
newmat[7].diffuse = (color 0 0 255)
newmat[8].diffuse = (color 0 255 0)
newmat[9].diffuse = (color 255 255 0)
angx=#(-10,0,0,-10,-10,-1,0,0,-10); angy=#(30,120,30,30,30,50,30,120,30); angz=#(-97,-120,60,-80,-97,-97,60,-120,-97)
dx=#(-1.5,-1,-1.6,-1.5,-1.5,-1.5,-1.6,-1,-1.5); dy=#(0,-0.5,-0.3,0,0,0,-0.3,-0.5,0); dz=#(-1.2,1,1.2,-1.2,-1.2,-1.2,1.2,1,-1.2)
--
angp=#()
angp[14]=0
angp[15]=0
angp[24]=0
angp[25]=0
angp[29]=0
angp[33]=0
angp[34]=0
angp[35]=0
angp[64]=0
angp[74]=0
angp[91]=0
angp[109]=0
angp[110]=0
angp[152]=0
angp[244]=0
angp[275]=0
angp[322]=0
angp[337]=0
angp[361]=0
angp[457]=0
angp[463]=0
angp[502]=0
angp[609]=0
angp[613]=0
angp[614]=0
angp[624]=0
angp[764]=0
angp[795]=0
angp[810]=0
angp[824]=0
angp[836]=0
peptide=box length:0.1 width:0.1 height:0.1 position:[0,0,-.5] wirecolor:[250,250,250]; Converttomesh peptide
peptide.material = newmat[1]
for k = 1 to kk.count-1 do
(
newmat[k].faceted = on
element = sphere radius:0.7 pos:[0,0,0]; Converttomesh element
element.material = newmat[kk[k]]
attach peptide element; peptide.pivot = [0,0,0]; move peptide [dx[kk[k]],dy[kk[k]],dz[kk[k]]]
rotate peptide angx[kk[k]] [1,0,0]; rotate peptide angy[kk[k]] [0,1,0]; rotate peptide angz[kk[k]] [0,0,1]
)
)
Результат его работы с конкретными входными данными:
Однако нужно доработать этот вариант или написать новый.
Упрощённый вариант строит модель из одинаковых элементов, а нужно из таких же, но с дополнениями. Дополнения (их 23, это радикалы аминокислот) в скрипте Дениса Савина есть, но сам скрипт сложный, поэтому написать новый, простой скрипт может оказаться проще, чем модифицировать сложный скрипт Дениса Савина. Подробности обсуждаются на форуме лаборатории Наномир: http://nanoworld.org.ru/topic/2219/
Работа может быть оплачена инвестором по стандартным расценкам. Короче, если Ваша цена устроит инвестора, то работаем.
Упрощённый вариант скрипта уже написан:
(
dataFiles_arry = #()
dataRaw = #()
kk=#()
pro=#()
rootFolder = getFilenamePath (getSourceFileName()) -- определение корневой папки данных по положению .ms файла
if rootFolder != undefined then dataFiles_arry = getFiles (rootFolder+"\\Composite9\\*.txt") --определения файла .txt в папке Composite9
if dataFiles_arry.count == 1 then --если .txt в папке 1 то
(
dataRaw = (dotnetclass "System.IO.File").ReadAllLines(dataFiles_arry[1]) -- чтение данных из первого найденного .txt в массив из строк
str_arry = #()
for d = 1 to dataRaw.count do
(
join str_arry (filterString dataRaw[d] ",") -- создание массива из строк, где "," разделитель между элементами массива
)
for j = 1 to str_arry.count do -- цикл для всех элементов прочитанного из .txt массива
(
kkVal = str_arry[j] as integer -- конвертация из строчного значение в целое число
proVal = 0
if kkVal == 95 then (kkVal = 5; proVal=1)
if kkVal == 97 then (kkVal = 7; proVal=1)
if kkVal == 98 then (kkVal = 8; proVal=1)
append kk kkVal -- присоединение значения к массиву kk
append pro proVal
)
)
--format "kk->%\n" kk
--format "pro->%\n" pro
newmat = multimaterial name:"MyMultiMat" numsubs: (999)
newmat[1].faceted = on
newmat[2].faceted = on
newmat[3].faceted = on
newmat[4].faceted = on
newmat[5].faceted = on
newmat[6].faceted = on
newmat[7].faceted = on
newmat[8].faceted = on
newmat[9].faceted = on
newmat[1].diffuse = (color 255 0 0)
newmat[2].diffuse = (color 0 255 0)
newmat[3].diffuse = (color 0 0 255)
newmat[4].diffuse = (color 180 100 0)
newmat[5].diffuse = (color 255 0 0)
newmat[6].diffuse = (color 255 0 255)
newmat[7].diffuse = (color 0 0 255)
newmat[8].diffuse = (color 0 255 0)
newmat[9].diffuse = (color 255 255 0)
angx=#(-10,0,0,-10,-10,-1,0,0,-10); angy=#(30,120,30,30,30,50,30,120,30); angz=#(-97,-120,60,-80,-97,-97,60,-120,-97)
dx=#(-1.5,-1,-1.6,-1.5,-1.5,-1.5,-1.6,-1,-1.5); dy=#(0,-0.5,-0.3,0,0,0,-0.3,-0.5,0); dz=#(-1.2,1,1.2,-1.2,-1.2,-1.2,1.2,1,-1.2)
--
angp=#()
angp[14]=0
angp[15]=0
angp[24]=0
angp[25]=0
angp[29]=0
angp[33]=0
angp[34]=0
angp[35]=0
angp[64]=0
angp[74]=0
angp[91]=0
angp[109]=0
angp[110]=0
angp[152]=0
angp[244]=0
angp[275]=0
angp[322]=0
angp[337]=0
angp[361]=0
angp[457]=0
angp[463]=0
angp[502]=0
angp[609]=0
angp[613]=0
angp[614]=0
angp[624]=0
angp[764]=0
angp[795]=0
angp[810]=0
angp[824]=0
angp[836]=0
peptide=box length:0.1 width:0.1 height:0.1 position:[0,0,-.5] wirecolor:[250,250,250]; Converttomesh peptide
peptide.material = newmat[1]
for k = 1 to kk.count-1 do
(
newmat[k].faceted = on
element = sphere radius:0.7 pos:[0,0,0]; Converttomesh element
element.material = newmat[kk[k]]
attach peptide element; peptide.pivot = [0,0,0]; move peptide [dx[kk[k]],dy[kk[k]],dz[kk[k]]]
rotate peptide angx[kk[k]] [1,0,0]; rotate peptide angy[kk[k]] [0,1,0]; rotate peptide angz[kk[k]] [0,0,1]
)
)
Результат его работы с конкретными входными данными:
Однако нужно доработать этот вариант или написать новый.
Упрощённый вариант строит модель из одинаковых элементов, а нужно из таких же, но с дополнениями. Дополнения (их 23, это радикалы аминокислот) в скрипте Дениса Савина есть, но сам скрипт сложный, поэтому написать новый, простой скрипт может оказаться проще, чем модифицировать сложный скрипт Дениса Савина. Подробности обсуждаются на форуме лаборатории Наномир: http://nanoworld.org.ru/topic/2219/
Работа может быть оплачена инвестором по стандартным расценкам. Короче, если Ваша цена устроит инвестора, то работаем.