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

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

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




  • Сообщения

    • Guhl
      Если выключается, по М30, то отключите переключатель "auto power off" Если отключается по слишком большому времени цикла, то увеличивайте уставку соответствующего таймера Внимательно прочитайте инструкцию на станок, там это должно быть описано
    • maxx2000
      @AlexKaz  а по факту только при наличии спроса на интерпретацию этих мультиков.
    • AlexKaz
      По теории Дарвина, все заказчики и исполнители, кто имеет каплю мозга чтобы учиться и инстинкт самосохранения чтобы не стать персонажем Гарри Гаррисона.
    • MagicNight
      Приветствую всех! Использую Fanuc. В частности длинные программы, с кадром в конце М30. Соответственно станок автоматически выключается. Вопрос, может Fanuc создает какой-то текстовый файл с историей (во сколько закончилась программа, общее время работы программы и прочее)    
    • lem_on
      Omron d5f Но чёт у этих "федоров" тоже цена в два раза взлетела смотрю.  Ещё touch master видел, написано американский, ни по виду Китай. 
    • ev121
    • Anat2015
      Есть ли китайская замена датчикам измерения инструмента Renishaw и Marposs? Конкретно: Renishaw TS20 (он же Marposs T18) и Marposs TT30. Ну, еще добавлю Renishaw RP3. В России цены просто дикие на оригиналы: от 4 до 5 килобаксов, а гарантии, что оператор/наладчик не убьет датчик нет.
    • maxx2000
      будешь смеяться. НО. Просит человек сделать будку на машину МТО, типа у него есть, надо такую же но на другое шасси. По сути ящик для инструментов. Говорю ему от полугода до года срок. Говорит не, сфоткай и в фотошопе или в чём там Вы работаете сделайте за пару дней, как это будет выглядеть я хочу глянуть, мне говорит так наклейку на Такси делали. Потом надо сделать картинки для лазера, какие нах полгода-год. Другой просит сделать модель прессформы для эксцентрикового зажима. Ну деталь то плевнеькая, не пролить маловероятно, тем более что лить будет на самодельном ТПА от души . Говорю ему сделай сам, у меня дорого, в общем всячески отмазываюсь. Жалуется что никто  не хочет браться, даже те кто ему их изготавливает. Говорит боюсь, сделаю, а она не работает, а за изготовление заплачу. Ты мне как то на заре сотрудничества  показывал как масса на симуляции заполняет форму и как она остывает, мне такое никто не показывал больше. Я говорю не показывают, значит не считают нужным и не значит что этого не делают. Говорю что ему везде отказывают потому что не хотят браться за такую простую и дешёвую работу.   Взрыв-схема, картинки, мультики и описание того что это за ненужные файлы которые  не открываются на телефоне. И вот ещё короночка.  
    • Anat2015
    • davidovka
      Creo 3 и выше. Это неофициальные бесплатные модули.
×
×
  • Создать...