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

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

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




  • Сообщения

    • arsenev
      Первый свободный номер инструмента   int list $toolnumblist = extract(folder('TOOL'), 'Tool.Number.Value') int $newToolNumb = 1 while member( $toolnumblist, $newToolNumb) {     $newToolNumb = $newToolNumb + 1 } Message Info 'Первый свободный номер инструмента - ' + $newToolNumb     Инструменты с повторяющимися номерами   int list $toolnumbers = extract(folder('tool'),'Number.Value') int $i = remove_duplicates($toolnumbers) string $op = '' foreach $n in $toolnumbers {     string list $names = extract(filter(folder('tool'),'this.Number.Value == "' + $n + '"'),'Name')     if size($names) > 1 {         $op = $op + 'Инструменты с повторяющимся номером T ' + $n + CRLF         foreach $name in $names {             $op = $op + $name + CRLF         }         $op = $op + CRLF     } } message info $op
    • PETR_1
      Можно переназначить правую и центральную (колесо) кнопки с помощью бесплатной программы X-Mouse Button Control (есть портабельная версия). Это переназначение будет работать только для компаса.
    • Kelny
      Может изменяемый вами размер импортирован из модели?  Обычно переносилось удержанием левой кнопки мыши, а если сделать двойной клик, то нужно потом выбрать новый объект уже без удержания кнопок мыши.
    • Kelny
      Отключить галочки режима большой сборки. Инструменты-Параметры...-Настройки пользователя-Сборки
    • brigval
      Если не прописали, значит считается, что производственный процесс их изготовления гарантирует качество, достаточное для присвоения литеры. Можно и так посмотреть.   Между прочим, пред вынесением Решения о присвоении литеры проходит "испытания" весь комплект  КД. Разрешат вам не предъявлять часть КД на проверку? Спросите у НК.   И все-таки, если есть Решение о присвоении литеры, надо прочитать, что там сказано. Как сформулировано. Возможно, это снимет все вопросы.
    • cepr
      Есть в Компасе возможность построения зубчатого колеса с углом профиля не 20гр., а 25гр?
    • shishov32
      В ТУ не прописали про испытания КМЧ и упаковки, отсюда все пошло. 
    • clavr
      подскажите: как в солиде 2024 в чертеже перепривязать точку размера к другому элементу? раньше достаточно было выделить размер, точку привязке и удерживая ПКМ перенести к другому элементу. теперь это не работает   По справке сделать не получается( просто быстрые привязке не подсвечиваются https://help.solidworks.com/2024/russian/SolidWorks/sldworks/c_moving_dimension_leadersOH.htm  
    • BSV1
      КМЧ бывают разные. Если КМЧ состоит из одних стандартных болтов, например, то может испытания и не требуются. Если же КМЧ состоит из изделий собственной разработки, то почему их не надо испытывать? Что касается упаковки, то есть ГОСты на тару. Например: 80071.pdf ГОСТ Р 53775-2010 Упаковка. Испытание на штабелирование при статической нагрузке ГОСТ 18211-2018. Упаковка транспортная. Метод испытания на сжатие  gost-9142-2014.pdf  Есть еще испытания изделий в упаковке, которые подразумевают, в том числе, и испытание самой упаковки. Проверяться изделия в упаковке могут на транспортную тряску, удары, падения, климат. При этом упаковка должна обеспечить сохранность изделия. Есть еще вопросы консервации. Как же без испытаний?   Странный у вас нормоконтролер.    
    • brigval
      Ответом на ваш вопрос будет противоречит. А вообще, надо читать Решение о присвоении литеры. Интересно, что там указано?   Интересный вопрос. Если есть указания испытывать экпл. документацию в форме книг, то надо испытывать Я, правда, с этим не сталкивался.
×
×
  • Создать...