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

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

достаточно ли лицензии на solidworks

нет. Нужна подписка хотя бы на год (subscription service)
Ссылка на сообщение
Поделиться на других сайтах


Тогда, похоже придется жить с тем что есть. Или просить кого-то что бы накарябали маленькую dll на основе своей лицензии возвращающую ISwDMApplication после регистрации класса. Хм.

Ежели не сложно подобное сделать, был бы благодарен.

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

Все понятно, но думаю, не решает сей способ моей проблемы.

Класс для работы с "солидовским составным файлом" уже реализован. Получаемые в процессе работы программы данные(а, это сериализованный класс) самое удобное хранить именно таким вот способом.

Почему это

...самое удобное хранить именно таким вот способом...

? Аргументы, плиз...

...

Просто в процессе работы требуется интерактивно получать данные о том или ином файле (определенной его конфигурации )в дереве компонентов сборки, а для этого иного способа кроме как открыть его openDoc6 я не видел, а если в памяти солида файл не открыт, то открытие может сильно затянуться, что приводит к ненужному ожиданию. Если посмотреть рисунок, то при добавлении «новой подконфигурации» как раз оно самое и происходит. Приходится открывать файл ,ждать когда солид все прогрузит, и только тогда считывать элементы входящие в его состав. А для того что бы пользоваться предложенным ssv22 методом этот файл ,как минимум должен быть открыт ранее, а сие далеко не факт что произойдет.

Почему

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

Почему это не факт?

Видимо действительно Documents manager API единственный способ.

ИМХО вот это далеко не факт
Вообще вся моя задумка возникла из того, что SW имеет только однонаправленную связь: СБ -> деталь -> чертеж.

Но нет обратной связи: деталь "не знает" в какую сборку она входит и в какой конфигурации и т.п.

Допустим, имеем главную СБ из 400 компонентов(и деталей и сборок в сумме). Когда мы меняем что-либо в главной СБ:

например р-р в одной детали. На что это повлияет? Ну, само-собой на Гл.СБ(масса, габариты) и еще на несколько компонентов, зависимых от измененн детали.

Теперь, допустим, открываем деталь и зменяем р-р в ней. Это повлияет только на Гл.СБ и явно зависимые компоненты.

Т.о. нет никакой необходимости открывать все компоненты Гл. СБ. Достаточно будет изменить св-ва в независимых компонентах, не открывая их. Конечно, не все св-ва можно менять в компоненте, не открывая его.

Т.е. общий смысл идеи: при изменении Гл.СБ. или компонента, получить минимальный список компонентов, подлежащий обязательному открытию. И дальше работать только с этими компонентами.

Причем тут-то я и привлек функции ..Notify - чтобы делалось все автоматом.

Например была добавлена новая конф-я. Для этого в программе надо "взвести" событие на открытие файла. При открытии файла программа просматривает список св-в и видит, что появилась новое имя в конфигурация. Далее, программа должна создать новую конфигурацию или выдать предупреждение пользователю. И т.д.

Т.е. в каждом компоненте нужно иметь информацию, например, в детали инфо о том куда она входит, в каком кол-ве и т.д.

Вот, коротко :biggrin:

PS. `andrey1307n2`, проверь ЛС

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

andrey1307n2

то, что умеет ДокМенеджер (залез в справку и понатыкал функций, не разбираясь :blush: )

<noindex>Изображение</noindex>

между открытием сборки в самом солиде и через ф-цию OpenDoc

был уже разговор по этому поводу.

открывайте солид как процесс а не окно. Т.е. не делайте ему visible, но работайте с открытым процессом.

Dim mySolidworks() As Process 

mySolidworks = Process.GetProcessesByName("SLDWORKS") 

If UBound(mySolidworks) > -1 Then 

bSWXrunning = True 

' connect to existing SolidWorks 

Else 

' start new instance of SolidWorks 

End If 





' If SolidWorks is running already, do not close 

If bSWXrunning Then 

' make SolidWorks visible and give control to user 

swApp.UserControl = True 

swApp.Visible = True 

Else 

' may have to kill SolidWorks 

mySolidworks = Process.GetProcessesByName("SLDWORKS") 

swApp.CloseAllDocuments(True) 

swApp.ExitApp() 

Try 

mySolidworks(0).Kill() 

Catch ex As Exception 

End Try 

End If
Главное потом закрыть не забыть)))

ПРАВИЛЬНОЕ УБИЙСТВО

Process [] processes = Process.GetProcessesByName ("SLDWORKS.exe");

		   foreach (Process process in processes)

		   {

			   process.CloseMainWindow();

			   process.Kill();

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

...то, что умеет ДокМенеджер (залез в справку и понатыкал функций, не разбираясь :blush: )...

Стыдно (:flush:), но что-то я заблудился: где эта справка находиться?
Ссылка на сообщение
Поделиться на других сайтах

C:\Program Files\SolidWorks Corp\SolidWorks\api\swdocmgrapi.chm

но, как и было ранее указано - для работы библиотеки ОБЯЗАТЕЛЬНО нужен ключ.

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

Рассматривал хранение данных только непосредственно в файле солида. Я наткнулся еще на возможность хранения в «Пользовательских свойствах» и атрибутах. Строка «пользовательских свойств» ограничена по размеру, да и любой желающий может там поковыряться. Атрибуты в принципе тоже видны и их можно удалить ручками, но тут еще приходится при записи атрибута преобразовывать данные в строку, что увеличивает размер данных. По поводу доступности атрибутов без открытия документа сказать ничего не могу.Но судя по всему свойства доступны. Открыть «составной файл» можно без открытия документа в солиде, или получить ссылку на таковой через API в уже открытом документе. Да и ручками мало кто туда сможет залезть - знать надо.

Изменено пользователем andrey1307n2
Ссылка на сообщение
Поделиться на других сайтах

streamdownю У меня и так открытие файла проходит в уже запущенном SolidWorks. Только открытие идет в "невидимом" режиме. т.е. окно открываемого файла не выводится.

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

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

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

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

Вопрос, с чего начать и какие компоненты мне будут необходимы.

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

помещать модели солида

а зачем? Это же не ворд какой-нибудь. Лучше открывать модели.

вращать импортированные модели

<noindex>eDrawings ActiveX control</noindex>

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

составьте подробное ТЗ, вам сделают программу за деньги (сумма получится хорошая)

как создать панель инструментов в в delphi

???

Как давно вы работаете в Solidworks и что там конкретно делаете? (нужно для общего понимания сути ваших вопросов)

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

Я в солиде хоть пресс-форму, хоть самолет, короче что угодно моделить умею. Мне в делфи программу сделать позарез надо.

Перечитайте пожалуйста еще раз мой первый пост, и вот еще картинка в пояснение

<noindex>Изображение</noindex>

Мне модели в делфи нужны для моделирования кое какого литейного процесса.

Если опять, то что мне нужно непонятно переспросите еще разок.

Спасибо за помощь.

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

Мне модели в делфи нужны для моделирования кое какого литейного процесса.

А сделать мультяшку - низя???

Или обязательно нужна прога (это уже полСАПРа будет)???

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

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

И как вы сейчас вычисляете площадь сечения, например D-D?

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

Вряд ли получиться так просто найти информацию о внутренней структуре 3D моделей в формате SW, чтобы можно было с ними работать в собственной программе. Проще импортировать модели в форматы step или iges, а потом уже резать их как хочется.

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

какие компоненты для делфи существуют для работы с моделями в форматы step или iges солида и каким способом осуществить импорт?

Изменено пользователем wage13
Ссылка на сообщение
Поделиться на других сайтах

какие компоненты ... существуют

Все тут "C:\Program Files\SolidWorks Corp\SolidWorks\api\redist" и не только для Delphi.

каким способом осуществить импорт

Dim swApp As Object 

Dim Part As Object 

Dim SelMgr As Object 

Dim boolstatus As Boolean 

Dim longstatus As Long, longwarnings As Long 

Dim Feature As Object 

Dim Step As Long 



Sub main() 



Set swApp = Application.SldWorks 



Set Part = swApp.ActiveDoc 

Set SelMgr = Part.SelectionManager 



Step = swApp.SetUserPreferenceIntegerValue(swStepAP, 214) 



sPathName = Part.GetPathName 

sPathName = Left(sPathName, Len(sPathName) - 6) 

sPathName = sPathName + "STEP" 

Part.SaveAs2 sPathName, 0, True, False 





End Sub

Ответьте пожалуйста на сообщение №5.

Тогда и решение найдётся.

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

Во вкладке Анализировать опция "Характеристика сечения" и "Измерить" тоже площадь сечения считает.

<noindex>Изображение</noindex>

<noindex>Изображение</noindex>

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

Спасибо

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

Тепрерь ясна задумка. Как сказал SERoz - полСАПРа.

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

Если вам нужнО моделирование литья, для этого есть спецсофт.

Сами подумайте, вы на форуме конструкторов/инженеров/производственников спрашиваете "как мне создать свою маленькую программу для работы с 3D моделированием".

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

Программы для литья у меня имеются, мне в делфи, для учебы, свой проект нужен.

Макросы же здесь наверное некоторые пишут.

А зачем про способ измерения площади спрашивали, может какая то мысль все таки есть.

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

мне в делфи, для учебы, свой проект нужен.

Ну вот оно, наконец-то полная ясность - "для учебы" и "свой проект нужен"...

Это конечно хорошо, когда "для учебы" и "свой проект", но думается Вам нужно к разрабам, которые шарят в 3D-моделях (может и Солида или любых других)...

А макросами тут не обойтись - разве что самому записать это макрос...

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

А далее можно уже копаться в этом макросе, как душе угодно...

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

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

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

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

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

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

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

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

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

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

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




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