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

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

Имелось ввиду работа программы с SW. Взаимодействие с SW намного быстрее у dll ( точнее сказать add-ins к SW в виде dll) Все это из личного опыта.

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


Здравствуйте!

Помогите пожалуйста новичку!

У меня установлена SolidWorks 2010 и Visual Studio 2010.

Установила SW API SDK.

Я программирую на С++.

Я не понимаю с чего начать изучать API!

Взяла начальный код из справки.

Создаю консольное приложение и вот на этом

НRESULT hres = swApp.CoCreateInstance(__uuidof(SldWorks), NULL, CLSCTX_LOCAL_SERVER);

прога останавливается и дальше не идёт.

Помогите плиз! Если кто-то в этом разбирается и может всё мне объяснить, договоримся!

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

Здравствуйте!

Помогите пожалуйста новичку!

У меня установлена SolidWorks 2010 и Visual Studio 2010.

Установила SW API SDK.

Я программирую на С++.

Я не понимаю с чего начать изучать API!

Взяла начальный код из справки.

Создаю консольное приложение и вот на этом

НRESULT hres = swApp.CoCreateInstance(__uuidof(SldWorks), NULL, CLSCTX_LOCAL_SERVER);

прога останавливается и дальше не идёт.

Помогите плиз! Если кто-то в этом разбирается и может всё мне объяснить, договоримся!

Запись макроса пробовали? И разобраться что там к чему.

Желательно включить режим "Запись макроса", провести какое-нибудь элементарное действие, остановить запись, SW запросит имя(и расшиерние). Вот потом можно будет и разбирать что там понаписано...

PS а SW-то запускается? А то я недавно установил Visual Studio 2010 и после этого SW перестал запускаться вообще!

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

А макрос можно разве записывать на С++? Я не знаю ни С# ни VBA!

Да, у меня была проблемка после того как я установила VS2010, мне пришлось переустанавливать SW.

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

И ещё вопрос - у меня исходные данные в виде облака точек NURBS. И мне нужно по ним построить твердую поверхность и ещё там кое-что достроить. В каком виде лучше это делать? В виде макроса, .dll, или Standalone Application (.exe file)?

Посоветуйте плиз!!

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

А макрос можно разве записывать на С++? Я не знаю ни С# ни VBA!

Да, у меня была проблемка после того как я установила VS2010, мне пришлось переустанавливать SW.

Тут я видимо перегнул палку... пардон...

Тогда надо изучать примеры из API HELP :

"XXX:\Program Files\SolidWorks\api\sldworksapi.chm" - это справка от SW2008 - она полегче для понимания и там есть ссылка на кучу всяких примеров, в т.ч. и на С++.

В справке по API к SW2010 я такой ссылки не нашел.

Кинуть клич на форуме - "Даешь примеры на С++" ! :-)

Искать другие форумы.

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

И ещё вопрос - у меня исходные данные в виде облака точек NURBS. И мне нужно по ним построить твердую поверхность и ещё там кое-что

достроить. В каком виде лучше это делать? В виде макроса, .dll, или Standalone Application (.exe file)?

Посоветуйте плиз!!

Насколько я знаю, кто пишет на С++ - пишет `DLL`.

Вот ЕХЕ или DLL - тут надо решить вопрос быстродействия. В некоторых случаях ЕХЕ быстрее, а в некоторых - наоборот.

Еще DLL легче подключать к SW - это как нормальный плагин получается.

Про макросы и С++ - не знаю, думаю такое сочетание надо просто забыть...

Правда сам я пишу на VB в виде EXE и ничего, работает. Правда иногда/редко быстродействие подводит...

Еще плюсик в пользу ЕХЕ : его запустил с утра, надо - развернул воспользовалься и свернул. А вот DLL - вот вылетит у Вас SW, запустите по-новой, опять этот DLL цеплять, а там все данные пропали...

А ЕХЕ-шник у меня висит и в случае вылета SW и данные оттуда никуда не пропадают.

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

Здравствуйте!

Помогите пожалуйста новичку!

У меня установлена SolidWorks 2010 и Visual Studio 2010.

Установила SW API SDK.

Я программирую на С++.

Я не понимаю с чего начать изучать API!

Взяла начальный код из справки.

Создаю консольное приложение и вот на этом

НRESULT hres = swApp.CoCreateInstance(__uuidof(SldWorks), NULL, CLSCTX_LOCAL_SERVER);

прога останавливается и дальше не идёт.

Помогите плиз! Если кто-то в этом разбирается и может всё мне объяснить, договоримся!

К, сожалению, у меня нет VS2010, но, думаю, нижележащий пример будет там работать. Это консольное приложение, которое строит цилиндр. Для упрощения многие проверки убраны. Создано в VS2003. SW2010SP4. WinXPx32 Sp3

И ещё вопрос - у меня исходные данные в виде облака точек NURBS. И мне нужно по ним построить твердую поверхность и ещё там кое-что достроить. В каком виде лучше это делать? В виде макроса, .dll, или Standalone Application (.exe file)?

Посоветуйте плиз!!

Как вам удобнее. Могу только сказать, из личного опыта, что реализация в виде *.dll, созданной при помощи мастера SW API SDK быстрее на порядок и больше, чем *.exe

kpx1.rar

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

Shvg, я посмотрела пример, у меня почему-то эскиз не создаётся, если он не существует! Как узнать это имя плоскости?

У Вас оно Plane1.

ISketch *swSketch = NULL;

hres = swSketchMgr->get_ActiveSketch(&swSketch); // эскиз

if(swSketch == NULL)// если эскиз не активный, то создаем активный эскиз на Plane1

{

CComBSTR strPlane = L"Plane1"; // это имя плоскости

CComBSTR typeObj = L"PLANE";

hres = swModelExt->SelectByID2(strPlane, typeObj, 0.0, 0.0, 0.0, VARIANT_FALSE, 0, NULL, swSelectOptionDefault, &bres);

if(bres == VARIANT_FALSE)

{

message = L"Плоскость не выбрана!";

swApp->SendMsgToUser2(message, swMbInformation, swMbOk, &lres);

::CoUninitialize();

return 0;

}

hres = swSketchMgr->InsertSketch(VARIANT_TRUE);

}

Изменено пользователем kpx
Ссылка на сообщение
Поделиться на других сайтах

Shvg, я посмотрела пример, у меня почему-то эскиз не создаётся, если он не существует! Как узнать это имя плоскости?

У Вас оно Plane1.

...

Тут все зависит от языка на котором вы работаете в SW.

Для англ может быть `Plane1` или `Front Plane`, на русском `Спереди`

Создайте просто вручную деталь и посмотрите как у вас называются базовые плоскости. Одно из имен базовых плоскостей и надо вписать в программу. В ней и дожен создаваться эскиз.

Или иначе перед созданием цилиндра надо писать код по созданию плоскости с именем `Plane1`. Но если таковая уже есть как базовая, то ИМХО будет ошибка.

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

Shvg, я посмотрела пример, у меня почему-то эскиз не создаётся, если он не существует! Как узнать это имя плоскости?

У Вас оно Plane1.

Plane1 - это одна из основных трех плоскостей в дереве проектирования. Я работаю в аглицкой версии. У вас может быть другая. Да и пример был написан только для примера (простите за тофтологию) работы API на C++.
Ссылка на сообщение
Поделиться на других сайтах

exe. с dll сложнее разбираться по-моему!

Ещё вопрос: а как сделать вытягивание фигуры по траектории? что за функция и какие параметры?

И ещё заодно про вращение фигуры расскажите пожалуйста!

И про облака точек, как эти точки найти программно, их координаты и как сделать из них твердую поверхность?

У меня исходный файл в формате stl, как мне пройтись по всем точкам?

Изменено пользователем kpx
Ссылка на сообщение
Поделиться на других сайтах

Мне нужен человек, умеющий писать на С++ скрипты для SolidWorks'а!

Мне нужно пару консультаций онлайн либо в реале в Москве!! Очень срочно! Плачу много денег!)

Ссылка на сообщение
Поделиться на других сайтах
  • 2 месяца спустя...

К вопросу об освоении Solidworks API. Возможно ли создать виндовое (Windows) приложение, которое будет, например, открывать файл сборки SLDASM и добавлять в него деталь из SLDPRT, сохранять результат по указанному пути, при этом не запуская графический интерфейс пользователя Solidworks? Можно ли создать приложение, которое будет делать то же самое с запуском Solidworks? В смысле запускаем exe'шник, открывается Solidworks, происходит какое-то колдунство, Solidworks закрывается, сборка изменена. Главное, чтобы эти действия происходили без участия пользователя, в том смысле, что пользователю не нужно самому запускать Solidworks, а в нём какой-то макрос.

Может ли кто-нибудь предоставить пример кода подобного приложения? Всё что мне удалось пока наделать после изучения <noindex>документации</noindex> это недо-Helloworld на C#.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;



namespace ConsoleApplication1

{

	class Program

	{

		static int Main(string[] args)

		{

			Console.WriteLine("Hello Solidwoks. ");



			// Ниже должна происходить Solidworks'ная магия. 

			SldWorks.SldWorks swAppl;		// Переменная... 

			swApp = new SldWorks.SldWorks(); // В которой мы храним наш экземпляр чего-то solidworks'ного

			swApp.ExitApp();				 // Который ничего не делает. 

			swApp = null;



			// Keep the console window open in debug mode.

			Console.WriteLine("Press any key to exit.");

			Console.ReadKey();



			// Everything is OK. 

			return 0;

		}

	}

}
Программа собирается и работает, но ничего Solidworks'ного не делает. Можете показать пример который хоть что-то делает?
Ссылка на сообщение
Поделиться на других сайтах

Программа собирается и работает, но ничего Solidworks'ного не делает. Можете показать пример который хоть что-то делает?

Например вот это:

using System;

using System.Collections.Generic;

using System.Text;

using SolidWorks.Interop.sldworks;

using SolidWorks.Interop.swconst;



namespace SW_1

{

	class Program

	{

		static void Main(string[] args)

		{

			SldWorks swApp = new SldWorks(); 

			if (swApp == null)

				return;

			swApp.Visible = true; // true - SW видим, false - невидим

			swApp.SendMsgToUser2("Привет!", (int)swMessageBoxIcon_e.swMbInformation, (int)swMessageBoxBtn_e.swMbOk);

			swApp.ExitApp();

			swApp = null;

		}

	}

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

using SolidWorks.Interop.sldworks;

using SolidWorks.Interop.swconst;

Вот эти две строчки вызвали проблемы. Надо добавить ссылки на какие-то компоненты?
Ссылка на сообщение
Поделиться на других сайтах

using SolidWorks.Interop.sldworks;

using SolidWorks.Interop.swconst;
Вот эти две строчки вызвали проблемы. Надо добавить ссылки на какие-то компоненты?
Да. На SolidWorks.Interop.sldworks.dll и SolidWorks.Interop.swconst.dll. Я так обычно делаю в C#. Но можно и как в вашем примере, ссылки на sldworks.tlb и swconst.tlb.
Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Viktor2004
      Это я не пробовал. Утверждать не буду. При случае проверю Но думаю если его правильно записать, все должно запуститься. Софт ведь одинаковый Чем это отличается от замены платы FROM/SRAM? Ничем. Там только OPRMINF и отличается. Ну может еще ID контроллера GBDriver
    • gudstartup
      и не только из за того что вы думаете. чужой oprm просто не может прочитаться на другом чпу
    • paull3
      Принято, спасибо! буду шевелить платы
    • Nastyrnuy
      Теперь понятно! Вы шли не в том направлении, и помощеиков не туда завели!!! у Вас Проц и комп оператора тоже 3 платы( но совсем другие (еще Мультибас 1 чисто Интеловский) SBC08, 80/10 KCB 01/04, но диск у Вас электронный( который состоит из 12 или 14 ЕПРОМОВ и при всем желании и старании с дискет Вы ничего не сможете туда загрузить! Скорее всего  у Вас просто неконтакт, в пред постах там тоже на эту же тему многго что написано. Просто на SBC 08 херов туча наездников( и эл диск, и контроллер флоповода, и мат сопроцессор..!
    • paull3
      да, стойка CD, чуть позже прикреплю фото, ... получилось добавить , вот чт он показывает при загрузке и дальше не идёт...
    • Nastyrnuy
      Где то тут путаница идет... не совпадние (жесткий диск (он жесткий или элетронный диск?)), есл жесткий диск то флоппик  точно 1.44 и эмулятор можно на 1ю44, Но если вы используете эмулятор на 720 то это как правило серия станка не CF а CD....и.т.д поэтому фотки давай и станка серию и тип, и плат, и ошибку на экране где Биос кажет и флорри и диск, а то мы все тут будем по разному понимать..!
    • Viktor2004
      Вы же лучше меня знаете что запрсто записать на машину не только чужой, но и свой OPRMINF не получится
    • gudstartup
      полная чушь если ид меняется ошибка 5523 гарантирована иначе чужо ой oprminf запросто можно было бы записать на любую машину
    • paull3
      Всем добрый день! докладываю - 1) батарейка живая и после отключения от сети на сутки показала 3,63в, 2) записал файлы из архива на юсб флешку размеролм 720кБ - вставил в эмулятор, затем включил станок- станок никак не отреагировал, флешка вроде как считалась( индикация светодиодом на ней) 3) сделал загрузочную дискету дос, удалил файлы те что там записались и записал из архива - вставил в дисковод, включил станок- реакции не последовало, ...индикации и характерных звуков считывания не было, возможно неисправен дисковод, хотя когда переключал его на эмулятор он был исправен....   Добрый день, посмотрю, напишу  
    • Nastyrnuy
      Не, загрузочная не помешает! Анатолий правильно говорит, у станков серии CF FCки разные могутьбыть! И причем это даже не напрямую от серии CF Зависит, а от конфиги трех плат которые составляют комп оператора. так Паюль фоткай морды этих плат тоже( они там могут быть из 3 плат самая правая PEC(o4/05/07) или 1(все в одном AMS-75(уже проц Пень 75)! )! Но, по любому станок уже в годах и винты не вечные, так что FC может и не смочь помочь с запуском станка(если винт сыпется..). А кстати JP soft у Вас запускается , или на отдельном компе проги рабочие пишете!!
×
×
  • Создать...