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

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 пользователей

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




  • Сообщения

    • marchuk-86
      Хочу примерно одинакового времени обработки. Не может быть такого что где-то в параметрах стойки ограничена скорость поворота оси C на холостом ходу? По техническим характеристикам у осей одинаковая максимальная скорость вращения. 
    • gudstartup
      @marchuk-86 два разных станка с разными параметрами осей и чего вы хотите?  
    • marchuk-86
      Добрый день. Есть два фрезерных станка с Fanuc 0i. На одном станке установлена поворотная ось(4я), на втором наклонно-поворотный стол (4+1). Проблема в разнице отработки управляющей программ. При отработке практически одной и той же управляющей программы на станке с наклонно-поворотным столом замечено существенная разница по времени отработки. Происходит какое-то торможение при повороте детали. Кусок УП для поворотной оси: G0G90G17G54 T2M6  S1500M3 G0X-15.7Y0.M8 G43Z50.H2 B0.M11  G83G98X-15.7Y0.Z.881R4.17B0.Q0.15F20. B45.  B90.  B135. B180. B225. B270. B315. X-14.75B22.5  B67.5 B112.5  B157.5  B202.5  B247.5  B292.5  B337.5 ...   Кусок УП для наклонно-поворотного стола: G0G90G17 G57B90C0 T2M6  S1500M3 G0X-15.7Y0.M8 G43Z50.H2 C0.M11  G83G98X-15.7Y0.Z.881R4.17C0.Q0.15F20. C45.  C90.  C135. C180. C225. C270. C315. X-14.75C22.5  C67.5 C112.5  C157.5  C202.5  C247.5  C292.5  C337.5 ...    Всего сверлится 120 отверстий. Разница по времени набегает в 35 минут.  После переделки УП с минимальным количеством поворотов по оси С, разница минимизировалась. Т.е. "тормозит" именно наклонно-поворотный стол. С этим можно что-нибудь сделать?
    • Maxim.Oi TF
      Померил Биение зубов у фрезы получилось 0.07(семь соток). Это перепад от наименьшее до наибольшего
    • Maxim.Oi TF
      Еще Заметил что обороты фрезы не соответствуют заданным. Проверял следующим образом: Задал 100 об в минуту. Сделал метку белым штрихом на фрезе. И за минуту по секундомеру я насчитал 122 оборота. Видимо 100 оборотов крутится сам серво двигатель, а через шестерни получается 122. 
    • Artas28
      Почему пост рисует Х 50.118 а сам станок на симуляции показывает -3.9257 и фреза находится по центру детали.  И Y там тоже очень сильно отличается. Почему? Станок по этой программе едет в х50.118 и фреза там не по центру детали. Где косяк?
    • maxx2000
      Это такая же команда и порядок её использования есть в инструкции на стойку. Т.е. как и вместе с чем включается и как выключается.
    • ДОБРЯК
      А для нахождения собственного вектора не нужно решать систему линейных уравнений? :=)
    • Artas28
      А ничего не надо добавлять в события, что бы траектория правильно выводилась?
    • Killerchik
      Ещё раз предположу, что заготовка прошла улучшение, а не закалку - просто с целью улучшения обрабатываемости.   Полностью поддерживаю, даже для хорошего современного покрытого быстрореза с СОЖ под высоким давлением 80м/мин по стали с 14% хрома и 17% никеля выглядят как запредельно много, не говоря уже про непокрытый Р6М5 с СОЖ поливом.
×
×
  • Создать...