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

Новичок в API


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

Добрый день.

Подскажите пожалуйста, как посмотреть логи подключения библиотеки к Компасу?

По совету интернетов, собрал "Step2" из SDK. Но при подключении к Компасу - ругань.

Скрытый текст

K62pEDY7QO.png

Через панельку ActiveX тоже не работает. Хотя там в списке библиотека есть

Удалил библиотеку из конфигурации.

Попробовал просто добавить через ActiveX - ошибка и список пуст.

Изменено пользователем streamdown
Ссылка на сообщение
Поделиться на других сайтах


UnPinned posts

 

Цитата из справки SDK.chm

Цитата

 

Создание прикладных библиотек  > Создание прикладных библиотек в различных средах программирования С#

 

Чтобы зарегистрировать библиотеку на компьютере пользователя, необходимо вос­пользоваться утилитой RegAsm.exe. Нажмите кнопку Пуск, вызовите команду Выпол­нить…, введите командную строку вида RegAsm.exe /codebase <файл_библиотеки> и на­жмите кнопку ОК.

 

Изменено пользователем KrissKross
Ссылка на сообщение
Поделиться на других сайтах

Не работает. Все шаги по обычной сборке сделал. В Компасе при попытке "добавить приложение" всё то же самое. Всплывашка об ошибке.

 

 

Скрытый текст

devenv_UhjBvf3OCl.png

devenv_9ubOfby6BP.png

devenv_2dVOh1lvZZ.png

 

Изменено пользователем streamdown
Ссылка на сообщение
Поделиться на других сайтах

Проделайте в ручную

Командная строка - запустить от имени администратора

посмотрите какой ответ

если все успешно - смотреть на вкладке ActiveX

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

Ну, разницы вручную или из-под студии, которая тоже от имени администратора запущена - никакой. Ну да ладно))

Скрытый текст

9PCc7hr9Ab.png

 

2 часа назад, KrissKross сказал:

если все успешно - смотреть на вкладке ActiveX

 

25.04.2022 в 13:40, streamdown сказал:

Через панельку ActiveX тоже не работает. Хотя там в списке библиотека есть

 

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

Компас был закрыт. Это я просто показал результат в cmd и рядом Компас, который попытался открыть dll-ку

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

Всё повторил заново. Разархивировал, под админом VS. В постбилд добавил регистрацию. Собрал проект. Открыл Компас из-под Администратора добавил ActiveX - менюха появилась.

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

Бинго

Значит - сделаем ремарку на будущее

 

1. Запускать регистрацию с правами администратора при закрытом Компасе,

RegAsm.exe /codebase <файл_библиотеки>

 

2. Компас запустить с правами администратора и добавить библиотеку в Конфигураторе в панели ActiveX 

 

Ссылка на сообщение
Поделиться на других сайтах
38 минут назад, KrissKross сказал:

Запускать регистрацию

Ещё вам ремарки))

Чтоб не мучаться с регистрацией, делаем так:

Цитата

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe /codebase "$(TargetPath)"

вот сюда

Скрытый текст

devenv_tvTT629pSK.png

 

 

опционально

Далее, если проект большой и толстый, то временами там перелопачиваются интерфейсы. Для автоматической разрегистрации делаем так:

ПКМ на проекте - выгрузить проект - ПКМ на выгруженном проекте - изменить файл проекта. Идём в самый низ и добавляем:

Цитата

 <Target Name="BeforeClean">
      <Message Text="Разрегистрация!" />
      <Exec Command="C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe /unregister $(TargetPath)" />
  </Target>

вот так

Скрытый текст

devenv_E26lT9QoVN.png

 

При очистке будет автоматом разрегистрация

Так же, приложение подвисало намертво вместе с Компасом, если у него не будет ENDMENU.

Так как всё хотел повторить с нуля, то накопипастил да наудалял типа "ненужного". Ну и...поймал))

 

Скрытый текст

Вот это НЕ удалять

 

devenv_D34zFn6UZX.png

 

Изменено пользователем streamdown
Ссылка на сообщение
Поделиться на других сайтах

@KrissKross можете помочь с вроде бы простым действием?

В открытой сборке пробежаться по деталям и подсборкам и для каждого компонента/сборки прописать свойство "Суперсвойство" со значением "1"

Не обязательно за меня писать код. Просто по шагам. Мол

- так пробежаться

- так создать и внести свойство в ранее как то полученный объект/документ

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

@streamdown  

Без кода - логика и немного нюансов

 

Предисловие - первая засада это исполнения - их можно переключать только на одном уровне сборки, т.е. если в главной сборке есть подсборка с исполнениями то для работы со всеми компонентами 1 уровня этой подсборки
- надо открыть подсборку в отдельном окне и там уже переключать исполнения и затем обращаться к компонентам

Ссылка на обсуждение этой проблемы

 

и так поехали - если у вас "простая" сборка без исполнений

можно пробежаться по всем компонентам в рамках главной сборки - не открывая каждую деталь в отдельном окне

 

1. Прохождение по компонентам

используем метод PartsEx[1] в вашем случае - 1

т.к. 0- все компоненты или 1 - Первые экземпляры вставок компонентов

 

если сборка - то соответственно рекурсивно у нее берем PartsEx и т.д.

 

2. Создать свойство "Суперсвойство" -

в ручную создаем его в собственной библиотеки свойств в файле MyProperties.lpt

чтобы был один идентификатор для всех вставляемых свойств

и добавляем AddProperty

 

 

Изменено пользователем KrissKross
Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, KrissKross сказал:

в собственной библиотеки свойств

А что насчёт IPropertyKeeper ?

Я попробовал пойти таким путём:

Скрытый текст

 


public void GetDetails(IPart7 part)
        {
            parts.Add(part);
            foreach (IPart7 part7 in part.Parts)
            {
                if (part7.Detail == true)
                {
                    parts.Add(part7);
                }
                else
                {
                    GetDetails(part7);
                }
            }
        }
        List<IPart7> parts = new List<IPart7>();
        // Работа с документом
        private void WorkDocument()
        {
            IKompasDocument3D document3D = (IKompasDocument3D) app.ActiveDocument;
            IPart7 part7 = document3D.TopPart;
            GetDetails(part7);

            IPropertyMng propertyManager = (IPropertyMng) app;
            if (propertyManager == null)
            {
                app.MessageBoxEx("Prop - null", "dsfsd", 0);
                return;
            }

            foreach (IPart7 part in parts)
            {
                var propertyKeeper = (IPropertyKeeper) part;
                if (propertyKeeper == null)
                {
                    app.MessageBoxEx("propertyKeeper - null", "", 0);
                    return;

                }
                var iProperty_Material = propertyManager.GetProperty(part, 4.0);
                if (iProperty_Material == null)
                {
                    app.MessageBoxEx("propMat - null", "", 0);
                    return;
                }

                propertyKeeper.GetPropertyValue(iProperty_Material, out var ttt, true, out var ii);
                app.MessageBoxEx(ttt.ToString(), "", 0);
               
            }

}

 

 

3 минуты назад, streamdown сказал:

var iProperty_Material = propertyManager.GetProperty(part, 4.0);

и вот тут null. Такое ощущение что чтоб добыть свойство нужно как-то IPart7 обработать или что-то из него получить.

P.S. Если честно, ожидал от системы такого уровня и такого позиционирования себя, много большего в части API. Или программирование под Компас это непопулярно?

Изменено пользователем streamdown
Ссылка на сообщение
Поделиться на других сайтах
1 час назад, streamdown сказал:

P.S. Если честно, ожидал от системы такого уровня и такого позиционирования себя, много большего в части API.

Обычные чувства при переходе из одного инструмента на другой

и это пройдет - как говориться

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

@KrissKross не, я про

- SDK.chm. Фактически это Summary из кода. Да, так делают, но при этом оснащают примерами, вики или ещё как то.

- API5-API7. Тут мне непонятна вообще мотивация так делать. Да ещё и каст из одного в другое существует. :wallbash:

- Форум Аскона, где вроде бы должно быть море примеров. А местами пользователи делают одно и то же разными шагами и разным кодом. А иногда ни так и ни так не получается)))

Может быть дело в том, что задачи по программированию под Компас Асконовцы предпочитают брать на себя и типа за денюжку. Не спорю, есть в этом что-то рациональное.

Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, streamdown сказал:

и вот тут null.

Я через GetProperties получал массив свойств без проблем

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

У меня так

Скрытый текст

KOMPAS_cH4EQEZJr4.png

 

Я чего ещё не понимаю. Я фактически кодом местами делаю CriticalException. На что Компас не реагирует никак. Поэтому, непонятно что именно произошло.

Кстати, а есть где инструкция как именно правильно отлаживать код разрабатываемой библиотеки с помощью VS и C#?

Ссылка на сообщение
Поделиться на других сайтах
28 минут назад, streamdown сказал:

У меня так

Делал так, все читает  и массивом и по отдельности...

Скрытый текст

К_API.jpg

 

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

@kvin ага, с текущего документа читает. А вы попробуйте туда подсунуть part7

Всё. Понял

Скрытый текст



  foreach (IPart7 part in parts)
            {
                var propertyKeeper = (IPropertyKeeper)part;
                if (propertyKeeper == null)
                {
                    app.MessageBoxEx("propertyKeeper - null", "", 0);
                    return;
                }

                var props = (object[])propertyManager.GetProperties(part.OpenSourceDocument(null));
                if (props == null)
                {
                    app.MessageBoxEx("props - null", "", 0);
                }
                foreach (var prop in props)
                {
                    var prp = (_Property)prop;

                   var result =  propertyKeeper.GetPropertyValue(prp, out var val, true, out var fromSource);
                    app.MessageBoxEx(val.ToString(), "", 0);
                }
}

 

 

Блин, так и напрашивается своя библиотека для унификации этих действий. Очень много кастов

Изменено пользователем streamdown
Ссылка на сообщение
Поделиться на других сайтах

Вот к слову о справке

Скрытый текст

hh_s2TpTSvDhi.png

 

И ведь каст к _Property возымел успех. А к IProperty - нет.

Ну вот кто так делает? )))

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Koels
      А ой извиняюсь, в состоянии покоя "0" Там в стоке два вентилятора стоит, меняли на оригинал. Они крутятся, переставляли на другие привода с такими же вентеляторами, по ним ошибки не выскакивали. Моё изначальное предложение что перегревается сам сервопривод перегревается, но ошибки на индикации нету, и доп охлаждение уже поставили. Странная ситуация в общем.
    • gudstartup
      так у вас есть индикация F. на индикаторе привода или нет я так и не прочитал ответа? Если есть то почему не устраняете?
    • Rinum
      Здравствуйте! Наткнулся на данное оформление размерной цепи от общей базы. Однако, не нашел, как в компасе сделать также. Подскажите пожалуйста, в программе предусмотрено аналогичное оформление?
    • Anat2015
      Дискету FC (Final Config) попробуйте загрузить (вставить в дисковод и включить станок). Проверить батарейки сзади в шкафу ЧПУ.
    • wega7777
      Тоже бы не отказался ,если бы кто поделился.
    • ID_Hacker
      Нужно больше информации. Есть ли PCU50 или у вас Integrated HMI. Подключитесь компьютером к NCU в X127 разъём Ethernet и попробуйте VNC клиентом подключиться на эти адреса 192.168.215.1:5900, 192.168.214.1:5900, 192.168.214.241:5900. Возможно вы изменили настройки станочной сети, и теперь у вас TCU не соединяется либо с PCU50 либо с NCU
    • Koels
      8901 перевёл в 1, ошибка вентелятора все равно вылазит. Попробую 1807 отключить 
    • Deunet
      Добрый день, помогите пожалуйста, нужен CNC Setting tool и Fanuc Picture, можно в личку. Спасибо!
    • Модернизация станков
      А) 047018 - 104401  // Силовые транзисторы 047018 - 101303 Б) 038028 - 401401  // Силовые транзисторы В) 041458 -              // Ось 044640 - 206401 041458 А7 - 958.- 56. - 90. - 014 Г) 044639 - 302401      // Ось 044639 - 206303 X/Y - 044639 А1 / А3 - 958. - 56. - 90. - 015 Д) 041456 - 302401     // Блок питания с +140 В   Платы новые, лежаные. Продажа частная. Гарантию дам. Через бухгалтерию проводить не буду. Цену уточняйте, от 10 000 Р / 1 шт. Силовые по 20 000 Р / 1 шт. Отправлю в регионы по доставке.
    • ДОБРЯК
      Незакрепленный один стержневой КЭ. Задана только площадь. Соответственно две степени свободы.    Матрица жесткости   1.560000E+04 -1.560000E+04 -1.560000E+04  1.560000E+04    Диагональная матрица масс  3.121861E-06 0  0                    3.121861E-06  На этом МКЭ заканчивается. Решайте как хотите. :=) На выходе    Собственные значения (Гц).  1          0.0130  2      15910.7495  Обобщенная матрица масс  строка 1   1.00000E+00  -1.11022E-16  строка 2   1.00000E+00 Обобщенная матрица жесткости  строка 1   0.00000E+00   9.53674E-07  строка 2   9.99404E+09       @Fedor решите эту задачу. Вырождена не матрица масс, а матрица жесткости.  @Orchestra2603 и вы решите эту задачу. 
×
×
  • Создать...