Маркер уклона для ArchiCAD

Ivan @ 24 / 06 / 2021 @ Blog / ArchiCAD / BIM и CAD / Программирование / Ссылки
( / / )

Время чтения: ~ 6 мин.

Давеча переколбасил существующий кастомный маркер наклона крыши для ArchiCAD 23+ (нашел когда-то на одном из форумов по ArchiCAD, не уверен на каком именно 🙂 ). Теперь он может отображать значение наклона в процентах или градусах рядом со стрелкой, которая автоматически поворачивается в направлении наклон. Оно мне надо было для того, чтобы на разуклонке уклон показывать (я её строил кровлями, потому что архикад не умеет в переменный пирог).

Как это работает: пустой элемент мансардного окна используется вместе с кастомным маркером. Оба входят в комплект.

Как использовать:

  • воткнуть в крышу мансардное окно / проем в крыше
  • установить загруженное для этого проема окно (перед этим надо добавить два объекта из папки в библиотеку проекта)
  • установить загруженный маркер для этого окна
  • настроить параметры этого самого кастомного маркера
  • ???
  • PROFIT!

Качать тут.

Пожалуйста, не стесняйтесь изменять его или отправляйте мне свои вопросы по электронной почте.

Вот код маркера:

eps = 0.0001
paperToModel = GLOB_SCALE/1000

define style  'txtStyle'  AC_TextFont_1, AC_TextSize_1, 8, AC_TextStyle_1
style 'txtStyle'

rot2 -90

unid=1
ms=AC_MarkerSize*paperToModel
bb=ms*1.5

hotspot2 -bb,   0 
hotspot2 bb+ms, 0


line2 -bb, 0, bb+ms, 0
add2 bb+ms, 0
line2 0, 0, -ms, -ms*0.3
line2 0, 0, -ms, ms*0.3
del 1


xPos = 0
yPos = 0


if show_slope_inclination = 1 then

    r = request ("View_Rotangle", "", _angleViewRot)
    _totalRotate    = (SYMB_ROTANGLE + _angleViewRot) MOD 360
    _nTrans = 0
!    if (_totalRotate > (90 + EPS) & _totalRotate < (270 + EPS)) then
!        rot2 180
!        _nTrans = _nTrans + 1
!    endif
   
    if (_totalRotate > (150 + EPS) &  _totalRotate < (360 + EPS) &  _totalRotate > (270 + EPS)) then
        rot2 180
        _nTrans = _nTrans + 1
    endif
  
! no idea how it turned out to be working, but it works somehow 

    if (_totalRotate > (180 + EPS) &  _totalRotate < (270 + EPS)) then
        rot2 180
        _nTrans = _nTrans + 1
    endif


    if inclination_in_percents then an_gle=STR(TAN(ROOF_ANGLE)*100, 3, 2) ! CHANGE THE 3 to whatever number you like to set the number of digits after the point
    
    ! SAVE THE TEXT VARIABLE BEFORE THE STRIPPING PROCESS
    if inclination_in_percents then
        numberToStripZeroes = an_gle
    else
        numberToStripZeroes = STR(ROOF_ANGLE, 3, 2)
    endif

    numberToStripZeroes = STR(_totalRotate, 3, 2)

    ! STRIP ZEROES FROM THE END
    _newStr = ""        ! intialize a new empty string

    ! _currStr = "12,10"
    len = STRLEN (numberToStripZeroes  )
    _newStr = STRSUB (numberToStripZeroes  , len - 2, len)
    if _newStr = ",00" then
        _newStr = STRSUB (numberToStripZeroes  , 0, len-3)
    else
        _newStr = numberToStripZeroes  
    endif
    
    
    ! OUTPUT THE TEXT
    if inclination_in_percents then
        TEXT2 xPos, yPos, "i = "+ _newStr +"%"
    else
        TEXT2 xPos, yPos, "i = "+ _newStr +"°"
    endif
endif
del _nTrans


Немного погуглив, я нашел это официальное решение. Тем не менее, моё мне нравится больше.


Может быть интересно:


Подпишитесь на нас в социальных сетях!

Instagram
VK
Facebook
YouTube!
Telegram!

Подпишитесь на обновления



* нажимая на кнопку «Подписаться», вы даете согласие на обработку своих персональных данных