По покрытию - если нужно заменить и торцы, то добавьте замену и для них в сообщении #22 я показывал пример, Посмотрите описание команд tube и cprism - там для торцов отдельно от граней задаётся значение.
Про развал - я у себя там уже эксперементировать начал, не обращайте внимание. У вас же всё равно код другой.
И да, такой подход - с растяжением с заменой линий, на линии в середине профиля не действует, т.к. в этом случае нужно пересчитывать все координаты последующих рёбер. Это тоже реально, но заморочисто.
Спасибо уже разобрался, получилось вот так.
!!!
gosub "Применить профиль" !ОТЛИВ
if n then
for _iComp = 1 to _nComponents
if _bShowPart[_iComp] then
dim _currSurfaces[]
n = REQUEST{3} ("Profile_component_info", myProfileIdx, _iComp, "gs_profile_comp_surfaces", _currSurfaces)
_bmat = 1
_surface = 1
_pen = 1
n = REQUEST{3} ("Profile_component_info", myProfileIdx, _iComp, "gs_profile_bmat", _bmat)
n = REQUEST{3} ("Profile_component_info", myProfileIdx, _iComp, "gs_profile_surface", _surface)
n = REQUEST{3} ("Profile_component_info", myProfileIdx, _iComp, "gs_profile_outlinepen", _pen)
building_material _bmat
pen _pen
put (_contEndPoints[_iComp] - _contStartPoints[_iComp] + 1) / 5, 4, 1 + 2 + 16 + 32
_surfIdx = 1
for _i = _contStartPoints[_iComp] to _contEndPoints[_iComp] step 5
if _internal_profil_Mat_no = 0 then !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Покрытия профиля истинное!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
put _profileGeometryRawData[_i], _profileGeometryRawData[_i + 1],
_profileGeometryRawData[_i + 2] + _profileGeometryRawData[_i + 3] + _profileGeometryRawData[_i + 4], _currSurfaces[_surfIdx]
endif
if _internal_profil_Mat_no = 1 then !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Покрытия профиля _internal_profil_Mat !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
put _profileGeometryRawData[_i], _profileGeometryRawData[_i + 1],
_profileGeometryRawData[_i + 2] + _profileGeometryRawData[_i + 3] + _profileGeometryRawData[_i + 4], _internal_profil_Mat
endif
_surfIdx = _surfIdx + 1
next _i
AngelBlattabstand2 = -AngelBlattabstand2
! ставьте точки для маршрута
put AngelBlattabstand2-1, 0, 0, 0,
AngelBlattabstand2, 0, 0, 0,
ac_egress_width -AngelBlattabstand2, 0, 0, 0,
ac_egress_width -AngelBlattabstand2+1, 0, 0, 0
if _internal_profil_Mat_no = 0 then !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Покрытия Торца профиля истинное!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
tube{2} _surface, _surface, _surface, get (NSP)
endif
if _internal_profil_Mat_no = 1 then !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Покрытия Торца профиля _internal_profil_Mat !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
tube{2} _internal_profil_Mat, _internal_profil_Mat, _internal_profil_Mat, get (NSP)
endif
endif
next _iComp
endif
Но что-то мне подсказывает, можно наверно короче.
Вот например действия с включением и выключением повторяются, а у меня несколько профилей.
Интересно можно наверно часто выполняющих команды как-то например обеднить в одну команду в начале, а потом, просто ее использовать.
Типа так блок: profil_Mat
Потом просто вставляй ее где надо а не писать кучу одного и того же, каждый раз.