Anka

Solidworks API

1,993 posts in this topic

ID: 1   Posted (edited)

Добрый день! как и с чего начать освоение solidworks api? я пишу на C#. смотрела примеры api, они написаны на VB и C++. есть ли примеры создания программ на C#? у меня вообще нет никаких идей как например программно нарисовать линию или др.примитив в солиде.. посредством api можно при запуске программы запускать солид ну а потом то что с ним делать???? :sad:

Edited by streamdown
Изменено название темы.
5 people like this

Share this post


Link to post
Share on other sites


как и с чего начать освоение solidworks api?

Со справки: ?->Разделы справки по Solidworks и API подключаемых модулей

есть ли примеры создания программ на C#?

<noindex>http://www.solidworks.com/sw/support/learn...cad-pdm-fea.htm</noindex>

смотрела примеры api, они написаны на VB и C++.

VB при определённом базовом понимании написанного элементарно переписывается в C#, С++ также не очень сложен для перевода на C#... Принципы написания программ близки...

у меня вообще нет никаких идей как например программно нарисовать линию или др.примитив в солиде..

Инструменты->Макрос->Начать запись

SW2009, кажется, может сразу записывать в C#:

post-6363-1236922801_thumb.png

посредством api можно при запуске программы запускать солид ну а потом то что с ним делать????

Делать действия с помощью программы, которые вы хотели.

Share this post


Link to post
Share on other sites

Добрый день! как и с чего начать освоение solidworks api? я пишу на C#. смотрела примеры api, они написаны на VB и C++. есть ли примеры создания программ на C#? у меня вообще нет никаких идей как например программно нарисовать линию или др.примитив в солиде.. посредством api можно при запуске программы запускать солид ну а потом то что с ним делать???? :sad:

Добрый день!

Вот здесь посомотрите :

<noindex>http://www.solidworks.com/sw/support/APIDownloads.html</noindex>

<noindex>http://www.solidworkstips.com/</noindex>

<noindex>http://sw.fcsuper.com/index.php</noindex>

Share this post


Link to post
Share on other sites

Добрый день! как и с чего начать освоение solidworks api? я пишу на C#. смотрела примеры api, они написаны на VB и C++. есть ли примеры создания программ на C#? у меня вообще нет никаких идей как например программно нарисовать линию или др.примитив в солиде.. посредством api можно при запуске программы запускать солид ну а потом то что с ним делать????

К предыдущим постам добавлю.

В справке по API SW2009 увеличилось кол-во примеров для C# по сравнению с предыдущими версиями, и синтаксис функций в стиле C#. Примеры, правда, в большинстве для exe-файлов. В пердыдущих версиях функции C# наиболее близки к C++. Также функции можно узнать в окне Object Browse, при подключении к проекту библиотек SW (SolidWorks.Interop.sldworks.dll, SolidWorks.Interop.swcommands.dll, SolidWorks.Interop.swcommands.dll, SolidWorks.Interop.swcommands.dll b др.)

В состав дистрибутива SW входит также и API SDK. При его установке в среде програмирования появляется мастер создания dll для SW на C#. Изучите его код, там много полезного. Еще маленький совет из личного опыта. Пишите dll, скорость выполнения кода на порядок выше чем у exe-файла.

Share this post


Link to post
Share on other sites

как и с чего начать освоение solidworks api

...с английского языка, это в идеале.

Share this post


Link to post
Share on other sites

Спасибо за советы! Уже начала изучение хэлпа для апи.

А что значит писать DLL а не EXE? куда потом эту DLL подцеплять?

Share this post


Link to post
Share on other sites

Спасибо за советы! Уже начала изучение хэлпа для апи.

А что значит писать DLL а не EXE? куда потом эту DLL подцеплять?

Также как и любое другое дополнение(ТулБокс и др.): через Add-ins (Настройки/дополнения)...

Задавайте вопросы. Есть тут на форуме такие специалисты - ответят...

Я вот, пишу на VB с созданием EXE-шников.

И Вам посоветовал бы для начала создать рабочее приложение для SW (через EXE-файл). А потом уж можно будет и разбираться с механизмами DLL и их подключением к SW.

Зачем, спрашивается, навешивать на себя сразу две проблемы?

Вот видите: Вы уже спрашиваете НЕ о приложении для SW, а о механизме ее подключения...

Это отвлекает...

ИМХО

Share this post


Link to post
Share on other sites

мне то надо создать win-приложение, поэтому это по-любому будет exe-шник. решила поставить 2009 солид, там очень хороший help для api. сижу разбираюсь.

Share this post


Link to post
Share on other sites

мне то надо создать win-приложение, поэтому это по-любому будет exe-шник. решила поставить 2009 солид, там очень хороший help для api. сижу разбираюсь.

Что Вы имеете ввиду под понятием "win-приложение"? Это абсолютно не зависимое Windows-приложение?

Которое будет работать даже без SW?

Если так, то ответ "Да" - exe-шник.

Share this post


Link to post
Share on other sites

задача состоит в том, что на входе есть набор деталек, а на выходе необходимо программно создать на основе этих деталек по выбору пользователя различные сборки (т.е. есть схема платы в 2D а мне надо на основе библиотеки деталек создать 3D представление). есть программка Circuit Works, так вот мне надо сделать что-то подобное

кстати забыла написать что естественно что моя программка будет вызывать солид и создавать там сборку по какому-то определенному алгоритму. вот только как поступить- создать шаблон пустой сборки или как-то программно создавать новый документ, новую сборку и потом подцеплять к ней детальки?

Share this post


Link to post
Share on other sites

c горем пополам поставила на виртуальную машину winXP и солид 2009. мне он так нравится! там макросы можно писать, выбирая один из языков программирования! разобралась чем exe от dll отличается. буду exe писать. спасибо за советы! Вы мне оч помогли)) наставили на истинный путь))

просто у этого Circuit Works немного другие задачи чем поставлены передо мной. да и тем более ее (Circuit Works) наверняка надо официально покупать, платить денежку за поддержку и т.п. а тут я напишу когда-нибудь)) свою программку и если понадобиться решить еще какие-нибудь задачи, то просто доработаю ее. вообще оч интересно работать с cad-системами!

Share this post


Link to post
Share on other sites

да и тем более ее (Circuit Works) наверняка надо официально покупать, платить денежку за поддержку и т.п.

Ну так как он входит в SolidWorks Premium 2009 придётся его покупать (SolidworksProductMatrix: <noindex>http://www.solidworks.com/sw/products/mech...ware-matrix.htm</noindex> ) поддержка на усмотрение покупателя, как платное дополнение и актуальные обновления до самых последних версий...

c горем пополам поставила на виртуальную машину winXP и солид 2009. мне он так нравится! там макросы можно писать, выбирая один из языков программирования! разобралась чем exe от dll отличается. буду exe писать.

Учтите, что программа написанная для одной версии может не работать в другой, по причине изменения в API-интерфейсе...

Share this post


Link to post
Share on other sites

Такой, извините за грубость, бред слышу не впервые. Зачем создавать программу, которая уже существует и, начиная с какого-то сервис-пака SW 2008 входит в дистрибутив?

Если есть желание, а в программе что-то не устраивает и есть для этого возможности, то почему бы и нет? Бредом это я бы не стал называть...

Учтите, что программа написанная для одной версии может не работать в другой, по причине изменения в API-интерфейсе...

Да, случается такое, хотя и редко.

З.Ы. Автору топика желаю осуществить задуманное.

Share this post


Link to post
Share on other sites

Всем привет, не могу понять разницу между 2-мя ф-ями из api sw: UserControl Property (ISldWorks) и UserControlBackground Property (ISldWorks).

Share this post


Link to post
Share on other sites

Всем привет, не могу понять разницу между 2-мя ф-ями из api sw: UserControl Property (ISldWorks) и UserControlBackground Property (ISldWorks).

Судя по слову Background это возможно относится к рабочему фону Солида, хотя конечно надо смотреть справку:)

Share this post


Link to post
Share on other sites

Всем привет, не могу понять разницу между 2-мя ф-ями из api sw: UserControl Property (ISldWorks) и UserControlBackground Property (ISldWorks).

Setting this property to true causes the SolidWorks application to run in the foreground and be visible. Use ISldWorks::UserControlBackground if you want to run the SolidWorks application in the background and not be visible.

UserControl - запускает солид и делает его активным.

UserControlBackground - запускает солид и сворачивает его.

Share this post


Link to post
Share on other sites

Setting this property to true causes the SolidWorks application to run in the foreground and be visible. Use ISldWorks::UserControlBackground if you want to run the SolidWorks application in the background and not be visible.

UserControl - запускает солид и делает его активным.

UserControlBackground - запускает солид и сворачивает его.

ну почти с фоном угадал, в фоновом режиме правда только:)

Share this post


Link to post
Share on other sites

Так, к слову.

Q: Почему у меня макросы на 64 разрядной системе работают намного медленней чем на 32 разрядной?

A: Потомучто VB и VBA не поддерживают 64 битные системы, поэтому visual basic переходит в "режим совместимости". Выход: использовать VB.NET или С (++)

Share this post


Link to post
Share on other sites

Пишите dll, скорость выполнения кода на порядок выше чем у exe-файла.

Это имеет отношение к работе программы с SW? То есть, взаимодействие с SW с помощью DLL бысрее или нет?

Или это просто общий для всех программ момент?

Share this post


Link to post
Share on other sites

Это имеет отношение к работе программы с SW? То есть, взаимодействие с SW с помощью DLL бысрее или нет?

Или это просто общий для всех программ момент?

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

Share this post


Link to post
Share on other sites

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

Спасибо.

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

У меня установлена 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 перестал запускаться вообще!

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

У меня установлена 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

Share this post


Link to post
Share on other sites

Огромное спасибо всем ответившим! :lighten:

Share this post


Link to post
Share on other sites

ID: 30   Posted (edited)

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);

}

Edited by kpx

Share this post


Link to post
Share on other sites

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

У Вас оно Plane1.

...

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

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

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

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

Share this post


Link to post
Share on other sites

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

У Вас оно Plane1.

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

Share this post


Link to post
Share on other sites

Спасибо большое, разобралась

Share this post


Link to post
Share on other sites

Спасибо большое, разобралась

Так что Вы "сотворили" : dll или exe? Через SDK?

Share this post


Link to post
Share on other sites

ID: 35   Posted (edited)

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

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

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

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

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

Edited by kpx

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

К вопросу об освоении 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'ного не делает. Можете показать пример который хоть что-то делает?

Share this post


Link to post
Share on other sites

Программа собирается и работает, но ничего 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;

		}

	}

}

Share this post


Link to post
Share on other sites

using SolidWorks.Interop.sldworks;

using SolidWorks.Interop.swconst;

Вот эти две строчки вызвали проблемы. Надо добавить ссылки на какие-то компоненты?

Share this post


Link to post
Share on other sites

using SolidWorks.Interop.sldworks;

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.



  • Сообщения

    • chatjokey
      Объективно - стих ничего такой. 
    • karachun
      Трение в подшипниках уменьшит КПД -> увеличит мощность, которую надо отобрать от потока. Если скорость задана, то увеличиться необходимый момент на валу. Т.е. не надо ничего добавлять в расчет, просто надо плясять от немного большей потребной мощности, как-то так. Момент инерции будет влиять на скорость раскрутки турбины, но это на переходных режимах.
    • lexx174
      Вы с такими текстами если их та же Ария возьмется исполнять - на гонорарах быстрее заработаете чем со своим кибер-технологом.  
    • TBC
      Э-э! CopyRihgt (c) Турта В.Г. Я сам бывший рок музыкант. На соло гитаре играл в молодости виртуозно. Вот запущу кибера, куплю опять гитары, соберу банду на острове с кем раньше играл и мы тряхнем стариной. Я им обещал.  
    • ДОБРЯК
      Зачем такое большое количество минут?  Главное же понимание. )
    • AlexD99
      Ок. Прям в списке отмечайте что нужно и на почту отсылайте или на вотсап. И все как и в прошлый раз.
    • lexx174
      Это же просто рок!      
    • Борман
      Два оборота маленькой стрелки.
    • Blurp
      ХЗ, как тут смотреть. По моим прикидками случай True для первого оборота секундной стрелки - 2 раза, для каждого последующего оборота - 3. И для последнего - 2. Но последний случай True - вроде как начало следующих 12-ти часов. За 12 часов 720 оборотов секундной. Вроде даже 2+718*3+1 = 2157. Если для 2*12, то уже чёта голова закипает. Ну его нафиг!
    • In_man
      Это может создавать некоторые проблемы при модернизации старых пультов оператора, где блок питания хоть и выдает 12В, но основной потребитель у него должен быть 5В, коим раньше был старый одноплатный компьютер. Я бы даже сказал LRS-35-12. Для Маяка-624Е хватает, для 623Е - возможны варианты (запитка индуктосинов и т.п.).