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

Проблема с экземпляром класса 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 пользователей

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




  • Сообщения

    • Alena2024
      Компания ООО «ТопС Бизнес Интегратор» (TopS BI) (входит в состав НКК) https://topsbi.ru/  проводит конкурс "АЛЬПИНИСТЫ САПР". Победителям конкурса будет предложено трудоустройство в компании TopS BI, занимающейся цифровой трансформацией высокотехнологичных предприятий машиностроительного комплекса и ОПК.   Мы предлагаем проявить свои таланты в конкурсе и стать частью нашей команды, чтобы развивать и применять свои навыки в самых интересных и важных цифровых проектах нашей страны.   Конкурс проходит с 20.05.2024 по 30.09.2024 включительно и состоит из двух этапов:   1)    Самостоятельное написание плагина для CAD системы (T-flex) на языке C++ 2)    Очное интервью   По итогам первого этапа отбора все участники получат баллы за написание плагина для CAD системы. Далее участники, набравшие наибольшее количество баллов, будут отобраны для проведения очных интервью. Участники, которые успешно пройдут этап интервью, получат возможность трудоустройства в компанию TopS BI.   Ознакомиться с информацией и зарегистрироваться на конкурс студенты могут на сайте TopS BI - https://topsbi.ru/competition.   Подробное описание конкурсного задания и необходимые инструкции будут отправлены участникам после регистрации на сайте.                    Приглашаем креативных молодых специалистов к участию в нашем конкурсе!  
    • Vengeance
      Там не сложно, почитай Post Section.pdf @lexa345 огромная благодарность за помощь с интеграцией Cimco в мой постпроцессор) За комментарии к циклам еще раз спасибо       
    • gudstartup
      а он там вообще есть? станок какого года 2023? у него поди  еще гарантия не кончилась так чего вас напрягают?
    • Kelny
      Последнии версии программы требуют завести в организации штат шаманов и не менее трёх бубнов, т.к. работы програмы часто требует риуталов Вуду, что бы хоть что-то работало нормально.   Так могут пропадать резьбы в сборках (частично или все), даже если вы их хотите или пытаетесь включить разнообразными способами, а если вам их удалось включить, то они могут отображаться не так как нужно. В вычислениях и уравнениях из-за вычислений с плавующей точкой два одинаковых числа могут быть не равны.   В чертежа на массивы обычно не надо задавать размеры каждого отверстия, а достаточно образмерить одно, шаг и максимальный размер.   Что подразумевается под правильно? Можно пример картинок, что это за отверстия и что значит правильно и как получается не правильно? Картинки или другие файлы в архиве можно вставлять прямо на форум после 10 сообщения на форуме.
    • kinovari
      Панель в виндовс не выходит... проект .ap18 по инфе производителя создан в тиа 18 
    • vad0000
    • OliverTwist
      Добрый день! Сдохла плата управления на приводе Bosch Rexroth серии HCS. Имеется в наличии ещё один такой привод и нужно стянуть с него параметры. Судя по документации мне необходим софт "IndraWorks ds" - но я никак не могу его найти :( Может кто-то подскажет - где можно такой скачать? Заранее спасибо!
    • gudstartup
      у ваших ис имеется сменщик паллет?? это просто место сбора слесарей + гидравлика мозг выносит. к фанукам притензий особых нет как и везде но электроавтоматика сделана отвратительно в шкафах полный хаос.   такие станки имеют износ 40-70% и их необходимо обновлять особенно это касается высокоточного оборудования но к исам это не относится там главное чтобы железо крепкое было я смотрю вы любите пространные описания но есть нюанс дочитывая до конца забываешь что в начале или это я такой склеротик
    • Alexandr97
      В сборке необходимо было создать массив нескольких деталей на линейном расстоянии друг от друга. При создании сопряжения между отдельной деталью и одним из объектов массива, объект массива ломается, свободно перемещается и расстояние, которое было задано при массиве, уже не актуально. При том, когда я к родительской детали пытаюсь крепиться, то все нормально. Подскажите, это недочет программы, или так и должно быть?
    • Shura762
      Кто нить пробовал ТФ18? ну там типа бета тестирование? или все это коммерческая тайна
×
×
  • Создать...