Маркер уклона для 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!

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



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