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

Программное включение/выключение привязок


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

Привет всем! Подскажите, пожалуйста, как программно (желательно, на C#) включить/выключить привязки в SWR (те, которые управляются через Настройки пользователя->Эскиз->Взаимосвязи/привязки).

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


нашел функции GetInferenceMode(), SetInferenceMode(inferenceMode). Действительно отключает привязки, однако назад не включает.

Пример кода:

bool FlagInfer=modDoc.GetInferenceMode();

if (FlagInfer)

{

modDoc.SetInferenceMode(false);//-отключение привязок

}

.....

if (!modDoc.GetInferenceMode())

{

modDoc.SetInferenceMode(FlagInfer);//вернуть привязки - НЕ СРАБАТЫВАЕТ

}

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

Dim swApp As Object

Dim ModelDoc As Object

Dim bRet As Boolean

Dim inferenceMode As Boolean

Sub main()

Set swApp = Application.SldWorks

Set ModelDoc = swApp.ActiveDoc

inferenceMode = ModelDoc.GetInferenceMode()

If False = inferenceMode Then

inferenceMode = ModelDoc.SetInferenceMode(True)

Else: inferenceMode = ModelDoc.SetInferenceMode(False)

End If

End Sub

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

if (modDoc.GetInferenceMode()!=true) //это полагаю всеравно что FlagInfer!=true, если FlagInfer не изменяется в процессе работы программы

{

modDoc.SetInferenceMode(FlagInfer);//оно и не может сработать, ведь выполняется только при условии FlagInfer==false

}
Полагаю неправильно заданы условия, тоесть у тебя это срабатывает когда привязки отключены, а значение переменной присваивается кокраз из modDoc.GetInferenceMode от сюда и получается что значение всегда ложно, и соответвенно привязки не возращаются

А если нужно вернуть после работы программы как было все в начале нужно писать следующее

if (modDoc.GetInferenceMode()!=FlagInfer) 

{

modDoc.SetInferenceMode(FlagInfer);

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

To Kelny:

Все равно не срабатывает. В принципе, условие выполняется и в 1-м, и во 2-м случае. Я грешу уже на работу самой SetInferenceMode(inferenceMode). Даже если задать явно SetInferenceMode(true), результата нет.

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

Можно проверить без всяких условий на VB

Dim swApp As Object

Dim Part As Object

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc

retval = Part.GetInferenceMode()

'Part.SetInferenceMode (False)

Part.SetInferenceMode (True)

End Sub
У меня работает пограйней мере возращает измененное значение.
Ссылка на сообщение
Поделиться на других сайтах

Да. На бейсике действительно, и вкл, и выкл. А на С даже напрямую ф-я не срабатывает на включение (false работает, true - нет)

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

Да. На бейсике действительно, и вкл, и выкл. А на С даже напрямую ф-я не срабатывает на включение (false работает, true - нет)

<{POST_SNAPBACK}>


			SldWorks.SldWorks swApp = new SldWorks.SldWorks();

			SldWorks.ModelDoc2 swModel = swApp.IActiveDoc2;

			bool bres = swModel.GetInferenceMode();

			if (bres == true)

			{

				swModel.SetInferenceMode(false);

			}

			//.............



			if (swModel.GetInferenceMode() == false)

			{

				swModel.SetInferenceMode(true);

			}
Вообще-то все работает. VS2005, SW2006. У меня на VB на некоторых фнкциях, если напишешь

if bres = true Then .....
не проходило, а

if bres <> false Then .....
все нормально. Попробуй поиграться с операторами, может такая же фича.
Ссылка на сообщение
Поделиться на других сайтах

Достал, поставил SWR2006. Все заработало, так что это был глюк 2005-го.

Всем спасибо.

Тема закрыта.

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

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

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

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

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

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

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

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

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

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

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




×
×
  • Создать...