Jump to content

Новичок в API


Recommended Posts

streamdown

Добрый день.

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

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

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

K62pEDY7QO.png

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

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

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

Edited by streamdown
Link to post
Share on other sites


UnPinned posts
KrissKross

 

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

Цитата

 

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

 

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

 

Edited by KrissKross
Link to post
Share on other sites
streamdown
Posted (edited)

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

 

 

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

devenv_UhjBvf3OCl.png

devenv_9ubOfby6BP.png

devenv_2dVOh1lvZZ.png

 

Edited by streamdown
Link to post
Share on other sites
KrissKross

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

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

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

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

Link to post
Share on other sites
streamdown

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

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

9PCc7hr9Ab.png

 

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

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

 

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

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

 

Link to post
Share on other sites
streamdown

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

Link to post
Share on other sites
streamdown

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

Link to post
Share on other sites
KrissKross

Бинго

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

 

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

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

 

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

 

Link to post
Share on other sites
streamdown
Posted (edited)
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

 

Edited by streamdown
  • Чемпион 2
Link to post
Share on other sites
streamdown

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

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

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

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

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

Link to post
Share on other sites
KrissKross

@streamdown  

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

 

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

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

 

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

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

 

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

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

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

 

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

 

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

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

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

и добавляем AddProperty

 

 

Edited by KrissKross
  • Нравится 1
Link to post
Share on other sites
streamdown
Posted (edited)
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. Или программирование под Компас это непопулярно?

Edited by streamdown
Link to post
Share on other sites
KrissKross
1 час назад, streamdown сказал:

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

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

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

Link to post
Share on other sites
streamdown

@KrissKross не, я про

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

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

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

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

Link to post
Share on other sites
kvin
3 часа назад, streamdown сказал:

и вот тут null.

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

Link to post
Share on other sites
streamdown

У меня так

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

KOMPAS_cH4EQEZJr4.png

 

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

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

Link to post
Share on other sites
kvin
28 минут назад, streamdown сказал:

У меня так

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

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

К_API.jpg

 

  • Нравится 1
Link to post
Share on other sites
streamdown
Posted (edited)

@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);
                }
}

 

 

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

Edited by streamdown
  • Нравится 1
Link to post
Share on other sites
streamdown

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

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

hh_s2TpTSvDhi.png

 

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

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

  • Хаха 1
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.



  • Сообщения

    • Slavdos
      про солид не понял. там есть заращивание зазоров
    • vad0000
      ЧПУ не понимает сигнал тахогенератора. Поэтому, если в серводвигателе стоит тахогенератор, то в системе где-то стоит энкодер, чтобы отправлять сигналы в ЧПУ. Например, старый координатно-пробивной пресс с ЧПУ Bosch или листогибочный пресс с ЧПУ DELEM DA24.
    • Udav817
      Догадываюсь о чём речь. Описать надо было чуть подробнее. Приведу пример. Надеюсь, что ТС имел ввиду что-то подобное. У меня есть 2 листовых детали. Выполняются зеркально (развёртка одна, гиб в разные стороны). Помимо этого различаются тем, что одна без отверстий и пазов, вторая с отверстиями и пазами. Что делаю я. Создаю деталь А. Потом на основе детали А создаю деталь Б, зеркально. И допиливаю в ней отверстия и пазы. Если бы детали не были зеркальны, то А является заготовкой для Б. В противном случае у них общая заготовка - развёртка. На пример автора походит как раз ситуация без зеркальности. Когда есть деталь А (уже полноценная), но есть и деталь Б (которая изготавливается из А, путём добавления некоторых конструктивных элементов). При этом есть варианты: Б может быть деталью, а может быть сборочной единицей. В зависимости от конкретного случая. Если Б - деталь, то А и Б надо обозначать как исполнения. Деталь А будет базовым исполнением (-00), деталь Б будет следующим номером (-01). Если Б - сборка, то как раз и получаются все эти танцы с бубном в спецификации. Что и требовалось доказать. Сначала я написал, потом прочитал. Невнятно оно когда не сталкивался с таким же.
    • Udav817
      Что мешает сделать дополнительный вид?
    • Kirteas
      @jtok @Plumber , господа товарищи, не знал, спасибо большое. Надеюсь, этого достаточно для нормального добавления моделей - "Разъединить элемент>Диагностика импортирования".     Ещё вопрос встречный, всегда лучше "разрывать связи" ? Любую модель, которую импортирую? Что это даёт?
    • Udav817
      Блин, а я ведь уже и забыл, что так же мучался.  Формулы. Я юзал формулы, чтобы не высчитывать всё каждый раз. Первый способ я активно использую. Я так накидываю для себя модели покупных изделий, чтобы добавить их в сборку. Там развёртка не нужна, а редактировать чуть проще. Второй способ даже меня удивляет. Во-первых, лишняя операция, во-вторых, если там будет 4 гиба, то лучше использовать команду "тонкостеное тело", чем "вырез", где лишний эскиз будет висеть. А я вспоминаю "потрясающих специалистов", которые проектировали исключительно в 2D, при этом: 1. На чертеже куча наложенных друг на друга линий (в компасе так-то удобно прямые для вспомогательных построений использовать - и то на сложных эскизах). 2. Развёртку считали вручную (и каждый раз у меня формулу спрашивали). 3. Нарисованная развёртка очень здорово резалась на плазме. По несколько проходов по одному месту. Ну извините, у вас лопатка на кубике стоит. Это несерьёзно. Лопатку как в примере @SAPRonOff Компас сделать без ошибок не сможет. И даже там, где он скругления сделает, поверхности не будут идентичны сделанному в другой САПР.
    • Bot
      Оригинал публикации: Stefan Boeykens. What Is LOD, or Level of Detail? LOD — широко используемая аббревиатура, но она не всегда понимается одинаково в разных частях мира. Более десяти лет это сокращение означало такие понятия, как «уровень детализации» (level of detail) и «уровень разработки» (level of development), при этом также получили распространение связанные с ними варианты — «уровень информации» (level of information), «уровень точности» (level of accuracy), «уровень геометрии» (level of geometry), «уровень разработки модели» (level of model development), имеющие разный смысл. Во многих корпоративных и государственных руководящих документах были приняты различные трактовки термина LOD, которые использовались во множестве планов реализации BIM (BIM execution plans, BEP) для строительных проектов. Но поскольку концепции различны и их реализация иногда неоднозначна, достаточно сложно сформулировать четкие требования к информации и обеспечить ее последовательное [...] View the full article
    • an_rushin
      советую воспользоваться софтом TAITHERM. хотя и CFX подойдёт.  между материалами контакт есть или зазор?
    • Krusnik
      Можно. Я буду показывать всё в Inventor'е, т.к. он был под рукой, но в Компасе то же самое.   Есть задание. Нужно смоделировать вот такую деталь: Способов смоделировать такое куча. Например вот такой через твердое тело. Выдавливается эскиз, потом ещё два эскиза по бокам, и добавляются скругления. Можно делать и по другому: выдавить сразу из одного эскиза, выдавить параллелепипед и вырезать из него полость с последующими скруглениями и т.п. Но так делают самые упоротые. И быстро отучиваются от таких методов, как только их просят сделать развертку.   Правильно пользоваться элементами листового металла. Там тоже многими способами можно моделировать, но правильных только 2 Первый из них - это выдавить из одного эскиза. Он хорош, но я оставлюсь на другом методе, потом будет понятно почему. Второй способ - это сделать прямоугольный эскиз основания, а потом сделать отгибы. Обратите внимание, что при создании отгибов используется следующая опция Благодаря этому можно удобно контролировать модель. Размеры эскиза основания являются габаритными. И если в процессе работы нужно изменить габариты - это легко делается. Казалось бы что в этом такого? Компас тоже так может. Но давайте усложним задачу и сделаем 4 гиба. В Inventor'е я просто редактирую параметры гиба и добавляю ещё 2 кромки. Именно поэтому я не стал рассматривать первый способ. Там можно добавить 2 гиба, но этим способом удобнее контролировать все 4 гиба из одного меню, а не из двух. И Inventor автоматически создает вот такой стык. И только если вы проектируете деталь, которая одевается на другую деталь как крышка - то в таком случае используется другая опция гиба. (но такое бывает редко) ________________________________________________________________________   Но Компас так не умеет. Он не может одним действием делать несколько гибов и создавать стыки. Там одно действие - один гиб. И вот как делают пользователи Компаса. Создают эскиз основания, выдавливают, создают гиб, потом гиб с противоположной стороны. Потом создают третий гиб, И там на стыке образуется вот такая картина, если делать аналогично другим САПР. Но мы не из робкого десятка. Поэтому делаем первый гиб с другой опцией. Потом второй такой же гиб. И добавляем ещё 2 гиба. Вот уже получается нормальный стык, Дальше наращиваем гибы, чтобы щели в стыках были не такими большими. Благо в компасе есть специальные кнопки пр создании гибов. У меня один конструктор из Компаса долго бомбил почему такой опции нет в SW, а нужно редактировать эскиз после создания гиба. И вот у нас получается итоговая модель. Делать её дольше, и больше ёрзать мышкой по монитору, но в итоге в принципе результат такой же.   Только обратите внимание на размеры эскиза. Они теперь не габаритные. Если вам нужно изменить габариты детали - то нужно из габарита вычесть толщину, вычесть радиус гибки с каждой стороны; и только после этого вы получите размеры которые нужно ввести в эскиз. А если вам говорят поменять толщину и радиус гибки - то нужно помимо этой самой толщины и радиуса менять размеры основания, чтобы деталь попадала в заданные габариты. И очень часто когда правят модели  созданные таким образом где-то забывают поправить размер, что приводит к браку в изготовлении. Т.е. компас косвенно увеличивает количество брака и снижает качество выпускаемой документации.   И я понимаю пользователей Компаса, когда они так делают, Потому что по-другому в Компасе не сделать. Но когда они переходят в другой САПР и начинают делать так же, не смотрят как делают другие, да ещё и вопят... 
    • LazyBitch
      Что-то Сергей долго картинку фотошопит. 
×
×
  • Create New...