ssv22

Скрытые возможности Sw

448 сообщений в этой теме

Автоматически указываемое количество деталей в сборке.

 

Кто-то придумал совершенно волшебный способ указания количества деталей. Результатом является автоматически обновляемое свойство, в котором указано количество деталей. При копировании деталей в сборке это свойство обновляется. При вставке в сборку любой детали у неё в свойствах появляются ячейки с её количеством в сборке.

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

В общем, я толком не понял, как это работает, но это работает. Это самая недокументированная возможность, которая мне попадалась в солиде. В 2014 работает, в 2015 почему-то нет.

Изменено пользователем Владимир Миронов
4 пользователям понравилось это

Поделиться сообщением


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


Округление значений.

В справке не находил. http://help.solidworks.com/2014/english/solidworks/sldworks/r_operators_functions_and_constants.htm

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

 

=round("D1@Sketch1"*1.1,1)

округление размера "D1@Sketch1", количество после запятой - 1 цифра.

 

post-13271-0-59232600-1460466358.png

 

Поделиться сообщением


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

Скачал с форума пример. В SW2016 - не работает. Может кто знает как сделать, чтобы заработало. Или есть какой-то другой волшебный способ указания количества деталей в сборке в чертеже детали?

Поделиться сообщением


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

Скачал с форума пример. В SW2016 - не работает. Может кто знает как сделать, чтобы заработало. Или есть какой-то другой волшебный способ указания количества деталей в сборке в чертеже детали?

Попробуйте макрос, что в архиве. Запускайте его в сборке. Разные конфигурации не учитываются. В компонентах сборок добавляется свойство "count in assembly"

part_counter.zip

Поделиться сообщением


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

 ухты какая штука!  :smile:

и главное ГДЕ работает

Изменено пользователем streamdown

Поделиться сообщением


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

Действительно работает, автору можно поаплодировать.


 ухты какая штука!  и главное ГДЕ работает

Riccardo's equation has been a life saver for my company, but we've just upgraded to SW 2015 and he equation no longer works.  I was hoping someone would be able to help me get it sorted.  Any ideas?

Наверно проблема в этом.

Изменено пользователем LeninSW

Поделиться сообщением


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

@@LeninSW, у меня 2015 SP5  - всё работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
@LeninSW, у меня 2015 SP5  - всё работает.
 

На SW2015 SP1.1 не работает.

Поделиться сообщением


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

тоже хотел потестить

не работает на SW5015 SP2.1

 

Поделиться сообщением


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

Простите за наивный вопрос. А где вы применяете этот макрос.

В компонентах сборок добавляется свойство "count in assembly"

Поделиться сообщением


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

Простите за наивный вопрос. А где вы применяете этот макрос.

Если речь о Версии солида то - 2015.

Применяю ли я его где нибудь на практике так как он есть? - Нет. Это "вытяжка" из отдельной программы.

Поделиться сообщением


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

У нас начальник отдела закупок просит вставлять на каждый чертеж деталей кол-во для заказа, я с ним чуть не подрался из-за этого на корпоративе.... :gun_guns:

 

Причём директор сказал, что нужно так делать, так всем удобнее... :wallbash:

 

Я как понимаю этот макрос 

1 - Запускается в сборке и автоматом прописывает свойсво

2 - а дальше как? :g:

Поделиться сообщением


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

Все верно. Свойство прописывается в детали. Сделайте/измените шаблон чертежа. Чертеж по модели. На чертеже вставляйте текст, слева появятся настройки для текста, там выбирайте вставку ссылки. Появится окошко, там что то типа связать со свойством из модели, и ищите "count in assembly". Проверьте работает ли. Если все ок. Сохраните как шаблон листа и как шаблон чертежа. Все.

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

Можно также поступить с табличкой - зависит от того, какое оформление требуется у Вас.

2 пользователям понравилось это

Поделиться сообщением


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

 

. В 2014 работает, в 2015 почему-то нет

 

В SW2012 x64 SP 5.0 не работает.. Либо что-то не так делаю..

 

Попробуйте макрос, что в архиве. Запускайте его в сборке. Разные конфигурации не учитываются. В компонентах сборок добавляется свойство "count in assembly" Прикрепленные файлы  part_counter.zip   11,54К

 

Пробовал запустить в SW2012 x64 SP 5.0 - после каждой строки "Dim ... As ..." пишет

 

Can't find project or library

Поделиться сообщением


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

Пробовал запустить в SW2012 x64 SP 5.0 - после каждой строки "Dim ... As ..." пишет

 

Подключите "Microsoft Scripting Runtime" 

Войдите в режим редактирования макроса. Далее Tools -> References . Поставьте галочку напротив "Microsoft Scripting Runtime". Ok. Пробуйте.

 

post-13271-0-77157500-1460705077_thumb.png

1 пользователю понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Войдите в режим редактирования макроса. Далее Tools -> References

 

Ну я так и думал, что меня туда пошлют.. Вот только

 

Error accessing the system registry

 

:'-(

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В SW2012 x64 SP 5.0 не работает.. Либо что-то не так делаю..

 

Опытным путем выяснил, что после добавления свойств "code" и "code2" пропадает уравнение

"Dummy" = "code""code2"

 

При попытке добавить его снова появляется сообщение

 

"Отрицательные значения не поддерживаются для размеров, задаваемых с помощью уравнений"

Поделиться сообщением


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

Ну я так и думал, что меня туда пошлют.. Вот только Цитата   Error accessing the system registry   :'-(

 

В макросе использовался элемент "Словарь" (Dictionary). Я переделал макрос. Этот элемент больше не используется. "Microsoft Scripting Runtime" подключать не нужно.

В место него я использовал обычный массив, но есть ограничение на количество уникальных элементов = 32767 (максимум для integer, long я пробовал но получил ошибку).

Попробуйте макрос что в прикреплении.

part_counter 2.zip

Поделиться сообщением


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

 

Попробовал..

 

Заработал только после того, как во всех строках "Dim ... As ..." перед As поставил апостроф, а перед "Right" добавил "VBA."

 

Считает вроде правильно.. Вот жалко только, что

 

Разные конфигурации не учитываются.

 

А если бы еще считалось количество не только в главной сборке, но и по сборочным единицам, то было бы вообще здорово..


И все-таки..

 

Автоматически указываемое количество деталей в сборке.

 

В SW2012 x64 SP 5.0 не работает.. Либо что-то не так делаю..

 

При попытке добавить его снова появляется сообщение

 

"Отрицательные значения не поддерживаются для размеров, задаваемых с помощью уравнений"
 

 

Кто-нибудь может расковырять в чем проблема??


part_counter 2.zip

 

Дарю идею..

 

Чтобы не писать строки

If f_ext = "SLDPRT" Then
...
If f_ext = "sldprt" Then
...
If f_ext = "SLDASM" Then
...
If f_ext = "sldasm" Then

Можно написать

If VBA.StrConv (f_ext, vbLowerCase) = "sldprt" Then
...
If VBA.StrConv (f_ext, vbLowerCase) = "sldasm" Then

...

Тогда регистр букв не будет иметь значения..

Поделиться сообщением


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

Количество по сборочным единицам, думаю будут проблемы (неправильный подсчет). Одна деталь может быть и в главной сборке и в подсборке (допустим болт). Разве что в свойство название поля записывать как имя сборки для которой считалось количество. Допустим "сборка 0000 = 30", "сборка 0001 = 50" и т. д. Но тогда свойство "количество в сборке" в шаблон чертежей не получится прописать, так как имена полей будут меняться.

Может лучше оформить таблицу спецификации отдельно для подсборки? Родная табличка солида считает количества.

Или может есть нужда писать для каждой детали в какую сборку сколько штук входит?

Поделиться сообщением


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

Вот я сейчас над этим бьюсь.. СП Навигатор считает точно.. А я в своем макросе не могу правильно посчитать..

 

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

 

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

 

Может лучше оформить таблицу спецификации отдельно для подсборки? Родная табличка солида считает количества.

 

Так речь про чертеж детали..

 

Или может есть нужда писать для каждой детали в какую сборку сколько штук входит?

 

Я чисто теоретически подумал, что кому-то это может пригодиться.. У нас необходимое количество деталей в чертеже не пишут.ю. И ни с нашим цехом, ни со сторонними изготовителями вопросов никогда не возникало..

Поделиться сообщением


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

Что именно не получается?

Поделиться сообщением


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

 

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

Поделиться сообщением


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

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

 

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

Получается так:

Имя поля: count in assembly

Значение поля: 7 | Assem000.SLDASM = 3

part_counter 3.zip

Поделиться сообщением


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

 

Ругается на строку

 

sw_app.OpenDocSilent path_to_assembly, 2, 0

 

Run-time error '13':

 

Type mismatch

 

В Object Browser "OpenDocSilent" отсутствует (SW2012 x64 SP 5.0)..

 

А вообще, к скрытым возможностям SW это не относится.. Поэтому предлагаю переместится в отдельную тему или в  "Solidworks API"

Поделиться сообщением


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

Работать в Солиде начал с 2004 версии. Уже тогда обнаружил, что в уравнениях работает функция  ROUND  (округление). 

Полезно для управления количеством элементов массива.

1 пользователю понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 14.01.2017 в 21:09, Спартанец сказал:

в Солиде начал с 2004 версии. Уже тогда обнаружил, что в уравнениях работает функция  ROUND  (округление). 

Полезно для управления количеством элементов массива.

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

Поделиться сообщением


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

Может быть в уравнениях и логические функции применять можно?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 12.04.2016 в 16:08, sova2004 сказал:

Округление значений.

этот скрытый метод имеет скрытую подъяпку

Скрытый текст

Because of the loss of precision that can result from representing decimal values as floating-point numbers or performing arithmetic operations on floating-point values, in some cases the Round(Double) method may not appear to round midpoint values to the nearest even integer. In the following example, because the floating-point value .1 has no finite binary representation, the first call to the Round(Double) method with a value of 11.5 returns 11 instead of 12.

Vigd0oaD.jpg

что такое 0.1 - не знаю,ненагуглил, получил методом научного тыка,

 

Поделиться сообщением


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

Может быть в уравнениях и логические функции применять можно?

только в место функции if() стоит использовать iif(). if глючит во вложенных циклах или что то подобное.

Изменено пользователем Spikard

Поделиться сообщением


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

что такое 0.1 - не знаю,ненагуглил, получил методом научного тыка,

Открываем справку VBA и смотрим, вероятно 0,1 воспринимается как ноль (т.к. нельзя оставить 0,1 от количества знаков после запятой, а число на втором месте в скобках должно быть целым указывающем на оставляемое количество знаков после запятой) и поэтому после точки ни чего не выводится, округление проходит по правилу округления (округляемые 5 и больше в большую сторону, меньше 5 - в меньшую).

Цитата

Round Function

      

Description

Returns a number rounded to a specified number of decimal places.

Syntax

Round(expression [,numdecimalplaces])

The Round function syntax has these parts:

Part Description
expression Required. Numeric expression being rounded.
numdecimalplaces

Optional. Number indicating how many places to the right of the decimal are included in the rounding. If omitted, integers are returned by the Round function.

Есть и другие функции округления которые могут округлять в большую или меньшую сторону не зависимо от окгругляемых значений.

30 минут назад, Spikard сказал:

только в место функции if() стоит использовать iif(). if глючит во вложенных циклах или что то подобное.

Возможно вы просто не разобрались в синтаксисе команды if, iff просто ближе ко всякого рода формулам MSOffice:

IIf(expr, truepart, falsepart)

тогда как IF несколько сложнее, например:

Цитата

If A > 10 Then A = A + 1 : B = B + A : C = C + B

 

Изменено пользователем Kelny
1 пользователю понравилось это

Поделиться сообщением


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

округление проходит по правилу округления

rHj78qxo.jpg

по моему все таки не по правилу, разве что правило слегка мутировало)
и да, 0,1 воспринимается как 0

DNrRH8fL.jpg

Изменено пользователем Spikard

Поделиться сообщением


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

по моему все таки не по правилу

Вероятно просто правило у этой функции иное, нежели в правиле округления.

Округляет до чётного числа:

Цитата

The ROUND function utilizes round-to-even logic. If the expression that you are rounding ends with a 5, the ROUND function will round the expression so that the last digit is an even number. For example:

Round(12.55, 1)
Result: 12.6   (rounds up)

Round(12.65, 1)
Result: 12.6   (rounds down)

Round(12.75, 1)
Result: 12.8   (rounds up)

https://www.techonthenet.com/excel/formulas/round_vba.php

 

Поделиться сообщением


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

если я правильно понял  ̶и̶н̶т̶е̶д̶ж̶е̶р̶ флоат он откругляет до четного дабл до нечетного и это происходит из за "Because of the loss of precision that can result from representing decimal values as floating-point numbers or performing arithmetic operations on floating-point values"

Изменено пользователем Spikard

Поделиться сообщением


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

Для округления попробуйте другую функцию:

Format(12.65, "###0.0") ' Returns "12.7".

 

1 пользователю понравилось это

Поделиться сообщением


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

Коллеги, подскажите где найти список тегов (SWML tags) для форматирования полей с текстом (размеры, примечания)? Речь про теги вроде <DIM>,<STACK>,<OVER>. Прям с начала этой темы все как-то очень уверенно знают их. Но только в Help-е я их не увидел, а на forum.solidworks.com это считается недокументированным методом . Может я просто их неверно называю? Пробовал и искать: "Форматирование"(Formatting), "Разметку"(Markup), "Модификаторы"(Notes modifiers/Modifiers), "Теги"(tags) в различном сочетании. Ни таблицы, ни списка с описанием не нашёл. 

Поделиться сообщением


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

Список тегов лежит в файле gtol.sym, путь "C:\ProgramData\SolidWorks\SolidWorks 2014\lang\russian"

Путь можно глянуть в окне "Библиотека обозначений", вываливаемое при нажатии кнопки "Дополнительно" на вкладке "Текст размера"

Показать содержимое  

59f854dff0344_.jpg.2e6bab28b0b57dd324d8b7b3491c1f52.jpg

Hide  
Если открыть файл gtol.sym, то это текстовый файл с описанием тегов - "Geometric Tolerancing Symbols Library". Файл большой, 7400 строк. Чем-то напоминает шейп-файлы из Автокада.

 

Его читаем так: Категория - GTOL, допуск на угол - ANGULAR, получилось <GTOL-ANGULAR>

59f854fd02792_.jpg.08da746a38953f2ee7209259ba10e955.jpg

То есть, если ввести в текстовое поле <GTOL-ANGULAR>, то будет "допуск формы и расп.пов-стей", а если <GTOL-BETW>, то отобразится стрелочка туда-сюда ("между", как написано в примечании).

 

Вот этот файл и отображается по категориям в окне "Библиотека обозначений".

Соответственно, все дополнительные теги вы можете вытащить оттуда.

Ну а тег <DIM> в справке описан отдельно, его в этом файле нет.

gtol.zip

Изменено пользователем jtok
Добавил архив с файлом gtol
3 пользователям понравилось это

Поделиться сообщением


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

<DIM>

Это служебный тег для значения размера, если вы хотите отображать значение размера.

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

<STACK>,<OVER>

Это один большой тег, овер в некоторых случаях опускается:

<STACK size=0.5 divider=no>верх<OVER>низ</STACK>

size - коэффициент размера шрифта, то есть при шрифте 4 мм при коэффициенет 0,5, значения будут высотой 2 мм.

divider - отсутсвие параметра по умолчанию или divider= разделено линией, divider=no - без лини, divider=slash - диагональная линия.

 

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

для форматирования полей с текстом

По шрифтам:

<FONT style=B> - утолщённый

<FONT style=I> - наклонённый

<FONT effect=U> - подчёркнут

<FONT effect=S> - зачёркнут

можно добавить в тег размер в мм, цвет, например: <FONT effect=S size=5 color=0x000000ff>

Для раскрытия форматирования иногда помогает установка обратного слеша "\" перед форматированным текстом, тогда открывается тег в виде текста.

Ну и тег не плохо бы закрыть: </FONT>

 

Ещё есть возможность создавать всякого рода списки, но это лучше уже через макрос, т.к. прямого доступа к этим тегам нет (только через интерфейс программы при редактировании заметок или макрос):

<PARA  indent=10 findent=-10 bullet=on><FONT color=0x000000ff>Строка1
строка2
строка 3

 

<PARA  indent=10 findent=-10 number=on ntype=1 nformat=$$. nstartNum=0><FONT color=0x000000ff>строка1
<PARA  indent=0 findent=0 number=off>продолжение строки1
<PARA  indent=10 findent=-10 number=on ntype=1 nformat=$$. nstartNum=0>строка2
<PARA  bullet=on>"

 

<PARA  indent=10 findent=-10 number=on ntype=1 nformat=$$. nstartNum=0><FONT color=0x000000ff>Строка1
строка2
строка3
<PARA  bullet=on>

 

Изменено пользователем Kelny
5 пользователям понравилось это

Поделиться сообщением


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

jtok, спасибо. Именно этот список и был нужен, именно это я и имел ввиду. М..а что служебный тег <DIM> один такой служебный? Вот, скажем Kelny, описывает уже форматирование через <FONT..> этого нет в списке Gtol по понятным причинам - тег определенно служебный/операционный, а не символ. Не подскажете где в справке написано про использование именно тега <DIM> (и прочих служебных тегов), я видел только хелп по использованию инструментов вынесения размером. Там не предполагалось ручное вписывание тегов в поле.

Kelny, ну допустим <DIM>,<STACK> и Ко я как раз усвоил подглядывая за тем, что они ставятся при использовании инструментов кнопками. И отсюда и родился вопрос: а какие ещё есть?. Вы описали работу <FONT>.. Откуда у вас это тайное знание? Если менять параметры шрифта и цветности через "кнопочные" инструменты, то с тегами в поле PropertyManager ничего не происходит и они остаются как были (тег <FONT> с параметрами не добавляется в строку). Имеет смысл распотрошить какой-нибудь макрос на предмет списка всех остальных тегов или где-то всё таки есть просто список: тег - назначение - пример использования?

1 пользователю понравилось это

Поделиться сообщением


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

Создайте аккаунт или войдите для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

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

    • Ermol


  • Реклама

  • Сообщения