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

Проблема с экземпляром класса SolidWorks API


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

Есть две формы, в первой при нажатии на кнопку открывается SolidWorks по своему GUID. Далее открывается вторая форма и мне необходимо работать с SolidWorks из этой формы уже, но возникают проблемы с экземпляром класса в первой форме объявлен 

C#
1
2
3 
 //первая форма
public SldWorks SwApp; 
public IModelDoc2 swDoc;

Во второй форме нужно получить экземпляры классов (так как будут пустые параметры если просто объявлю во второй форме как и в первой и начну какие либо действия). Пишу во второй форме так 

C#
1
2
 //вторая форма 
 SldWorks SwApp = new SldWorks();

SwApp - получает параметры полученные в первой форме, а swDoc объявлен как обычно (IModelDoc2 swDoc) так как это интерфейс и нельзя получить экземпляр, далее нужно получить активный документ, пишу 

C#
1
2
 //вторая форма 
 swDoc = SwApp.IActiveDoc2;

но почему то параметры пустые, что в SwApp.IActiveDoc2 что соответственно в swDoc. Подскажите как быть? Если вы конечно поняли о чем я говорюag.gif

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


3 часа назад, mrazzzb сказал:

так как это интерфейс

Это не интерфейс)) это чуток быдлокода от индусов. Это так называемые In-Context объекты, с какого то перепоя с приставкой I.

 

3 часа назад, mrazzzb сказал:

Подскажите как быть?

передавать SwApp второй форме параметром, или создавая вторую форму сделать там открытое свойство и после создания но ДО отображения присваивать свойству второй формы объект SW.

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

сделать там открытое свойство

ошибся. публичное свойство

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

передавать SwApp второй форме параметром

Не совсем понимаю, как вы имеете в виду? Не могли бы привести пример?

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

Не совсем понимаю, как вы имеете в виду?

Can u in english? Because I don't understand your language.

 

http://stackoverflow.com/questions/4247807/passing-variable-between-winforms

 

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

Can u in english? Because I don't understand your language.

 

Издеваетесь?)) Все комментарии на русском оставляете, а пишите что не понимаете)))

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

Нет. Для меня предложение

28 минут назад, mrazzzb сказал:

Не совсем понимаю, как вы имеете в виду?

звучит как из гугл translate. Вот и переспросил.

- КАК я имею в виду?

- как я имею в виду ЧТО?

- как я могу иметь в виду ПЕРЕДАТЬ параметр?

- КАК я имею в виду передавать параметр?

:wallbash:

 

Лан, ответ всё равно дал выше :smile:

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

Нет. Для меня предложение

звучит как из гугл translate. Вот и переспросил.

Я уже грешным делом подумал о насмешке) Я просто не совсем понимаю как передать SwApp второй форме, параметром. 

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

как передать SwApp второй форме, параметром.

Во! Чётко и понятно)))

Во второй форме пропишите публичное свойство. При создании второй формы из первой, присвойте тому созданному свойству значение переменной, отображайте вторую форму и работайте с объектом SW который был создан в первой))

ТУТ всё подробно и на русском.

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

При создании второй формы из первой 

Она у меня не создается программно, я ее уже создал в "обозревателе решений" в ручную.

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

Она у меня не создается программно

:smile: всё что вы пишете в Visual Studio - создаётся программно. Visual Studio именно так и работает.

Как вы отображаете вторую форму?

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

:smile: всё что вы пишете в Visual Studio - создаётся программно.

 Я так и думал что вы это скажите)) В первой форме после запуска SolidWorks, написал так :

Form1 f1 = new Form1();
f1.Show();
Hide();

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

прочитайте тему по ссылке в 9 сообщении, там есть ответ на ваш вопрос

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

Я так и думал что вы это скажите))

Ну так, чётко сформулированная мысль уже есть половина ответа.

 

Вот это

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

Form1 f1 = new Form1();

и есть создание второй формы, ибо есть new. До new второй формы не существовало в оперативной памяти.

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

@streamdown ХВАЛА ИМХОТЕПУ! У меня получилось, я почему спрашивал как все-таки передать параметром, потому что я уже пробовал один их тех способов на том форуме который вы мне скинули, он ничего не передавал,(способ 2.2) т.е. null. Тут у меня и появились сомнения, казалось что нужно как-то по другому, а вот следующий способ 2.3, помог))) Спасибо Вам большое!! А-то я наверно больше и не попробовал никаких способов) Кстати еще один вопрос, с вашего позволения) Как программно получить высоту(или длину) ниже приведенной детали?

pastedImage_0.png

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

Как программно получить высоту(или длину) ниже приведенной детали?

Это вопрос из разряда "лечу недуг по фотографии" :biggrin:

Напрашивающийся очевидный ответ: выделить 2 грани, запустить на выбор:

 

- ClosestDistance

- GetDistance

- IMeasure Interface : Length Property 

- RayIntersections

- IExtrudeFeatureData2

- всякими другими методами http://www.streamdivision.com/naiti-gabarity-detali-part1/

- посчитать простенько, векторами да точками

Вы же помните, выше :biggrin:

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

чётко сформулированная мысль уже есть половина ответа.

 

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

@streamdown Спасибо большое за подсказку, и кстати нахождение крайних точек я уже смотрел, спасибо)) Просто хотелось узнать какие еще способы есть) Я может не с того начинаю, но задача стоит в следующем, необходимо с помощью trackbar(ползунка) длиной равной высоте детали, при перемещении ползунка, обрезать деталь(с каким-либо шагом, не важно). Как это можно реализовать? Сначала найти высоту детали, для определения длины trackbar, а потом макрос записать как работает функция обрезки детали по выбранной оси?) Или может есть другой способ?

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

Хм, задачка вроде простенькая, но много переменных.

- откуда узнать с какой стороны обрезать?

- резать надо в реальном времени?

- а что если крайние плоскости не параллельны?

- зачем вообще макрос на такое? :biggrin: Делайте вырез и солидовским нумериком выставляйте размер отреза

7 часов назад, mrazzzb сказал:

Я может не с того начинаю

Может задача то вообще по другому звучит? А значит и решение другое надо.

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

- откуда узнать с какой стороны обрезать?

 

Не столь важно, попробовать хотя-бы от начала координат.

 

4 часа назад, streamdown сказал:

- резать надо в реальном времени?

 

В зависимости от сложности реализации, если возможно вообще в реальном времени, то так конечно же лучше.

 

4 часа назад, streamdown сказал:

- а что если крайние плоскости не параллельны?

 

Думаю ничего страшного:g:Есть функция обрезки детали в Солиде называется Section View(скрин ниже) там можно разрезать деталь в любом направлении, ссылаюсь на эту функцию, может можно как то к ней обратиться и обрезать деталь ползунком с приложения ?)) Или есть еще какой-то способ обрезки деталей, программно.

Снимок.PNG

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

Команда "Сечения", которую вы показали, это ни разу не "обрезать деталь".

Блин, надоело))) задавайте вопросы по API - отвечу. Остальное сами.

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Bot
      Крупнейший мировой производитель карьерных самосвалов БЕЛАЗ и российский разработчик инженерного программного обеспечения АСКОН объявили на форуме «ТИБО» в Минске об успешном завершении совместного пилотного проекта. Система проектирования КОМПАС-3D от АСКОН прошла испытания в связке с программными продуктами компании ИНТЕРМЕХ и рекомендована к применению для решения задач конструкторского проектирования на предприятии БЕЛАЗ. В перспективе российская разработка заменит зарубежные CAD-системы, в которых сейчас проектируется тяжелая горнодобывающая и строительная техника. В ходе пилотного проекта в КОМПАС-3D и среде IPS был смоделирован карьерный экскаватор БЕЛАЗ ВХ20012, 200-тонная гидравлическая машина на гусеничном ходу, предназначенная для разработки горных пород. Цикл работ включал в себя создание подробной 3D-компоновки экскаватора, детальную проработку основных узлов, разработку конструкторской документации и проведение инженерных расчетов. Помимо базовых возможностей [...] View the full article
    • ID_Hacker
      Надо смотреть тип HMI. Может быть integrated, то она прям в NCU на линуксе. Можете через X127 подключить ноутбук и VNC Viewer'ом попробовать подключиться по адресу 192.168.214.1 или 215.1, если при этом на экране то же самое что и на TCU тогда у вас нет внешней HMI. Иначе 192.168.214.241 должен быть адрес Simatic IPC. Ну и по электросхема можно посмотреть наличие.
    • Turgenev
      Есть 2 платы, которые экспортировал из Altium в STEP. Импортировал их в Solid, создались 2 сборки. Есть корпус, который создал как деталь в Solid. Хочу создать сборку плат и корпуса. Создаю сборку, помещаю в нее корпус и первую плату- все норм. Помещаю вторую плату и вставляется предыдущая, хоть в уменьшенном предпросмотре показана нужная плата. Иду в Solis второй платы, программа просит перестроить, перестраиваю и вместо второй платы появляется первая плата. Смотрю в дерево сборки второй платы, а там откуда то взялась STEP модель первой платы. Создаю новую деталь и импортирую вторую плату, вставляется все равно первая. В онлайн просмотрщике степ моделей все нормально- степ модели соответствуют своим платам. Подскажите, как это можно исправить?
    • Артур8991
    • SAPRonOff
      хз, напишете в тех поддержку, что ответят?
    • Alexandr97
    • ak762
      а мне нравятся производственные истории, как-будто обратно в цех вернулся.
    • 3d_oemr
      Лучший выбор для творчества: 3D принтер Picaso Designer X S2, для самых требовательных пользователей. Современный дизайн и инновационные технологии в 3D принтере Picaso Designer X S2, который изменит ваш взгляд на создание моделей. Эффективный инструмент для прототипирования: 3D принтер Picaso Designer X S2, которое подарит вам новые возможности и перспективы. Уникальный 3D принтер Picaso Designer X S2 для реализации ваших творческих идей, который станет вашим незаменимым помощником в работе. Лучший выбор для профессиональных дизайнеров: 3D принтер Picaso Designer X S2, который поразит вас своей эффективностью и надежностью. Почувствуйте мощь технологии с 3D принтером Picaso Designer X S2, который отличается высоким качеством печати и точностью деталей. Новейший 3D принтер Picaso Designer X S2 для дизайнеров и инженеров, который поможет вам воплотить ваши идеи в жизнь. Уникальные возможности для творчества с 3D принтером Picaso Designer X S2, которое подарит вам новый уровень ваших проектов. Уникальный инструмент для инженеров и дизайнеров: 3D принтер Picaso Designer X S2, которое обеспечит вас всем необходимым для воплощения идей. Удивительные возможности для создания моделей с 3D принтером Picaso Designer X S2, который не оставит вас равнодушными. Эффективное оборудование для творчества: 3D принтер Picaso Designer X S2, который поможет вам реализовать любые проекты. Превосходное качество печати и скорость работы: 3D принтер Picaso Designer X S2, которое подарит вам новый взгляд на создание моделей. Лучшее оборудование для моделирования: 3D принтер Picaso Designer X S2, который поможет вам воплотить свои идеи в реальность. Мощный инструмент для проектирования: 3D принтер Picaso Designer X S2, который превзойдет ваши ожидания. Революционный 3D принтер Picaso Designer X S2 для ваших проектов, которое станет вашим верным помощником в работе. Исключительное качество и производительность с 3D принтером Picaso Designer X S2, который поможет вам воплотить ваши идеи в жизнь. Продуктивное решение для дизайнеров: 3D принтер Picaso Designer X S2 picaso designer x s2 купить [url=https://aso-design2.ru]https://aso-design2.ru[/url] .
    • Бестолковый
      Сидю, конструячу (SW 2022), никого не трогаю (винду не пересыпаю, дров не ставлю, в реестр не лезу).   Дохожу до листовых деталей, создаю некий Part1 с габаритами (условно) 240х58х8мм через использование Base Flange/Tab, далее делаю то что обычно в таких случаях: - Открываю CutList, ПКМ по Cut-List-Item1 -> Properties -> в открывшемся списке снимаю галочку с нужной мне СЕРОЙ /неактивной/ строки (длина или ширина), копирую содержимое строки, закрываю все окна, открываю File Properties и вставляю код в необходимую мне строку из которой она подтянется в чертёж. Да, наверняка через *опу, но я самоучка и это мой метод переноса габаритов листовых деталей с чертёж и BOM.   Но что-то пошло не так, а именно: Таблица CutList НЕ СЕРАЯ (активны все её строки), а при попытке скопировать оттуда данные и вставить в File Properties строка вида"SW-Bounding Box Length@@@Cut-List-Item1@Лист 240х58х8.SLDPRT" такой и остаётся. Хотя ранее там были цифры габаритов. Открываю старые sldpt'ы в которых 100% это работало и указывало габариты - там та же беда... Откат с резервной копии настроек результата не принёс (((   Что не так-то? Луна не в фазе? Меркурий метроградный? Пятница на носу? Я сам что-то не того тыцнул?   https://fastpic.org/view/123/2024/0606/09656cc22a1847c4b1fbbd66d1324e19.jpg
    • Maik812
      Опоздали лет на 30 ...  с такими конкурсами.. Нужно еще конкурс приложений или около САПР программ и плагинов разных...  у Том систем креотивность  ниже плинтуса
×
×
  • Создать...