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

Здравствуйте уважаемые коллеги. Пытаюсь начать программировать в Сапфир. Начал знакомиться с доступными материалами. К своему неудовольствию обнаружил что 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, ....]
Сторінки: Поперед. 1 2
Читають тему (гостей: 1)