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

Помогите Разобраться С Api


fomenko

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

Сделал простой пример на API SDK для SolidWorks в виде Plugin. Добавил форму с одной кнопкой.

На кнопке такая процедура:

public void button1_Click(object sender, EventArgs e)

{

SldWorks.SldWorks iSwApp = new SldWorks.SldWorks();

iSwApp.OpenDoc("1111.sldprt");

iSwApp.ExitApp();

}

После нажатия на кнопку возникает ошибка - Unable to cast object of type 'System.__ComObject' to type 'SldWorks.SldWorksClass'.

Если то же самое запускать не из формы то все работает.

Помогите разобраться с данной проблемой.

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


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

По вопросу: приложение(конечный файл) dll или exe ?

PS. на чем написано?

PPS. я вообще-то на VB все делаю, exe-шниками, но начинал я с работающих примеров!

Вот посмотрите:

<noindex>http://www.solidworkstips.com/macro_pages/index.htm</noindex>

<noindex>http://www.solidworks.com/pages/services/APIDownloads.html</noindex>

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

После нажатия на кнопку возникает ошибка - Unable to cast object of type 'System.__ComObject' to type 'SldWorks.SldWorksClass'.

Если то же самое запускать не из формы то все работает.

Если у Вас exe-файл, и подключена COM библиотека SW, то этот код будет работать. Если же dll-то выдаст эту ошибку. По всей видимости Вы делали проект с помощью мастера, тогда в этом случае, надо просто передать в вашу форму ссылку на нужный объект. В функции, например, на отклик на нажатии пункта меню прописываете:

public void CreateMyForm()

		{

			Form1 myForm = new Form1();

			myForm.swApp = iSwApp;

			myForm.Show();

		}
а класс формы должен выглядеть примерно так:

public partial class Form1 : Form

	{

		public Form1()

		{

			InitializeComponent();

		}



		public ISldWorks swApp = null; 



		private void button1_Click(object sender, EventArgs e)

		{

			IModelDoc2 swModel = (IModelDoc2)swApp.IActiveDoc2;

			if (swModel == null)

				return;

			string strTitle = swModel.GetTitle(); // это просто первая попавшаяся функция

		   /// дальше на ваше усмотрение



		}

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

Спасибо за помощь. Все заработало.

Так в чем было дело, поделитесь.

Может кому-то другому начинающему пригодится данная инфо.

Иначе как-то невежливо получается: вопросы задаете, а как решение нашли - тишина.

А люди будут мучаться и опять теже вопросы задавать.

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

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

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

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

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

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

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

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

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

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

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




×
×
  • Создать...