Создание развертки листового тела командой "Разогнуть/Согнуть"

Автор Krik20, 27.11.25, 16:41:25

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Krik20

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

Kolos

Цитата: Krik20 от 27.11.25, 16:41:25Проблема заключается в том что все создания развертки предложенные на форумах не дают после этого редактировать деталь в режиме развертки, а есть крайняя необходимость создания отверстий именно на сгибах детали. Попытки написания макроса самостоятельно не увенчались успехом, тупик с вызовом интерфейса ISheetMetalBendedStraighten и данием его свойств.
Не видно попыток.

Krik20

Цитата: Kolos от 27.11.25, 16:48:09Не видно попыток.
В теме написания макросов я новичок, поэтому не до конца понимаю при задании свойств ISheetMetalBendedStraighten где и что писать
import pythoncom
from win32com.client import Dispatch, gencache

import LDefin2D
import MiscellaneousHelpers as MH

#  РџРѕРТ'Р С"лючРС'Р С� Р С"РѕРР...стаРР...ты API РљРѕРС�пас
kompas6_constants = gencache.EnsureModule("{75C9F5D0-B5B8-4526-8681-9903C567D2ED}", 0, 1, 0).constants
kompas6_constants_3d = gencache.EnsureModule("{2CAF168C-7961-4B90-9DA2-701419BEEFE3}", 0, 1, 0).constants

#  РџРѕРТ'Р С"лючРС'Р С� РѕРїРС'СЃР°РР...Р С'Р Вµ Р С'Р Р...теСР,феРв,,–СЃРѕРІ API5
kompas6_api5_module = gencache.EnsureModule("{0422828C-F174-495E-AC5D-D31014DBBE87}", 0, 1, 0)
kompas_object = kompas6_api5_module.KompasObject(Dispatch("Kompas.Application.5")._oleobj_.QueryInterface(kompas6_api5_module.KompasObject.CLSID, pythoncom.IID_IDispatch))
MH.iKompasObject  = kompas_object

#  РџРѕРТ'Р С"лючРС'Р С� РѕРїРС'СЃР°РР...Р С'Р Вµ Р С'Р Р...теСР,феРв,,–СЃРѕРІ API7
kompas_api7_module = gencache.EnsureModule("{69AC2981-37C0-4379-84FD-5DD2F3C0A520}", 0, 1, 0)
application = kompas_api7_module.IApplication(Dispatch("Kompas.Application.7")._oleobj_.QueryInterface(kompas_api7_module.IApplication.CLSID, pythoncom.IID_IDispatch))
MH.iApplication  = application


Documents = application.Documents
#  РџРѕР»СС"С‡РС'Р С� Р°РС"С‚РС'РІРР...С‹Рв,,– Р Т'РѕРС"РЎС"Р С�РµРР...С‚
kompas_document = application.ActiveDocument
kompas_document_3d = kompas_api7_module.IKompasDocument3D(kompas_document)
iDocument3D = kompas_object.ActiveDocument3D()# Р С'льтеСР,Р Р...атРС'РІРР...С‹Рв,,– РІР°СР,Р С'Р°РР...С‚ - СЃРѕР·РТ'Р°РР...Р С'Р Вµ РѕРїРµСР,ацРС'Р С' чеСР,ез Р С'Р Р...теСР,феРв,,–РЎРѓ API5

#iPart7
iPart7 = kompas_document_3d.TopPart
model_container = kompas_api7_module. IModelContainer (iPart7)

#iSheetMetalContainer
iSheetMetalContainer = iPart7._oleobj_.QueryInterface(kompas_api7_module.ISheetMetalContainer.CLSID, pythoncom.IID_IDispatch)
iSheetMetalContainer = kompas_api7_module.ISheetMetalContainer(iSheetMetalContainer)


iSheetMetalBendedStraightens = iSheetMetalContainer.iSheetMetalBendedStraightens
iSheetMetalBends = iSheetMetalContainer.iSheetMetalBends
iSheetMetalBendedStraighten = iSheetMetalBendedStraightens.Add(const_3d.o3d_sheetMetalBendStraighten)

iSheetMetalBendedStraighten.BendObjects = iPart7.SelectByPoint(model_container.Objects(kompas6_constants_3d.o3d_sheetMetalBend), 57 , 100 , -2)[0]
iSheetMetalBendedStraighten.FixedFace = iPart7.SelectByPoint(model_container.Objects(kompas6_constants_3d.o3d_face), 0, 0, 0)[0]

iSheetMetalBendedStraighten.Update()

Kolos

Нужно понимать, а потом что то пытаться писать.
PS. Можно тему удалить и рекомендовать, пользоваться поиском - ответы на форуме есть.

YNA

Цитата: Kolos от 27.11.25, 17:04:48Нужно понимать, а потом что то пытаться писать.
О как, понял простолюдин?
Вторую строку не буду постить, ибо там уже идёт рекламный блок (запрещённый на форуме) .  :)

Kolos


p3452

 Krik20, на Форуме есть "Поиск"...

p/s: Виноват, опоздал, "Колос" уже "отметился"...
Да, кстати, и КОДИРОВКУ в редакторе кода не мешало бы сменить!

GenTAPo

Вы реально работаете и вам надо сделать деталь или сразу не разобравшись макрос писать. Вам стандартных команд мало? Если деталь, то что мешает разово сделать отверстие. Прекрасно строится. И на развёрнутой поверхности и даже без развёртки. Выбрать грань, нарисовать эскиз отверстия, он будет частично свисать в пустоту. Выбрать команду отверстие, и оно загнётся сразу на обе поверхности. А то всем стало надо под дырку гвоздика макросы писать.
Другое дело, если вам надо это сделать для типовых деталей. Чтобы потом массово применять. Но тоже наверное практика нужна сначала.

Kolos

Цитата: GenTAPo от 27.11.25, 18:50:20Вы реально работаете и вам надо сделать деталь или сразу не разобравшись макрос писать. Вам стандартных команд мало? Если деталь, то что мешает разово сделать отверстие. Прекрасно строится. И на развёрнутой поверхности и даже без развёртки. Выбрать грань, нарисовать эскиз отверстия, он будет частично свисать в пустоту. Выбрать команду отверстие, и оно загнётся сразу на обе поверхности. А то всем стало надо под дырку гвоздика макросы писать.
Другое дело, если вам надо это сделать для типовых деталей. Чтобы потом массово применять. Но тоже наверное практика нужна сначала.
ВЫ - Эксперт - код или Вы с дивана упали?
PS. youtube у нас не работает :um:  И хамить не надо.

Krik20

Цитата: GenTAPo от 27.11.25, 18:50:20Другое дело, если вам надо это сделать для типовых деталей. Чтобы потом массово применять. Но тоже наверное практика нужна сначала.
Деталь типовая изменяются только размеры, проблем с написанием остального макроса не возникло, тк там одни эскизы и команды выдавливания

С отверстием просто на грани не получится, тк отверстие находится прямо на сгибе и при создании развёртки искажается

Если у Вас есть обучалка или руководство, это никогда не помешает

IgorT

Цитата: Krik20 от 27.11.25, 19:04:17Деталь типовая изменяются только размеры,...
Параметрическую деталь по каким причинам не желаете организовать?

p3452

Цитата: Krik20 от 27.11.25, 19:04:17С отверстием просто на грани не получится, тк отверстие находится прямо на сгибе и при создании развёртки искажается
То что отверстие на развертке искажается это, как раз, нормально.
Вижу проблему в неперпендикулярности граней отверстия поверхности развертки - надо строить ДВЕ развертки, по внутренней и внешней граням, если конечно,  у Вас не микронная тольщина материалла...

СВ

Цитата: Krik20 от 27.11.25, 19:04:17С отверстием просто на грани не получится, тк отверстие находится прямо на сгибе и при создании развёртки искажается
Проблема что - именно в этом искажении? Вам нужно БЕЗ искажения? Если так, то хотелось бы понять - в чём назначение "отверстия на сгибе без искажения", т.е. увидеть более подробное описание задачи: не только то, что нужно сделать, но и зачем это нужно делать? Ибо в реальности после гибки по отверстию это отверстие ИСКАЖАЕТСЯ. А если хочется получить неискажённое отверстие, то его делают (любым способом) после гибки, соответственно в развёртке его нет смысла показывать.

Kolos


Krik20

Цитата: Kolos от 28.11.25, 10:47:18Ещё в КОМПАС-3D V15 - разбирали.
Да, я видел данный метод и до этого сам к нему пришёл, но проблема возникла в том, что позже заметил отличие длины припуска при таком методе, что и привело к отказу от него. Помимо этого, после создания эскизов, отверстий и прочих элементов, мне необходимо обратно согнуть листовое тело, что ещё раз подтвердило не неприменимость данного метода.

Ps. со свойством FixedFace удалось разобраться, если кто подскажет как задать BendObject, буду безмерно благодарен

Kolos

Покажите код, что не получается, зачем столько писанины?