Перейти к публикации

FEMAP API Разделение макросов на несколько файлов


Рекомендованные сообщения

Доброго времени суток,

я пишу скрипт на встроенной API системе в программе FEMAP. Так как скрипт принимает довольно большие размеры, я бы хотел его разделить на несколько файлов.

Отдельно функции, отдельно исполнение.

К сожалению, не получается вызвать функцию из другого файла. 
Подскажите как правильно реализуется вызов функции / процедуры из одного файла в другой. 

Заранее спасибо )

Ссылка на сообщение
Поделиться на других сайтах
  • 4 недели спустя...


Здравствуйте,

 

если еще вопрос не решен, то хорошо бы видеть ваш код и ошибку которую вызывает метод. 

 

вообще, примерно так должно работать (в моих скриптах работает):

Dim App As femap.model
Set App = GetObject(, "femap.model")
rc = App.feFileProgramRun(False, True, True, "scriptFullName.BAS") 

 

где "scriptFullName.BAS" - полное имя файла запускаемого скрипта. 

 

Ссылка на сообщение
Поделиться на других сайтах
  • 3 месяца спустя...

Добрый день, если вопрос еще актуален, то подключение библиотеки скриптов из внешнего файла производится директивой '#uses "<path>" размещаемой в начале файла из которого необходим вызов подпрограммы/функции. <path> в директиве полный или относительный путь к подключаемому скрипту. Типы подключаемых скриптов могут быть .bas - библиотека программ (файл доступен через меню Custom Tools/User Tools Femap), .obm - библиотека объектных модулей, .cls - библиотека классов. Допускаются циклические ссылки на подключаемые библиотеки. Примерно следующим образом 

'deleteCurvesWithPoints.bas
Option Explicit
'#Uses "..\modules\geo_math.obm"
Dim app As femap.model
Sub Main
    Dim rc As zReturnCode
    Dim cuSet As Set

    Set app=feFemap()
    Set cuSet=app.feSet
    rc=cuSet.Select(FT_CURVE,True,"Выберите линии для удаления")
    Call DelSetCurveWithPoints(cuSet)
    app.feViewRedraw(0)
End Sub

'geo_math.obm
Option Explicit
Private app As  femap.model
Public Module geo_math
    Private Sub main
        Set app=feFemap()
    End Sub
    Sub delCurveWithPoints(ByRef cId As Long)
        Dim tmpSet As Set
        Dim oCr As femap.Curve
        Dim oPt As femap.Point

        Set tmpSet=app.feSet
        Set oCr=app.feCurve
        Set oPt=app.fePoint
        oCr.Get(cId)
        If oCr.ID>0 Then
            tmpSet.AddRule(cId,FGD_POINT_ONCURVE)
            oCr.Delete(cId)
            tmpSet.Reset
            While tmpSet.Next
                oPt.Get(tmpSet.CurrentID)
                oPt.Delete(oPt.ID)
            Wend
        End If
    End Sub
    Sub DelSetCurveWithPoints(ByRef oSet As Set)
        oSet.Reset
        While oSet.Next
            Call delCurveWithPoints(oSet.CurrentID)
        Wend
    End Sub
End Module

 

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...