1 574 сообщения в этой теме

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

Изменено пользователем streamdown
Изменено название темы.
4 пользователям понравилось это

Поделиться сообщением


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

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

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

Поделиться сообщением


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

Добрый день! как и с чего начать освоение 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>

Поделиться сообщением


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

Добрый день! как и с чего начать освоение 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-файла.

Поделиться сообщением


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

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

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

Поделиться сообщением


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

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

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

Поделиться сообщением


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

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

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

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

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

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

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

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

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

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

ИМХО

Поделиться сообщением


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

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

Поделиться сообщением


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

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

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

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

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

Поделиться сообщением


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

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

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

Поделиться сообщением


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

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

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

Поделиться сообщением


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

да и тем более ее (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-интерфейсе...

Поделиться сообщением


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

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

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

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

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

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

Поделиться сообщением


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

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

Поделиться сообщением


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

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

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

Поделиться сообщением


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

Всем привет, не могу понять разницу между 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 - запускает солид и сворачивает его.

Поделиться сообщением


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

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 - запускает солид и сворачивает его.

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

Поделиться сообщением


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

Так, к слову.

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

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

Поделиться сообщением


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

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

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

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

Поделиться сообщением


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

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

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

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

Поделиться сообщением


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

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

Спасибо.

Поделиться сообщением


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

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

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

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

Поделиться сообщением


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

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

Поделиться сообщением


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

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++.

Поделиться сообщением


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

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

Поделиться сообщением


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

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

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

Поделиться сообщением


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

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

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

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

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

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

Изменено пользователем kpx

Поделиться сообщением


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

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

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

Поделиться сообщением


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

К вопросу об освоении 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.

Поделиться сообщением


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

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

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

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

  • реклама

  • Реклама

  • Ближайшие события

    Предстоящих событий не найдено
  • Дни рождения сегодня

    1. Dypeabehece
      Dypeabehece
      (31 год)
    2. Evgenii88
      Evgenii88
      (29 лет)
    3. hawk_07770
      hawk_07770
      (31 год)
    4. hellena
      hellena
      (29 лет)
    5. JohnFill
      JohnFill
      (36 лет)
    Просмотреть все