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

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



Part.ShowNamedView2 "*Isometric", ххх

ххх =

 

 

 

 
Member Description
swBackView 2
swBottomView 6
swDimetricView 9
swFrontView 1
swIsometricView 7
swLeftView 3
swRightView 4
swTopView 5
swTrimetricView 8

Только смысла в этом не вижу. Вам по-любому придется зайти в чертеж и привести его в порядок. А раз уж зашли, то и ориентируйте виды там. Заодно и масштаб можете поправить, причем как чертежа, так и индивидуально для каждого вида.

                                 
 

10 Масштаб_вида.swp 10 Масштаб_чертежа.swp 09 Rotate_View.swp

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

Вот именно номер нормального вида в хэлпе не указан, случайно нашел. Если указываешь 0, то поворачивает нормально к выбранной плоскости или грани. Чертеж разумеется вручную. Макрос создает только заготовку. Но много мелкой рутины можно все таки запрограмировать. Всем спасибо

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

Раз уж дошли до "автоматизации" чертежа советую обратить внимание на то, что чертежу, как и модели, можно присвоить свойства (атрибуты). На присвоенные атрибуты впоследствии можно делать ссылки из заметок.  Это даст вам возможность автоматизировать заполнение основной надписи, тех.требований, автонумерации листов проекта и.т.д. Только следует помнить, что если в книге чертежа есть несколько листов (до сих пор не понимаю, зачем это?), то свойства, заданные книге чертежа, будут общими для всех листов. Что в принципе убивает идею книг из нескольких листов.

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

Вот именно номер нормального вида в хэлпе не указан, случайно нашел. Если указываешь 0, то поворачивает нормально к выбранной плоскости или грани.

Вы не внимательно причитали (или у вас более ранняя версия), начиная с SW2012 в справке дополнены заметки к инструменту и для этого там предлагается иной путь (думается лучше использовать задокументированные инструменты, что бы накладок не было):

Цитата

Remarks

To set a named view to the active view in a drawing, the drawing view that contains the named view must be selected.

To orient the selected face to its Normal To view, specify *Normal To for VName and -1 for ViewId. 

 

https://help.solidworks.com/2012/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.imodeldoc2~shownamedview2.html

 

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

Если в процедуре (функции) есть конструкция типа

 

vComponents = swRootComp.GetChildren

 

то в момент выхода из такой процедуры программа подвисает и ни на что не реагирует.

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

Мои усилия не привели к обычному (быстрому) выходу из процедуры.

Никто не сталкивался с этим? Может, есть какое-то решение, позволяющее устранить задержку?

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

Если в процедуре (функции) есть конструкция типа

 




vComponents = swRootComp.GetChildren

 

то в момент выхода из такой процедуры программа подвисает и ни на что не реагирует.

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

Мои усилия не привели к обычному (быстрому) выходу из процедуры.

Никто не сталкивался с этим? Может, есть какое-то решение, позволяющее устранить задержку?

Не совсем понятно что пишется. Macros, standalone API (.exe files) или add-in (.dll files).

И да, это затратная функция, особенно в exe файлах. Примерно раз в десять время можно сократить в них используя swApp.CommandInProgress.

 

Вот примерные тестовые результаты сборки из 10000 шариков с использованием CommandInProgress и exe файла. Время дано в миллисекундах.

Функция GetChildren: 3198
Цикл for: 21069

Функция GetChildren: 3078
Цикл for: 21612

Функция GetChildren: 3127
Цикл for: 21538

Функция GetChildren: 3237
Цикл for: 21151

Функция GetChildren: 2973
Цикл for: 21622

 

Без CommandInProgress сама функция GetChildren отрабатывала 42...48 сек.

P.S. Комп старенький.

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

Не совсем понятно что пишется. Macros, standalone API (.exe files) или add-in (.dll files).

И да, это затратная функция, особенно в exe файлах. Примерно раз в десять время можно сократить в них используя swApp.CommandInProgress.

 

Вот примерные тестовые результаты сборки из 10000 шариков с использованием CommandInProgress и exe файла. Время дано в миллисекундах.

Функция GetChildren: 3198
Цикл for: 21069

Функция GetChildren: 3078
Цикл for: 21612

Функция GetChildren: 3127
Цикл for: 21538

Функция GetChildren: 3237
Цикл for: 21151

Функция GetChildren: 2973
Цикл for: 21622

 

Без CommandInProgress сама функция GetChildren отрабатывала 42...48 сек.

P.S. Комп старенький.

Спасибо. 

Но я немного не об этом. Сама функция GetChildren отрабатывает приемлемое время.

На скриншоте показан выход из процедуры.

endSub.JPG

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

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

Видимо, внутри происходят какие-то процессы, только после которых программа продолжает нормально работать.

Если перед выходом выполнить

vComponents = Empty

то это ничего не меняет.

 

Аналогично медленно происходит и выход в надпроцедуру, если используется GetFeatures.

Задержка происходит и в редакторе VB6 и в EXE.

 

С CommandInProgress не работал. Попробую поизучать.

 

 

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

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

@Shvg большое спасибо.

Изменено пользователем brigval
Ссылка на сообщение
Поделиться на других сайтах
9 часов назад, Shvg сказал:

Примерно раз в десять время можно сократить в них используя swApp.CommandInProgress.

Когда-то попробовал, но проект был с открытием файлов, и на тестовом, малом, количестве файлов, разницу особо не почувствовал. И, соответственно, это свойство было благополучно заброшено и забыто.

Сейчас добавил в рабочий проект. Время обработки изменилось с, примерно, 1 мин 50 сек , до 40 сек.

Изменено пользователем nicomed
Ссылка на сообщение
Поделиться на других сайтах
1 час назад, brigval сказал:

С CommandInProgress не работал. Попробую поизучать.

.........

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

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

Только не забудьте, что написав:

swApp.CommandInProgress = true;

надо написать и 

swApp.CommandInProgress = false;

 

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

Только не забудьте, что написав:


swApp.CommandInProgress = true;

надо написать и 


swApp.CommandInProgress = false;

 

Разумеется )

Спасибо.

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

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

 

@Shvg @brigval  А как его правильно применять? А то у меня тоже есть пару макросов тормознутых )

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

Отбой, разобрался ) вернее запросил пример у ChatGPT :)

Цитата

Команда "swApp.CommandInProgress" в SolidWorks API устанавливает флаг, указывающий, что в настоящее время выполняется команда в SolidWorks.

Ниже приведен пример использования "swApp.CommandInProgress = True" для установки флага "CommandInProgress" при выполнении пользовательской команды в SolidWorks:

 

Sub Example()
    Dim swApp As SldWorks.SldWorks
    
    Set swApp = Application.SldWorks
    
    ' Установить флаг "CommandInProgress" на true
    swApp.CommandInProgress = True
    
    ' Здесь выполняется пользовательская команда
    
    ' Сбросить флаг "CommandInProgress" на false
    swApp.CommandInProgress = False
    
End Sub
Цитата

В данном примере мы устанавливаем флаг "CommandInProgress" на true перед выполнением пользовательской команды в SolidWorks, чтобы указать, что команда выполняется в настоящее время. Затем, после выполнения команды, мы сбрасываем флаг на false.

Обратите внимание, что установка флага "CommandInProgress" на true может привести к блокировке пользовательского интерфейса SolidWorks, поэтому рекомендуется использовать эту команду с осторожностью.

 

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

запросил пример у ChatGPT :)

Можно было спросить у справки (вольный машинный перевод):

Цитата
CommandInProgress

Повышает производительность внепроцессных приложений, информируя SolidWorks о том, что внепроцессное приложение будет выполнять последовательность вызовов API.  

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


Установите значение True перед вызовом последовательности вызовов API, затем установите значение false после вызова последовательности вызовов API.

 

Примечания

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

 

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

Можно было спросить у справки (вольный машинный перевод):

Так я так и задал вопорос, приведи пример из справки SW API ))) лень было искать )

 

PS А что такое внепроцессные приложения? Макросы попадают туда или только СтендЭлоун и Dll?

Изменено пользователем Snake 60
Ссылка на сообщение
Поделиться на других сайтах
22 часа назад, Shvg сказал:

 

Вот примерные тестовые результаты сборки из 10000 шариков с использованием CommandInProgress и exe файла. Время дано в миллисекундах.

Функция GetChildren: 3198
Цикл for: 21069

Функция GetChildren: 3078
Цикл for: 21612

Функция GetChildren: 3127
Цикл for: 21538

Функция GetChildren: 3237
Цикл for: 21151

Функция GetChildren: 2973
Цикл for: 21622

 

Без CommandInProgress сама функция GetChildren отрабатывала 42...48 сек.

P.S. Комп старенький.

 А вот результаты в миллисекундах той же сборки из 10000 шариков, тот же самый код функции, только без CommandInProgress, но реализация addins-ом C#(*.dll).

 

Функция GetChildren: 50
Цикл for: 92
Функция GetChildren: 45
Цикл for: 87

 

Функция GetChildren: 50
Цикл for: 109
Функция GetChildren: 34
Цикл for: 76
Функция GetChildren: 34
Цикл for: 76

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

@Shvg Офигеть разница, получается аддины предпочтительней StandAlone?

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

@Shvg Офигеть разница, получается аддины предпочтительней StandAlone?

По скорости, да.. Они работают в одном процессе c SW. А насчет предпочтительней, то каждый выбирает сам, что ему лучше.

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

Только не забудьте, что написав:




swApp.CommandInProgress = true;

надо написать и 




swApp.CommandInProgress = false;

 

 

Иногда не срабатывает

swApp.CommandInProgress = false

Остается значение True.

А вот так срабатывает чаще.

swApp.CommandInProgress = false
swApp.CommandInProgress = false

 

Заметил, что если swApp.CommandInProgress = True, не осуществляется автозапись макросов.

Перезагрузка SW восстанавливает swApp.CommandInProgress = False и макросы начинают записываться.

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

"есть, друг Горацио...  "  вы еще с именами компонентов-деталей попробуйте разобраться. Не одно поколение кодеров пыталось модифицировать SW

31.03.2023 в 17:23, Snake 60 сказал:

Отбой, разобрался ) вернее запросил пример у ChatGPT :)

 






Sub Example()
    Dim swApp As SldWorks.SldWorks
    
    Set swApp = Application.SldWorks
    
    ' Установить флаг "CommandInProgress" на true
    swApp.CommandInProgress = True
    
    ' Здесь выполняется пользовательская команда
    
    ' Сбросить флаг "CommandInProgress" на false
    swApp.CommandInProgress = False
    
End Sub

 

 

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Павлуха
      В Рино можно создать плоскую карту, потом наложить на криволинейную.
    • Fedor
      Та дано определение концепта факторизации . Любой. Мелочи не обязательно перечислять. Покопайтесь, может в английской или другой статье о факторизации есть :)     https://en.wikipedia.org/wiki/Matrix_decomposition    :)
    • _GOST_
      10.05.2024 Макросы обновлены Версия v.0.8.16 beta   Исправлены баги: 1. Макрос BOM_Export. Исправлен баг, в результате которого масса в количестве компонентов округлялась до нуля. 2. Макрос BOM_Export. Исправлен баг, в результате которого неправильно сортировались компоненты раздела "Комплекты" 3. Макрос BOM_Export. Исправлен баг, в результате которого не сортировались компоненты раздела "Документация" 4. Макрос BOM_Export. Исправлен баг, в результате которого в спецификации не отображались примечания виртуального компонента. 5. Макрос BOM_Export. Исправлен баг, в результате которого при выполнении макроса из сборочного чертежа для групповой спецификации с отличиями по чертежу - не обновлялись номера позиций в модели и чертеже. 6. Макрос Revision_Update. Исправлен баг, в результате которого макрос вылетал при выполнении его не с первого листа чертежа.   Улучшения: 1. Макрос M_Prop. Добавлена проверка чертежей различных типов документов для сборок. Имена файлов таких чертежей должны повторять имя файла сборочного чертежа, но между обозначением и разделителем должен быть указан код документа. Так же данный код и соответствующий ему тип документа должны быть внесены в текстовый файл списка типов документов (см. настройки). 2. Макрос M_Prop. Изменено поведение при нажатии галочки "Добавить материал в наименование" - теперь наименование из имени файла полностью заменяется материалом. 3. Макрос BOM_Export. На главное окно макроса добавлена галочка "Без раздела "Документация"" для документов без чертежей (комплекты, и т.д.). 4. Макрос BOM_Export. В раздел "Документация" автоматически вносятся различные типы документов, если для них есть чертежи (например, кроме сборочного чертежа есть монтажный чертёж, в имени файла которого после обозначения указан код документа "МЧ"). 5. Макрос BOM_Export. Для документов без сборочных чертежей, но со спецификацией в поле "Формат" автоматически проставляется формат "А4". 6. Макрос BOM_Export. Для компонентов с указанием массы в количестве, при условии, что масса указана в граммах, во время суммирования (если вхождений таких компонентов несколько) масса может преобразовываться из граммов в килограммы. 7. Макрос BOM_Export. На главное окно макроса добавлена галочка "Сортировать раздел "Прочие изделия" по обозначению" 8. Макрос BOM_Export. Изменено правило сохранения спецификации в отдельной папке - теперь в отдельной папке сохраняются файлы в формате PDF (дублируются). Для старых проектов, в которых спецификации были сделаны с данной галочкой, все файлы в формате Excel необходимо перенести на уровень выше (в папку с моделью). 9. Макрос BOM_Export. Реализована особая сортировка всех компонентов в спецификации, позволяющая правильно сортировать стандартные изделия по увеличению размера. Например, Винты М8 будут выше винтов М12, а не наоборот как в старой версии. v.0.8.16 beta.rar
    • ДОБРЯК
      Где в этой ссылке сказано про численную факторизацию симметричной матрицы методом Холецкого или методом Гаусса? :=)  
    • Fedor
    • ДОБРЯК
      Численная факторизация - это приведение матрицы к треугольному виду. Дальше идет работа с правой частью. 
    • Михаил АИС
      Здравствуйте.  Выбираем станок. Обрабатываем в основном нержавеющую сталь AISI304, AISI321 и AISI316L. Сейчас у нас есть два универсальных станка 16к20 и иж250, универсальный фрезерный станок JET. Также имеется токарный станок ЧПУ без приводов от компании Вебер(аналог GOODWAY GLS-1500).  Следующий станок хотелось бы приобрести не китайский. На текущий момент времени рассматриваем 3 марки станков: 1) Victor NP-16CM и NP-20CM. Тайвань, вроде хорошие станки, но ценник впечатляет. У модели поменьше BMT45, у побольше BMT55. Обе модели на направляющих качения. 2) SMEC NS2000M и SL2000M. Южная Корея,  цены относительно приятные. NS2000M имеет направляющие качения и BMT45. SL2000M - скольжения и BMT55. 3) DOOSAN. Корейские станки, довольно известные, цены впечатляют. Есть вариант нового китайского Lynx225M(китайский станок для китайского рынка) и б/у Puma GT2100M из Кореи якобы с минимальной наработкой. Ценник на новые корейские станки зашкаливает.  Чертежи массовых деталей прикладываю,  также прикладываю чертежи самых крупных деталей. Часть деталей точим из шестигранника, соответственно идёт обработка на удар. Буду признателен, за помощь в выборе. По технике два основных вопроса: 1) Направляющие - требуются ли нам направляющие скольжения, или достаточно качения? 2) BMT55 больше, жёстче и позволяет ставить резцы большего сечения. Также теоретически инструмент должен стоять лучше. Или в нашем случае достаточно BMT45? Если у кого-то есть опыт использования этих станков буду признательны за обратную связь.
    • maxx2000
      @bubl leg в NX, Rhino можно, больше ни в каких CAD не встречал.
    • ДОБРЯК
      Хорошо. Можно тоже самое написать еще раз. Вы ищите решение СЛАУ. И чтобы найти это решение вы задаете уравнение, что  перемещение какой-то степени свободы равна какому-то числу. Но в данном примере всего два уравнения, всего две степени свободы.  И сказав, что перемещение первой степени свободы равно 1, например, у вас остается одно уравнение с одним неизвестным.  А если у вас СЛАУ из 100 уравнений, вы скажите, что перемещение первой степени свободы равно 1, например. Но как найти остальные 99 неизвестных не решая СЛАУ? Нужно решать в общем случае?   Решайте любым методом. Вы скажите нужно СЛАУ решать для нахождения собственных векторов.  Предлагаю двигаться маленькими шажками. Если нужно решать СЛАУ, то это один путь развития диалога, если не нужно, другой.
    • bubl leg
      Кстати, может кто знает - возможно ли в Солиде, наложить на плоскую/круглую/произвольной формы деталь - картинку чёрно-белую (карта высот) и выдавить её в виде объёмной рельефной поверхности? Понимаю, что солид не совсем для этого -но чем чёрт не шутит...:-) Такой инструмент есть в 3D Studio Max - модификатор displace. "Знал, умел, практиковал". :-) Итак?
×
×
  • Создать...