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

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

Добрый день! Пишу программу на C# в VS 2010 которая автоматически выполняет необходимые действия в SolidWorks и выполняет расчет в Simulation. Проблем с самим построением в Солиде особо нет, так как можно практически все записать через макросы, а вот в Simulation макросы не записываются. Если есть способ записать макрос с Simulation подскажите пожалуйста.

Кто может поделиться опытом работы с такими приложениями, если можно коды программ (не из хелпа API).

Так же в частности возник вопрос как запускать solid так, чтоб он загружал добавления (simulation)???

При таком запуске не загружаются добавления :

swApp = (SldWorks)Activator.CreateInstance(Type.GetTypeFromProgID("SldWorks.Application"));

Если делать запуск просто через EXEшник Солида то его нельзя скрыть, а мне нужно, что б он работал в фоновом режиме.

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


CLSID clsid;

CLSIDFromProgID(L"SldWorks.Application", &clsid);

HRESULT hres;

CoInitialize(NULL);

ISldWorks *swApp = NULL;

::CoCreateInstance(clsid, NULL, CLSCTX_LOCAL_SERVER, __uuidof(ISldWorks), (void**)&swApp);

hres = swApp->put_UserControl(VARIANT_TRUE);

hres = swApp->put_Visible(VARIANT_TRUE);

CComBSTR bstrFileName(L"F:\\Kursovoi\\Kursovoi\\Сборка.asmdot");

CComBSTR bstrConfig(L"Default");

ISldWorksPtr SldWorks("SldWorks.Application");

IModelDoc2* swModel = NULL;

IAssemblyDoc* Asemb = NULL;

hres = swApp->INewDocument2(bstrFileName,0,0,0,&swModel);

VARIANT_BOOL Vis= VARIANT_FALSE;

CComBSTR bstrFileName1(L"F:\\Крышка.SLDPRT");

hres =Asemb ->AddComponent(bstrFileName1,1,1,1,&Vis);

помогите в сборку деталь закинуть, а то у меня что то не получается Крышка.SLDPRT открыт у меня в солиде

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

Здравствуйте, всех с праздником!! А подскажите пожалуйста как переместить активный вид на чертеже (задать его положение). Запись макроса не помогает. В справке пытался что-то по положению вида найти, не смог к сожалению. На VBA пишу.

Хотя бы какой запрос в поиск справки вводить, а то уж обыскался. Буду очень благодарен.
Ссылка на сообщение
Поделиться на других сайтах

При добавлении компонентов в сборку с помощью функции AddComponent5(,.....)

он бросает детали в одну точку для точного расположения деталей рекомендуют использовать ITransform2 больше ничего конкретного в help не указано. Кто нибудь занимался этой проблемой?

Работаю на С++

Один из вариантов. Компоненты позиционируются согласно arrayData_1 и arrayData_2.

Скрытый текст: Code C++

// Reaper_6.cpp : Defines the entry point for the console application.

//



#include "stdafx.h"

#import "sldworks.tlb" raw_interfaces_only, raw_native_types, no_namespace, named_guids  //the SolidWorks type library

#import "swconst.tlb"  raw_interfaces_only, raw_native_types, no_namespace, named_guids  //the SolidWorks constant type library



int _tmain(int argc, _TCHAR* argv[])

{

	// добавление двух деталей в сборку. Только пример.

	// пути мои. Только для примера

	CComBSTR strFilePart_1 = L"g:\\Шпонка.SLDPRT";

	CComBSTR strFilePart_2 = L"g:\\Подкладка.SLDPRT";

	CComBSTR nameConfig = L"Default";

	CComBSTR strTemplateAsm = L"g:\\SolidWorks\\SW2011_Shvg\\Data\\templates\\Assembly.asmdot";

	CComBSTR strFileAsm = L"g:\\Proba_asm.SLDASM";



	CComBSTR strError;



	VARIANT_BOOL bres;

	long lErrors, lWarning;



	::CoInitialize(NULL);



	HRESULT hres;

	CoInitialize(NULL);

	CLSID clsid;

	CLSIDFromProgID(L"SldWorks.Application", &clsid);

	

	ISldWorks *swApp = NULL;

	CoCreateInstance(clsid, NULL, CLSCTX_LOCAL_SERVER, __uuidof(ISldWorks), (void**)&swApp);

	if(swApp == NULL)

	{

		::CoUninitialize();

		return 1;

	}

	hres = swApp->put_Visible(VARIANT_TRUE); // если процесс запущен, то показываем SW



	IModelDoc2 *swModel = NULL;

	hres = swApp->get_IActiveDoc2(&swModel);



	long lresult;

	if(swModel != NULL)

	{

		strError = L"Для данного примера все документы должны быть закрыты, а SolidWorks загружен!";

		swApp->SendMsgToUser2(strError, swMbStop, swMbOk, &lresult);

		::CoUninitialize();

		return 1;

	}



	// создаем новый документ сборки, только для примера

	hres = swApp->INewDocument2(strTemplateAsm, 0, 0.0, 0.0, &swModel); 

	if(swModel == NULL) // если не создали, то выходим из функции

	{

		strError = L"Новый документ не создан!";

		swApp->SendMsgToUser2(strError, swMbStop, swMbOk, &lresult);

		swApp = NULL;

		::CoUninitialize();

		return 1;

	}



	hres = swModel->SaveAs4(strFileAsm, swSaveAsCurrentVersion, swSaveAsOptions_Silent, &lErrors, &lWarning, &bres); // сохраняем документ сборки

	if(bres == VARIANT_FALSE) // если не сохранили, то выходим из функции

	{

		strError = L"Документ не сохранен!";

		swApp->SendMsgToUser2(strError, swMbStop, swMbOk, &lresult);

		swApp = NULL;

		::CoUninitialize();

		return 1;

	}

	swModel = NULL;



	// открытие и добавление детали в сборку, возможно, если она уже окрыта потребуется проверка и астивация детали

	// здесь только для примера упрощено

	hres = swApp->OpenDoc6(strFilePart_1, swDocPART, swOpenDocOptions_Silent, L"Default", &lErrors, &lWarning, &swModel); // открываем первую деталь

	if(swModel == NULL) // если не открыли первую деталь, то выходим из функции

	{

		strError = L"Первый документ не открылся!";

		swApp->SendMsgToUser2(strError, swMbStop, swMbOk, &lresult);

		swApp = NULL;

		::CoUninitialize();

		return 1;

	}

	swModel = NULL;



	hres = swApp->IActivateDoc3(strFileAsm, VARIANT_TRUE, &lErrors, &swModel); // активируем документ сборки

	IAssemblyDoc *swAssembly = NULL;

	hres = swModel->QueryInterface(IID_IAssemblyDoc, (void**)&swAssembly);



	IComponent2 *swComponent_1 = NULL;

	hres = swAssembly->AddComponent4(strFilePart_1, nameConfig, 0.05, -0.03, 0.1, &swComponent_1); // добавляем первый компонент в сборку



	VARIANT vXForm;

	double arrayData_1[16]; 

	arrayData_1[0]=1.0;

	arrayData_1[1]=0.0;

	arrayData_1[2]=0.0;

	arrayData_1[3]=0.0;

	arrayData_1[4]=1.0;

	arrayData_1[5]=0.0;

	arrayData_1[6]=0.0;

	arrayData_1[7]=0.0;

	arrayData_1[8]=1.0;

	arrayData_1[9]=0.07;

	arrayData_1[10]=0.1;

	arrayData_1[11]=0.01;

	arrayData_1[12]=1.0;

	arrayData_1[13]=0.0;

	arrayData_1[14]=0.0;

	arrayData_1[15]=0.0;



	IMathTransform *swMathTransform = NULL;

	hres = swComponent_1->get_Transform2(&swMathTransform);



	hres = swMathTransform->get_ArrayData(&vXForm);



	SAFEARRAY *pSA = V_ARRAY(&vXForm);

	SafeArrayLock(pSA);

	for(long i = 0; i < 16; i++)

	{

		double value = arrayData_1[i];

		hres = SafeArrayPutElement(pSA, &i, (void*)&value);

	}



	hres = swMathTransform->put_ArrayData(vXForm);

	hres = swComponent_1->put_Transform2(swMathTransform); //



	hres = swApp->OpenDoc6(strFilePart_2, swDocPART, swOpenDocOptions_Silent, L"Default", &lErrors, &lWarning, &swModel); // открываем первую деталь

	if(swModel == NULL) // если не открыли первую деталь, то выходим из функции

	{

		strError = L"Второй документ не открылся!";

		swApp->SendMsgToUser2(strError, swMbStop, swMbOk, &lresult);

		swApp = NULL;

		::CoUninitialize();

		return 1;

	}

	swModel = NULL;



	hres = swApp->IActivateDoc3(strFileAsm, VARIANT_TRUE, &lErrors, &swModel); // активируем документ сборки

	hres = swModel->QueryInterface(IID_IAssemblyDoc, (void**)&swAssembly);





	IComponent2 *swComponent_2 = NULL;

	hres = swAssembly->AddComponent4(strFilePart_2, nameConfig, 0.01, -0.05, 0.0, &swComponent_2); // добавляем второй компонент в сборку



	double arrayData_2[16]; 

	arrayData_2[0]=1.0;

	arrayData_2[1]=0.0;

	arrayData_2[2]=0.0;

	arrayData_2[3]=0.0;

	arrayData_2[4]=1.0;

	arrayData_2[5]=0.0;

	arrayData_2[6]=0.0;

	arrayData_2[7]=0.0;

	arrayData_2[8]=1.0;

	arrayData_2[9]=0.02;

	arrayData_2[10]=0.08;

	arrayData_2[11]=0.04;

	arrayData_2[12]=1.0;

	arrayData_2[13]=0.0;

	arrayData_2[14]=0.0;

	arrayData_2[15]=0.0;



	hres = swComponent_2->get_Transform2(&swMathTransform);



	hres = swMathTransform->get_ArrayData(&vXForm);



	pSA = V_ARRAY(&vXForm);

	SafeArrayLock(pSA);

	for(long i = 0; i < 16; i++)

	{

		double value = arrayData_2[i];

		hres = SafeArrayPutElement(pSA, &i, (void*)&value);

	}



	hres = swMathTransform->put_ArrayData(vXForm);

	hres = swComponent_2->put_Transform2(swMathTransform);



	hres = swModel->EditRebuild3(&bres);



	SafeArrayUnlock(pSA);

	SafeArrayDestroyData(pSA);

	SafeArrayUnaccessData(pSA);

	return 0;

}

arrayData - это ориентация модели на экране, так ведь? При изменении вида модели, изменяется матрица. Её ж не посчитать при вставке в сборку. Можно только прикидочно расставить детальки, например горизонтально.

Хотяяя...можно попробовать преобразовать клик мыши в пространстве сборки и вставить origin детали в это место. Скажите пожалуйста, я правильно понимаю эту IMathTransform?

Нет. В данном примере - это матрица расположение компонента в сборке.

Здравствуйте, всех с праздником!! А подскажите пожалуйста как переместить активный вид на чертеже (задать его положение). Запись макроса не помогает. В справке пытался что-то по положению вида найти, не смог к сожалению. На VBA пишу.

Syntax (OLE Automation)

position = View.Position (VB Get property)

View.Position = position (VB Set property)

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

Кто нибудь занимался этой проблемой?

Так а в чем проблема то?

Кстати, может вам исходники поискать? :wink:<noindex>http://fsapr2000.ru/index.php?showtopic=25...st&p=275314</noindex>

Нет. В данном примере - это матрица расположение компонента в сборке.

Тут я был не прав. Предполагал что нужна ориентация модели, воспроизведённая в сборку. (что-то вроде деталь повёрнута так-то так-то, и в таком же виде вставлена в сборку)

Кстати, можно же и без прогонки массива по variant, сразу в double - <noindex>http://help.solidworks.com/2012/english/ap...lusplus_com.htm</noindex>

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

Кстати, можно же и без прогонки массива по variant, сразу в double - <noindex>http://help.solidworks.com/2012/english/ap...lusplus_com.htm</noindex>

Если это будет аддон, то да. Если же на C++ будет реализован exe-шник, то такой вариант не пройдет. Я предыдущий пример и удалил из-за этого.
Ссылка на сообщение
Поделиться на других сайтах

у меня есть зборка как в сборке выделить ребро или плоскость в с++?

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

Я так запускал, так тоже не будут работать Аддоны!

Я уже решил эту проблему по-другому, запускать любым способом, а потом отдельной командой запускать аддоны, если кому нужно будет, вот код :

string filename = "C:\\Program Files\\SolidWorks Corp\\SolidWorks\\Simulation\\cosworks.dll";

swApp = (SldWorks)Activator.CreateInstance(Type.GetTypeFromProgID("SldWorks.Application.20"));

swApp.UserControlBackground = false;

swApp.Visible = false;

int simul = swApp.LoadAddIn(filename);

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

Если правильно понял проблему.

P.S. Похоже, что с кодом я поторопился...

Я воспользовался вашим кодом единственное что пришлось заменить функции на

hres = swMathTransform->set_ArrayData(vXForm);

hres = swComponent->SetTransformAndSolve2(swMathTransform);

Всё работает

Вот так это работает

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

Я воспользовался вашим кодом единственное что пришлось заменить функции на

hres = swMathTransform->set_ArrayData(vXForm);

hres = swComponent->SetTransformAndSolve2(swMathTransform);

Всё работает

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

Я их из dll вызываю

<noindex>Cae Solidworks</noindex>

Вот так

Предупреждать надо... :smile: Зачем же хотели использовать SAFEARRAY?
Ссылка на сообщение
Поделиться на других сайтах

Предупреждать надо... :smile: Зачем же хотели использовать SAFEARRAY?

Ещё такой вопрос

я назначаю свой материал из своей созданной базы материалов

hres = swModel->QueryInterface(IID_IPartDoc, (void**)&swPart);

hres = swPart->SetMaterialPropertyName2(strConfig, database, material);

Как мне поменять плотность материала на ту которая мне нужна. Например было 7850 а сделать 1650 например ?

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

Здравствуйте, всех с праздником!! А подскажите пожалуйста как переместить активный вид на чертеже (задать его положение). Запись макроса не помогает. В справке пытался что-то по положению вида найти, не смог к сожалению. На VBA пишу.

Syntax (OLE Automation)

position = View.Position (VB Get property)

View.Position = position (VB Set property)

Shvg, смотрел этот пример, но так и не понял как задавать координаты виду, пробую так, но не получается:

boolstatus = Part.Extension.SelectByID2("Чертежный вид4", "DRAWINGVIEW", 0.2825576685727, 0.5321152385946, 0, False, 0, Nothing, 0)

Set swView = swSelMgr.GetSelectedObject5(1)

vPos = swView.Position

Debug.Print " Pos = ("; 10; ", "; 10; ") mm"

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

Здравствуйте, всех с праздником!! А подскажите пожалуйста как переместить активный вид на чертеже (задать его положение). Запись макроса не помогает. В справке пытался что-то по положению вида найти, не смог к сожалению. На VBA пишу.

Shvg, смотрел этот пример, но так и не понял как задавать координаты виду, пробую так, но не получается:

boolstatus = Part.Extension.SelectByID2("Чертежный вид4", "DRAWINGVIEW", 0.2825576685727, 0.5321152385946, 0, False, 0, Nothing, 0)

Set swView = swSelMgr.GetSelectedObject5(1)

vPos = swView.Position

Debug.Print " Pos = ("; 10; ", "; 10; ") mm"

Два небольших примера. Делают одно и тоже.

Скрытый текст: Примеры

1-й пример

Option Explicit

Dim swApp As SldWorks.SldWorks

Dim swModel As ModelDoc2

Dim swDrawing As DrawingDoc

Dim swSheet As Sheet

Dim swView As SldWorks.View



' Только пример

Sub main()

	On Error GoTo LineError



	Set swApp = Application.SldWorks

	Set swModel = swApp.ActiveDoc

	If swModel Is Nothing Then Exit Sub

	Dim docType As Integer

	docType = swModel.GetType()

	If docType <> swDocDRAWING Then Exit Sub

	

	Set swDrawing = swModel

	Set swView = swDrawing.GetFirstView

	

	Do While Not swView Is Nothing

		Dim typeView As Integer

		typeView = swView.Type

		   

		If typeView <> swDrawingSheet Then

			Dim nameView As String

			nameView = swView.Name

			If nameView = "Drawing View1" Then

				Dim posView As Variant

				posView = swView.Position ' Позиция вида с именем "Drawing View1"

				

				Dim newPos(1) As Double

				newPos(0) = 0.2

				newPos(1) = 0.3

				

				swView.Position = newPos ' Задаем новую позицию вида с именем "Drawing View1"

				

				Exit Do

			End If

		End If

				

		Set swView = swView.GetNextView

	Loop

	swModel.EditRebuild3

LineError:



End Sub

2-й пример

Option Explicit

Dim swApp As SldWorks.SldWorks

Dim swModel As ModelDoc2

Dim swDrawing As DrawingDoc

Dim swSheet As Sheet

Dim swView As SldWorks.View



' Только пример

Sub main()

	On Error GoTo LineError

	

	Set swApp = Application.SldWorks

	Set swModel = swApp.ActiveDoc

	If swModel Is Nothing Then Exit Sub

	Dim docType As Integer

	docType = swModel.GetType()

	If docType <> swDocDRAWING Then Exit Sub

	

	Dim bres As Boolean

	bres = swModel.Extension.SelectByID2("Drawing View1", "DRAWINGVIEW", 0#, 0#, 0#, False, 0, Nothing, 0)

	

	If bres = False Then Exit Sub

	

	Dim swSelMgr As SldWorks.SelectionMgr

	Set swSelMgr = swModel.SelectionManager

	Set swView = swSelMgr.GetSelectedObject5(1)

	

	Dim posView As Variant

	posView = swView.Position ' Позиция вида с именем "Drawing View1"

	

	Dim newPos(1) As Double

	newPos(0) = 0.2

	newPos(1) = 0.3

	

	swView.Position = newPos  'Задаем новую позицию вида с именем "Drawing View1"

	

	swModel.ClearSelection2 True

	swModel.EditRebuild3

LineError:



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

Два небольших примера. Делают одно и тоже.

Скрытый текст: Примеры

1-й пример

Option Explicit

Dim swApp As SldWorks.SldWorks

Dim swModel As ModelDoc2

Dim swDrawing As DrawingDoc

Dim swSheet As Sheet

Dim swView As SldWorks.View



' Только пример

Sub main()

	On Error GoTo LineError



	Set swApp = Application.SldWorks

	Set swModel = swApp.ActiveDoc

	If swModel Is Nothing Then Exit Sub

	Dim docType As Integer

	docType = swModel.GetType()

	If docType <> swDocDRAWING Then Exit Sub

	

	Set swDrawing = swModel

	Set swView = swDrawing.GetFirstView

	

	Do While Not swView Is Nothing

		Dim typeView As Integer

		typeView = swView.Type

		   

		If typeView <> swDrawingSheet Then

			Dim nameView As String

			nameView = swView.Name

			If nameView = "Drawing View1" Then

				Dim posView As Variant

				posView = swView.Position ' Позиция вида с именем "Drawing View1"

				

				Dim newPos(1) As Double

				newPos(0) = 0.2

				newPos(1) = 0.3

				

				swView.Position = newPos ' Задаем новую позицию вида с именем "Drawing View1"

				

				Exit Do

			End If

		End If

				

		Set swView = swView.GetNextView

	Loop

	swModel.EditRebuild3

LineError:



End Sub

2-й пример

Option Explicit

Dim swApp As SldWorks.SldWorks

Dim swModel As ModelDoc2

Dim swDrawing As DrawingDoc

Dim swSheet As Sheet

Dim swView As SldWorks.View



' Только пример

Sub main()

	On Error GoTo LineError

	

	Set swApp = Application.SldWorks

	Set swModel = swApp.ActiveDoc

	If swModel Is Nothing Then Exit Sub

	Dim docType As Integer

	docType = swModel.GetType()

	If docType <> swDocDRAWING Then Exit Sub

	

	Dim bres As Boolean

	bres = swModel.Extension.SelectByID2("Drawing View1", "DRAWINGVIEW", 0#, 0#, 0#, False, 0, Nothing, 0)

	

	If bres = False Then Exit Sub

	

	Dim swSelMgr As SldWorks.SelectionMgr

	Set swSelMgr = swModel.SelectionManager

	Set swView = swSelMgr.GetSelectedObject5(1)

	

	Dim posView As Variant

	posView = swView.Position ' Позиция вида с именем "Drawing View1"

	

	Dim newPos(1) As Double

	newPos(0) = 0.2

	newPos(1) = 0.3

	

	swView.Position = newPos  'Задаем новую позицию вида с именем "Drawing View1"

	

	swModel.ClearSelection2 True

	swModel.EditRebuild3

LineError:



End Sub
Спасибо за помощь, все работает! Только интересно, что обрезанные виды позиционируются относительно тех границ которые были у вида до обрезки, а не относительн границ вида после обрезки. Изменено пользователем NUMPL
Ссылка на сообщение
Поделиться на других сайтах

Здравствуйте, а никто не сталкивался с такой проблемой: макросом меняю размеры эскизов на череже, их значения меняются, но эскиз меняется только если после запуска макроса отредактировать какой нибудь размер....эскизов на чертеже много и похоже из-за этого тормозит....может есть какой нибудь способ обновления эскизов

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Snake 60
      Рад помочь ) Сам "ехал на этом коне", вот и запомнил )
    • Guhl
      Важно, что теперь мы знаем, что такая хрень лечится перекатыванием образа на другой диск А что там было, никто и не знает скорее всего  
    • куркуль
      Пожалуйста, проверьте кабель profibus, положение оконечных резисторов, поскольку, судя по характеру описания проблемы, это похоже на проблему сбоя связи profibus. Должны быть включены только два резистора разъемов profibus, а остальные должны быть выключены. Пожалуйста, обратитесь к чертежу OEM, чтобы проверить это. ХТХ. Это ответ от сименса на похожею ошибку.  РЕЗИСТОРЫ - вероятно переключатели на разъёмах профибас. И что по ручному пульту. он ведь тоже прописан.  
    • 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 версии как второй и не знал о таком трабле, все старые вещи работали как часы, ну изредка менял библиотеку.
×
×
  • Создать...