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

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

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 пользователей

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



  • Сообщения

    • Mr_Gray
      Если и расфрезеровывать, то обязательно с коррекцией радиуса инструмента G41, чтобы попасть в середину поля допуска. Но лучше все же разверткой или расточной головкой.
    • lem_on
      При хорошей геометрии станка, можно и расфрезеровать. Если неглубокие отверстия, можно и тс сверлом сразу размер получить.
    • Snake 60
      Скорее всего исправляли в конкретной сборке, для конкретных тел. Насколько я помню, надо в самом эскизе профиля заполнить свойство Description
    • Snake 60
      Делаете дырку в свае - вставляете в нее трубу и 2 человеко-силы крутят сваю ) Дёшево и сердито и не нужен никакой планетарный редуктор ))
    • gudstartup
      вы всегда ищите свой путь или будете делать то что вам советуют? с самого начала прежде чем приступать к экспериментам вам нужно было вынуть носитель и сделать образ. diskcopy делает копию гибкого диска на другой а вам надо сделать образ жесткого диска или карты памяти. делайте как советует @Viktor2004 иначе еще чего нибудь сломаете или вам станок не нужен и вы его приобрели для экспериментов ? вот а печатной машинке из прошлого нельзя а вот на синумерике можно - удивительные вещи в настоящем происходят!! на 100 % уверен что там не модуль а либо писимиси ай либо жд @mircomax81 хотите работать в дос почитайте помощь по командам 
    • PuKoLLleT
      Доброго дня всем. Поделитесь опытом,раньше такое не доводилось делать. На торце фланца нужно сделать  восемь отверстий ф17H7 на токарно-фрезерном станке с осью Y ,имеется ManualGuide.В моем понимании нужно просверлить,а затем торцевой фрезой расточить нужный диаметр.Получится такой фокус,или надо разверткой доводить нужный размер?  Стойка Fanuc 0i-Tf.
    • Snake 60
      Всё верно, я даже русификатор делал для него (ушло на это где-то около года). Хороший софт был, я всех знакомых на него подсадил в свое время :) У меня даже где-то образ на виртуалке лежит с SW2014+MechSoft, Жаль, что автодеск его поглотил, а не DS :( А по сути вопроса, проектировал двухступенчатый планетарный редуктор в свое время. Что было нужно: Справочник по планетаркам (автора не помню, если надо поищу), из софта MathCAD + GearTeq (софтина идет вместе с GearTrax, только рассчитывает и моделирует несколько зацеплений согласно выбранной схеме, в том числе планетарки) Ой и ошибаетесь. Звездочки - не равно зубчатые колеса в планетарке) Мы намучились с малой точностью изготовления на эл.эрозии, а Вы лазером ))) Был собран опытный образец редуктора с незакаленными деталями, чисто проверить геометрию, отладить сборку. Так потом начальство этот редуктор сказало испытать в бою, как я не противился)) Помер за пару дней интенсивных нагрузок ))) Материал, термообработка и точности изготовления решают )
    • Snake 60
      @Тихоход  Ещё один вариант - изучать программирование и писать свою программу/макрос. Вот пример конфигуратора двери: https://www.youtube.com/watch?v=wv4HryWQBSk
    • mircomax81
      Посредством Diskcopy можно сделать адекватную копию на флоппи диск?
    • Andrey_kzn
      Да, ведь советовали автору вытащить жёсткий диск и сделать образ. Неужели самому не интересно, как устроен этот старый промкомпьютер? Там может стоять как жёсткий диск, так и CF-карта, или же Disc-on-chip или Disc-on-module.  Как-то очень давно, на подобном промышленном оборудовании (большая печатная машина) я не смог перенести  ПО с родной CF - карты на другую, такого же размера но другой фирмы. Была также станочная оболочка под досом.  Образ я делал Нортон гостом, развернул его на другую CF-карту без проблем. Машина загрузилась нормально и работала ровно 2 дня, на неродной CF-карте,  потом зависла, и отказалась загружаться. Пришлось вызывать сервисника. От него мы узнали, что нельзя просто так взять и заменить карту  - носитель системного ПО, на другую. А полезли мы туда, так как руководство захотело печатать отчёты по работе машины. В станочном ПО такая функция была. Вот только принтер надо было купить у фирмы - производителя этой самой машины. В попытках заставить работать другой принтер мы редактировали файл  AUTOEXEС.BAT, на предмет загрузки драйвера принтера, ничего не получилось, зато перестали открываться некоторые страницы станочного ПО.  Образ у нас был давно снят, и мы развернули его на другую карту памяти. Родную карту я трогать не стал (как чувствовал, что нельзя ). Сервисник восстановил ПО с архивной дискеты на родную карту памяти, и всё заработало. Дискеты с архивами ПО шли вместе с документацией к машине.  Там были дискеты с Досом, станочной оболочкой, параметрами приводов, программой ПЛК. Он же и предупредил нас о предельно аккуратном обращении с родной картой памяти, и посоветовал немедленно сделать образы с архивных дискет, что мы сразу и проделали.. Вот такой сюрприз от машины эпохи Дос.
×
×
  • Создать...