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

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

Заморочка та ещё)) как его сделать знаю, а чего туда пихать не пойму.

Извиняюсь за тупость - не понял сути...

Т.е. Вы создали нечто, а для чего не поняли (типа - ой мама, что со мной происходит, либо я беременна, либо немного растолстела, либо просто настроение плохое)???

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


SERoz

Лучше б не (с)суть)) расписывали, а по делу сказали. :smile:

это как макрос с заморозкой дерева проектирования (который официально ввели в 2012), сделать сделал - авось кому и пригодится. Тут тоже самое.

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

Лучше б не (с)суть)) расписывали, а по делу сказали. smile.gif

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

Ну тогда просто бы спросили, а то "беременна" ... "растолстела" ...

Может попробовать впихнуть туда резьбу))) типа как фичер. Т.е. ПКМ на элементе, появляется панелька где выбираем плоскость, размер резьбы, длину, тип (внутренняя-внешняя), строится вырез по траектории по ГОСТ - штука ненужная, зато вариант использования с редактированием параметров.

SERoz

А надо это для того, чтобы попрактиковаться. Остальное выше в сообщениях.

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

1. Если имя = переменная, то нужно её вычислять. Т.е. либо выделять в дереве, либо в детали и дальше уже брать таким образом имя.

2. Интерфейс -мухи, названия фичерсов - котлеты.

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

Можно вообще её раскрашивать всегда другим цветом, а потом поиском по детали её выделять))) видел и такое

Но ведь в русском и английском SW фичеры создаются с разными именами

именно. Я ж написал, мухи отдельно, котлеты отдельно.

хотя элементы создаются с английскими именами.

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

Так, заново

1. Хочу выделить поверхности деталей для создания на них эскизов

это либо тыканьем мышкой, либо по имени. Так в чем вопрос то?
Ссылка на сообщение
Поделиться на других сайтах

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

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

Проблема в следующем, необходимо получить данные(путь к файлу компонента, погашен ли этот компонент в сборке) о деталях и сборках входящих в требуемый файл сборки для какой-либо конфигурации. При использовании в Solidworks API функции OpenDoc6 происходит открытие документа, зачастую довольно медленно. Есть ли способ более быстрого доступа к искомому? К Documents Manager нет ключа.

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

to 'andrey1307n2'

- не указанны версии и разрядность SW и ОС!!!- на каком языке пишите: VB, VBA, C#, C++, Delphi...?

- в каком виде реализуете API: автономный EXE-файл или Add-ins (DLL)?

- что значит "открытие документа, зачастую довольно медленно"? По сравнению с чем медленно? По сравнению с "ручным открытием"?

Думаю, от API тут мало что зависит: время открытия определяется количеством компонентов в СБ, и конфигурацией ПК...

Есть ли способ более быстрого доступа к искомому

В принципе, есть, но боюсь Вас он не устроит, если Вы не профи в API...

Но этим способом можно получать нужные данные вообще не открывая документ SW. И даже не имея SW на ПК...

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

вообще не открывая документ SW. И даже не имея SW на ПК...

К Documents Manager нет ключа.

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

Каким образом вы предполагаете доступ и редактирование документов SW без зарегистрированной библиотеки swdocumentmgr?

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

Каким образом вы предполагаете доступ и редактирование документов SW без зарегистрированной библиотеки swdocumentmgr?

Вот про редактирование документов SW я как раз и ничего не говорил!

А про доступ - через `Total Commander` по `ПКМ->Свойства` можно увидеть немало св-в файла. Если конечно они там есть :rolleyes:

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

Работаю на C#. Функции API вызываются через автономный exe . Не вижу особой разницы между открытием сборки в самом солиде и через ф-цию OpenDoc так как вы правильно сказали - время открытия определяется количеством компонентов в СБ, и конфигурацией ПК. Это и есть «довольно медленное открытие». Но думаю нет необходимости прогружать компоненты, дабы получить требуемые данные. О каком способе вы говорили- «Но этим способом можно получать нужные данные вообще не открывая документ SW. И даже не имея SW на ПК...»??? Думаю это как раз то что мне надо.

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

Работаю на C#. Функции API вызываются через автономный exe . Не вижу особой разницы между открытием сборки в самом солиде и через ф-цию OpenDoc так как вы правильно сказали - время открытия определяется количеством компонентов в СБ, и конфигурацией ПК. Это и есть «довольно медленное открытие». Но думаю нет необходимости прогружать компоненты, дабы получить требуемые данные. О каком способе вы говорили- «Но этим способом можно получать нужные данные вообще не открывая документ SW. И даже не имея SW на ПК...»??? Думаю это как раз то что мне надо.

Смысл такой:

1) после открытия главной СБ в SW, нужно просканировать всю СБ, включая и вложенные докуметы(детали, подсборки, детали в них и т.д.);

- при этом сканировании необходимо программно создать св-ва, которые Вас будут потом интересовать(погашен ли компонент или нет, сколько в нем конфигураций, путь к файлу и др.).

Например:

-- Supess (On/Off) или (1/0)

-- Number conf

-- path_of_file

...

и записывать текущие значения в эти св-ва

2) затем необходимо "взвести" критические события, которые способны изменять эти св-ва. Например: добавление/удаление/погашение нового компонента.

Как-то я делал что-то подобное и активировал события:

sw_str_swAppNotify(22) = "FileOpenPostNotify"

sw_str_swAppNotify(2) = "FileNewNotify"

sw_str_swAppNotify(4) = "ActiveDocChangeNotify"

sw_str_swAppNotify(5) = "ActiveModelDocChangeNotify"

sw_str_swAppNotify(22) = "FileOpenPostNotify"

------

sw_str_swPartNotify(3) = "RegenPostNotify"

sw_str_swAssemblyNotify(3) = "RegenPostNotify"

sw_str_swDrawingNotify(3) = "RegenPostNotify"

------

sw_str_swPartNotify(10) = "ConfigChangeNotify"

sw_str_swPartNotify(11) = "ConfigChangePostNotify"

sw_str_swAssemblyNotify(10) = "ConfigChangeNotify"

sw_str_swAssemblyNotify(11) = "ConfigChangePostNotify"

sw_str_swDrawingNotify(12) = "ConfigChangeNotify"

sw_str_swDrawingNotify(13) = "ConfigChangePostNotify"

***

msrcPartDoc_RegenPostNotify2

msrcAssemblyDoc_RegenPostNotify

msrcPartDoc_FileSavePostNotify

Возможно Вам хватит и одного события:

FileSaveNotify - AssemblyDoc Event.

Это при записи СБ самого верхнего уровня. При этом SW API автоматом отреагирует на это событие и опять же просканирует все входящие и изменит предопределенные ранее значения св-в. (Я делал такое на VB - exe-файл, были тормоза, надоело и я просто сделал на форме своего приложения кнопку: "Записать св-ва". Так сказать взял огонь на себя :biggrin: )

Т.к. чем больше будет вызываться функция сканирования, тем медленне ваше приложение будет работать!

3) для просмотра значения этих св-в(я выше) уже писал: `ПКМ->Свойства файла под курсором`

Можно также эти данные записывать в файл и т.л.

Вообщем тут море возможностей для реализации...

PS. проверьте ЛС

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

Спасибо, думал , что что-то подобное все же придется использовать, хотя и не хотелось бы. В данном случае не обязательно использовать «пользовательские свойства». Сам файл солида является «составным» т.е. прямо в него можно добавлять свои данные в виде внутреннего файла. В API есть ф-ция IGet3rdPartyStorageStore открывающая доступ к «потоку» составного файла. А «составной файл» можно открывать потом напрямую ,без участия солида. Я как то поднимал подобную тему. В данном случае получается, что все равно необходимо получать нужные данные «своими ручками» и преобразовывать в удобном для использования виде, а не считывать напрямую. В составе documents manager идет zlib.dll. Это библиотека для компрессии данных. В «составном файле», есть подфайлы с концовкой в названии _ZLB. Думаю, что можно как то использовать zlib.dll для распаковки этих данных. Только не знаю как.

Посмотрите в поисковике програмку CompoundFK2.0. Позволяет редактировать и просматривать составные файлы

ssv22

понял :smile:

andrey1307n2

чем не устраивает SW Explorer? Он бесплатный.

Когда запускал SW Explorer, в нем были ссылки на используемые в сборке файлы. Но на все. Там же не показано какой из компонентов погашен а какой нет. Или я ошибаюсь?

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

andrey1307n2

я думаю, что вносить данные по сборке/файлу в 3rdPartyStorage как-то неразумно. Лучше сразу и напрямую. Вы искали что-то наподобие traverse assembly? (о чем и говорил ssv22)

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

и опять возвращаемся к совету ssv22))) Нужно будет отслеживать сборку и вносить изменения в "составной файл". Но, можно же просто записывать эти данные на выходе из документа. (FileSaveNotify).

Теперь опять к "баранам". Всё что вам нужно, есть в документ менеджере (Get External References). Возможно без него не обойтись.

Но в случае недоступности ключа: возможно ваш метод с "составным файлом" и есть выход. Если реализуете, покажите потом что получилось.

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

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

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

Видимо действительно Documents manager API единственный способ. Для получения лицензии на этот API достаточно ли лицензии на solidworks?

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

рисунок

post-31264-1324275369_thumb.jpg

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

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

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

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

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

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

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

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

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

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

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



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