Доброго времени суток! У меня возникла проблема с написанием кода, который создает эскиз в ЛСК.
Если вручную создать ЛСК, выбрать «нужную» плоскость этой ЛСК (например XOY) и создать на ней эскиз, то начало координат этого эскиза будет совпадать с началом координат ЛСК. Я вручную создал ЛСК и эскиз на ее плоскости (XOY). В эскизе нарисовал окружность диаметром 10 мм с центром в точке (0:0). На рисунке ниже видно, что начало координат эскиза совпадают с началом координат ЛСК. Прошу обратить внимание на иконку эскиза в дереве построения, в углу иконки нарисована ЛСК.
(https://forum.ascon.ru/index.php?action=dlattach;topic=26313.0;attach=53295;image)
Я хочу написать программу делающую те же действия, но столкнулся с проблемой — начало координат эскиза не совпадают с накалом координат ЛСК. Эскиз находиться на «нужной» плоскости, но уже в другом месте. Система координат эскиза находиться прямо над главной СК, а не совпадает с ЛСК. Обратите внимание на иконку эскиза в дереве построения, на ней уже не нарисована ЛСК.
(https://forum.ascon.ru/index.php?action=dlattach;topic=26313.0;attach=53297;image)
Мой код:
// Запускаем Компас 3D
Type t;
t = Type.GetTypeFromProgID("KOMPAS.Application.5");
KompasObject Kompas = (KompasObject)Activator.CreateInstance(t);
t = Type.GetTypeFromProgID("KOMPAS.Application.7");
IKompasAPIObject iKompas = (IKompasAPIObject)Activator.CreateInstance(t);
Kompas.Visible = true;
// Создаем сборку
ksDocument3D Document3D = (ksDocument3D)Kompas.Document3D();
Document3D.Create(false, false);
Document3D = (ksDocument3D)Kompas.ActiveDocument3D();
IDocuments iDocuments = (IDocuments)iKompas.Application.Documents;
IKompasDocument3D iDocument3D = (IKompasDocument3D)iKompas.Application.ActiveDocument;
// Создадим ЛСК
IPart7 iPart = (IPart7)iDocument3D.TopPart;
IAuxiliaryGeomContainer iAuxiliaryGeomContainer = (IAuxiliaryGeomContainer)iPart;
ILocalCoordinateSystems iLocalCoordinateSystems = (ILocalCoordinateSystems)iAuxiliaryGeomContainer.LocalCoordinateSystems;
ILocalCoordinateSystem iLocalCoordinateSystem = iLocalCoordinateSystems.Add();
// Сместим ЛСК относительно СК
IPoint3D iPoint3D = (IPoint3D)iLocalCoordinateSystem;
iPoint3D.ParameterType = ksPoint3DTypeEnum.ksPParamCoord;
iPoint3D.X = 30;
iPoint3D.Y = 40;
iPoint3D.Z = 50;
// Повернем ЛСК относительно СК
iLocalCoordinateSystem.OrientationType = ksOrientationTypeEnum.ksEulerCorners;
ILocalCSEulerParam iLocalCSEulerParam = (ILocalCSEulerParam)iLocalCoordinateSystem.LocalCSParameters;
iLocalCSEulerParam.NutationAngle = 10;
iLocalCSEulerParam.PrecessionAngle = 15;
iLocalCSEulerParam.RotationAngle = 20;
// Переменуем созданную СК
iLocalCoordinateSystem.Name = "MyLCS";
iLocalCoordinateSystem.Update();
// Найдем "нужную" плоскость ЛСК и переименуем
IModelObject MyPlane = iLocalCoordinateSystem.DefaultObject[ksObj3dTypeEnum.o3d_planeXOY];
MyPlane.Name = "MyPlane";
MyPlane.Update();
// Создадим эскиз на "нужной" плоскости
ksPart Part = (ksPart)Document3D.GetPart((short)Part_Type.pTop_Part);
ksEntityCollection PartCollection = (ksEntityCollection)Part.EntityCollection((int)Obj3dType.o3d_unknown);
ksEntity Plane = (ksEntity)PartCollection.GetByName("MyPlane", true, false); // Нашел "нужную" плоскость
// Рисуем круг отверстия
ksEntity EntityDraw = (ksEntity)Part.NewEntity((short)ksObj3dTypeEnum.o3d_sketch);
ksSketchDefinition SketchDefinition = (ksSketchDefinition)EntityDraw.GetDefinition();
SketchDefinition.SetPlane(Plane); // Указал "нужную" плоскость
EntityDraw.Create();
ksDocument2D Document2D = (ksDocument2D)SketchDefinition.BeginEdit();
Document2D.ksCircle(0, 0, 5, 1);
SketchDefinition.EndEdit();
Что делаю не так? :%:
Использовать свойство IKompasDocument3D.CreateObjectsInCurrentLocalCS:=True;
Sabahs, большое спасибо, работает как надо!
Построение эскизов в ЛСК
Эскиз, который записывается Макрорекордером, можно еще уточнить в части направления осей координат:
ISketch
AssociationObject - Точка привязки
Angle - Угол поворота эскиза относительно проекции системы координат модели на плоскость эскиза (в градусах)
CoordinateSystem - система координат эскиза
DirectingObject - Направляющий объект для оси
Fixed - Фиксация
LeftHandedCS - Признак левосторонней системы координат
Plane - Опорная плоскость
Vector3D - Вектор, задающий направление оси
AddSketch - Создать эскиз из уже имеющегося в заданной плоскости
BeginEdit - Войти в режим редактирования эскиза
BeginEditEx - Войти в режим редактирования эскиза
DeleteWrongProjection - Удалить ошибочные проекции
EndEdit - Выйти из режима редактирования эскиза
GetLocation - Получить смещение системы координат эскиза относительно проекции системы координат модели на плоскость эскиза
GetLoftPoint - Получить координаты точки в плоскости эскиза
RotateAxis - Сменить направление оси на противоположное
SetLocation - Установить смещение системы координат эскиза относительно проекции системы координат модели на плоскость эскиза
SetLoftPoint - Установить координаты точки в плоскости эскиза
WriteToFragment - Сохранить эскиз во фрагмент
Такое обилие возможностей по управлению осями в эскизе (даже левостороннюю систему координат вспоминают), это не от хорошей жизни.
Если взять отрезок вращающийся из центра, на краю отрезка строим по нормали плоскость.
На плоскости – эскиз.
И при вращении отрезка - такое рисует, лучше не смотреть.
Эскиз на ЛСК рисует намного лучше:
Более изведанный путь, это создать ЛСК и разместить эскиз на плоскости ЛСК, получим сразу три плоскости.
На основе:
https://forum.ascon.ru/index.php?topic=26313.msg193227#msg193227
# -*- coding: utf-8 -*-
#|ЛСК Компас 3д
# Продолжение https://forum.ascon.ru/index.php?topic=26313.msg193227#msg193227
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()
kompas_document_3d.CreateObjectsInCurrentLocalCS=True
#global im
##_____________________________________________________________
def imna():
import datetime
now = datetime.datetime.now()
dd=str(now).replace(":","")
dd=dd.replace(" ","")
dd=dd.replace("-","")
dd=dd.replace(".","")
dd=dd[-8:]
dd=dd[:5]
return(dd)
##____________________________________________________________
im=int(imna()) # Исходное имя для ЛСК
##_____________________________________________________________
def V(x,y,z, u1,u2,u3, ex,ey,ed,dl, napr, vid ):
global im
global iPart
iPart7 = kompas_document_3d.TopPart
iPart = iDocument3D.GetPart(kompas6_constants_3d.pTop_Part)
iAuxiliaryGeomContainer = iPart7._oleobj_.QueryInterface(kompas_api7_module.IAuxiliaryGeomContainer.CLSID, pythoncom.IID_IDispatch)
iAuxiliaryGeomContainer = kompas_api7_module.IAuxiliaryGeomContainer(iAuxiliaryGeomContainer)
iLocalCoordinateSystems = iAuxiliaryGeomContainer.LocalCoordinateSystems
iLocalCoordinateSystem = iLocalCoordinateSystems.Add()
iPoint3D = iLocalCoordinateSystem._oleobj_.QueryInterface(kompas_api7_module.IPoint3D.CLSID, pythoncom.IID_IDispatch)
iPoint3D = kompas_api7_module.IPoint3D(iPoint3D)
iPoint3D.ParameterType = kompas6_constants_3d.ksPParamCoord
iPoint3D.X = x
iPoint3D.Y = y
iPoint3D.Z = z
iLocalCoordinateSystem.OrientationType = kompas6_constants_3d.ksEulerCorners
iLocalCoordinateSystem.Update()
iLocalCSParameters = iLocalCoordinateSystem.LocalCSParameters
iLocalCSEulerParam = iLocalCSParameters._oleobj_.QueryInterface(kompas_api7_module.ILocalCSEulerParam.CLSID, pythoncom.IID_IDispatch)
iLocalCSEulerParam = kompas_api7_module.ILocalCSEulerParam(iLocalCSEulerParam)
iLocalCSEulerParam.NutationAngle = u1
iLocalCSEulerParam.PrecessionAngle = u2
iLocalCSEulerParam.RotationAngle = u3
# iLocalCoordinateSystem.Update()
rr1=iLocalCoordinateSystem.DefaultObject(1)
rr1.Name=str(im)
im=im+1
rr2=iLocalCoordinateSystem.DefaultObject(2)
rr2.Name=str(im)
im=im+1
rr3=iLocalCoordinateSystem.DefaultObject(3)
rr3.Name=str(im)
im=im+1
iLocalCoordinateSystem.Update()
# iPart7 = kompas_document_3d.TopPart
iPart = iDocument3D.GetPart(kompas6_constants_3d.pTop_Part)
iSketch = iPart.NewEntity(kompas6_constants_3d.o3d_sketch)
iDefinition = iSketch.GetDefinition()
#_______________________________________________________________________________________________________
PartCollection=iPart.EntityCollection(0) # все объекты
if napr==1:
Plane = PartCollection.GetByName(str(im-1), True,True )
if napr==2:
Plane = PartCollection.GetByName(str(im-2), True,True )
if napr==3:
Plane = PartCollection.GetByName(str(im-3), True,True )
iDefinition.SetPlane(Plane)
iSketch.Create()
iDocument2D = iDefinition.BeginEdit()
kompas_document_2d = kompas_api7_module.IKompasDocument2D(kompas_document)
iDocument2D = kompas_object.ActiveDocument2D()
obj = iDocument2D.ksCircle(ex, ey, ed, 1 )
iDefinition.EndEdit()
# iLocalCoordinateSystem.Update()
if vid==1:
# iPart7 = kompas_document_3d.TopPart
iPart = iDocument3D.GetPart(kompas6_constants_3d.pTop_Part)
obj = iPart.NewEntity(kompas6_constants_3d.o3d_bossExtrusion)
iDefinition = obj.GetDefinition()
iCollection = iPart.EntityCollection(kompas6_constants_3d.o3d_edge)
#iCollection.SelectByPoint(-58, 40.907157022394, 54.31460351552)
iEdge = iCollection.Last()
iEdgeDefinition = iEdge.GetDefinition()
iSketch = iEdgeDefinition.GetOwnerEntity()
iDefinition.SetSketch(iSketch)
iExtrusionParam = iDefinition.ExtrusionParam()
iExtrusionParam.direction = kompas6_constants_3d.dtNormal
iExtrusionParam.depthNormal = dl
iExtrusionParam.depthReverse = 0
iExtrusionParam.draftOutwardNormal = False
iExtrusionParam.draftOutwardReverse = False
iExtrusionParam.draftValueNormal = 0
iExtrusionParam.draftValueReverse = 0
iExtrusionParam.typeNormal = kompas6_constants_3d.etBlind
iExtrusionParam.typeReverse = kompas6_constants_3d.etBlind
iThinParam = iDefinition.ThinParam()
iThinParam.thin = False
obj.name = "Элемент выдавливания:1"
iColorParam = obj.ColorParam()
iColorParam.ambient = 0.5
iColorParam.color = 9474192
iColorParam.diffuse = 0.6
iColorParam.emission = 0.5
iColorParam.shininess = 0.8
iColorParam.specularity = 0.8
iColorParam.transparency = 1
obj.Create()
##_____________________________________________________________
u1=0
u2=0
V(0,0,0, 0, 0, -90, 0,0, 0.1,23, 2 , 1 ) # u3 z
V(0,0,0, 0, 0, 0, 0,0, 0.2,23, 2 , 1 ) # u3 z
V(0,0,0, 90, 0, 0, 0,0, 0.3,23, 2 , 1 ) # u3 z
for u1 in range (0,360,20):
print(u1)
sm=u1/10
u1=u1-0.00001
e_sm_x=12
e_sm_y=2
V(0,0,53, u1, 0, 90, 12, 0, 2,13, 2 , 1 ) # u3 z
V(0,0,53, u1, 0, 90, 15.5, 2.5, 2,13, 2 , 1 ) # u3 z
V(0,0,77, 90, 90-u1, 0, 12, 0, 2,23, 2 , 1 ) # u3 z
V(0,0,77, 90, 90-u1, 0, 15.5, 2.5, 2,23, 2 , 1 ) # u3 z
V(0,0,130, 90+u1, 90, 90, 12, 0, 2,33, 2 , 1 ) # u3 z
V(0,0,130, 90+u1, 90, 90, 15.5, 2.5, 2,33, 2 , 1 ) # u3 z
# https://commons.wikimedia.org/wiki/File:Euler2a.gif?uselang=ru углы эйлера
# https://ru.wikipedia.org/wiki/%D0%A3%D0%B3%D0%BB%D1%8B_%D0%AD%D0%B9%D0%BB%D0%B5%D1%80%D0%B0
(https://lh4.googleusercontent.com/tNCaz1pJhyuB6GBLnbWOP-2YLq4jEYtSKZpXQ4i-fha_PcMfjSNWaUN_hihOGC7u2CuxP1G56slytrokvY2PFXJdHd0mJAkBCK-Z-H5nE3GYzzWIqjfJ9jdORZmLmMzR_3k-4T2T=s0)
Рис
Пример работы программы по заданию, приведенному ниже:
for u1 in range (0,360,20):
print(u1)
sm=u1/10
u1=u1-0.00001
e_sm_x=12
e_sm_y=2
V(0,0,53, u1, 0, 90, 12, 0, 2,13, 2 , 1 ) # u3 z
V(0,0,53, u1, 0, 90, 15.5, 2.5, 2,13, 2 , 1 ) # u3 z
V(0,0,77, 90, 90-u1, 0, 12, 0, 2,23, 2 , 1 ) # u3 z
V(0,0,77, 90, 90-u1, 0, 15.5, 2.5, 2,23, 2 , 1 ) # u3 z
V(0,0,130, 90+u1, 90, 90, 12, 0, 2,33, 2 , 1 ) # u3 z
V(0,0,130, 90+u1, 90, 90, 15.5, 2.5, 2,33, 2 , 1 ) # u3 z
Тут:
0,0,130 - это координаты
90+u1, 90, 90 - это углы
15.5, 2.5 - смещение центра окружности в эскизе
2,33 - диаметр и высота выдавливания
2 - выбор плоскости из 1-2-3
1 - будет выдавливание, иначе просто эскизы
Эскизы построили, дальше, как обычно – тела и поверхности по сечениям или по сети кривых.
Даже с ЛСК был один сбой, когда угол был точно равен нулю, нарисовало в другую сторону.
Для защиты можно рекомендовать к углам 0-90-180-270 градусов добавлять 0.0001 градус, тогда все устойчиво и предсказуемо.
При ЛСК получается нечего тестировать на предмет неожиданностей в сборке, иначе нужен полный тест каждой детали на повороты в сборках.
Селект
Получилось работать при выдавливании без оператора выхода на точку эскиза.
Создается эскиз, и он крайний в коллекции.
Дальше оператор работает по краю коллекции, а там нужный эскиз.
Это не просто на один оператор меньше, там требуют числа, которые в пространстве иногда трудно рассчитать.
iPart = iDocument3D.GetPart(kompas6_constants_3d.pTop_Part)
obj = iPart.NewEntity(kompas6_constants_3d.o3d_bossExtrusion)
iDefinition = obj.GetDefinition()
iCollection = iPart.EntityCollection(kompas6_constants_3d.o3d_edge)
#iCollection.SelectByPoint(-58, 40.907157022394, 54.31460351552)
iEdge = iCollection.Last()
Пример кода без оператора выбора эскиза для выдавливания
Коллекции
Вместо коллекций в операции по сечениям можно применять конструкции:
m=[]
m.append(iSketch)
m.append(iSketch)
m.append(iSketch)
m.append(iSketch)
m.append(iSketch)
При чтении:
for n in range(len(m)):
iSketches.Add(m[n])
или
for mn in m:
iSketches.Add(mn)
Все строится и возможностей по управлению эскизами намного больше:
(https://lh6.googleusercontent.com/EKEhLzW3Fo4bWqB4NGxg8Np5NNKR20x_8MC70axo7s1SpdMNUATMtKAiqmUv7KGzIPNIOUuQse518lfbZYKmaM4jauKkR5yVJ7N6qdcSo_lwCmqyRLcDN7cpiDiZbUwW9B8g4npb=s0)
Рис по заданию:
for u1 in range (0,86,5):
print(u1)
sm=u1/10
u1=u1-0.00001
V(2*math.sin(u1),u1,2*math.cos(u1), u1, 0, 0, 15.5, 2.5, 2,33, 2 , 0 )
Код:
# -*- coding: utf-8 -*-
#|ЛСК Компас 3д
# Продолжение https://forum.ascon.ru/index.php?topic=26313.msg193227#msg193227
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()
m=[]
kompas_document_3d.CreateObjectsInCurrentLocalCS=True
#global im
##_____________________________________________________________
def imna():
import datetime
now = datetime.datetime.now()
dd=str(now).replace(":","")
dd=dd.replace(" ","")
dd=dd.replace("-","")
dd=dd.replace(".","")
dd=dd[-8:]
dd=dd[:5]
return(dd)
##____________________________________________________________
im=int(imna()) # Исходное имя для ЛСК
##_____________________________________________________________
def V(x,y,z, u1,u2,u3, ex,ey,ed,dl, napr, vid ):
global im
global iPart
iPart7 = kompas_document_3d.TopPart
iPart = iDocument3D.GetPart(kompas6_constants_3d.pTop_Part)
iAuxiliaryGeomContainer = iPart7._oleobj_.QueryInterface(kompas_api7_module.IAuxiliaryGeomContainer.CLSID, pythoncom.IID_IDispatch)
iAuxiliaryGeomContainer = kompas_api7_module.IAuxiliaryGeomContainer(iAuxiliaryGeomContainer)
iLocalCoordinateSystems = iAuxiliaryGeomContainer.LocalCoordinateSystems
iLocalCoordinateSystem = iLocalCoordinateSystems.Add()
iPoint3D = iLocalCoordinateSystem._oleobj_.QueryInterface(kompas_api7_module.IPoint3D.CLSID, pythoncom.IID_IDispatch)
iPoint3D = kompas_api7_module.IPoint3D(iPoint3D)
iPoint3D.ParameterType = kompas6_constants_3d.ksPParamCoord
iPoint3D.X = x
iPoint3D.Y = y
iPoint3D.Z = z
iLocalCoordinateSystem.OrientationType = kompas6_constants_3d.ksEulerCorners
iLocalCoordinateSystem.Update()
iLocalCSParameters = iLocalCoordinateSystem.LocalCSParameters
iLocalCSEulerParam = iLocalCSParameters._oleobj_.QueryInterface(kompas_api7_module.ILocalCSEulerParam.CLSID, pythoncom.IID_IDispatch)
iLocalCSEulerParam = kompas_api7_module.ILocalCSEulerParam(iLocalCSEulerParam)
iLocalCSEulerParam.NutationAngle = u1
iLocalCSEulerParam.PrecessionAngle = u2
iLocalCSEulerParam.RotationAngle = u3
# iLocalCoordinateSystem.Update()
rr1=iLocalCoordinateSystem.DefaultObject(1)
rr1.Name=str(im)
im=im+1
rr2=iLocalCoordinateSystem.DefaultObject(2)
rr2.Name=str(im)
im=im+1
rr3=iLocalCoordinateSystem.DefaultObject(3)
rr3.Name=str(im)
im=im+1
iLocalCoordinateSystem.Update()
# iPart7 = kompas_document_3d.TopPart
iPart = iDocument3D.GetPart(kompas6_constants_3d.pTop_Part)
iSketch = iPart.NewEntity(kompas6_constants_3d.o3d_sketch)
iDefinition = iSketch.GetDefinition()
#_______________________________________________________________________________________________________
PartCollection=iPart.EntityCollection(0) # все объекты
if napr==1:
Plane = PartCollection.GetByName(str(im-1), True,True )
if napr==2:
Plane = PartCollection.GetByName(str(im-2), True,True )
if napr==3:
Plane = PartCollection.GetByName(str(im-3), True,True )
iDefinition.SetPlane(Plane)
iSketch.Create()
iDocument2D = iDefinition.BeginEdit()
kompas_document_2d = kompas_api7_module.IKompasDocument2D(kompas_document)
iDocument2D = kompas_object.ActiveDocument2D()
obj = iDocument2D.ksCircle(ex, ey, ed, 1 )
iDefinition.EndEdit()
m.append(iSketch)
# iLocalCoordinateSystem.Update()
if vid==1:
# iPart7 = kompas_document_3d.TopPart
iPart = iDocument3D.GetPart(kompas6_constants_3d.pTop_Part)
obj = iPart.NewEntity(kompas6_constants_3d.o3d_bossExtrusion)
iDefinition = obj.GetDefinition()
iCollection = iPart.EntityCollection(kompas6_constants_3d.o3d_edge)
#iCollection.SelectByPoint(-58, 40.907157022394, 54.31460351552)
iEdge = iCollection.Last()
iEdgeDefinition = iEdge.GetDefinition()
iSketch = iEdgeDefinition.GetOwnerEntity()
iDefinition.SetSketch(iSketch)
iExtrusionParam = iDefinition.ExtrusionParam()
iExtrusionParam.direction = kompas6_constants_3d.dtNormal
iExtrusionParam.depthNormal = dl
iExtrusionParam.depthReverse = 0
iExtrusionParam.draftOutwardNormal = False
iExtrusionParam.draftOutwardReverse = False
iExtrusionParam.draftValueNormal = 0
iExtrusionParam.draftValueReverse = 0
iExtrusionParam.typeNormal = kompas6_constants_3d.etBlind
iExtrusionParam.typeReverse = kompas6_constants_3d.etBlind
iThinParam = iDefinition.ThinParam()
iThinParam.thin = False
obj.name = "Элемент выдавливания:1"
iColorParam = obj.ColorParam()
iColorParam.ambient = 0.5
iColorParam.color = 9474192
iColorParam.diffuse = 0.6
iColorParam.emission = 0.5
iColorParam.shininess = 0.8
iColorParam.specularity = 0.8
iColorParam.transparency = 1
obj.Create()
##_____________________________________________________________
u1=0
u2=0
import math
for u1 in range (0,86,5):
print(u1)
sm=u1/10
u1=u1-0.00001
V(2*math.sin(u1),u1,2*math.cos(u1), u1, 0, 0, 15.5, 2.5, 2,33, 2 , 0 ) # u3 z
kolich=iPart.GetCountObj()
print(kolich)
# https://commons.wikimedia.org/wiki/File:Euler2a.gif?uselang=ru углы эйлера
# https://ru.wikipedia.org/wiki/%D0%A3%D0%B3%D0%BB%D1%8B_%D0%AD%D0%B9%D0%BB%D0%B5%D1%80%D0%B0
##________________________________________________________________
iPart7 = kompas_document_3d.TopPart
iPart = iDocument3D.GetPart(kompas6_constants_3d.pTop_Part)
obj = iPart.NewEntity(kompas6_constants_3d.o3d_bossLoft)
iDefinition = obj.GetDefinition()
iSketches = iDefinition.Sketchs()
for mn in m:
iSketches.Add(mn)
obj.name = "Элемент по сечениям:5"
iColorParam = obj.ColorParam()
iColorParam.ambient = 0.5
iColorParam.color = 9474192
iColorParam.diffuse = 0.6
iColorParam.emission = 0.5
iColorParam.shininess = 0.8
iColorParam.specularity = 0.8
iColorParam.transparency = 1
obj.Create()