Jump to content

Recommended Posts

Shvg
10 часов назад, clavr сказал:

еще загвоздка. нужна помощь

получается читать из листового металла сво-во через SheetMetalFeatureData.

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

идти по пути записи в переменные "D1@листовой металл" не лучшая идея. так как фича "листовой металл" в разных шаблонах может называться по разному

Вроде как всё записывается.

Скрытый текст



//.................
FeatureManager swFeatMgr = swModel.FeatureManager;
SheetMetalFolder swSheetMetFolder = swFeatMgr.GetSheetMetalFolder() as SheetMetalFolder; // относится ли к листовому металлу?

if (swSheetMetFolder == null)
{
  string message = "Деталь не является листовым металлом";
  MessageBox.Show(message, "Warning!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  return;
}
Feature swFeature = swSheetMetFolder.GetFeature();
SheetMetalFeatureData swSheetMetal = swFeature.IGetDefinition() as SheetMetalFeatureData;

swSheetMetal.AccessSelections(swModel, null);

double dFactor = swSheetMetal.KFactor;
dFactor *= 1.1;
swSheetMetal.KFactor = dFactor;

double dRadius = swSheetMetal.BendRadius;
dRadius *= 1.2;
swSheetMetal.BendRadius = dRadius;

bool bres = swFeature.IModifyDefinition2(swSheetMetal, swModel, null);
//------------------------------

 

 

Edited by Shvg
Link to post
Share on other sites


clavr

еще вопрос. бьюсь все выходные. нужно получить статус гибов в развертке. погашено или нет. и по хорошему еще и менять этот статус. в какую сторону рыть направьте плиз

нашел)) IsSuppressed читать нужно

Edited by clavr
Link to post
Share on other sites
Chuvak

@clavr , для получения статуса погашения используйте метод IsSuppressed2 у объекта Feature. Для изменения состояния погашения используйте SetSuppression2 у того же объекта Feature

Link to post
Share on other sites
clavr
1 час назад, Chuvak сказал:

@clavr , для получения статуса погашения используйте метод IsSuppressed2 у объекта Feature. Для изменения состояния погашения используйте SetSuppression2 у того же объекта Feature

сделал тестовый макрос с разными вариациями.

IsSuppressed выдает строковые значения

а IsSuppressed2 выдает массив. и то и то работает.

тест.txt

 

по мне удобнее сразу IsSuppressed, чем работа с массивом. так как я макросе работаю с активной конфигурацией, и опрашиваю одну конфигурацию.
или плиз подскажите как правильнее

Edited by clavr
Link to post
Share on other sites
Shvg
1 час назад, clavr сказал:

по мне удобнее сразу IsSuppressed, чем работа с массивом. так как я макросе работаю с активной конфигурацией, и опрашиваю одну конфигурацию.
или плиз подскажите как правильнее

Просто IsSuppressed2 была введена в SW2004. Но IsSuppressed продолжает поддерживаться. Так что оба варианта рабочие.

  • Нравится 1
Link to post
Share on other sites
clavr
1 минуту назад, Shvg сказал:

Просто IsSuppressed2 была введена в SW2004. Но IsSuppressed продолжает поддерживаться. Так что оба варианта рабочие.

а разве код не проще и не короче с IsSuppressed?

IsSuppressed2 нужно каждый раз в массив обращаться. или функцию отдельную для этого делать.

мож я как-то не так делаю и можно напрямую читать записывать?

Link to post
Share on other sites
Shvg
1 час назад, clavr сказал:

а разве код не проще и не короче с IsSuppressed?

IsSuppressed2 нужно каждый раз в массив обращаться. или функцию отдельную для этого делать.

мож я как-то не так делаю и можно напрямую читать записывать?

Если работаете только с активной конфигурацией, то IsSuppressed проще и короче, не смотря на устаревшую, но рабочую функцию. Если же работаете с несколькими конфигурациями, то только IsSuppressed2.

Да и не так много лишнего кода для активной конфигурации.

Скрытый текст

string[] arrNamesConfig = swModel.GetConfigurationNames() as string[]; // получаем все конфигурации. Их в данном примере 4


// массив имен конфигураций у которых надо проверить состояние Feature 
string[] arrNamesSpecif = new string[2];
arrNamesSpecif[0] = arrNamesConfig[1];
arrNamesSpecif[1] = arrNamesConfig[3];
//===================================================

Feature swFeature = swModel.IFirstFeature();
while (swFeature != null)
{
  string nameFeature = swFeature.Name;
  object arrSuppressAll = swFeature.IsSuppressed2((int)swInConfigurationOpts_e.swAllConfiguration, arrNamesConfig);
  object arrSuppressSpecif = swFeature.IsSuppressed2((int)swInConfigurationOpts_e.swSpecifyConfiguration, arrNamesSpecif);

  //******************************************
  object arrSuppressThis = swFeature.IsSuppressed2((int)swInConfigurationOpts_e.swThisConfiguration, null);
  bool[] arrState2 = arrSuppressThis as bool[];
  bool bState2 = arrState2[0];
  //********************************************
  bool bState = swFeature.IsSuppressed();
  //********************************************
  swFeature = swFeature.IGetNextFeature();
}

 

 

Link to post
Share on other sites
clavr

@Shvg  спасибо. попробую.

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

сейчас делаю проверку, открывая все детали в сборке по очереди и проверяю, листовая или сварная она:
Body2.IsSheetMetal() → листовое тело
PartDoc.IsWeldment() - сварная
а хочется все же из сборке без открытия самих деталей. Ускорить работу макроса

Edited by clavr
Link to post
Share on other sites
Chuvak
1 час назад, clavr сказал:

хочу проверку деталей в сборке сделать без открытия детали.

При открытие сборки не в режиме сокращенная, все компоненты автоматически загружаются как бы открытыми, но в фоне (Вы можете это легко проверить с помощью метода GetDocuments у объекта SldWorks). Вы можете просто обрабатывать каждый компонент через функцию GetModelDoс2 объекта Component2, сразу получив указатель на объект ModelDoc2

Но для некоторых действий все же придется сделать компонент видимым в отдельном окне, для этого необходимо задать его видимость булевым свойством Visible у объекта ModelDoc2

Edited by Chuvak
Link to post
Share on other sites
Shvg
2 часа назад, clavr сказал:

@Shvg  спасибо. попробую.

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

сейчас делаю проверку, открывая все детали в сборке по очереди и проверяю, листовая или сварная она:
Body2.IsSheetMetal() → листовое тело
PartDoc.IsWeldment() - сварная
а хочется все же из сборке без открытия самих деталей. Ускорить работу макроса

 

Небольшой пример работы со сборкой без открытия деталей.

Скрытый текст

public void WorkAssembly()
{
	SldWorks swApp = ProcessSW.GetActiveSolidWorks();
	if (swApp == null)
		return;
	ModelDoc2 swModel = swApp.IActiveDoc2;
	if (swModel == null)
	{
		MessageBox.Show("Загрузите документ SolidWorks-a", "Warning!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
		return;
	}

	int docType = swModel.GetType();
	if (docType != (int)swDocumentTypes_e.swDocASSEMBLY)
	{
		MessageBox.Show("Функция работает только с файлами сборок(*.sldasm)", "Warning!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
		return;
	}

	swApp.CommandInProgress = true;

	try
	{
		WorkThisAssembly(swModel);
	}
	catch { }

	swApp.CommandInProgress = false;
	swApp.CommandInProgress = false;
}

private void WorkThisAssembly(ModelDoc2 swModel)
{
	// выбираем какой нибудь контейнер, куда будем запихивать ссылки на ModelDoc2 компонента
	// в данном примере выбран словарь (Dictionary)

	Dictionary<string, ModelDoc2> dicPart = new Dictionary<string, ModelDoc2>();

	// ======================================================

	AssemblyDoc swAssembly = swModel as AssemblyDoc;
	object[] arrComp = swAssembly.GetComponents(false) as object[];
	if(arrComp == null)
		return;

	int countComp = arrComp.Length; // кол-во компонентов в сборке

	for (int i = 0; i < countComp; i++)
	{
		Component2 swComponent = arrComp[i] as Component2;
		if (swComponent == null)
			continue;
		ModelDoc2 swModelComp = swComponent.IGetModelDoc(); // получаем ссылку на модель компонента
		if (swModelComp == null) // если компонент сокращенный, то ссылки не будет
			continue;
		int docType = swModelComp.GetType();

		if (docType != (int)swDocumentTypes_e.swDocPART)
			continue;
		// далее работаем только, если компонент - деталь

		string pathModel = swComponent.GetPathName().ToLower(); // полный путь модели
		bool bExist = dicPart.ContainsKey(pathModel); // есть или нет эта модель в контейнере
		if (bExist)
			continue;

		dicPart.Add(pathModel, swModelComp); // записываем в словарь
	}

	int countModel = dicPart.Count;
	if (countModel < 1)
		return;

	foreach(ModelDoc2 swModelComp in dicPart.Values)
	{
		if (swModelComp == null)
			continue;
		// имеем ссылку на модель детали из словаря, которая есть в сборке со всеми конфигурациями
		// дальше с ней работаем

		WorkModelPart(swModelComp);
	}
	dicPart.Clear();
}

private void WorkModelPart(ModelDoc2 swModel)
{
	// далее так для примера
	PartDoc swPart = swModel as PartDoc;
	if (swPart == null)
		return;

	bool bSheetMetal = false;
	FeatureManager swFeatMgr = swModel.FeatureManager;
	SheetMetalFolder swSheetMetFolder = swFeatMgr.GetSheetMetalFolder() as SheetMetalFolder;

	if (swSheetMetFolder != null)
		bSheetMetal = true; // деталь - листовой металл

	bool bWeldment = swPart.IsWeldment(); // сварная деталь

	// может быть одновременно и сварной, и листовой
	// -------------------------------------------
	// 
	int countConfig = swModel.GetConfigurationCount();
	string[] arrNameConfig = swModel.GetConfigurationNames() as string[];

	//если требуется работать с конкретной конфигурацией в детали,то её нужно активировать
	if (countConfig > 1)
	{
		for (int i = 0; i < countConfig; i++)
		{
			string nameConfig = arrNameConfig[i];

			bool bShow = swModel.ShowConfiguration2(nameConfig);
			// ===================================
		}
	}
}

 

 

  • Нравится 1
Link to post
Share on other sites
clavr

@Shvg @Chuvak  спасибо.

запилил в макросе тут эту проверку. 

Верно вышло?

 

Edited by clavr
Link to post
Share on other sites
Shvg
22 минуты назад, clavr сказал:

@Shvg @Chuvak  спасибо.

запили в макросе тут эту проверку. 

Верно вышло?

 

Dim vComps As Variant
  vComps = swAssy.GetComponents(True)

При True вы получаете только компоненты верхнего уровня. Если есть подсборки с деталями, вы ссылки на эти детали не получите. Хотя может это вам и надо.

Link to post
Share on other sites
clavr
9 минут назад, Shvg сказал:

Dim vComps As Variant
  vComps = swAssy.GetComponents(True)

При True вы получаете только компоненты верхнего уровня. Если есть подсборки с деталями, вы ссылки на эти детали не получите. Хотя может это вам и надо.

спасибо. ток на выходных с этим разбирался. постоянно еще путаю, что тут True это не включить проверку всех, а только верхний уровень)

Link to post
Share on other sites
Chuvak

Никто не знает как исправить ошибку открытия справки по solidworks api из редактора vba ? У меня после перехода на новую версию SW 2024 почему то не хочет открывать справку при выборе метода или свойства и пишет сообщение "Unable to display help"

Link to post
Share on other sites
Shvg

@clavr

Не критики ради, а просто интерес. Зачем два раза проходить цикл For i = 0 To UBound(vComps)? Только чтобы написать отчёт и попросить все компоненты решить?

Link to post
Share on other sites
clavr
3 минуты назад, Shvg сказал:

@clavr

Не критики ради, а просто интерес. Зачем два раза проходить цикл For i = 0 To UBound(vComps)? Только чтобы написать отчёт и попросить все компоненты решить?

в начале макроса проверка идет на поиск сокращенных деталей. если есть, то остановить макрос.

а вторый цикл уже рабочий.

исправленный макрос уже выложил там. Были ошибки в начале ну и swAssy.GetComponents(True)  )))

Link to post
Share on other sites
clavr
29 минут назад, Chuvak сказал:

Никто не знает как исправить ошибку открытия справки по solidworks api из редактора vba ? У меня после перехода на новую версию SW 2024 почему то не хочет открывать справку при выборе метода или свойства и пишет сообщение "Unable to display help"

прогнал через ИИ, что предлагает:

Скрытый текст

Чек-лист, как это проверить и исправить:

  1. Проверить, открывается ли API Help вручную
    В SolidWorks:
    Help → API Help
    • Если не открывается — проблема не в VBA, а в справке целиком.
  2. Переключить режим справки (Web / Local)
    В SolidWorks:
    Help → Use SOLIDWORKS Web Help
    Сделать два теста:

    • с включенной галкой
    • с выключенной

    Если работает только один режим — значит второй просто не настроен.

  3. Проверить, установлена ли локальная API Help
    Путь обычно такой:
    C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\lang\english\api\
    Там должен быть файл типа:
    sldworksapi.chm
    • Если файла нет — локальная справка не установлена.
  4. Проверить CHM-файл (частая причина)
    Если файл есть, но не открывается:
    • ПКМ → Свойства
    • нажать "Разблокировать" (если есть)
  5. Проверить Web Help (если используете онлайн-режим)
    Открыть в браузере:
    https://help.solidworks.com
    • Если не открывается — проблема в сети / браузере / прокси
  6. Проверить браузер по умолчанию
    SolidWorks 2024 открывает справку через браузер
    → иногда помогает смена браузера по умолчанию (Edge/Chrome)
  7. Проверить вызов из VBA
    В редакторе VBA:

    • навести на метод
    • нажать F1

    Если вручную Help открывается, а из VBA нет — проблема в связке VBA → Help

  8. Запустить SolidWorks от администратора
    Иногда помогает для доступа к help
  9. Сделать Repair установки SolidWorks
    Через установщик:
    • Modify / Изменить
    • проверить, что установлены компоненты:
      • Help Files
      • API Documentation

Вывод:
В SolidWorks 2024 чаще всего проблема связана не с VBA, а с:

  • неустановленной локальной справкой
  • или некорректной работой web help (браузер / доступ)

 

Link to post
Share on other sites
clavr

@Chuvak уточнил запрос)

Скрытый текст

Проблема, скорее всего, не в самом методе API и не в VBA-коде.
F1 / Object Browser в редакторе VBA открывает справку не так, как пункт Help → API Help в SolidWorks.
VBA пытается вызвать контекстную COM/VBA-справку, которая обычно завязана на локальный help-файл и его регистрацию. А у SolidWorks 2024 справка в целом уже сильно ориентирована на Web Help. Из-за этого типовая ситуация такая: обычный API Help ещё можно открыть вручную, а из VBA появляется “Unable to display help”.

То есть ключевая мысль такая:

В редакторе VBA F1 не равно просто “открыть сайт help.solidworks.com”.
Это более старая схема вызова справки, и если локальная API Help не установлена, не зарегистрирована или SolidWorks/VBA не может на неё сослаться, то вылезает именно “Unable to display help”. Это согласуется и с тем, что SOLIDWORKS отдельно описывает API Help как доступную локально и через Web Help, а для контекстной F1-справки отдельно упоминает специальную регистрацию help viewer для макросов.

Что из этого следует practically:

  1. Если вручную Help → API Help открывается, а из VBA F1 не работает
    Значит проблема почти наверняка именно в связке VBA editor → context help, а не в API Help в целом.
  2. Для VBA важнее локальная справка, чем Web Help
    Я бы в вашем случае первым делом:
    • отключил Help → Use SOLIDWORKS Web Help
    • проверил, что локальная API Help реально установлена
    • проверил, что .chm открывается вручную.
      Официальная справка прямо говорит, что API Help может быть web/local и переключается этим пунктом меню.
  3. Если локальной help нет — F1 из VBA, скорее всего, и не заработает нормально
    Потому что Web Help для обычного просмотра подходит, а вот VBA-контекстный вызов обычно хочет локально доступный help-источник. Это наиболее вероятная причина после обновления на 2024.
  4. Если локальная help есть, но F1 всё равно не работает
    Тогда уже похоже на:
    • сбитую регистрацию help
    • кривой upgrade поверх старой версии
    • баг интеграции VBA с help в SW 2024
      В таком случае самый реальный путь — Repair/Modify установки SolidWorks с компонентами help/API documentation.

Мой вывод по сути вопроса:

Если вы работаете именно в VBA-редакторе и жмёте F1 по объектам SolidWorks API, то проблема, скорее всего, вызвана тем, что VBA пытается открыть локальную контекстную help, а после перехода на SW 2024 у вас либо не установлена/неподхвачена локальная API Help, либо сломалась её регистрация.
Просто включённый Web Help это обычно не лечит.

Самый правильный порядок действий:

  • проверить, открывается ли Help → API Help вручную;
  • выключить Web Help;
  • проверить наличие локальной API Help/CHM;
  • если CHM есть, но F1 в VBA не работает — делать Repair установки SolidWorks.

 

 

 

@Shvgеще вопрос. вылезла бяка. в развертке ищу гибы:

GetTypeName2 = "UiBend" - то это гиб

Но вот если гибов нет. в развертке есть Сгиб-линия (эскиз). и она тоже попадет под эту сортировку.

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

Edited by clavr
Link to post
Share on other sites
clavr

и ще вот что. сделал проверку тестовым макросом:

Скрытый текст

Подфича: Сгиб-Линии3
Тип: ProfileFeature
IsSuppressed:
  VarType = 11
  TypeName = Boolean
  Value = False
IsSuppressed2:
  VarType = 8203
  TypeName = Boolean()
  LBound = 0
  UBound = 0
  Value(0):
    VarType = 11
    TypeName = Boolean
    Value = True

IsSuppressed и IsSuppressed2 дал разные результаты

Link to post
Share on other sites
Shvg
4 часа назад, clavr сказал:

 

@Shvgеще вопрос. вылезла бяка. в развертке ищу гибы:

GetTypeName2 = "UiBend" - то это гиб

Но вот если гибов нет. в развертке есть Сгиб-линия (эскиз). и она тоже попадет под эту сортировку.

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

 

3 часа назад, clavr сказал:

и ще вот что. сделал проверку тестовым макросом:

  Показать содержимое

Подфича: Сгиб-Линии3
Тип: ProfileFeature
IsSuppressed:
  VarType = 11
  TypeName = Boolean
  Value = False
IsSuppressed2:
  VarType = 8203
  TypeName = Boolean()
  LBound = 0
  UBound = 0
  Value(0):
    VarType = 11
    TypeName = Boolean
    Value = True

IsSuppressed и IsSuppressed2 дал разные результаты

Получить ваш результат на моих моделях не удалось. 

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Сообщения

    • Nod801
    • maxx2000
      @Добрый токарь это не мнение, это наблюдение. 10 сообщений и все в попытках что-то доказать турте. Как там в твоём видео сказано?   Прямо какая-то маниакальная страсть или любовь 
    • Добрый токарь
      @maxx2000 я что-то не припомню когда спрашивал твоё мнение... цель в жизни нашёл... ппц ты бредишь. Быть тупым это как мёртвым, тяжело окружающим а не тебе
    • maxx2000
      @Добрый токарья смотрю ты нашёл цель себе в жизни. Твоё поведение не меньше маниакальное чем его
    • Добрый токарь
      Я нашёл диагноз Турты, Бред величия, Маниакальный синдром. Шизофрения. В видео буквально рассуждения нашего профессора Кислощёва     https://www.youtube.com/watch?v=UIgkwY6dRpE  
    • AICNC
      Предложение в заголовке. Вы сможете, разместив веб страницу с вводом параметров (можно   голосом) заготовки , отверстия, кругового массива, с помощью первого в мире кибер-технолога, способного выполнять работу специалиста СЧПУ, автоматически генерировать технологию обработки отверстия, УП, расчет машинного времени и стоимость партии деталей.  Размещать на этой странице собственную рекламу, которая будет приносить вам доход, Мировой рынок подготовки УП, для обработки отверстий на фланцах, по расчетам ИИ равен 2,4 миллиарда долларов, стран СНГ, 80 миллионов долларов. В мире подобного онлайн сервиса, для обработки отверстий на фланцах, для смартфоно, нет.   Я тут по спрашивал Гугл, с точки зрения интереса потенциальных владельцев ресурсов, который будут устанавливать клиентскую часть сервиса, для подготовки УП, обработки отверстий на фланцахю. на смартфонах, у себя на ресурсах. Вот что он выдал. "1. Капитализация рынка подготовки УП для отверстий на фланцах Рынок оценивается исходя из затрат на инженерный труд, которые замещаются автоматизацией через смартфон. По оценкам, только в СНГ этот узкий сегмент достигает $80 млн.   Регион 2026 г. 2027 г. 2028 г. Страны СНГ $80 млн $150 млн $320 млн Весь мир $1,2 млрд $3,5 млрд $8,0 млрд Рост в 2027–2028 гг. обусловлен эффектом масштаба: когда технология становится стандартом для цеховых мастеров, она начинает поглощать бюджеты, ранее выделяемые на лицензии тяжелых CAM-систем.   2. Доходы владельцев ресурсов в СНГ (Рекламная модель) Разделим машиностроительные сайты на три категории по посещаемости и рассчитаем потенциальный доход от размещения рекламы на странице сервиса.   Классификация ресурсов: Высокая посещаемость: Крупные порталы, форумы-миллионники (например, Chipmaker). Посещаемость: от 50 000 до 150 000 уникальных пользователей в сутки. Средняя посещаемость: Отраслевые справочники, сайты заводов-производителей оснастки. Посещаемость: от 5 000 до 15 000 пользователей в сутки. Небольшая посещаемость: Узконишевые блоги, сайты малых инжиниринговых фирм. Посещаемость: от 100 до 1 000 пользователей в сутки.   Прогноз ежемесячного дохода от рекламы (с одной страницы сервиса): Расчет базируется на высоком качестве аудитории (B2B), где стоимость клика и показов значительно выше средней.   Категория ресурса 2026 г. 2027 г. 2028 г. Высокая $3 000 – $7 000 $8 000 – $15 000 $20 000 – $40 000 Средняя $500 – $1 200 $1 500 – $3 000 $4 000 – $8 000 Небольшая $50 – $150 $200 – $500 $800 – $1 500   Почему доходы будут расти? Прямой трафик: Мастера будут сохранять страницу в закладки смартфона и заходить ежедневно, формируя стабильное «ядро» аудитории. Рост ценности: Рекламодатели (продавцы инструмента, масла, станков) будут бороться за место на странице, где оператор принимает решение о производстве."
    • vad0000
      Без 8 мы не обойдёмся. После ввода 1 в первую строку, нам надо ввести код активации 817
    • brigval
      Удобно записывать материал одной позицией, например. для последующего автосуммирования из разных спецификаций. В схожих случаях указываю в примечании к позиции материала количество штук каких размеров. По типу "20 шт. дл. 1,2 м, 25 шт. дл. 5 м, ..." Это нисколько не нарушает ГОСТ. Естественно, суммарная длина материала должна быть равна длине в графе "Кол." С сборочном чертеже надо указывать размер каждой стропы. Или размерными линиями со справочными размерами, или с помощью букв в таблице...   Это просто как вариант.
    • maxx2000
      @Nod801 ,да что же ты за бестолочь такой. 3 дня уже моделишь, моделишь и никак не отмоделишь правильно. Ну не верная у тебя деталь. Гофра как и вся деталь, симметричная относительно плоскости, а не как у тебя расположенная с одной стороны и строится она всего в 5 действий. 1. внутренний диаметр- кривая из уравнения, кольцо, диаметром 60мм с высотой волны пусть будет 2мм (не указано),число волн 24; 2. наружный диаметр- кривая (окружность) 150мм; 3. натягиваешь на 2 кривые поверхность; 4. придать толщину; 5. отверстия;  
    • Шамиль Сабитов
      Цифра 8, 0, P, и клавиша N>
×
×
  • Create New...