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

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

19 минут назад, ILL сказал:
В 02.06.2017 в 18:06, Kelny сказал:

mlHWnd = FindWindowA("XLMAIN", Application.Caption)


Вместо "XLMAIN" для солида что указывать??

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

 

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


13 минуты назад, ILL сказал:
Цитата

Ошибка при окрытии файла макроса.

Система может быть в нестабильном состоянии.


Не??

Ладно резервную копию сделал, а то 2-хлетний труд насмарку.. правда без последних изменений..

 

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

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

ведь вы окно хотите вывести вперёд, а не Solidworks, который и так наверху.

Наоборот, окно солида под окном макроса, а точнее, похоже, под окном редактора VBA, ибо окно MS Word тоже не доступно..
 

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

Наоборот, окно солида под окном макроса, а точнее, похоже, под окном редактора VBA, ибо окно MS Word тоже не доступно..

Значит не правильно вас понял.

То есть нужно, что бы запущенный макрос и его окно не блокировал программу?

Тогда:

UserForm1.Show vbModeless

 

По умолчанию запускается блокируя программу:

 UserForm1.Show vbModal

или

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

То есть нужно, что бы запущенный макрос и его окно не блокировал программу?


 

Да..

 

Только что, Kelny сказал:

Тогда:


Завтра попробую..

 

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

Private Sub UserForm_Initialize()
....
HWND_UF = FindWindow(vbNullString, My_US_Form1.Caption)
Res = SetWindowPos(HWND_UF, -1, 0, 0, 0, 0, &H1)
....

и так далее

End Sub

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

UserForm1.Show vbModeless


Работает..
 


 

20 часов назад, Kelny сказал:

По умолчанию запускается блокируя программу:


Раньше не блокировал..

 

20 часов назад, v-david сказал:

Private Sub UserForm_Initialize()
....
HWND_UF = FindWindow(vbNullString, My_US_Form1.Caption)
Res = SetWindowPos(HWND_UF, -1, 0, 0, 0, 0, &H1)
....

и так далее

End Sub


Это  мне?? И что там "и так далее"?? И нужно ли оно мне??
 

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

вот не знаю кому это...  vbModeless какой-то бомжацкий вариант "выдачи сообщений". 

На переднем плане отобразить сообщение можно и так: 

 Message = "Ваш текст"
 value = swApp.SendMsgToUser2(Message, swMbInformation, swMbOk)

То, что я привел выше дает Вам инструмент управления окнами

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

сообщение можно и так

А теперь представьте когда-то любимый глюк макросов Леона: окно макроса поверх всех окон, сообщение тоже пытается быть поверх всех окон. Форма висит на переднем плане, сообщение за ней - и оба модальные))) В таскбаре винды не появляются - ибо выполняются внутрях пространства солида.

Это я не к вам конкретно, а вообще к модальным окнам.

Ссылка на сообщение
Поделиться на других сайтах
В 9 июня 2017 г. в 23:40, v-david сказал:

вот не знаю кому это...


Наверно, все-таки мне..


 

В 9 июня 2017 г. в 23:40, v-david сказал:

На переднем плане отобразить сообщение можно и так:

 Message = "Ваш текст"
 value = swApp.SendMsgToUser2(Message, swMbInformation, swMbOk)


Мне не сообщение было нужно, а доступ к окну солида в то время, когда макрос запущен..

 

В 9 июня 2017 г. в 23:40, v-david сказал:

 vbModeless какой-то бомжацкий вариант "выдачи сообщений".


Тем не менее, именно это дало нужный мне результат..


 

В 9 июня 2017 г. в 23:40, v-david сказал:

То, что я привел выше дает Вам инструмент управления окнами


Я так и подумал.. Но не понял, как это поможет именно в моей ситуации..


 

В 8 июня 2017 г. в 20:29, ILL сказал:


 

Цитата


Ошибка при окрытии файла макроса.

Система может быть в нестабильном состоянии.


Не??


Нашел решение тут:

http://forum.dwg.ru/showthread.php?t=138400


 

Цитата


Здесь на англоязычном форуме обсуждали. Вкратце: если SW лицензионная - можно обратиться в поддержку, они вскроют swp и сбросят открытый текст макроса. 
 Также из ссылок в указанной теме: Иногда помогает открыть макрос в другой версии SW.

 


Открыл на другом компе в SW12, сохранил, снова в SW15 открываться стал..






 

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

Доброго времени суток!

Прошу подсказать кто сталкивался с подобным а АПИ:

Есть ли какая то возможность сделать свой кастомный элемент, чтобы он отображался в дереве конструирования?

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

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

 

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

Есть ли какая то возможность сделать свой кастомный элемент, чтобы он отображался в дереве конструирования?

Есть пример центра масс и изменения элемента при изменении детали:

 

CenterOfGravity.zip

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

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

Смысл такой - открывается пачка чертежей, и с них сохраняются пдф.

Сбоит в типах данных. Я не совсем понимаю как работает метод GetDocuments. Он вроде бы что то присваивает массиву vModels

Причем первая половина массива - видимо модели, на которые ссылаются чертежи.

Dim swApp As Object
Dim Part As Object
Dim vModels As Variant
Dim swModel As SldWorks.ModelDoc2
Public swDraw As SldWorks.DrawingDoc
Public swView As SldWorks.View
Dim boolstatus As Boolean
Dim ok As Boolean

Dim DocCount As Integer

Sub Start()

Dim varTemp As Integer
Dim varStr As String

Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc

DocCount = swApp.GetDocumentCount
vModels = swApp.GetDocuments

Set swModel = swApp.ActiveDoc

For i = DocCount / 2 To DocCount - 1
    
    Set swModel = vModels(i)
    'Set swModel = swApp.ActiveDoc
    If swModel.GetType <> swDocDRAWING Then
        MsgBox "Ia ?a?oa?"
        'Exit Sub
    End If
    
    pAdress = swModel.GetPathName()
    Main
    ModelName = swModel.GetTitle
    swApp.CloseDoc ModelName
        
Next


End Sub


Sub Main()

Dim MdlType(2) As String

drwInd = swModel.CustomInfo("Eiaaen?")

Set swDraw = swModel
Set swSheet = swDraw.GetCurrentSheet
Set swView = swDraw.GetFirstView
Set swView = swView.GetNextView
Set swModel = swView.ReferencedDocument

 

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

Опять дождь :sad:. Прошу подсказок, vba для начинающих. Траверсю сборку, гашу все подсборки с разделом Комплекты в свойствах пользователя , прогоняю разные выборки для получения перечней в екселе. После получения перечней хочу убрать погашение с тех компонентов которые ранее погасил. Как лучше сделать? Загонять гасимые компоненты в массив? Потом считывать массив и высвечивать ? Или есть вариант проще, при условии, что в сборке могут быть другие погашеные компоненты которые высвечивать не нужно ? 

 

Ссылка на сообщение
Поделиться на других сайтах
В 30.06.2017 в 12:01, maxfox сказал:

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

Зачем макрос то для этого? Чем "датчик" не устраивает?

 

----------------------------------

@ArtemArtemAS  при перечислении 

Цитата

For i

закомментированный 'Exit Sub завершит вообще работу макроса. Читайте - как правильно продолжать циклы.

В 04.07.2017 в 20:27, ArtemArtemAS сказал:

и с них сохраняются пдф

нигде в приведённом коде ничего не сохраняется. Вопрос уточняйте.

 

----------------------------

 

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

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

Здравствуйте. Подскажите пожалуста, как сделать inputbox на vba, для вставки в переменную имени твердого тела.

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

Товарищи, у меня вопрос по примеру "CenterofGravity", где создается свой кастомный элемент в дереве конструирования.

Я решил переложить Код в C#, в рамках аддона, но запнулся вроде как на ровном месте, где создается эскиз и точка.

Я пытаюсь получить координаты центра масс детали:

IModelDoc2 modDoc = iSwApp.IActiveDoc2;
SketchManager skManager = modDoc.SketchManager;

MassProperty massProp = modDoc.Extension.CreateMassProperty();
object inCoord = massProp.CenterOfMass();
.....

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

В примере справки, показано получение координат через массив с преобразованием:

double[] coords = null;
coords = (double[])massProp.CenterOfMass();

или так:

double[] @coords;
@coords = (double[])massProp.CenterOfMass();

все варианты не работают одинаково. В чем моя проблема? Я подозреваю, что может в синтаксисе проблема?

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

@maxfox деталь точно содержит твёрдые тела? massProp не null? вы точно в пространстве модели и никакие другие панели или команды не выполняются параллельно?

25 минут назад, maxfox сказал:

выполнение кода просто останавливается

выполнение не может останавливаться. Либо выскакивает ошибка, либо рушится приложение.

 

25 минут назад, maxfox сказал:

все варианты не работают одинаково

что такое "не работают"? :wallbash:

Изменено пользователем streamdown
Ссылка на сообщение
Поделиться на других сайтах
В 17.07.2017 в 07:40, Sla_68 сказал:

Здравствуйте. Подскажите пожалуста, как сделать inputbox на vba, для вставки в переменную имени твердого тела.

Я видимо неправильно сформулировал задачу. Имеется многотельная деталь. Требуется запустить код user form. который вызовет inputbox, для того, чтобы осуществить выбор одного из тел. После выбора необходимо произвести тессиляцию тела и найти плоскость по определенным критериям чтобы произвести на ней действия .

Как произвести действия начиная с тессиляции я уже разобрался. С userform тоже. Но как обратится к телу модели и вызвать последующие действия именно в нем?

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • bsaidov
      Приветствую!  При сохранении чертежа возникает ошибка (фото1), и ошибки в логе (фото2). Но на другом компе все работает корректно.  -Работаю ТС 12.4 -NX 1930 Буду рад любой информации..      логи NX: >>>> Error code 3270009 caught in file "E:\workdir\REF\1926.1700\src\klo\no\ind\im_instance_definitions.c" at line number 5413 >>>> Error code 3270009 caught in file "E:\workdir\REF\1926.1700\src\part\no\ind\part_save.c" at line number 5701 >>>> Error code 3270009 caught in file "E:\workdir\REF\1926.1700\src\part\no\ind\part_save.c" at line number 5849 *** Failed to save %UGMGR=V3.2 PH=kpEAQpWaLhpt8C PRH=ktLAQpWaLhpt8C PN=_____________СБ_2D PRN=00 RT="has shape" AT="UG master part file" (3270009) *** Failed to save %UGMGR=V3.2 PH=kpEAQpWaLhpt8C PRH=ktLAQpWaLhpt8C PN=АРВЦ.303571.003СБ_2D PRN=00 RT="has shape" AT="UG master part file" Total save time: CPU time: 0.359 secs, Real time: 1.397 secs &MACRO MESSAGE_BOX -2 Обнаружены следующие ошибки: &MACRO MESSAGE_TEXT &MACRO MESSAGE_TEXT Ошибка ввода/вывода : ________________________________________________-Сборочный чертеж JavaScript Console Message: Line number: 1 Source id: http://_________________________________/assets1685862881388/bundles/bundle.commons~main~a21d4778.js [QT]Critical: &MACRO MENU, 0, UG_HELP_SYSTEM_LOG UG_GATEWAY_MAIN_MENUBAR <RibbonFileBar->BackStageBar->LeftBackStageGroup->rbn_file_tab_help_cascade.csb> ## !  
    • evgw
      Пытаюся в эскизе разделить отрезок на 3 или 4 равные части. Хотелось бы как-то получить переменную, которая бы равнялась длине отрезка и чтобы она ассоциативно менялась при изменении отрезка. А затем поставить точку и указать расстояние до точки в виде этой переменной деленной на 3 или 4. Не понимаю, как такое можно сделать. Измерения в эскизе не работают. Единственный вариант, который я придумал - сделать всё в разных эскизах. Нарисовать отрезок в одном эскизе. Потом сделать измерение и ещё один эскиз, в которм использовать измерение. А можно как-нибудь сделать это в одном эскизе? NX у меня 1996.
    • Jesse
      Фёдор, да что вы заладили?! Нормальная мягенькая сталь у меня Колеса и корпуса: 1.4317 DIN EN 10283 Материал-заменитель: Сталь 08Х12Н4ГСМЛ ГОСТ 977-88. Вал: A564 Type 630-H1150D Материал-заменитель: Сталь 07Х16Н4Б ГОСТ 5632-2014. По третьей теории прочности оцениваю. сигма1 - сигма3 Интенсивность, короче..  
    • Fedor
      Высокопрочные материалы скорее хрупкие в таких надо по сигма 1 или 3 смотреть предельное состояние и они чувствительны к концентрации поэтому стоит конструктивно понизить напряжения через скругления и скосы ... 
    • Sla_68
      у меня импорт идет в настройках obj и stl  как твердое тело. Как сетку я не пробовал.. возможно что и ошибок нет при такой настройке импорта. Но очень хочется портить как твердотел или поверхность там 2 файла первый - вызывает проблему, второй - не вызывает
    • andrey2147
      Мне привезли один и я в нем "ни бельмеса". Наладчики слились.........   Что такое "фидбэк" ?  
    • Jesse
      да это программа просто криво показывает)       глянул по справочнику что @AlexKazскинул. Для отверстий в "цилиндрическом тоннеле" ~2 коэффчиг.   не. Ну самом деле.. это ведь реально изврат большую болванку считать?! Мне там допустим ещё контактную задачу надо было решить... Даже с циклической симметрией на сетке "средней добротности" выйдет уйма времени.  Я даже удивлён честно сказать, что никто так не балуется. Чтож, буду первопроходцем p.s.: да на самом деле я более чем уверен что отверстия не повлияют. А картинки разноцветные нужны...
    • Acce
    • SAPRonOff
      хз - точно не подскажу, но как минимум Гербарий был эффективным шагом в получении соответвующих компетенция всей команды математиков в Топ Системах для разработки RGK.
    • Shura762
      "Гербарий" это название ОКР которое потом и стало РГК?
×
×
  • Создать...