Программирование в Сапфир

Здравствуйте уважаемые коллеги. Пытаюсь начать программировать в Сапфир. Начал знакомиться с доступными материалами. К своему неудовольствию обнаружил что api библиотеки написаны на С++. Но нашел скрипты написанные на java, вот этот например "c:\Users\Public\Documents\SAPFIR\SAPFIR 2016\Service\Test\Building.htm" исследовал код, но не смог найти библиотеку, импортированную в этот скрипт. Может кто то поможет?

У зв'язку з великою кількістю неіснуючих підписок на оновлення форуму була проведена очистка. Якщо ви перестали отримувати повідомлення з оновленнями, прохання провести підписку знову.
Сторінки: Поперед. 1 2 3
RSS
Программирование в Сапфир, Какие библиотеки за что отвечают
 
Здраствуйте, а подскажите пожалуйста как в пользовательском ноде на python подать на выход список обьектов.
 
Приветствую!

Зависит от того, создаётся ли этот объект самим нодом, или нод работает как фильтр и должен просто транзитом “передавать” объекты с входа на выход.
Если объект создаётся нодом, то необходимо вызывать функцию Object AddOutModel(Int32 IDio, Int32 TypeModel, Object pStorey)
Этот метод предназначен для добавления на заданный выход нода объекта САПФИР указанного типа (стены, колонны, балки и др.).
Аргументы:
Int32 IDio -> Идентификатор выхода
Int32 TypeModel -> Идентификатор типа модели
Object pStorey -> Объект этажа

Если просто транзитом — тогда используйте SetArrayIdObjectOut(Int32 IdOut, Object Param)
Аргументы:
Int32 OutID -> Идентификатор выхода нода

C уважением, Алексей Тищенко
 
Дополнение.

Если «объект» — это просто точка, линия или меш, то сначала у нода нужно получить контейнер для таких объектов, а затем добавлять в него элементы.
out_model = node.GetOutModel(0) # получаем указатель на локальный контейнер моделей нода выхода "0"
Arc = out_model.NewModel(TM3_ARC) # в выходном контейнере создаем примитив "Окружность" или если есть готовая линия out_model.AddModel(ln) # такую полилинию добавляем в выходной контейнер

C уважением, Алексей Тищенко
 
Добрый день спасибо большое за пояснения. Возник еще вопрос:
var Model = Storey.GetModelByIndex(indexModel) ; По индексу получить объект, приведенный к AutoModel
var Model = Storey.GetModelByIndex2(indexModel) ; По индексу получить объект, без приведенния к AutoModel
На примере обозначения осей отладка подсказала что получил в первом случае AutoModel во втором AutoDim. В каком случае верно использовать GetModelByIndex по задумке разработчика ?
 
Добрый день подскажите можно ли для AutoAxes добраться до параметров отвечающие за на названия осей и их размеров, представленных в этом меню ?

И как можно добавить AutoAxes на уровень проекта ? Получается только на уровень этажа через AddOutModel
 
Добрый день, при попытке разобрать блок отладка выдала такую ошибку: Ошибка на сервере. (Исключение из HRESULT: 0x80010105 (RPC_E_SERVERFAULT))

Хотя в модели нод отработал как нужно.

Не совсем, цикл прекртился и если несколько плоков на этаж подходяш то отработал только первый попавшийся
Змінено: Expert_Hell - 13.01.2026 10:51:59
 
Цитата
Expert_Hell написал:
Добрый день спасибо большое за пояснения. Возник еще вопрос:
var Model = Storey.GetModelByIndex(indexModel) ; По индексу получить объект, приведенный к AutoModel
var Model = Storey.GetModelByIndex2(indexModel) ; По индексу получить объект, без приведенния к AutoModel
На примере обозначения осей отладка подсказала что получил в первом случае AutoModel во втором AutoDim. В каком случае верно использовать GetModelByIndex по задумке разработчика ?

Storey.GetModelByIndex(indexModel) и Storey.GetModelByIndex2(indexModel) получают объекты автоматизации для одного и того же объекта модели САПФИРа, но предоставляют разный набор функций.

AutoModel - это общий базовый тип для всех типов объектов и содержит универсальные методы, подходящие почти для любых элементов. Поэтому GetModelByIndex целесообразно использовать в случаях, когда тип объекта заранее неизвестен - например, когда мы просто перебираем все объекты на этаже.

А GetModelByIndex2 позволяет получить автоматизированный объект конкретного типа и получить доступ к более специализированным свойствам этого объекта.

С уважением, Алексей Тищенко
 
Цитата
написал:
Добрый день подскажите можно ли для AutoAxes добраться до параметров отвечающие за на названия осей и их размеров, представленных в этом меню ?

И как можно добавить AutoAxes на уровень проекта ? Получается только на уровень этажа через AddOutModel
К сожалению, в AutoAxes нет необходимой функциональности. Доработаем.

С уважением, Алексей Тищенко
 
Цитата
написал:
Добрый день, при попытке разобрать блок отладка выдала такую ошибку: Ошибка на сервере. (Исключение из HRESULT: 0x80010105 (RPC_E_SERVERFAULT))

Хотя в модели нод отработал как нужно.

Не совсем, цикл прекртился и если несколько плоков на этаж подходяш то отработал только первый попавшийся
Было бы хорошо, если бы Вы прислали свой нод и тестовую модель.

С уважением, Алексей Тищенко
 
Добрый день, чере Parameter нет возможности добраться до свойтв помещения: формировать доп монтажные и загружения:
Код
import clr





def solve(node):

    pass



    doc = node.GetDocument()

    prj = doc.GetActiveProject()

    

    str = prj.GetFirstStorey(1)

    obj = str.GetModelByIndex2(0)

    test11 = obj.Parameter['M_LOADAREA_CONST']

    test12 = obj.Parameter['M_LOADCASE3'] # НЕ ДОБРАТЬСЯ

    test13 = obj.Parameter['M_DopMontag_3'] # НЕ ДОБРАТЬСЯ

    test21 = obj.Parameter['M_LOADAREA_EXP']

    test31 = obj.Parameter['M_LOADAREA_TMP']

    a = 1
 
Приветствую, Expert_Hell!

Доработаем Parameter

С уважением, Алексей Тищенко
 
Добрый день, подскажи имеется ли возможность из ISapfirDoc добраться до расчетной схемы ? var TM_FEAPROJECT = 6; // Конструкции до вот этой штуки ? Допустим сейчас можно через id.
Тогда возникается другой вопрос как перебрать объекты в сами нагрузки ? Ну и допустим пройтись по всем нагрузкам через тот же индекс ?
 
Добрый день, Expert_Hell!
По идее у документа по ID  можно получить указатель на объект, т.е. получить указатель на расчетную схему. А она наследник от этажа и методы этажа к ней подойдут для того, чтобы перебрать все что в ней есть.

С уважением, Алексей Тищенко
 
Цитата
написал:
наследник от этажа и методы этажа
Спасибо, буду пробовать
Сторінки: Поперед. 1 2 3
Читають тему (гостей: 1)