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

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

У зв'язку з великою кількістю неіснуючих підписок на оновлення форуму була проведена очистка. Якщо ви перестали отримувати повідомлення з оновленнями, прохання провести підписку знову.
Сторінки: Поперед. 1 2
RSS
Программирование в Сапфир, Какие библиотеки за что отвечают
 
Добрый день.
Когда ожидать CSpObjLoad?
Очень надо  
 
Пример создания нагрузок на C#
       
Код
          int LOAD = 21;                 // Нагрузка сила
          int LOAD_POINT = LOAD+0x10000; // точечная нагрузка
          int LOAD_LINE = LOAD+0x20000;  // линейная нагрузка
          int LOAD_AREA = LOAD+0x40000;  // площадная нагрузка

          SapfirLib.IAutoModel Load1 = Storey.NewModel(LOAD_POINT); // Создаем нагрузку точечную
          if (Load1 != null)
          {
            Load1.SetPosition(1.0, 0.0, 0.0);               // позиция
            Load1.set_Parameter("M_LOAD_1", 0.65);          // величина тс
          }

          SapfirLib.IAutoModel Load2 = Storey.NewModel(LOAD_LINE); // Создаем нагрузку линейную
          if (Load2 != null)
          {
            SapfirLib.IAutoPolyLine Line = Load2.GetAxisLine();   // получить осевую линию нагрузки
            var Pnt = new Object[] { 0.0, 1.0, 0.0, 0.0, 2.0, 0.0, 0.5, 4.0, 0.0 }; // объявляем массив точек
            Line.SetPoints(Pnt);                                // занесли точки в линию
            Load2.set_Parameter("M_LOAD_1", 0.35);              // величина тс
            Load2.set_Parameter("M_LOAD_2", 0.35);              // величина тс
            Load2.SetPosition(0.0, 1.5, 0.0);                   // позиция текста
          }

          SapfirLib.IAutoModel Load3 = Storey.NewModel(LOAD_AREA); // Создаем нагрузку площадную
          if (Load3 != null)
          {
            SapfirLib.IAutoPolyLine Line = Load3.GetAxisLine();   // получить осевую линию нагрузки
            var Pnt = new Object[] { 2.0, 1.0, 0.0, 4.0, 1.0, 0.0, 4.0, 3.0, 0.0, 2.0, 4.0, 0.0, 2.0, 1.0, 0.0 }; // объявляем массив точек
            Line.SetPoints(Pnt);                                // занесли точки в линию
            Load3.set_Parameter("M_LOAD_1", 0.44);              // величина тс
            Load3.set_Parameter("M_LOAD_2", 0.44);              // величина тс
            Load3.SetPosition(3.0, 2.0, 0.0);                   // позиция текста
          }
 
Это в какой Лире? 2016 ставить надо?  
 
А к редактору загружений можно добраться?
Спасибо
 
Где найти список всех параметров?
 
Как получить например высоту текущего этажа?

Как пройтись по всем элементам циклом foreach? Или только сначала узнать количество а потом for?

Как пройтись по всем колоннам например? И получить List<string> с их классом бетона? А потом если не тот то поменять на свой
Или например я получаю линию перекрытия
Код
        var PL = Storey.GetModelByIndex(j).GetAxisLine();       // Получим полилинию контура плиты


а как из этой линии получить список точек например?
Змінено: dev_sapfir - 04.03.2017 11:07:42
 
Цитата
dev_sapfir написал:
Где найти список всех параметров?

В диалоге "Настройки САПФИР", страница "Редактирование" включите опцию "Показ мнемоник" (см.рис.), чтобы видеть названия параметров выделенного элемента в диалоге "Свойства".

Цитата
dev_sapfir написал:
Это в какой Лире? 2016 ставить надо?

Чем выше версия, тем больше полезных фич и интересных параметров.
Сам же "API" доступен с версии САПФИР 1.0.
Обращение к параметрам элементов посредством мнемоник - его базовая возможность.
Более того, Вы можете наполнить любой элемент дополнительной информацией в виде значений своих собственных параметров, используя функцию SetParameter().
Для избежания "накладок" в своих мнемониках используйте префикс, отличный от "M_", например: "U_" , "T_", "MU_" ...
САПФИР, конечно, их интерпретировать не будет, но будет хранить в файле модели (SPF) и возвращать их значения по GetParameter().
 
Цитата
Где найти список всех параметров?
В папке "C:\Program Files (x86)\SAPFIR\Sapfir 2016\Manual" есть два документа:
"Схема объектов автоматизации САПФИР.pdf" и "Описание функций автоматизации САПФИР.pdf". Рекомендую ознакомиться.
 
Цитата
а как из этой линии получить список точек например?

В посте №10 есть пример кода как в цикле перебирать все объекты этажа и как получать точки из полилинии
На C# точки полилинии можно получить вот так:
Код
SapfirLib.IAutoPolyLine Line = Model.GetAxisLine();   // получить осевую линию (стены, плиты, балки ...)
object PntOut = new object[] { 1.0 };  // массив SAFEARRAY предварительно нужно инстанциировать
Line.GetPoints(ref PntOut);            // получаем точки полилинии
var pt = (object[])PntOut;
int cnt = pt.Length;
for (int i = 0; i < cnt; i+=3)
{
   double px = (double)pt[i];
   double py = (double)pt[i + 1];
   double pz = (double)pt[i + 2];
}
Змінено: vibo - 06.03.2017 13:59:19
 
Про отображение мнемоник понял. Хорошо. Можно найти что нужно. Попробую что-то поменять

А к загружениям есть доступ? Поменять постоянную на Длительную. Поменять подвид, Знакопеременность?
Змінено: dev_sapfir - 06.03.2017 14:24:00
 
В текущих версиях доступа к загружениям из API нет. Доработка планируется.
 
Вопрос от полного чайника.
Знакомился со всей документацией, но она рассчитана на программиста с опытом.
Решил попробовать написать сценарий в составе HTML-страниц на Javascript. Ознакомился с файлами *.htm прилагаемыми к программе. Вроде все понятно. Скачал Visual Studio Code - бесплатная потому что.
Вопрос: как выполнять отладку пошагаво написанного сценария? Я себе представлял это как Microsoft Office отлаживаются макросы ПОШАГАВО. но этого не произошло.
Как подключить сценарий к Сапфиру знаю. А вот как отслеживать пошагаво выполнение сценария не знаю.
 
Попробуйте в код вставить ключевое слово  debugger.
 
Подскажите, как сформировать (записать) векторы в скрипте JS и вывести как вектор на выход?
Как вывести информацию в виде:
[X, Y, Z]
[X1, Y1, Z1]
...
[Xn, Y1, Zn]
чтобы потом можно было на вход нода отправить "V"?

по сути нужно повторить стандартный нод, просто на входе в итоге хочется видеть линии, поэтому хочется просто разобраться как работают стандартные операции чтения/записи точек, линий и т.п.
Змінено: ander - 23.09.2020 12:09:05
 
Запись точек и векторов можно посмотреть на примере нода см. файл.
Точки и вектора задаются тройками координат [x1,y1,z1, x2,y2,z2, ....]
 
Подскажите, как можно через Api САПФИР поменять параметры жесткости у балок? Я получаю модель, нахожу у нее параметр жесткости по мнемонике M_FEA_BAR_STIF и получаю строку всех параметров жесткости. Но когда пытаюсь задать свою строку, то он не заменяет исходную.
 
Доброе утро! Изучаю Сапфир API. Подскажите, каким параметром или методом регулируется положение точки конца градиента переменной нагрузки по площади? Начало нашел, например "Load3.SetPosition(3.0, 3.0, 0.0)". Работаю в Python
Змінено: Никита Цыбин - 27.02.2023 07:25:02
 
Добрый день, Никита!

Переменная SetPosition2(x,y,z)

С уважением, Алексей Тищенко
 
Цитата
написал:
Добрый день,  Никита !

Переменная SetPosition2(x,y,z)

С уважением, Алексей Тищенко
Как я понимаю, этот метод добавился только в сапфире версии 2022. Просмотрел все доступные com методы версии 2021, там такого нет, а вот в 2022 есть. Сейчас проверил на версии 2022, действительно, работает.
 
Добрый день.
Пытаюсь повторить стандартный нод создать поверхность по образующей и траектории.
В Описание функций автоматизации САПФИР.pdf узнал, что в контур нужно положить две полилинии, но что то не выходит, что я делаю не так или, что упустил?
Вот фрагмент:
Код
TM_SURFACE   = 70
surf=node.AddOutModel(0, TM_SURFACE, storey)
contsf=surf.GetContour()
axis=TLn.GetAxisLine()
i=contsf.AddPolyLine(axis)
axis=GLn.GetAxisLine()
i=contsf.AddPolyLine(axis)
Сторінки: Поперед. 1 2
Читають тему (гостей: 1)