Модельная геометрия (класс ModelGeometry) ========================================= Общий класс **ModelGeometry** не имеет конструктора. Это произвольный набор геометрических объектов, который может быть ассоциирован с каким-то уровнем детализации стиля. В зависимости от того, сколько уровней детализации будет использоваться шаблоном стиля, столько экземпляров класса **ModelGeometry** необходимо создать в скрипте. .. code-block:: lua :caption: Пример 1. Создание 3-х экземпляров ``ModelGeometry`` для 3-х различных уровней детализации стиля: :linenos: local detailedGeometry = ModelGeometry() --детальная геометрия local symbolicGeometry = ModelGeometry() --условная геометрия local symbolGeometry = ModelGeometry() --символьная геометрия Каждый уровень детализации стиля может быть наполнен различными геометрическими примитивами. Для детального уровня детализации это могут быть: * :doc:`Твёрдотельная 3D-геометрия `, * :doc:`Двумерная геометрия ` (для создания вспомогательной геометрии). Для условного и символьного уровня детализации это может быть :doc:`двумерная геометрия `. У разных типов объектов Renga существует разный набор уровней детализации: +--------------------------------------+-----------------------------------+ | Тип объекта | Уровень детализации | | +-----------+----------+------------+ | | Детальное | Условное | Символьное | +======================================+===========+==========+============+ | Аксессуары воздуховода | + | + | + | +--------------------------------------+-----------+----------+------------+ | Аксессуары трубопровода | + | + | + | +--------------------------------------+-----------+----------+------------+ | Детали воздуховода | + | + | + | +--------------------------------------+-----------+----------+------------+ | Детали трубопровода | + | + | + | +--------------------------------------+-----------+----------+------------+ | Вентиляционное оборудование | + | + | | +--------------------------------------+-----------+----------+------------+ | Оборудование | + | + | | +--------------------------------------+-----------+----------+------------+ | Санитарно-техническое оборудование | + | | + | +--------------------------------------+-----------+----------+------------+ | Осветительные приборы | + | | + | +--------------------------------------+-----------+----------+------------+ | Электрические распределительные щиты | + | | + | +--------------------------------------+-----------+----------+------------+ | Электроустановочные изделия | + | | + | +--------------------------------------+-----------+----------+------------+ | Арматурные изделия | + | + | | +--------------------------------------+-----------+----------+------------+ Методы класса ------------- Добавление твёрдотельной 3D-геометрии ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. lua:method:: :AddSolid(solid) :param solid: Задается твердотельная 3D-геометрия. :type solid: :doc:`Solid <../geometry>` Добавление двумерной геометрии ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. lua:method:: :AddGeometrySet2D(geometrySet, placement) :param geometrySet: Задается двумерная геометрия. :type geometrySet: :doc:`GeometrySet2D <../planar>` :param placement: (optional) Задает локальную систему координат, в которой строится двумерная геометрия. Если не задана, то для построения используется глобальная система координат. :type placement: :ref:`Placement3D ` Примеры ------- .. _cube_example: Создание детального уровня детализации стиля ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: lua :caption: Пример 2. Создание 3D-геометрии в форме куба с размером грани ``size``: :linenos: local detailedGeometry = ModelGeometry() local solid = CreateBlock(size, size, size, placement) detailedGeometry:AddSolid(solid) Style.SetDetailedGeometry(detailedGeometry) Создание детального уровня детализации стиля со вспомогательной геометрией ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. important:: Вспомогательная геометрия — дополнительная плоская геометрия. Обычно используется для создания не существующей в реальном объекте геометрии (направление потока, условное обозначение). Не специфицируется. .. code-block:: lua :caption: Пример 3. Создание 3D-геометрии в форме куба и дополнительно вспомогательной геометрии с размещением в ЛСК ``placement``: :linenos: local detailedGeometry = ModelGeometry() local solid = CreateBlock(size, size, size, placement) local auxGeometry = GeometrySet2D() local region = FillArea({contours}) auxGeometry:AddMaterialColorSolidArea(region) detailedGeometry:AddSolid(solid) detailedGeometry:AddGeometrySet2D(auxGeometry, placement)) Style.SetDetailedGeometry(detailedGeometry) Создание условного уровня детализации стиля ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: lua :caption: Пример 4. Создание условного уровня детализации в виде квадрата с размером грани ``size``: :linenos: local symbolicGeometry = ModelGeometry() local planeGeometry = GeometrySet2D() local curve2D = CreateRectangle2D(centerPoint, angle, size, size) planeGeometry:AddCurve(curve2D) symbolicGeometry:AddGeometrySet2D(planeGeometry, placement) Style.SetSymbolicGeometry(symbolicGeometry) Создание символьного уровня детализации стиля ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Символьная геометрия, в отличии от условной геометрии, не масштабируется. С помощью символьного уровня детализации создаются условно-графические отображения (УГО) с заданными размерами (указанных в стандартах по выполнению чертежей). .. code-block:: lua :caption: Пример 5. Создание символьного уровня детализации в виде квадрата с размером грани ``size``: :linenos: local symbolGeometry = ModelGeometry() local planeGeometry = GeometrySet2D() local curve2D = CreateRectangle2D(centerPoint, angle, size, size) planeGeometry:AddCurve(curve2D) symbolGeometry:AddGeometrySet2D(planeGeometry) Style.SetSymbolGeometry(symbolGeometry) Операторы --------- * Проверить равенство с другой модельной геометрией .. versionadded:: 1.1 .. function:: == :return: Логическое значение :rtype: Boolean * Проверить неравенство с другой модельной геометрией .. versionadded:: 1.1 .. function:: ~= :return: Логическое значение :rtype: Boolean