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

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

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

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




  • Сообщения

    • SerGuN_78
      Выразился "Инспекция" для общего понимания. А вообще это сторонняя организация, которая проверяет конструкторскую документацию на соответствие ФНП и ЕСКД. Просто исправить нельзя, так как документация уже утверждена. ГОСТ 2.503-2013 п. 4.17 говорит: При необходимости изменения информации, указанной в графах ИИ (кроме графы "Содержание изменения"), к нему выпускают ДИ (приложение Д). Ограничений по изменяемым графам нет. По приложению Д в графе 18 можно указать содержание изменения, соответственно, в данном случае дать указание о внесении номеров ИИ на листы 2, 3, 4. ГОСТ 2.503-2023 п. 4.14 говорит, что перечень граф, изменяемых по ДИ, указать в таблице Г.1, где действительно сказано только о новых значениях задела и внедрения. Поэтому вопрос и родился: Как поступить в описываемом случае?
    • Bot
      2 июля 2024 года компания «АТИМ», официальный авторизованный партнёр компании «Сисофт Девелопмент», приглашает на вебинар для проектировщиков АР и КР, где вы: Узнаете о преимуществах работы с Model Studio CS Строительные решения в сравнении с популярными аналогами; Взвесите все за и против о необходимости перехода на отечественное ПО; Встретите единомышленников и партнеров, с целью обмена опытом и знаниям. Программа вебинара: Model Studio CS — инструмент для разработки сложных промышленных объектов. Обзор возможностей. База стандартных элементов. Ускорение разработки проекта за счёт использования стандартных узлов. Настройка спецификаций. Возможности персонализации проектных требований. Проверка проекта на коллизии. Использование возможностей CADLib для обеспечения точности и качества проектирования. Конкурентный анализ. Сравнение возможностей популярных САПР от ведущих мировых и отечественных производителей. Сессия [...] View the full article
    • LexaZamPoTex
      Добрый день. Нужен совет. Необходимо произвести расчет на устойчивость сжатых стержней. Модель создал, стержень закрепил. По заданию сила должна быть приложена в точке на расстоянии 0,8 от длинны стержня. Не понимаю как это реализовать в данной системе.  
    • Firsol
      Именно, в этом и заключается проблема (все еще не решена кстати). Требуется именно в правильном порядке располагать детали. Контекст заключается в том, что это требуется для раскроя деталей деревянного конструктора. И конечным продуктом являются как раз листы с этим раскроем, в которых детали должны располагаться по порядку (решение сверху), а не по оптимуму расхода. В итоге сейчас тех процесс заключается в том, что после такого нестинга он переправляется в CorelDraw, где все эти детали (зачастую на нескольких листах) вручную перемещаются технологом на требуемые позиции. И это составляет огромное бОльшую часть времени разработки проекта, и это, если найдется решение, можно оптимизировать.
    • Firsol
      Здравствуйте! Появилась такая проблема. При создании спецификации сборки в сборочном чертеже, требуется автоматически подвязать формат чертежа детали. Часто так случается что сборочные чертежи оформляются сильно позже чертежей на детали и подсборки, и иногда спецификация получается довольно большой и не хочется тратить время и труд на то чтобы проваливаться в каждый чертеж детали и смотреть какой у него формат, а потом вручную заполнять эти значения в спецификации сборочного чертежа. Стандартными методами я пока не представляю как это сделать. Возможно есть способ подвязать формат из чертежа к свойству модели и уже оттуда подгружать значение, но как связать модель и чертеж в свойствах в "противоположную сторону" я не представляю. Сразу стоит сказать, что нужно это сделать именно стандартными методами, без макросов, SpecEditor'ов, и т.п.
    • Fixus
      Здравствуйте, подскажите неумному как уменьшить усиление (скорость) по позиционированию? Есть проблема: при обработке стали (проход по плоскости) торцевой фрезой поверхность не гладкая, а полосатая. Большая шероховатость получается. Пусконаладчик говорит, что это из за того что система измерения постоянно пытается поймать размер и шпиндель из-за этого немного гуляет по оси Z. Если уменьшить усиление может этот эффект пропадет, ну или по крайней мере сгладится?   Станок DMU70, стойка TNC 430.
    • Viktor2004
      Автор ничего не сказал о том какая у него система. А почему-то все решили что у него 0i-F Plus
    • Александр1979
      Смотрите руководство B-64695EN, глава "5.4.3 Data batch restore".
    • BSV1
      Надо фрагмент (подсборку) вставить со статусом "Как отдельные тела" или в Параметрах уже вставленного фрагмента для опции "Использовать" выбрать значение "Как отдельные тела".
    • Sla_68
      прикрепил код и тестовые парочку файлов: https://disk.yandex.ru/d/qvXEf70WyKk6eA
×
×
  • Создать...