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

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

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

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


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 пользователей

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




  • Сообщения

    • mannul
      Скорее всего для токарно-фрезерного. Наоборот только. Вы программируете развертку цилиндра, в плоскости ZY, только вместо "Y" надо писать "С", а X - это глубина. Функция G07.1 сворачивает развертку в цилиндр. Все так же как на фануке. И опять же, эта функция для токарно-фрезерного. У вас же 5х, вам эта функция не нужна и работать не будет.
    • Valedol
      У меня есть форма для рассчета расстояния между трубами, и она меняется, т.к. операций моного с установкой этого расстояния. хотелось бы иметь кнопку на форме, выбрал плоскости нажал кнопку, и труба пододвинулась на то расстояние которое вычеслилось. Огонь, спасибо, сейчас допилю форму ))
    • alek77
      Точно такого нет, но есть подобный. Такие макросы достаточно простые, заменой параметров можно сделать что угодно. Например макрос из приложения выравнивает по одному клику две выбранные поверхности, цилиндр и прорезь, по центру. Для понимания:     CenterPaz.bmp CenterPaz.swp
    • nicomed
      А в чем, простите, глубинный смыл сего деяния ? Кто мешает удерживая CTRL выделить нужные поверхности, и сразу задать требуемую зависимость ?
    • Ветерок
      "Правильно сделал". Вопрос прямой: сколько стоит обучение для частного лица? Если такое вообще практикуется.
    • MaximKl
      не самая оптимальная технология - концевыми фрезами.  Если просто резать, как отписано выше(из готового погонажа) - дисковая пила. Фрезеровать ребра - долго, в основном - из-за того, что звенят при обработке, больших режимов не дашь.
    • SAPRonOff
      вот так и рождаются слухи =) кадр из учебного класса, и похоже Решетнёв решил не создавать веток на этом форуме а-ля "Моё знакомство с T-Flex", а просто заказал обучающие курсы по CAD По крайне мере так пишут в статье:  
    • Valedol
      ПРивет Всем, подскажите, пожалуйста, макрос для создания в сборке сопряжения расстояния между плоскостями. К примеру, я выбрал проскости и нажал кнопку высопления макроса и выставилось расстояние между ними которое задано в макросе.
    • Kelny
      Так понял, что нельзя, но непонятно чем стандартная паленька не устраивает, если вы решили плотно использовать слои, то она всё равно должна быть всегда на виду.   С УДИВЛЕНИЕМ ОБНАРУЖИЛ, что написанное ниже не работает в последних версиях, а может и раньше не работало (откинули слои вместе с автокадом, хотя есть адепты, которые до сих пор используют слои в Solidworks) и этот фокус прокатывал только с толщиной линии. И ещё одна странность, слой можно выбрать только в избранных инструментах при их активации: линии, овалы, но при этом выбор ни на что не влияет и используются настройки выбранные в соответствующей панели, но настройка слоя появляется на остальных элементах после вставки элемента эскиза. Так же выбор толщины линии приводит к выходу из активного инструмента рисования эскизов. Что-то перемудрили разработчики.   !в последних версиях не работает! С другой стороны, если вам данная настройка нужна лишь для избранных элементов, то при добавлении этих элементов перед вставкой надо выбрать нужный слой в настройках инструмента, при таком изменнии последующие элементы будут строится в стандартном для вас слое (слой выбранный перед активацией инструментов рисования), а не в выбранном для элемента (выбирается после вызова инструмента рисования). То есть не придётся менять слои туда-сюда, а выбирать слой только для нужного элемента при работе непосредственно с интсрументом.    
    • Ветерок
      Бери выше - лунный модуль приземления :)
×
×
  • Создать...