Пожалуйста, не блокируйте рекламу!

0 Пользователей и 1 Гость просматривают эту тему.

*

Оффлайн Pawel37

  • ***
  • 215
  • Репутация: +3/-0
  • Пол: Мужской
GDL Элемент как вывести параметры профиля
« Ответ #15 : Ноября 15, 2021, 01:14:43 »

Test

В профиле у одного из рёбер назначьте назначьте какой-либо тип линий,  отличный от остальных. Выберите профиль в объекте. В списке типов лини в объекте выберите тип линии, которую поставили в профиле.  Демонстрация работы - в приложении. Файл с примером (АС24) - по ссылке https://yadi.sk/d/XgD5ZomeIqVMLg

P/s В коде объекта комментарии есть, тоже посмотрите 8)
Подскажите пожалуйста ка здесь осуществить замену покрытия?
Что только и Как только не пребывал.
Старый материал отключается а новые покрытие не назначается хоть ты тресни.
Вроде раньше проблем не было.

*

Оффлайн Kuvbur

  • ^_^
  • ****
  • 370
  • Репутация: +69/-0
  • Пол: Мужской
GDL Элемент как вывести параметры профиля
« Ответ #16 : Ноября 15, 2021, 16:46:17 »
Вы хотите в GDL объекте заменить покрытие, которое задано в редакторе профилей?

*

Оффлайн Pawel37

  • ***
  • 215
  • Репутация: +3/-0
  • Пол: Мужской
GDL Элемент как вывести параметры профиля
« Ответ #17 : Ноября 15, 2021, 17:14:43 »
Вы хотите в GDL объекте заменить покрытие, которое задано в редакторе профилей?
Ну скажем (если профиль из несколько частей) каждой части наверно проблематично.
Поэтому, ходьба, целиком каждому профилю в отдельности.
Профиль, наличника может быть один, а материал может быть разный (наружный, внутренний).

*

Оффлайн Kuvbur

  • ^_^
  • ****
  • 370
  • Репутация: +69/-0
  • Пол: Мужской
GDL Элемент как вывести параметры профиля
« Ответ #18 : Ноября 15, 2021, 19:52:22 »
Заменить можно, но, опять же - нужно в параметрах будет указать - какой материал на какой. Т.е. те участки, у которого будет меняться материал, нужно выделить каким либо материалом и отлавливать его появление при чтении профиля в GDL. ! insideSurface - материал, на который нужно поменять (указываем в параметрах)
! insideSurface_prof - материал, которым выполнены заменяемые участки в профиле (также добавляем в параметры)
n = REQUEST{4} ("Profile_component_info", myProfileIdx, _iComp, "gs_profile_surface", _surface)
if _surface=insideSurface_prof then _surface=insideSurface

!Также поступаем и при обработке граней
for _i = _idxStartPoints[_iComp] to _idxEndPoints[_iComp] step 5
   if _currSurfaces[_surfIdx]=insideSurface_prof then _currSurfaces[_surfIdx]=insideSurface
   gosub "set_status_code"    ! input _profileGeometryRawData, returns prismStatus
   put    _profileGeometryRawData[_i], _profileGeometryRawData[_i + 1], 0, prismStatus, _currSurfaces[_surfIdx]
   _surfIdx = _surfIdx + 1
next _i
Целиком профилю вообще просто - ищите строку в 3д скрипте
put    _profileGeometryRawData[_i], _profileGeometryRawData[_i + 1], 0, prismStatus, _currSurfaces[_surfIdx]и меняйте _currSurfaces[_surfIdx] на имя вашего параметра с материалом

*

Оффлайн Pawel37

  • ***
  • 215
  • Репутация: +3/-0
  • Пол: Мужской
GDL Элемент как вывести параметры профиля
« Ответ #19 : Ноября 15, 2021, 21:19:54 »

Целиком профилю вообще просто - ищите строку в 3д скрипте
put    _profileGeometryRawData[_i], _profileGeometryRawData[_i + 1], 0, prismStatus, _currSurfaces[_surfIdx]и меняйте _currSurfaces[_surfIdx] на имя вашего параметра с материалом
Ребро профиля (сечение) остается старым.

*

Оффлайн Kuvbur

  • ^_^
  • ****
  • 370
  • Репутация: +69/-0
  • Пол: Мужской
GDL Элемент как вывести параметры профиля
« Ответ #20 : Ноября 15, 2021, 21:31:55 »
Покажите, пожалуйста, код, где у вас замена прописана.

*

Оффлайн Pawel37

  • ***
  • 215
  • Репутация: +3/-0
  • Пол: Мужской
GDL Элемент как вывести параметры профиля
« Ответ #21 : Ноября 15, 2021, 22:36:57 »
Покажите, пожалуйста, код, где у вас замена прописана.
 
   Мой
"ПРОКЛАДКА ОТЛИВА":
   
   
   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,   !number of contour control points
                  4,            ! number of route points - fixed in this example
                  1 + 2 + 16 + 32   ! mask
   
               _surfIdx = 1
               for _i = _contStartPoints[_iComp] to _contEndPoints[_iComp] step 5
                  put _profileGeometryRawData[_i],
                     _profileGeometryRawData[_i + 1],
                     _profileGeometryRawData[_i + 2] + _profileGeometryRawData[_i + 3] + _profileGeometryRawData[_i + 4],
            TureprofilUnten1_Mat      !! запенить   _currSurfaces[_surfIdx]   па параметр материала
                     
                  _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
                                         
   
   
               tube{2} _surface, _surface, _surface,
                  get (NSP)
   
         endif
      next _iComp
   endif

Ваш
if i3DType = TYPE_TUBE then
         ! number of the polyline nodes - all nodes have 5 properties 
         ! (x, y, edgeVisible, verticalEdgeVisible, additionalStatus)
         _numPolyNodes = (_idxEndPoints[_iComp] - _idxStartPoints[_iComp] + 1) / 5
         ! number of route points - fixed in this example
         _numPathNodes = 7
         put    _numPolyNodes,   
            _numPathNodes,   
            1 + 2 + 16 + 32 + 256   ! mask
         _surfIdx = 1
         for _i = _idxStartPoints[_iComp] to _idxEndPoints[_iComp] step 5
            gosub "set_status_code"    ! input _profileGeometryRawData, returns tubeStatus
            put    _profileGeometryRawData[_i],       ! xn
               _profileGeometryRawData[_i + 1],    ! yn
               tubeStatus,             ! sn
               _A         ! surfn
            _surfIdx = _surfIdx + 1
         next _i
         ! put points for tube path
         put    0, 0, -1, 90,
            0, 0, 0, 90,
            0, 0, 1, 90,
            1, 0, 1, 90,
            1, 0, 2, 180,
            1, 1, 2, 180,
            1, 1, 3, 180
Тот же результат

*

Оффлайн Kuvbur

  • ^_^
  • ****
  • 370
  • Репутация: +69/-0
  • Пол: Мужской
GDL Элемент как вывести параметры профиля
« Ответ #22 : Ноября 15, 2021, 22:51:14 »
Попробуйте заменить в самой команде построения - tube{2} _surface, _surface, _surface -> tube{2}  TureprofilUnten1_Mat,  TureprofilUnten1_Mat, TureprofilUnten1_Mat 

*

Оффлайн Pawel37

  • ***
  • 215
  • Репутация: +3/-0
  • Пол: Мужской
GDL Элемент как вывести параметры профиля
« Ответ #23 : Ноября 15, 2021, 23:10:07 »
Попробуйте заменить в самой команде построения - tube{2} _surface, _surface, _surface -> tube{2}  TureprofilUnten1_Mat,  TureprofilUnten1_Mat, TureprofilUnten1_Mat
Спасибо помогло, но почему-то только в моем варианте, в вашем ребро стало просто темным. 

*

Оффлайн Kuvbur

  • ^_^
  • ****
  • 370
  • Репутация: +69/-0
  • Пол: Мужской
GDL Элемент как вывести параметры профиля
« Ответ #24 : Ноября 16, 2021, 00:42:41 »
Вроде работает всё, и частично и полностью.


*

Оффлайн Pawel37

  • ***
  • 215
  • Репутация: +3/-0
  • Пол: Мужской
GDL Элемент как вывести параметры профиля
« Ответ #25 : Ноября 16, 2021, 09:29:27 »
Вроде работает всё, и частично и полностью.


Создаю новый проект в 25ке ( с24той теперь не работает) подгружаю ваш элемент, биб. профиль делю на д в е части и назначаю им разные материалы, присваиваю ребру линию.
Дефект остался. Не меняется покрытие в срезе профиля!
Плюс еще теперь при выборе линии, если они совпадают, элемент разваливается.

*

Оффлайн Kuvbur

  • ^_^
  • ****
  • 370
  • Репутация: +69/-0
  • Пол: Мужской
GDL Элемент как вывести параметры профиля
« Ответ #26 : Ноября 16, 2021, 10:30:25 »
По покрытию - если нужно заменить и торцы, то добавьте замену и для них в сообщении #22 я показывал пример, Посмотрите описание команд tube и cprism - там для торцов отдельно от граней задаётся значение.
Про развал - я у себя там уже эксперементировать начал, не обращайте внимание. У вас же всё равно код другой.
И да, такой подход - с растяжением с заменой линий, на линии в середине профиля не действует, т.к. в этом случае нужно пересчитывать все координаты последующих рёбер. Это тоже реально, но заморочисто. 

*

Оффлайн Pawel37

  • ***
  • 215
  • Репутация: +3/-0
  • Пол: Мужской
GDL Элемент как вывести параметры профиля
« Ответ #27 : Ноября 16, 2021, 14:30:25 »
По покрытию - если нужно заменить и торцы, то добавьте замену и для них в сообщении #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
Потом просто вставляй ее где надо а не писать кучу одного и того же, каждый раз.

*

Оффлайн Kuvbur

  • ^_^
  • ****
  • 370
  • Репутация: +69/-0
  • Пол: Мужской
GDL Элемент как вывести параметры профиля
« Ответ #28 : Ноября 16, 2021, 14:50:52 »
Можно через gosub, у меня в коде посмотрите.

*

Оффлайн Pawel37

  • ***
  • 215
  • Репутация: +3/-0
  • Пол: Мужской
GDL Элемент как вывести параметры профиля
« Ответ #29 : Ноября 16, 2021, 21:17:56 »
Можно через gosub, у меня в коде посмотрите.
Он и у меня присутствует, но что-то пока не разобрался.
Спасибо, буду пробовать.

 

Похожие темы

  Тема / Автор