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

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

Имелось ввиду работа программы с 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 пользователей

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




  • Сообщения

    • MagicNight
      Да дело не в бедности, ищу оптимальный ноут, пока не могу найти.
    • Bot
      АСКОН объявляет о старте открытого бета-тестирования новой версии КОМПАС-3D и приложений. Коммерческая версия КОМПАС-3D v23 выйдет летом 2024 года, но уже сейчас испытать новинки может любой желающий. Бета-тестирование — это проверка новой функциональности в «полевых» условиях, когда пользователи знакомятся с нововведениями на собственных проектах и сценариях работы, а также проверяют совместимость со своим программно-аппаратным обеспечением. Новая версия создавалась в соответствии с дорожной картой АСКОН для задач проектирования изделий высокотехнологичных отраслей и стала еще более функциональной и производительной. При разработке учитывались предложения пользователей по темам трехмерного моделирования, подготовки чертежей и спецификаций, приложений для машиностроения, приборостроения и строительства. Бета-версия КОМПАС-3D открыта для всех. Дистрибутив предоставляется бесплатно на время проведения тестирования. *** Период проведения бета-тестирования: с 6 [...] View the full article
    • fenics555
      Уважаемые Дамы и Господа!  Есть библиотечные изделия, которые почему-то очень доооооолго грузятся в сборках. Я хочу попросить Вас потестить их и сказать в чем причина, ибо совсем невозможно работать. gost18829-73.prt.1 pin_split.prt.1 Как это всё можно ускорить?
    • gudstartup
      а вы хоть станок проверяли по программе на изделии на точность прежде чем товарищей этих выгнать? если нет то грешите на самих себя! система в наших краях еще не распространенная поэтому и тем тут нет надо в поднебесную писать
    • AlexArt
      Ну допустим, ты и на другом ресурсе это опубликовал. А не коммуниздил. Но вот продвигать воровство от государства, ворующее из Вики, это верх мерзости.
    • maxx2000
      Ах, да. Фильтры выбора добавили. Теперь можно выбрать только то что видно на первом плане, а не вместе с тем что с обратной стороны детали. В общем надо обновляться. Как раз работёнка на прессформу нарисовалась 
    • maxx2000
      Причина того - Кроилово. Кроилово всегда приводит к попадалову. Месяц простоял сколько мильонов деревянных потеряли? Вопрос риторический. И ещё будет стоять. Как памятник человеческой глупости и жадности.
    • AlexKaz
      "9 июля 1968 года на мышах был проведен самый знаменитый эксперимент американского ученого-этолога Джона Кэлхуна «Вселенная-25». Суть опыта заключалась в создании идеальных условий, где мыши могли бы жить и размножаться, не ведая никаких забот, вдали от хищников и в отсутствие эпидемий и заболеваний. Для этих целей ученый построил специальный загон, куда были помещены четыре пары белых мышей (самцов и самок). В распоряжении мышей всегда была чистая вода и еда в изобилии, специальные гнезда, где можно обустроить себе жилище ― гнезд в загоне хватало для проживания нескольких тысяч мышей. Температура в загоне в среднем составляла около 20 ℃ и была комфортной для мышей. Животные не подвергались никаким влияниям извне и жили в идеальных условиях в свое удовольствие. А дальше началось самое интересное. На первом этапе эксперимента мыши хорошо размножались, вели активный образ жизни, охотно играли. На следующей фазе эксперимента мыши стали есть меньше, перестали наедаться до отвала. На третьей фазе эксперимента, когда в загоне были уже сотни мышей, произошло распределение социальных ролей, стала ярко выраженной иерархия, клановость. Появились так называемые отверженные ― молодые особи, которых другие, взрослые мыши сгоняли в центр загона, не давали им вести нормальный образ жизни, причиняли физический вред. В природе такое, наверное, было бы невозможно, ведь эти мыши-агрессоры просто не дожили бы до старости: их бы съели хищники. Но в загоне Кэлхуна хищников не было, и взрослые мыши начали попросту издеваться над молодняком. Образовались две большие группировки: самцы-одиночки и самки-одиночки. При этом самки-одиночки отказывались спариваться <с менее статусными многочисленными молодыми самцами и с оставшимися старыми статусными> и отвергали ухаживания самцов. У мышей стал проявляться тотальный индивидуализм, мыши не стремились создать семью. На последней, четвертой стадии мышиная популяция стала сокращаться. Появились самцы, которых сам Кэлхун назвал «красивыми» (англ. beautiful ones), из-за отсутствия ран и рубцов. <В оригинале: They never engaged in sexual approaches toward females, and they never engaged in fighting, and so they had no wound or scar tissue. Thus their pelage remained in excellent condition. - Дословный перевод: Они никогда не прибегали к сексуальным подходам к самкам, и они никогда не участвовали в боях, и поэтому у них не было ран или рубцовой ткани. Таким образом, их шерсть сохранилась в отличном состоянии.> Эти мыши не вступали в борьбу за самок и территорию, не проявляли активности к размножению и только питались, спали и чистили шёрстку. У мышей стали проявляться различные формы девиантного поведения, вспышки агрессии. Самки стали проявлять агрессию, защищать себя сами, стали умерщвлять своих детенышей, а затем окончательно отказались размножаться. На пике эксперимента в загоне одновременно проживало чуть более двух тыс. мышей. Еды и гнезд было достаточно для дальнейшего роста популяции, но через четыре года после начала эксперимента Кэлхун остановил свой опыт, потому что в загоне осталось чуть более сотни мышей, и все они уже вышли из репродуктивного возраста. По итогам эксперимента Кэлхун пришел к выводу, что достижение определенной плотности населения и заполнение социальных ролей в популяции приводит к распаду общества" https://physicsoflife.pl/dict/pic/calhoun/calhoun.. https://scientificrussia.ru/articles/utopiya-dlya-mys.. https://ru.wikipedia.org/wiki/Кэлхун,_Джон_(этолог)
    • gudstartup
      @Koels вот в чем дело пока ds609 это предупреждение поэтому F может и не появится если sv601 это значит ошибка. возможно при нагреве радиатора серво определяет это как предупреждение или ваш вентилятор крутиться медленнее чем оригинальный и серва думает что он встал хотяпри этом обычно на экране в строке состояния FAN.мигает больше у меня вариантов нет....  
    • ДОБРЯК
      Решите любым алгоритмом. Тогда будет конструктивный разговор. :=)
×
×
  • Создать...