blog/
Маркер уклона для ArchiCAD
Давеча переколбасил существующий кастомный маркер наклона крыши для 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
Немного погуглив, я нашел это официальное решение. Тем не менее, моё мне нравится больше.
Может быть интересно:
- Как устроен GDL элемент и почему Архикад устарел
- Скрипт для выбора победителя в инстаграме (из лайков)
- Про Python и ArchiCAD: удалить лишние слои
- Скрипт для выбора победителя в инстаграме (из комментариев)
- Calculate inclination of a roof valley with Python