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

Вопрос по NXOpen


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

Выскочила у меня следующая проблема.

Пишу прогу на C# для NX4 и NX6 (VS2003 FrameWork 1.0).

В силу некоторых обстоятельств приходится еще и использовать Сишную DLL.

Дллку подключаю динамически через Windoes API, код ПРИМЕРНО такой:

/////////////////////////////////

[DLLInport("kernel")]

private static IntPtr LoadLibrari(...);

private delegate MyDelegate();

[DLLInport("kernel")]

private static MyDelegate GetPrcessAdress(...);

public Class1()

{

IntPtr ptr=LoadLibrari(...);

MyDelegate MM=GetPrcessAdress(ptr, ...);

MM();

}

/////////////////////////////////

Проблема в следующем:

В NX6 все работает, а в NX4 нет.

В журнале пишет ошибку: не могу преобразовать указатель в делегат.

Кто что может посоветовать :cry_1:

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


Мож DLL разные в NX?

А вообще я по простому пишу:

[DllImport("libufun.dll")]

public static extern int UF_... (...);

нафига динамически, если конечно заранее известно, какие функции вызываются....

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

DLL и прога одни и теже

[DllImport] мне не подходит, потому что после выполнения проги ДЛЛ остается подгруженной в ЮЖ.

Может ее можно как-то выгрузить, но я не знаю как((.

И после второй загрузки прога не обращается к файлу DLL, а работает с ранее загруженной.

Т.о. если имена разных ДЛЛ одинаковы возникает ошибка.

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • clavr
      у вас для 3 и 4 мм указаны в первой таблице другие радиусы чем во второй. приведите в соответствие
    • nahaus
      Выскакивает ошибка  Она же выскакивает и без параметра в скобках.
    • Chuvak
      @nahaus  Потому что метод GetProperties2 возвращает массив свойств листа, состоящий из 8 переменных типа double: [ paperSize, templateIn, scale1, scale2, firstAngle, width, height, sameCustomProp ] Вам какие именно переменные из данного массива нужны:  paperSize, width или height ? Или все сразу. Тогда переделайте строку:   swApp.SendMsgToUser2 swSheet.GetProperties2, swMbWarning, swMbOk   на swApp.SendMsgToUser2 swSheet.GetProperties2(0), swMbWarning, swMbOk или   swApp.SendMsgToUser2 swSheet.GetProperties2(5), swMbWarning, swMbOk дальше примеры приводить не  буду, думаю поняли логику
    • hlibhlib
      Он на Гоблинском в Исходнике.
    • Kelny
      Модельку забыли положить.   И не указали версию программы и сервиспака.
    • nahaus
      Подскажите пожалуйста как получить размеры листа с помощью метода GetProperties2? Пытаюсь получить сообщение. Что не так в строке swApp.SendMsgToUser2 swSheet.GetProperties2, swMbWarning, swMbOk Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Dim lErrors As Long Dim lWarnings As Long Dim swSheet As SldWorks.Sheet Dim swDrawing As SldWorks.DrawingDoc Dim sheetProperties As Variant Sub main() Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc fullPathFile = swModel.GetPathName ' swApp.SendMsgToUser2 fullPathFile, swMbWarning, swMbOk nameFileExtension = Mid(swModel.GetPathName, InStrRev(swModel.GetPathName, "\") + 1) ' swApp.SendMsgToUser2 nameFileExtension, swMbWarning, swMbOk nameFileWithoutExtension = Left(nameFileExtension, InStrRev(nameFileExtension, ".") - 1) ' swApp.SendMsgToUser2 nameFileWithoutExtension, swMbWarning, swMbOk Set swSheet = swModel.GetCurrentSheet ' swApp.SendMsgToUser2 swSheet.GetName, swMbWarning, swMbOk swApp.SendMsgToUser2 swSheet.GetProperties2, swMbWarning, swMbOk End Sub  
    • mannul
      Да, важна координата X. Если резьба с допуском, 6H допустим, лучше брать d1 из ГОСТа или просто из наружного диаметра резьбы вычесть две глубины, так меньше шанс провалить. А уже потом уменьшать X по 0,05 мм.
    • mannul
      Потому что расчетная глубина резьбы не учитывает радиус скругления на резьбовой пластине. Поэтому на практике всегда глубже нужно делать резьбу, подгонять.
    • Guhl
      У вас случайно не один привод на две оси стола, как это бывает у расточных станков? Инструкция имеется на станок? Там возможно описана процедура для этих двух осей. Про параметр  MD 1011 [Bit 10] читали?    
    • Killerchik
×
×
  • Создать...