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

Setsystemvalue3 C++


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

Привет,

Кто небуть помогите,

Надо постабит параметер на "SKETCHSEGMENT", фунция визиваэт ADDDimension, но невстаблеет нужен параметер.


IModelDoc2 pModel2;

 IDimension pDim;

double RK_v;

pModel2.SelectByID("Arc1","SKETCHSEGMENT",0,0,0);

		 pModel2.AddDimension2(0,0,0);	  

		 pDim.SetSystemValue(RK_v);

Наверно што небуть я пропыстил в этом коде, но сам немогу понять што.

Помогите!!!

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


Можно немного и по другому, если не знаем имя размера. Код на C#, на С++ аналогично

public void SetNewDimension()

		{

			bool bDim = iSwApp.GetUserPreferenceToggle((int)swUserPreferenceToggle_e.swInputDimValOnCreate);

			if (bDim == true)

				iSwApp.SetUserPreferenceToggle((int)swUserPreferenceToggle_e.swInputDimValOnCreate, false);



			IModelDoc2 swModel = (IModelDoc2)iSwApp.ActiveDoc;

			int DocType = (int)swModel.GetType();

			if (DocType != (int)swDocumentTypes_e.swDocPART)

				return;

			ISelectionMgr swSelMgr = (ISelectionMgr)swModel.SelectionManager;



			bool bres = swModel.Extension.SelectByID2("Arc1", "SKETCHSEGMENT", 0, 0, 0, false, 0, null, 0);

			swModel.AddDimension2(0, 0, 0);

			swModel.ClearSelection();



			bres = swModel.Extension.SelectByID2("", "DIMENSION", 0, 0, 0, false, 0, null, 0);



			double dVal = 0.1; // нужное значение размера в метрах



			IDisplayDimension swDisplayDimension = (IDisplayDimension)swSelMgr.GetSelectedObject5(1);

			IDimension swDimension = (IDimension)swDisplayDimension.IGetDimension();

			swDimension.SetSystemValue3(dVal, (int)swSetValueInConfiguration_e.swSetValue_InAllConfigurations, null);



			swModel.ClearSelection2(true);

			iSwApp.SetUserPreferenceToggle((int)swUserPreferenceToggle_e.swInputDimValOnCreate, bDim);

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

Спосибо за советы. Shvg ваш код работает до AddDimension2,

public void SetNewDimension()

{

bool bDim = iSwApp.GetUserPreferenceToggle((int)swUserPreferenceToggle_e.swInputDimValOnCreate);

if (bDim == true)

iSwApp.SetUserPreferenceToggle((int)swUserPreferenceToggle_e.swInputDimValOnCreate, false);

IModelDoc2 swModel = (IModelDoc2)iSwApp.ActiveDoc;

int DocType = (int)swModel.GetType();

if (DocType != (int)swDocumentTypes_e.swDocPART)

return;

ISelectionMgr swSelMgr = (ISelectionMgr)swModel.SelectionManager;

bool bres = swModel.Extension.SelectByID2("Arc1", "SKETCHSEGMENT", 0, 0, 0, false, 0, null, 0);

swModel.AddDimension2(0, 0, 0);

а патом, SW ждёт пока я засуну параметер, немомогает ClearSelection(). Здес и зовисает.

Я решил перенастит 3 "SKETCHPOINT" по нужнаму параметру "Arc1". Хоть работает :D

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

Не знаю, у меня работает. Надо бы, наверное, поконкретнее прояснить ситуацию. Что и как у Вас делается до вставки размера?

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

Добры день,

Проблема втом, што я самаумка в програмирование.

Моя програма читает по строкам Excel файл, и чертит контуры в SW потом делает "LOFT".

http://img139.imageshack.us/my.php?image=loftlo8.jpg

http://img139.imageshack.us/my.php?image=loftlo8.jpg

Это приложение к моей дипломной работы, "Параметризация обектов графикий".

1 часть програмы работает отлично, она чертит и делает "LOFT". Я решил ечо зделать и "ReCheck" функцию, каторая корегирует "Sketch" по изменинаму "Excel" файлу(переносит точки).

Так мой код :

boolstatus=pModel2.SelectByID(strSk,"SKETCH",0,0,0);

	   pModel2.EditSketch();

		pModel2.ClearSelection();

		pModel2DocExtension=pModel2.GetExtension();

			

		boolstatus=pModel2.SelectByID("Line1","SKETCHSEGMENT",0,0,0);

		pModel2.SketchConstraintsDel(0,"sgFIXED");	

		boolstatus=pModel2.SelectByID("Line2","SKETCHSEGMENT",0,0,0);

		pModel2.SketchConstraintsDel(0,"sgFIXED");	

		boolstatus=pModel2.SelectByID("Line3","SKETCHSEGMENT",0,0,0);

		pModel2.SketchConstraintsDel(0,"sgFIXED");	

		boolstatus=pModel2.SelectByID("Line4","SKETCHSEGMENT",0,0,0);

		pModel2.SketchConstraintsDel(0,"sgFIXED");	

		boolstatus=pModel2.SelectByID("Line5","SKETCHSEGMENT",0,0,0);

		pModel2.SketchConstraintsDel(0,"sgFIXED");	

		boolstatus=pModel2.SelectByID("Arc1","SKETCHSEGMENT",0,0,0);	

		pModel2.SketchConstraintsDel(0,"sgFIXED");	

		boolstatus=pModel2.SelectByID("Arc2","SKETCHSEGMENT",0,0,0);	

		pModel2.SketchConstraintsDel(0,"sgFIXED");	

		boolstatus=pModel2.SelectByID("Arc3","SKETCHSEGMENT",0,0,0);	

		pModel2.SketchConstraintsDel(0,"sgFIXED");	

		boolstatus=pModel2.SelectByID("Arc4","SKETCHSEGMENT",0,0,0);	

		pModel2.SketchConstraintsDel(0,"sgFIXED"); 

		pModel2.ClearSelection();

 //Смотрит или координаты точи совпадает с "Excel". если нет, то переносит их.

	pModel2DocExtension.SelectByID2(strPointName,"SKETCHPOINT",0,0,0,true,1,NULL,0);

	pSelMgr = pModel2.GetSelectionManager();

	pSPoint=pSelMgr.GetSelectedObject3(1);

	pxSolid = pSPoint.GetX();

	pySolid = pSPoint.GetY();



	if (pxSolid != px || pySolid != py) 

	{

	  pSPoint.SetCoords( px, py,0);

	  pModel2.SketchAddConstraints("sgFIXED");

	  pModel2.ClearSelection();

//Виберает "Arc1" его точки уже переносение по новым координатам, а радиус oсталса старым, так надо изменит и его..

 boolstatus = pMoldel2.Extension.SelectByID2("Arc1", "SKETCHSEGMENT", 0, 0, 0, false, 0, null, 0);

pModel2.AddDimension2(0, 0, 0);

pModel2.ClearSelection();

Я решил перенести и центр "Арс1". Но все таки есть азарт наити причину почему мне несробатает "AddDimension" и "SetSystemValue3".

И извените за много ошибок.

post-8576-1175061932_thumb.jpg

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

To Rollas

В вашем коде Вы сначала освобождаете "Arc1" от фиксации

boolstatus=pModel2.SelectByID("Arc1","SKETCHSEGMENT",0,0,0);	

		pModel2.SketchConstraintsDel(0,"sgFIXED");
так его можно опять зафиксировать, изменив размер

bool bres = swModel.Extension.SelectByID2("Arc1", "SKETCHSEGMENT", 0, 0, 0, false, 0, null, 0);

				if (bres == false)

				{

					Debug.WriteLine("Не выбран Arc1");

					return;

				}

				else

				{

					ISketchSegment swSketchSegment = (ISketchSegment)swSelMgr.GetSelectedObject5(1);

					int TypeSketch = swSketchSegment.GetType();

					if (TypeSketch != (int)swSketchSegments_e.swSketchARC)

						return;

					ISketchArc swSketchArc = (ISketchArc)swSketchSegment;

					double radius = swSketchArc.GetRadius();

					if (radius != newRadius) // newRadius - новое значение, например из Exel

						swSketchArc.SetRadius(newRadius);



					swModel.SketchAddConstraints("sgFIXED");

				}

Ну а если хотите поставить размер, попробуйте:

bool bres = swModel.Extension.SelectByID2("Arc1", "SKETCHSEGMENT", 0, 0, 0, false, 0, null, 0);

				if (bres == false)

				{

					Debug.WriteLine("Не выбран Arc1");

					return;

				}

				else

				{

					ISketchSegment swSketchSegment = (ISketchSegment)swSelMgr.GetSelectedObject5(1);

					int TypeSketch = swSketchSegment.GetType();

					if (TypeSketch != (int)swSketchSegments_e.swSketchARC)

						return;

					ISketchArc swSketchArc = (ISketchArc)swSketchSegment;

					double radius = swSketchArc.GetRadius();

					if (radius != newRadius) // newRadius - новое значение, например из Exel

						swSketchArc.SetRadius(newRadius);



					SelectData swSelectData = (SelectData)swSelMgr.CreateSelectData();

					bres = swSketchSegment.Select4(false, swSelectData);

					double xArc = swSelectData.X;

					double yArc = swSelectData.Y;

					double zArc = swSelectData.Z;



					IDisplayDimension swDisplayDimension = (IDisplayDimension)swModel.AddDimension2(xArc, yArc, zArc);

				}

это из моего старого кода, естественно, удалите:

swModel.AddDimension2(0, 0, 0);

			swModel.ClearSelection();



			bres = swModel.Extension.SelectByID2("", "DIMENSION", 0, 0, 0, false, 0, null, 0);



			double dVal = 0.1; // нужное значение размера в метрах



			IDisplayDimension swDisplayDimension = (IDisplayDimension)swSelMgr.GetSelectedObject5(1);

			IDimension swDimension = (IDimension)swDisplayDimension.IGetDimension();

			swDimension.SetSystemValue3(dVal, (int)swSetValueInConfiguration_e.swSetValue_InAllConfigurations, null);
Ссылка на сообщение
Поделиться на других сайтах

To Shvg,

Огромное спосибо, за вашие советы. Искрене блогодарин и рад, што нашлис Вы и захотели мне помоч. Если года небуть будете у нас в Вилнюсе, в Литве, то угосчю пивом и покрепче.

Надеюс и я когда небуть досдигну токого уравня, штобы мог тадь советы другим.

СПОСИБО!!!!

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • davidovka
      можно попробовать отрыть другим КАДом. В файлах геометрия хранится отдельно от "дерева построения", поэтому многие КАДы, или софт для рендера, могут открыть файлы друг друга без конвертации.
    • Kelny
      рекомендую воспользовать другим вариантом: или как писал выше сделать блок, а что бы можно было разные значения вбивать под знаком, можно добавить заметке в блоке ИМЯ при редактировании блока и тогда блок будет один, а значения в нём может быть разное.   А если хочется повторить фокус с: То нужно вставлять всю строчку и не удалять пробелы (или добавлять дополинтельные), т.к. этот метод на уровне шаманства - может сработать или сбойнуть в какой-нибудь другой версии.
    • EAleksey
      Добрый день, вот этими пробелами регулируйте, у всех просто разные настройки высоты шрифтов.
    • malvi.dp
      Пару строк, можно. В модуле Roughness_run идем в процедуру "main" и перед строкой "FrmRoughness.Show" вставляем следующий код:  
    • gudstartup
      никак. это не предназначено для пряного редактирования. файл создан станкостроителем из исходников которые есть у станкостроителя а потом скомпилирован в p-code . напрямую редактировать это примерно как exe файл в виндоус пытаться изменить. про то за что отвечают переменные данные в диалоговых окнах у вас должно быть написано в руководстве по эксплуатации станка а если такового нет то вы обратитесь к станкостроителю и может они вышлют вам отдельную инструкцию.
    • IgP
      Автоматически. Но это настраивается, ну или описывается/задаётся в файле параметров резьбы thd_metric.dat. Этот файл д.б. в каталоге UGII. thd_metric.dat
    • Bot
      АСКОН представляет новую, 23-ю версию своего флагманского продукта — системы трехмерного проектирования КОМПАС-3D. Ориентиром в ее разработке стали потребности предприятий высокотехнологичных отраслей промышленности. Вместе с базовыми инструментами 3D и 2D-проектирования обновлены отраслевые приложения для КОМПАС-3D. Игорь Волокитин, директор по продукту КОМПАС-3D С каждым новым релизом КОМПАС-3D становится более функциональным и производительным инструментом инженера. Новая версия содержит расширенные возможности проектирования, реверс-инжиниринга, работы с импортированной геометрией, инструментами моделирования изделий сложных форм. Мы убеждены, что реализованные в этой версии предложения предприятий высокотехнологичных отраслей будут массово востребованы всеми пользователями. Продолжается разработка нативного КОМПАС-3D для отечественных операционных систем на базе Linux. В этом году планируется выпуск бета-версии. Работаем по плану в соответствии с утвержденной [...] View the full article
    • ЮрЮрыч
      Здравствуйте, у меня с разрывом линия получилась.Новый точечный рисунок (2).bmp
    • Bot
      Передовая инженерная школа Санкт-Петербургского политехнического университета Петра Великого «Цифровой инжиниринг» (ПИШ СПбПУ) заключила лицензионный договор на распространение своего ключевого программного продукта — Цифровой платформы по разработке и применению цифровых двойников CML-Bench®. Генеральным дистрибьютором CML-Bench® на территории России, Республики Беларусь и Казахстана выбрана высокотехнологичная инжиниринговая компания ООО Лаборатория «Вычислительная механика» (CompMechLab®) —spin-out СПбПУ. CML-Bench® — SPDM-система управления деятельностью в области системного цифрового инжиниринга, цифровая платформа разработки и применения цифровых двойников как высокотехнологичных промышленных изделий или продуктов, так и физико-механических процессов, а также технологических / производственных процессов изготовления. Разработки на базе CML-Bench® реализуются в соответствии с национальным стандартом Российской Федерации — ГОСТ Р 57700.37–2021 «Компьютерные [...] View the full article
    • Viktor2004
      какая ссылка не рабочая? Ссылка на этот же форум. Там в низу пятой страницы мое видео как создавать файлы MACRO
×
×
  • Создать...