> For the complete documentation index, see [llms.txt](https://black1277.gitbook.io/python-for-cinema4d/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://black1277.gitbook.io/python-for-cinema4d/text/baseobject.md).

# c4d.BaseObject

* `BaseObject.GetAbsPos(self)` Возвращает абсолютное положение объекта. Это будут абсолютные локальные координаты внутри родительского объекта.
* `BaseObject.GetAbsScale(self)` Возвращает абсолютный масштаб объекта. Они будут относиться к родительскому объекту, если он у него есть
* `BaseObject.GetAbsRot(self)` Возвращает абсолютное вращение HPB объекта относительно любого родительского
* `BaseObject.GetRelPos(self)` Возвращает относительное положение объекта.
* `BaseObject.GetRelScale(self)` Возвращает относительный масштаб объекта.
* `BaseObject.GetRelRot(self)` Возвращает относительное вращение объекта.
* `BaseObject.GetFrozenPos(self)` Возвращает замороженное положение объекта.
* `BaseObject.GetFrozenScale(self)` Возвращает замороженный масштаб объекта.
* `BaseObject.GetFrozenRot(self)` Возвращает замороженное вращение HPB объекта.

Эти методы возвращают тип - `Vector(0, 0, 0)`

***

* `BaseObject.GetMl(self)` Получите локальную матрицу, которая представляет положение, масштаб и вращение объектов.
* `BaseObject.GetMg(self)` Получите мировую (глобальную) матрицу, которая представляет положение, масштаб и вращение объектов.
* `BaseObject.GetMln(self)` Получите локальную нормализованную матрицу, которая представляет положение, масштаб и вращение объектов.
* `BaseObject.GetMgn(self)` Получите глобальную нормализованную матрицу, которая представляет положение, масштаб и вращение объектов.
* `BaseObject.GetUpMg(self)` Получите глобальную матрицу родительского объекта, которая представляет положение, масштаб и вращение объектов. Если у объекта нет родительского объекта, то эта матрица будет единичной матрицей.

Эти методы возвращают тип - `Matrix(v1: (1, 0, 0); v2: (0, 1, 0); v3: (0, 0, 1); off: (0, 0, 0))`

***

* `BaseObject.GetMp(self)` Центр ограничивающей рамки (вектор) в локальном пространстве.
* `BaseObject.GetRad(self)` Это радиус ограничивающей рамки (x/y/z) объекта. Он работает для всех объектов и выполняется быстрее, чем поиск границ даже полигональных объектов вручную, радиус кэшируется внутри.
* `BaseObject.GetFirstTag(self)` возвращает первый тег на объекте
* `BaseObject.GetLastTag(self)` возвращает последний тег на объекте
* `BaseObject.GetTags(self)` возвращает все теги объекта
* `BaseObject.GetTag(self, type, nr=0)` возвращает тег определенного типа. type -Ttexture,Texpresso,Tphong,Tpython,Tpolygonselection... nr- Начальный индекс тега для поиска этого типа
* `BaseObject.KillTag(self, type, nr=0)` удаляет тег определенного типа

Примеры кода:

```python
import c4d

def tag_operations(obj):
    # Получение и вывод всех тегов объекта
    tags = obj.GetTags()
    print(f"Теги объекта: {', '.join([tag.GetName() for tag in tags])}")

    # Добавление нового тега Phong к объекту
    phong_tag = c4d.BaseTag(c4d.Tphong)
    obj.InsertTag(phong_tag)
    print("Добавлен тег Phong.")

    # Удаление всех тегов Phong у объекта
    while obj.GetTag(c4d.Tphong):
        obj.KillTag(c4d.Tphong)
    print("Все теги Phong удалены.")

def object_transformations(obj):
    # Вывод абсолютных координат объекта
    abs_pos = obj.GetAbsPos()
    abs_scale = obj.GetAbsScale()
    abs_rot = obj.GetAbsRot()
    print(f"Абсолютное положение: {abs_pos}")
    print(f"Абсолютный масштаб: {abs_scale}")
    print(f"Абсолютное вращение: {abs_rot}")

    # Вывод относительных координат объекта
    rel_pos = obj.GetRelPos()
    rel_scale = obj.GetRelScale()
    rel_rot = obj.GetRelRot()
    print(f"Относительное положение: {rel_pos}")
    print(f"Относительный масштаб: {rel_scale}")
    print(f"Относительное вращение: {rel_rot}")

    # Вывод замороженных координат объекта
    frozen_pos = obj.GetFrozenPos()
    frozen_scale = obj.GetFrozenScale()
    frozen_rot = obj.GetFrozenRot()
    print(f"Замороженное положение: {frozen_pos}")
    print(f"Замороженный масштаб: {frozen_scale}")
    print(f"Замороженное вращение: {frozen_rot}")

    # Вывод матриц объекта
    local_matrix = obj.GetMl()
    global_matrix = obj.GetMg()
    print(f"Локальная матрица: {local_matrix}")
    print(f"Глобальная матрица: {global_matrix}")

# Основная функция
def main():
    # Получаем активный объект
    active_obj = doc.GetActiveObject()
    if active_obj is None:
        print("Нет активного объекта.")
        return

    object_transformations(active_obj)
    tag_operations(active_obj)
    c4d.EventAdd()

# Вызов основной функции
if __name__=="__main__":
    main()
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://black1277.gitbook.io/python-for-cinema4d/text/baseobject.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
