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

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

В примере написано как продлить прямую до другой прямой, это у меня получилось. Но поскольку сплайн красного цвета, я его не могу продлить, к сожалению.

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


29 минут назад, Ludmila52 сказал:

Но поскольку сплайн красного цвета, я его не могу продлить, к сожалению.

Сплайн или линия становятся красными, когда имеются кофликты в построении или в детали эскизы длиннее 500 метров.

Несомненно надо устранить причины приводящие сплайн в состояние красного цвета.

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

Какие конфликты? у меня все правильно вычисляется, многоугольник контрольных точек отображается, кривая рисуется, возвращается значение S_OK. Если я больше начего не делую, то кривая синяя. Как только я просто нарисую прямую, например или точку, то и прямая, и кривая становятся красными.

Спасибо большое за ответ, у меня действительно были большие размеры!

Ссылка на сообщение
Поделиться на других сайтах
46 минут назад, Ludmila52 сказал:

Какие конфликты? у меня все правильно вычисляется, многоугольник контрольных точек отображается, кривая рисуется, возвращается значение S_OK. Если я больше начего не делую, то кривая синяя. Как только я просто нарисую прямую, например или точку, то и прямая, и кривая становятся красными.

Спасибо большое за ответ, у меня действительно были большие размеры!

такое бывает не только с примитивами в 500 м.

еще бывает при импорте кривых из корела например (логотип какой нибудь) только стоит подвинуть одну точку (если контур не замкнут) так все горизонтальные отрезки становятся красными

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

Доброе время суток! Еще один вопрос: почему у меня массив точек отображается с неправильными координатами, т.е. не все точки отображаются правильно. Сама программа в Visual Studio C++ считает их правильно, но solidworks отображает не всегда правильно.

		ISketchPoint *swSketchPoint;
		for (int i = 0; i <= N; i++) {
			hres = swSketchMgr->CreatePoint(xp[i], yp[i], 0.0, &swSketchPoint);
		}

 

Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Ludmila52 сказал:

Сама программа в Visual Studio C++ считает их правильно, но solidworks отображает не всегда правильно.

Поясните, что значит правильно и неправильно. Возможно при вставке некоторых точек срабатывают какие-то привязки?

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

Массив точек заполняется так:

        xp[0] = 6.117185161;  yp[0] = 996.6;
        xp[1] = 10.73374923;  yp[1] = 996.4;
        xp[2] = 15.625143;    yp[2] = 995.9;
        xp[3] = 25.34604652;  yp[3] = 993.8;
        xp[4] = 34.98447639;  yp[4] = 990.9;
        xp[5] = 49.57083445;  yp[5] = 983.9;
        for (int i = 0; i <= N; i++) {
            xp[i] = xp[i] / 1000.0;
            yp[i] = yp[i] / 1000.0;
        }

При отображении в solidworks некоторые координаты не совпадают с этими данными, которые просто забиты в программу. Переменные объявлены глобально:

double xp[100], yp[100];

Я вообще не вижу здесь никаких проблем, но solidworks неправильно выводит эти значения на экран.

Еще код:

		IModelDoc2 *swModel;

		hres = swApp->get_IActiveDoc2(&swModel);

		if (swModel == NULL)

			return 1;

		hres = swModel->get_SketchManager(&swSketchMgr);

 

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

Какие привязки могут сработать?

Да, возможно какие-то привязки работают. У первых трех точек solidworks выводит на экране координату игрек 996.60. Как избавиться от этих привязок?

Ссылка на сообщение
Поделиться на других сайтах
14 минут назад, Ludmila52 сказал:

Я вообще не вижу здесь никаких проблем, но solidworks неправильно выводит эти значения на экран.

Так что показывает программа после вставки? Какие значения на экране?

 

3 минуты назад, Ludmila52 сказал:

Какие привязки могут сработать?

Не уверен, что это действует при программной вставке, но есть Иструменты-Настройки для эскиза-Автоматические взаимосвязи

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

Во-первых, почему-то рисует не все шесть точек, а первые 5. 

Первая точка правильно.

Вторая точка икс правильно, угрик 996.60 вместо 996.4

Третья точка икс правильно, угрик 996.60 вместо 995.9

Четвертая точка правильно

Пятая точка правильно

Шестую точку не нарисовал вообще.

Иструменты-Настройки для эскиза-Автоматические взаимосвязи не помогают

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

Если я создание точек ставлю в коде перед созданием сплайна, то возвращает False и вообще ничего не строит, почему-то

Сам разобрался, в чем была проблема: надо было сначала вызвать

		swSketchMgr->Insert3DSketch(VARIANT_TRUE);

Тогда все работает. Но все равно спасибо за помощь.

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

Доброго времени суток.

Помогите прописать уравнения по условию.

Есть свойство модели.

От этого свойства нужно задать уравнение погашения операции.

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

Всем привет. Работаю на мебельном производстве. После просмотра уроков на YouTube от AngelSix по создаеию аддона и воспроизведения на практике уроков решил ковырять код оппубликованый им же на GitHub.

Хочу привязать значения кастомной панели для заполнения свойств cut folder и cut sub-folder. Цель манипуляций облегчить оформление чертежей. Т.е прописанные свойства будут вставляться на чертеже в виде заметки со ссылками на вид с выбранным элементом из детали. Т.е рабатаю с многотелом и при создании чертежа выбираю элемент из модели для создания чертежа. просьба не рекомендовать пересохранение все в отдельные детали и т.п. С чем столкнулся. Когда ковырял код либо получал .dll который крошит солид при назначении функций либо не проходил debug - где-то ошибку допускал при правках. Может кто подсказать логику или конкретно что надо сделать чтобы привязать хоть одну строчку для заполнения свойств cut-list folder?

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

Добрый день. Занимаюсь разработкой надстройки для solidworks, возникла проблема с методом AddMenuPopupItem2 (IFrame)

 

Входные параметры:

 

System.bool AddMenuPopupItem2( 
   System.int DocType,
   System.int SelectType,
   System.string Item,
   System.string CallbackFcnAndModule,
   System.string CustomNames,
   System.int Unused,
   System.string BitmapFileName
)

Проблема возникает на этапе ввода входного параметра CallbackFcnAndModule после ввода любого параметра метод уже возвращает false и кнопка не добавляется в контекстное меню панели

 

Тут немного хитрый синтаксис судя по справке:

The CallbackFcnAndModule argument specifies which function to call when this menu item is selected by the user. The syntax is as follows:

   "dllname@function@updatefunction,hintstring"

 

Сколько не пробовал разных способов не помогает, может кто сталкивался с данным методом, может есть наработка или решение

 

Использую этот метод, так как он принимает в себя изображение в отличии от 

AddMenuItem5 Method (ISldWorks)
 
Ссылка на сообщение
Поделиться на других сайтах
16 часов назад, Makc Krekhoveckiy сказал:

Входные параметры:

Думаю логичнее рассказать какую версию программу вы используете.

Учли ли вы, что ваше приложение должно быть DLL?

Как у вас записан вызов в вашем коде?

Пробовали ли эту функцию для добавления разделителя в меню? Что бы, так сказать, попробовать на самом простом варианте использования функции.

Не забудьте сообщить о решении проблемы, когда докопаетесь до сути проблемы и её решения!

 

16 часов назад, Makc Krekhoveckiy сказал:

Тут немного хитрый синтаксис судя по справке:

The CallbackFcnAndModule argument specifies which function to call when this menu item is selected by the user. The syntax is as follows:

   "dllname@function@updatefunction,hintstring"

Может и хитрый, но в всправке вроде подробно разъяснено как применять (грубый машинный перевод):

Цитата

Этот метод работает только для приложения C++, реализованного как DLL, а не как EXE. Любая функция, представленная как обратный вызов из пункта меню, должна быть объявлена как EXPORT или включена в ваш файл .def.

Вы можете добавить новое меню в любой из четырех фреймов SolidWorks (основной фрейм, фрейм детали, фрейм сборки или рамку чертежа). Для этого необходимо получить объект IFrame , когда нужный кадр активен. Например, если вы хотите, чтобы ваше меню было доступно, когда документ детали активен, вызовите ISldWorks::Frame при первой загрузке или создании детали и используйте этот объект IFrame для вызова этого метода. После добавления меню в кадр детали вам не нужно делать это снова во время текущего сеанса SolidWorks.

Аргумент CallbackFcnAndModule указывает, какую функцию вызывать, когда пользователь выбирает этот пункт меню. Синтаксис следующий:

"имя_dll@функция@функция обновления,строка подсказки"

где:

 

имя_dll

Имя вашей библиотеки, указанное в файле .def проекта. Фактическое имя файла DLL и определение в файле .def должны совпадать.

функция

Имя функции, которая вызывается, когда пользователь нажимает кнопку. Эту функцию также необходимо объявить как EXPORT в вашем файле .def.

функция обновления

Необязательный аргумент, управляющий состоянием кнопки. Если указано, SolidWorks вызывает эту функцию перед отображением кнопки. Определите функцию обновления, которая будет возвращать целое число, и объявите его как EXPORT или включите в файл .def. Отображение кнопки контролируется возвращаемым значением функции следующим образом:

  • return 0 — пункт меню снят и отключен.
  • return 1 — пункт меню снят и включен. Это состояние меню по умолчанию, если не указана функция обновления.
  • return 2 — пункт меню отмечен и отключен.
  • return 3 — пункт меню отмечен и включен.

подсказка

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

Userdll@AddBox@checkForUserSelects,Добавьте ящик

https://help.solidworks.com/2010/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.iframe~addmenupopupitem2.html

 

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

Коллеги, не видел здесь такой информации, может кому будет интересно.

Если не по теме, прошу громко не ругаться!
Как макросами управлять Ардуино-проектами из SolidWorks, Excel и т.п.
Можно собрать любой проект Ардуино с лампочками, моторчиками и датчиками.
Я для проверки и тестов собирал шаговый двигатель 28byj-48, скетч прилагается. Главное, чтобы в проекте было предусмотрено управление через чтение порта Serial.read(). Раньше я управлял проектами с компа только через монитор порта, вводя буквы по одной. Не очень удобно. Очень хотелось сделать проще, чтобы кнопочки там всякие на форме, плюшечки и т.д. Искал и нашел модуль, реализованный под VBA7. Без всяких там подключаемых библиотек. Импортируется как модуль в проект макроса. Ссылка: https://github.com/Serialcomms/Serial-Ports-in-VBA-Simple-2022

Набросал макрос с парой кнопок на форме, как демку. Макрос при нажатии на кнопки отправляет в порт символы, Ардуинка считывает и выполняет.
Настройки порта все по дефолту.
Импортировал модуль SERIAL_PORT_SIMPLE_VBA7.bas. В модуле единственное что надо поправить это номер COM-порта, куда подключена Ардуинка по USB.

SendToComPort.swp speedSerialControl.ino

Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, alek77 сказал:

В модуле единственное что надо поправить это номер COM-порта, куда подключена Ардуинка по USB.

Не совсем понятно как это можно применить в связке с Solidworks, но ручками вбивать номер порта как то не хорошо. Вероятно стоило бы постучаться по портам и найти нужный конец с ардуиной.

 

3 часа назад, alek77 сказал:

Как макросами управлять Ардуино-проектами из SolidWorks, Excel и т.п.

Лампочками моргать может и интересно, но можно ли привести практический пример для чего это можно использовать.

На мой взгляд можно было бы подумать об управлении из ардуино, например, вращением модели и т.п. или добавить горячих клавиш.

Ссылка на сообщение
Поделиться на других сайтах
12 часов назад, Kelny сказал:

Лампочками моргать может и интересно, но можно ли привести практический пример для чего это можно использовать.

На мой взгляд можно было бы подумать об управлении из ардуино, например, вращением модели и т.п. или добавить горячих клавиш.

В какую сторону управлять, ардуинкой комп или с компа ардуинкой наверно не важно. Я написал про возможность. Применение найдется. Каждый решает по своим задачам. Для меня это как хобби в основном. А по работе, я сам свои узлы периодически гоняю, не дожидаясь занятых программистов и электронщиков. С этим модулем управлять будет легче.

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

 

12 часов назад, Kelny сказал:

Вероятно стоило бы постучаться по портам и найти нужный конец с ардуиной.

Даже не думал еще в этом направлении. Тем более в чужом модуле. У меня всего один порт на компе, выбирать не приходится, прописал жестко. И не программист я, так, учусь ;)

 

 

Ссылка на сообщение
Поделиться на других сайтах
5 часов назад, alek77 сказал:

VBA мне ближе и привычнее других языков, поэтому и ищу возможности для него.

Вроде С и его вариации вроде C# и т.п. пошустрее будут, если требуется что-то считать.

 

5 часов назад, alek77 сказал:

Даже не думал еще в этом направлении. Тем более в чужом модуле.

Возможно надо всего лишь пройтись по номерам портов в функции: Private Function OPEN_COM_PORT() As Boolean

Если порт ответил закрывать его и переходить к следующему, а по результам проверки предложить сохранить порт (реестр или файл настроек). Если найдено активных портов больше одного, то предложить выбрать. Ну а если активных не найдено, то завершить работу или перейти к запуску модулей не требующих ком-порт с огрничением функционала без передачи на порт.

Ссылка на сообщение
Поделиться на других сайтах
26.09.2023 в 09:39, Kelny сказал:

Думаю логичнее рассказать какую версию программу вы используете.

Учли ли вы, что ваше приложение должно быть DLL?

Как у вас записан вызов в вашем коде?

Пробовали ли эту функцию для добавления разделителя в меню? Что бы, так сказать, попробовать на самом простом варианте использования функции.

Не забудьте сообщить о решении проблемы, когда докопаетесь до сути проблемы и её решения!

 

Может и хитрый, но в всправке вроде подробно разъяснено как применять (грубый машинный перевод):

 

 

Настройка интегрируется как dll библиотека, поддерживаемые версии SW2019-2023

 

Принцип записи исходя из справки API

bool result = mainFrame.AddMenuPopupItem2((int)swDocumentTypes_e.swDocPART, (int)swSelectType_e.swSelEVERYTHING, "MainFrame@Menu2", "CallbackFunction", "", 0, smallMainIcon);

 

Загвоздка начинается на введении CallbackFunction, если имя метода не задавать оставить параметр пустым, то солид спокойно это все хватает, метод AddMenuPopupItem2 возвращает true на плавающей панели управления появляются кнопки

 

Судя по справке 

The CallbackFcnAndModule argument specifies which function to call when this menu item is selected by the user. The syntax is as follows:

"dllname@function@updatefunction,hintstring"

 

"имя_dll@

функция@

функция обновления, - необязательный параметр

строка подсказки" - необязательный параметр

 

Пробовал вводить - SwCSharpAddin1.dll@CallbackFunction

 

Любая функция, представленная как обратный вызов из пункта меню, должна быть объявлена как EXPORT или включена в ваш файл .def.

 

Функция находится в то же библиотеки и считается включенной, недопонял, что значит объявлена как EXPORT

 

public void CallbackFunction()
{
    SwApp.SendMsgToUser("Function called.");
}

 

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

 

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

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

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

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

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

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

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

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

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

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

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




×
×
  • Создать...