Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2012, 17:50   #1
Lisёноk
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 75
По умолчанию Python выдает ошибку

Доброго времени суток! Задали в институте написать макрос на Питоне и параметризовать его, чтобы пользователь мог сам данные вводить. С вводом данным и построением детали вращением проблем не возникло. Но мне необходимы также отверстия. Вот здесь то он и начинает ругаться.
Код:
# -*- coding: cp1251 -*-
#|14

import Kompas10API5 as KAPI
import Kompas10API7 as KAPI7
import pythoncom
from win32com.client import Dispatch
import LDefin2D
import LDefin3D
import ksConstants as CONST2D7
import ksConstants3D as CONST3D7
import MiscellaneousHelpers as MH

iKompasObject = Dispatch('KOMPAS.Application.5')
iKompasObject = KAPI.KompasObject(iKompasObject)
MH.iKompasObject = iKompasObject

iApplication = Dispatch('KOMPAS.Application.7')
iApplication = KAPI7.IApplication(iApplication)
MH.iApplication = iApplication

iDocument3D = iKompasObject.ActiveDocument3D()

iDocument = iApplication.ActiveDocument
iKompasDocument3D = KAPI7.IKompasDocument3D(iDocument)

X0=0.0
Y0=0.0
D1=80.0
D2=30.0
D3=20.0
D4=77.0
D5=2.0
D6=40.0
D7=60.0
D8=38.0
D9=42.0
D10=60.0
H1=14.0
H2=29.0
H3=10.0
H4=25.0
H5=2.0
n=4
m=10.0
angl=360.0

r=0
r=iKompasObject.ksReadDouble ('Желаете ли Вы изменить исходные данные? 1-Да, 0-Нет', 1, 0, 10, r ) [1]
if r==1:
 X0 = iKompasObject.ksReadDouble( 'X0=', 98, 0, 200, X0 )[1]
 Y0 = iKompasObject.ksReadDouble( 'Y0=', 175, 0, 500, Y0 )[1]
 D1 = iKompasObject.ksReadDouble( 'D1=', 80, 40, 240, D1 )[1]
 D2 = iKompasObject.ksReadDouble( 'D2=', 30, 10, 190, D2 )[1]
 if D2>=D1:
  iKompasObject.ksMessage('Ошибка!Значение D2 должно быть меньше D1!')
  D2 = iKompasObject.ksReadDouble( 'D2=', 30, 10, 190, D2 )[1]
 D3 = iKompasObject.ksReadDouble( 'D3=', 20, 1, 180, D3 )[1]
 if D3>=D2:
  iKompasObject.ksMessage('Ошибка!Значение D3 должно быть меньше D2!')
  D3 = iKompasObject.ksReadDouble( 'D3=', 20, 1, 180, D3 )[1] 
 D4 = iKompasObject.ksReadDouble( 'D4=', 77, 35, 235, D4 )[1]
 D5 = iKompasObject.ksReadDouble( 'D5=', 2, 1, 6, D5 )[1]
 D6 = iKompasObject.ksReadDouble( 'D6=', 40, 20, 120, D6 )[1]
 if D6<=D2:
  iKompasObject.ksMessage('Ошибка!Значение D2 должно быть меньше D6!')
  D6 = iKompasObject.ksReadDouble( 'D6=', 40, 20, 120, D6 )[1]
 D7 = iKompasObject.ksReadDouble( 'D7=', 60, 20, 220, D7 )[1]
 if D7<=D6:
  iKompasObject.ksMessage('Ошибка!Значение D6 должно быть меньше D7!')
  D7 = iKompasObject.ksReadDouble( 'D7=', 60, 20, 120, D7 )[1]
 D8 = iKompasObject.ksReadDouble( 'D8=', 38, 15, 195, D8 )[1]
 if D8<=D2 and D8>=D6:
  iKompasObject.ksMessage('Ошибка!Значение D8 должно быть меньше D6 и больше D2!')
  D8 = iKompasObject.ksReadDouble( 'D8=', 38, 20, 120, D8 )[1]
 D9 = iKompasObject.ksReadDouble( 'D9=', 42, 20, 115, D9 )[1]
 if D9<=D6 and D9>=D7:
  iKompasObject.ksMessage('Ошибка!Значение D9 должно быть меньше D7 и больше D6!')
  D9 = iKompasObject.ksReadDouble( 'D9=', 42, 20, 120, D9 )[1]
 D10 = iKompasObject.ksReadDouble( 'D10=', 60, 20, 220, D10 )[1]
 if D10<=D9:
  iKompasObject.ksMessage('Ошибка!Значение D9 должно быть меньше D10!')
  D10 = iKompasObject.ksReadDouble( 'D10=', 60, 20, 120, D10 )[1]
 H1 = iKompasObject.ksReadDouble( 'H1=', 14, 10, 100, H1 )[1]
 H2 = iKompasObject.ksReadDouble( 'H2=', 29, 15, 200, H2 )[1]
 if H2<=H1:
  iKompasObject.ksMessage('Ошибка!Значение H1 должно быть меньше H2!')
  H2 = iKompasObject.ksReadDouble( 'H2=', 29, 15, 200, H2 )[1]
 H3 = iKompasObject.ksReadDouble( 'H3=', 10, 5, 80, H3 )[1]
 if H1<=H3:
  iKompasObject.ksMessage('Ошибка!Значение H3 должно быть меньше H1!')
  H3 = iKompasObject.ksReadDouble( 'H3=', 10, 5, 80, H3 )[1]
 H4 = iKompasObject.ksReadDouble( 'H4=', 25, 10, 150, H4 )[1]
 if H2<=H4 and H4<=H1:
  iKompasObject.ksMessage('Ошибка!Значение H4 не должно быть больше H2 и меньше H1!')
  H4 = iKompasObject.ksReadDouble( 'H4=', 25, 10, 150, H4 )[1]
 n = iKompasObject.ksReadDouble( 'n=', 4, 0, 15, n )[1]
 m = iKompasObject.ksReadDouble( 'm=', 10, 5, 50, m )[1]
 angl = iKompasObject.ksReadDouble( 'Угол=', 360, 0, 360, angl )[1]
 H5=(H2-H4)/2
 
  
iKompasObject.ksMessage('Ваша деталь!')

iPart = iDocument3D.GetPart(LDefin3D.pTop_Part)
iSketch = iPart.NewEntity(LDefin3D.o3d_sketch)
iDefinition = iSketch.GetDefinition()
iPlane = iPart.GetDefaultEntity(LDefin3D.o3d_planeXOZ)
iDefinition.SetPlane(iPlane)
iSketch.Create()

iDocument2D = iDefinition.BeginEdit()

iAxisLineParam = KAPI.ksAxisLineParam(iKompasObject.GetParamStruct(LDefin2D.ko_AxisLineParam))
iAxisLineParam.Init()

iMathPointParam = KAPI.ksMathPointParam(iAxisLineParam.GetBegPoint())
iMathPointParam.x = X0
iMathPointParam.y = Y0

iMathPointParam = KAPI.ksMathPointParam(iAxisLineParam.GetEndPoint())
iMathPointParam.x = X0+H2+10
iMathPointParam.y = Y0
Я самый порочный ангел и самый безгрешный демон...
Lisёноk вне форума Ответить с цитированием
Старый 05.03.2012, 17:50   #2
Lisёноk
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 75
По умолчанию

Продолжение:
Код:
iDocument2D.ksAxisLine(iAxisLineParam)
iDocument2D.ksLineSeg(X0+H5, Y0+D3/2, X0, Y0+D2/2, 1)
iDocument2D.ksLineSeg(X0, Y0+D2/2, X0, Y0+D6/2, 1)
iDocument2D.ksLineSeg(X0, Y0+D6/2, X0+H2-H1, Y0+D7/2, 1)
iDocument2D.ksLineSeg(X0+H2-H1, Y0+D7/2, X0+H2-H1, Y0+D1/2, 1)
iDocument2D.ksLineSeg(X0+H2-H1, Y0+D1/2, X0+H2, Y0+D1/2, 1)
iDocument2D.ksLineSeg(X0+H2, Y0+D1/2, X0+H2, Y0+D10/2, 1)
iDocument2D.ksLineSeg(X0+H2, Y0+D10/2, X0+H2-H3, Y0+D9/2, 1)
iDocument2D.ksLineSeg(X0+H2-H3, Y0+D9/2, X0+H2-H3, Y0+D8/2, 1)
iDocument2D.ksLineSeg(X0+H2-H3, Y0+D8/2, X0+H2, Y0+D8/2, 1)
iDocument2D.ksLineSeg(X0+H2, Y0+D8/2, X0+H2, Y0+D2/2, 1)
iDocument2D.ksLineSeg(X0+H2, Y0+D2/2, X0+H2-H5, Y0+D3/2, 1)
iDocument2D.ksLineSeg(X0+H2-H5, Y0+D3/2, X0+H5, Y0+D3/2, 1)
iDefinition.EndEdit()

iPart = iDocument3D.GetPart(LDefin3D.pTop_Part)
obj = iPart.NewEntity(LDefin3D.o3d_bossRotated)
iDefinition = obj.GetDefinition()
iCollection = iPart.EntityCollection(LDefin3D.o3d_edge)
iCollection.SelectByPoint(15.81874644057, 0.0, 0.0)
iEdge = iCollection.GetByIndex(0)
iEdgeDefinition = iEdge.GetDefinition()
iSketch = iEdgeDefinition.GetOwnerEntity()
iDefinition.SetSketch(iSketch)

iRotatedParam = iDefinition.RotatedParam()
iRotatedParam.angleNormal = 360.0
iRotatedParam.angleReverse = 360.0
iRotatedParam.direction = LDefin3D.dtNormal
iRotatedParam.toroidShape = False

iThinParam = iDefinition.ThinParam()
iThinParam.thin = False
iThinParam.normalThickness = 1.0
iThinParam.reverseThickness = 1.0
iThinParam.thinType = LDefin3D.dtNormal

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.0

obj.Create()

iPart = iDocument3D.GetPart(LDefin3D.pTop_Part)
iSketch = iPart.NewEntity(LDefin3D.o3d_sketch)
iDefinition = iSketch.GetDefinition()
iCollection = iPart.EntityCollection(LDefin3D.o3d_face)
iCollection.SelectByPoint(Y0+D7/2, 0.0, Y0+D1/2)
iPlane = iCollection.GetByIndex(0)
iDefinition.SetPlane(iPlane)
iSketch.Create()

iDocument2D = iDefinition.BeginEdit()
iDocument2D.ksCircle(X0, Y0+D4/2, D5/2, 1)
iDefinition.EndEdit()

iPart = iDocument3D.GetPart(LDefin3D.pTop_Part)
obj = iPart.NewEntity(LDefin3D.o3d_cutExtrusion)
iDefinition = obj.GetDefinition()
iCollection = iPart.EntityCollection(LDefin3D.o3d_edge)
iCollection.SelectByPoint(Y0+D7/2, Y0-D1/2, -D5/2)
iEdge = iCollection.GetByIndex(0)
iEdgeDefinition = iEdge.GetDefinition()
iSketch = iEdgeDefinition.GetOwnerEntity()
iDefinition.SetSketch(iSketch)
iDefinition.cut = True

iExtrusionParam = iDefinition.ExtrusionParam()
iExtrusionParam.depthNormal = 34.0
iExtrusionParam.depthReverse = 10.0
iExtrusionParam.direction = LDefin3D.dtNormal
iExtrusionParam.draftOutwardNormal = False
iExtrusionParam.draftOutwardReverse = False
iExtrusionParam.draftValueNormal = 0.0
iExtrusionParam.draftValueReverse = 0.0
iExtrusionParam.typeNormal = LDefin3D.etThroughAll
iExtrusionParam.typeReverse = LDefin3D.etBlind

iThinParam = iDefinition.ThinParam()
iThinParam.thin = False
iThinParam.normalThickness = 1.0
iThinParam.reverseThickness = 1.0
iThinParam.thinType = LDefin3D.dtNormal

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.0

obj.Create()

iPart = iDocument3D.GetPart(LDefin3D.pTop_Part)
obj = iPart.NewEntity(LDefin3D.o3d_circularCopy)
iDefinition = obj.GetDefinition()
iDefinition.count1 = 1
iDefinition.count2 = n
iDefinition.factor1 = False
iDefinition.factor2 = True
iDefinition.geomArray = False
iDefinition.inverce = False
iDefinition.step1 = m
iDefinition.step2 = angl
iDefinition.SetAxis(iAxis)
iArray = iDefinition.GetOperationArray()
iCollection = iPart.EntityCollection(LDefin3D.o3d_edge)
iCollection.SelectByPoint(16.90501047096, -46.54257231379, -4.0)
iEdge = iCollection.GetByIndex(0)
iEdgeDefinition = iEdge.GetDefinition()
iOperation = iEdgeDefinition.GetOwnerEntity()
iArray.Add(iOperation)

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.0

obj.Create()
Я самый порочный ангел и самый безгрешный демон...
Lisёноk вне форума Ответить с цитированием
Старый 05.03.2012, 17:52   #3
Lisёноk
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 75
По умолчанию

Ошибка в строке 184:
Код:
iDocument2D.ksCircle(X0, Y0+D4/2, D5/2, 1)
Сообщает, что вроде нет какого-то атрибута. Но я никак не пойму какого.
Была бы очень признательна, если бы вы помогли мне =)
Я самый порочный ангел и самый безгрешный демон...
Lisёноk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выдает ошибку в формуле Gayverock2027 Microsoft Office Excel 6 17.02.2012 13:45
выдает ошибку(( aanaaa Общие вопросы C/C++ 3 26.05.2011 07:13
Выдает ошибку( И.А.А. Общие вопросы C/C++ 1 21.05.2010 19:10
выдает ошибку! maksim_serg Microsoft Office Word 3 20.04.2010 04:19
Windows2003 ошибку выдает Cantana Windows 11 07.12.2007 06:04