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

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

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




  • Сообщения

    • gudstartup
      @gudi 2 это когда flashrom module  наглухо убило так что поменяли правильно но почему такое по подобрали неясно.
    • AlexKaz
      В статике в WB надо поставить несколько шагов, тогда можно в таблице прямо в WB задавать любое время и строить любые кривые нагружения.
    • Kelny
      Имена файлов разные? Имена файлов, даже находящихся в разных папках, должны быть разные. Программа не отслеживает пути, а сравнивает исключительно имена файлов и при наличии модели с тем же именем открывает/вставляет туже модель, что уже открыта.   Можно сохранить одну сборку платы как деталь под одним именем, а второую как деталь под другим именем, а потом вставлять в сборку блока.   Попробуйте закрыть все документы в программе и начать с открытия второй платы. Если всё прошло нормально, то вы действительно использовали одинаковые имена для плат.
    • gudi
      \523сейчас \now523.zip       ( там txt файлы с чпу в текущем состаянии) SYSTEM CONFIGURATION:   CNC(SYSTEM1)   G601     26.0      CNC(SYSTEM2)   G601     26.0      CNC(SYSTEM3)   G601     26.0      CNC(SYSTEM4)   G601     26.0      CNC(MSG1)      G601     26.0      CNC(MSG2)      G601     26.0      CNC(MSG3)      G601     26.0      CNC(MSG4)      G601     26.0      CNC(MSG5)      G601     26.0      BOOT           60W4     0014      PMC(SYSTEM)    40A5     26.0      PMC(LADDER1)                      GRAPHIC        60VN     07.0      EMBED ETHER    658M     18.0      USB SOFT       659A     05.0  
    • Ветерок
      Наверное, имена файлов одинаковые :) Если не верхней сборки платы, то имена компонентов.
    • Alexey8107
      Тогда полностью согласен. Правда у нас полные схемы есть и я уже знаю и привык.
    • gudstartup
      так и я это имел ввиду на импорте привыкли к  сквозной нумерации в схемах и в эл. шкафу все соответствует
    • Flint_ru
      Получается, самый простой (и лучший) способ - использование APDL. Вот пример ниже.  
    • gudi
      октябрь 2014.  Залил в доступ  https://drive.google.com/drive/folders/1sS1PBKzu80vcSZ7Xk2BEzR9c0_y-9pD_ \N523_сломан\#523.zip                                                   там 3 файла CNC-PARA.TXT,PMC1_PRM.TXT и еще какой то с параметрами( не знаю как его залить) \N522_С другого станка\fanuc_good_numb7_#522.zip    там все бэкапы \35i From/sram module\35i_data.zip                                файлы с флешки от 35i стойки
    • Alexey8107
      Да, накопитель на 2 палеты. Вот честно, но вот именно нам этот накопитель особых неудобств не предоставляет. Я не говорю что он идеален и не ломается, но из всех проблем там это цепь растягивается, после чего индуктивные датчики начинают работать нестабильно, натяжка или замена цепи решает проблему надолго. А вот шторки со стороны палет действительно порой мозг выносят. Есть проблема со шнеками удаления стружки, если потекли, сушите весла... Еще из слабых мест, это нулевой и аварийные концевики оси Х, расположены так, что чего случись с ними приходится снимать накопитель палет чтобы по человечески сделать... По гидравлике... У нас особо проблем нет, иногда рвутся РВД, особенно на манипулятор, ну бывает клапан заклинит. Не каждый день, ну так скажем в среднем раз в полгода просто для представления. Но такие же проблемы случаются и с теми же LEADWELLами. Правда там всего этого оборудования на порядок если не на два меньше. Может мы совершенно про разные ИС-800 говорим? У нас в шкафах по моим представление никакого хаоса, реле, тепловухи, пускатели все стройными рядами, провода на привода уложены и стянуты вязками, на каждом реле, тепловухе, пускателе, модуле и прочем бирка с обозначением, каждый провод промаркирован по системе. Единственный хаос, он не в шкафу. Маркировка проводов сделана так, что до сих пор понять не могу, такое ощущение что в шкафу одна маркировка, а в, например, в магазине совершенно другая! Т.е. например, 15-К1, 15 это значит что принадлежит магазину, ее НО контакт обозначен в шкафу как 15261(15 магазин, 261 номер провода в шкафу), после разъема на шкафу он превращается в 15274, а залезаешь в магазинную коробку, а там этот же провод уже 15297. Благо хоть схемы есть, а так может мозг вынести. Не, просто слепой десятипальцевый метод печати... Слишком быстро печатаю
×
×
  • Создать...