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

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

С учетом последних комментов:

у вас

при добавлении вида на чертеж

событие

m_Draw.AddItemNotify += new DDrawingDocEvents_AddItemNotifyEventHandler(m_Draw_AddItemNotify);
не вызывается?
Ссылка на сообщение
Поделиться на других сайтах


С учетом последних комментов:

у вас

событие

m_Draw.AddItemNotify += new DDrawingDocEvents_AddItemNotifyEventHandler(m_Draw_AddItemNotify);
не вызывается?

Да, не вызывается совсем. Причем проверял макросом написанным на VBA, та же самая история.

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

andrey1307n2

попробуйте <noindex>это</noindex> событие.

Скорее всего, добавление вида не относится к AddItemNotify.

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

Это работает. но тогда действуем по методу изложенному в сообщении #307.

Сначала тоже так думал, но, как ни странно- относится.

<noindex>https://forum.solidworks.com/message/328008#328008</noindex>

Просто я работаю с SolidWorks 2008. К версии SolidWorks 2012 много чего поправили и изменили. Это не первый момент который наковырял.

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

Доброе время суток. Возникла сложность с написанием макроса, может кто-нибудь знает как разрешить проблему. О процедуре запуска макроса: создаем сборочный проект в SolidWorks, добавляем файл TestPART-1-4, далее выделяем два отверстия и верхнюю грань (ctrl+leftclick), запускаем макрос Termpaper, 2 пальца и пластина сопрягаются кое-как,сложность возникла в корпусной плите, она должна лежать поверх всего, если кто знает как это исправить помогите. Заранее спасибо. Все детали и макрос в архиве.

ar.rar

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

Здравствуйте!

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

Вот что получилось:

Sub main()

Set swApp = _

Application.SldWorks

Set Part = swApp.ActiveDoc

boolstatus = Part.Extension.SelectByID2("uyuuu.SLDPRT", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)

Part.ClearSelection2 True

boolstatus = Part.AddConfiguration2("500", "", "", True, False, False, True, 256)

boolstatus = Part.Extension.SelectByID2("", "FACE", -4.78377904437366E-03, 1.49999999999864E-02, -0.216341755998769, False, 0, Nothing, 0)

boolstatus = Part.Extension.SelectByID2("D1@Вытянуть1@uyuuu.SLDPRT", "DIMENSION", -0.608348364572001, -0.480979725349052, -1.36805847861021, True, 0, Nothing, 0)

Dim myDimension As Object

Set myDimension = Part.Parameter("D1@Вытянуть1")

myDimension.SystemValue = 0.5

Part.ClearSelection2 True

boolstatus = Part.EditRebuild3()

End Sub

Далее я решил создать форму с текствоксом и в него вводить одно числовое значение которое будет менятся. Вот что получилось:

Sub main()

Set swApp = _

Application.SldWorks

Set Part = swApp.ActiveDoc

boolstatus = Part.Extension.SelectByID2("uyuuu.SLDPRT", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)

Part.ClearSelection2 True

boolstatus = Part.AddConfiguration2("500", "", "", True, False, False, True, 256)

boolstatus = Part.Extension.SelectByID2("", "FACE", -4.78377904437366E-03, 1.49999999999864E-02, -0.216341755998769, False, 0, Nothing, 0)

boolstatus = Part.Extension.SelectByID2("D1@Вытянуть1@uyuuu.SLDPRT", "DIMENSION", -0.608348364572001, -0.480979725349052, -1.36805847861021, True, 0, Nothing, 0)

Dim myDimension As Object

Set myDimension = Part.Parameter("D1@Вытянуть1")

myDimension.SystemValue = TextBox1.Value / 1000

Part.ClearSelection2 True

boolstatus = Part.EditRebuild3()

End Sub

Вопрос у меня вот в чем: Как изменить имя конфигурации (сейчас оно равно 500))???

Очень ожидаю ответа. Спасибо!

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

Как изменить имя конфигурации (сейчас оно равно 500))???

Вероятно: <noindex>http://help.solidworks.com/2010/english/ap...rationname.html</noindex>
Ссылка на сообщение
Поделиться на других сайтах

maxfederal

Для начала, вешайте изменение значения на кнопку а не на загрузку формы))) Иначе получается деление на null.

И что не получается то?

boolstatus = swModel.AddConfiguration2("500", "", "", true, false, false, true, 256);

			Dimension swDimension = default(Dimension);

			swDimension = (Dimension)swModel.Parameter("D1@Бобышка-Вытянуть1");

			swDimension.SystemValue = Convert.ToInt32(textBox1.Text) / 1000;

			swModel.ClearSelection2(true);

			boolstatus = swModel.EditRebuild3();
Ссылка на сообщение
Поделиться на других сайтах

maxfederal

Какая разница? Синтаксис один и тот же.

Ещё раз:

Для начала, вешайте изменение значения на кнопку а не на загрузку формы))) Иначе получается деление на null.

и

И что не получается то?

на С шарпе написано,

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

Как изменить имя конфигурации (сейчас оно равно 500))???

Я почител, но никак не могу понять что необходимо написать в коде
Например, это:
'Объявляем всё, что нужно

Dim swApp As SldWorks.SldWorks

Dim swModel As ModelDoc2

Set swApp = Application.SldWorks

Set swModel = swApp.ActiveDoc





'VV===========тут происходит смена конфигурации и переименование=================VV

'Меняем активную конфигурацию, если надо, в данном случае с именем 500

swModel.ShowConfiguration2 "500"



'Меняем имя активной конфигурации, например, на 200,

'если указанное имя в конфигурациях уже есть, то переименование не произойдёт

swModel.ConfigurationManager.ActiveConfiguration.Name = "200"
Ссылка на сообщение
Поделиться на других сайтах

streamdown, подскажите можно ли записывать макрос на си шарпе а не на ВБА?

Все меняет и работает, но мне необходимо чтобы конфигурация называлась так как пользователь ввел в текстбоксе. Как его привязать?.

(swModel.ConfigurationManager.ActiveConfiguration.Name = TextBox1)

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

maxfederal

Попробуйте прочитать справку по API и по самому VBA!

Private Sub CommandButton1_Click()

Set swApp = CreateObject("SldWorks.Application")

 Set Part = swApp.ActiveDoc

 

boolstatus = Part.AddConfiguration2(TextBox2.Value, "", "", True, False, False, True, 256)

Dim myDimension As Object

Set myDimension = Part.Parameter("D1@Бобышка-Вытянуть1")

myDimension.SystemValue = TextBox1.Value / 1000

Part.ClearSelection2 True

boolstatus = Part.EditRebuild3()

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

Как его привязать?.

(swModel.ConfigurationManager.ActiveConfiguration.Name = TextBox1)

swModel.ConfigurationManager.ActiveConfiguration.Name = TextBox1.Value

подскажите можно ли записывать макрос на си шарпе а не на ВБА?

Так же как и VBA, только в окне сохранения выбрать другой тип файла (это кажется с SW2010, раньше такого не было).
Ссылка на сообщение
Поделиться на других сайтах

swModel.ConfigurationManager.ActiveConfiguration.Name = TextBox1.Value

На эту строчку ругается редактор макросов

а если предварительно новое имя конфы записать в текстовую переменную:

Dim confName as StringconfName = TextBox1.ValueswModel.ConfigurationManager.ActiveConfiguration.Name = confName
в прикрепке архив с рабочим макросом. макрос отработал нормально - в textbox вводи новое имя конфы, жми commandbutton, кофа переименовывается.

Скрытый текст: подключенные библиотеки:
Visual Basic For Applications

SolidWorks Extensibility Type Library

OLE Automation

SldWorks 2012 Type Library

SolidWorks 2012 Constant type library

SolidWorks 2012 Commands type library

Microsoft Forms 2.0 Object Library

Evaluation1

Macro2.zip

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

Спасибо большое!!!

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

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

maxfederal

Попробуйте прочитать справку по API и по самому VBA!

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

Появилась неожиданая проблемка.

У вас не проблемки, а одна большая проблема и эта проблема заключается в незнание основ не то, что SOLIDWORKS API, а даже основ программирования. На таких познаниях далеко не уедешь, нужно вдумчивое изучение базовых примеров по основам программирования, например: "Hello, Word!"

А также необходимо подтянуть базовые познания:

1. Как работать со справочной системой и что такое Help

2. Базовые методы поиска и составления запросов в поисковых системах по интернету.

Такое чувство что форма не видимая.

А вы её отображали, что бы увидеть? Что-нибудь вроде этого: UserForm1.show vbModal или UserForm1.show vbModeles
Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Andrey_kzn
      А оси начинают движение в референтную точку? Или сразу при запуске реферирования возникает ошибка? Датчики какие на линейной и на круговой оси, чисто инкрементные (надо доехать до концевика при реферировании), или с кодированным расстоянием?  Как организованы аппаратные концевики на круговой оси В? Ошибки с 300000 номерами - это ошибки привода.  NC и PLC  здесь не причём. Такое впечатление, что есть какой-то контроль фактического положения осей перед выполнением процедуры реферирования - дабы не въехать никуда, пока ось не знает своего положения.  попробуйте отреферировать оси из другого положения, разверните ось В, сместите ось V.
    • Anat2015
      Надо пользоваться как Гуглом, так и Яндексом, иногда помогает одно, в другом случае - другое. Раньше пользовался только гуглом, после февраля 2022 стал замечать проблемы, особенно по китайским сайтам.
    • A_1
      Добрый день. Отправляю фрагмент из руководства по эксплуатации по циклу G76. Значение P (высота резьбы) для метрической резьбы можно найти умножив шаг резьбы на коэффициент 0.542. В цикле G76 она задаётся в дискретах станка (в микронах обычно). Это значение всегда примерное, так как на него влияет величина радиуса при вершине резца. Нельзя полагать, что задав рассчитанную высоту резьбы мы получим годную деталь, всегда требуется коррекция, в том числе из-за разной жёсткости системы СПИД. Но правильнее корректировать значение X в цикле G76, а уточненная высота резьбы зависит от этого значения.
    • Maik812
      По компасу есть, по SW 2014 и ниже есть, по step пишите рег выражение. По igs рег выражение и тд. По Creo тоже есть через регулярные. T-Flex нах.. нужен такой CAD :)   #- CMNM ((.*))\. $1 Выводит значение после #- CMNM , но абракотабра.. нужно ковыряться в регулярках чтоб переводил в юникод. http://wincmd.ru/plugring/PCREsearch.html PCREsearch   Еще Можно и http://wincmd.ru/plugring/WinScriptAdv.html скриптовый плагин Все то что выводит ехплорер выводит Shelldetals
    • Maik812
      Есть возможность просто строчку вывести, часто этого достаточно. TextLine.zip  
    • Maik812
      Все есть Плагин PCREsearch  из чего хочешь выведет данные любые,  не закрытый формат был бы. Но даже pdf , есть конверте и выводит .  
    • Rich
      Спасибо, дружище, заработало. До момента установки 23 версии как второй и не знал о таком трабле, все старые вещи работали как часы, ну изредка менял библиотеку.
    • RomanSV
      Здравствуйте всем. И сразу к делу. Есть Итальянский обрабатывающий центр Pama Speedram 2000. При включении станка есть необходимость выводить все оси (X, Y, Z, W, V, http://mir-cnc.ru/public/style_emoticons/default/cool.png на референтные точки и при этом с двумя осями (V линейное перемещение стола и B круговое вращение стола) возникает проблема. Не важно какую из этих двух осей выводить первой на референтные точки выходит ошибка 300512 что в документации описывается как "Ось %1 привод %2 определена параллельная связь". В описании ошибки говорится что: "Актуальное положение ротора и считанная с датчика информация о положении была сравнена при запуске и при этом была определена погрешность более чем в 45 градусов." были проведены следующие действия к попытке устранить ошибку: 1 Заменены управляющие платы приводов этих осей 2 Перезалит образ диска 3 Сброшены NCU и PLC и залиты пусконаладочные архивы Все эти действия ни к чему не привели. До этого в Hardware Config была изменена конфигурация (заменен модуль FLM DI8 M12 на FLM DIO 4/4 M12-2A) но это никак не относится к осям этот модуль отвечает за смазку шпинделя. Так же открывался кожух оси V (линейное перемещение стола) но никаких действий с энкодером не производилось (просто сфоткали название). Сейчас положение стола находится таким образом что энкодер находится прямо под ним и доступ к нему соответственно закрыт. Есть ли у кого ни будь опыт устранения похожей или аналогичной ошибки? Может кто ни будь подскажет в каком направлении нужно двигаться и что проверить? Буду благодарен за любой совет.   С уважением, Роман С.
    • Snake 60
      @Rich Попробуйте заменить CreateObject("SldWorks.Application") на  Application.SldWorks Так же замените Dim swApp As Object на Dim swApp As SldWorks.SldWorks
    • maxx2000
×
×
  • Создать...