Размер между двумя точками.

Автор Тема: Размер между двумя точками.  (Прочитано 4488 раз)

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

Оффлайн izhgtumekhanikАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 54
  • Карма: 0
  • Skype: izhgtumekhanik@gmail.com
Добрый вечер.

Есть необходимость проставить размер GeneralDimension между двумя точками эскиза.
Со всеми работает но не хочет работать с точками:

   
Код - Python [Выбрать]
  1. n_Doc2D = inventorApiV21.DrawingDocument(in_ADoc)
  2.  
  3.     in_Doc2DSheet = in_Doc2D.ActiveSheet
  4.     in_Doc2DSheet = inventorApiV21.Sheet(in_Doc2DSheet)
  5.    
  6.     oSketches = in_Doc2DSheet.Sketches
  7.     # oSketches = AppInvType.DrawingSketches(oSketches)
  8.    
  9.     oTG = AppInvCom.TransientGeometry
  10.    
  11.     # создание эскиза
  12.     oSketch = oSketches.Add()
  13.     oSketch.Edit()
  14.  
  15.     # создание геометрии
  16.     #-------------------------------------------------------------  
  17.     oPoint1 = oSketch.SketchPoints.Add(oTG.CreatePoint2d(0, 10), True)
  18.     oPoint2 = oSketch.SketchPoints.Add(oTG.CreatePoint2d(10, 15), True)
  19.     #-------------------------------------------------------------
  20.     GIntent_1 = in_Doc2DSheet.CreateGeometryIntent(oPoint1, in_const_.kPointIntent) #kPoint2dIntent
  21.     GIntent_2 = in_Doc2DSheet.CreateGeometryIntent(oPoint2, in_const_.kPointIntent)
  22.     #-------------------------------------------------------------
  23.     oSketch.ExitEdit()
  24.     in_Doc2DSheet.Update()
  25.    
  26.     textpoint = oTG.CreatePoint2d(15.67, 17.25)
  27.    
  28.     LinearDimObject = in_Doc2DSheet.DrawingDimensions.GeneralDimensions.AddLinear(textpoint, GIntent_1, GIntent_2, in_const_.kVerticalDimensionType)
  29.    
  30.     LGDimension_ = inventorApiV21.LinearGeneralDimension(LinearDimObject)

Оффлайн izhgtumekhanikАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 54
  • Карма: 0
  • Skype: izhgtumekhanik@gmail.com
Re: Размер между двумя точками.
« Ответ #1 : 29-08-2023, 21:48:00 »
если размер в в активном эскизе - то работает

Код - Python [Выбрать]
  1. oSketch.DimensionConstraints.AddTwoPointDistance(oPoint1, oPoint2, in_const_.kVerticalDim, oTG.CreatePoint2d(10.2, 12.2), False)

Оффлайн izhgtumekhanikАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 54
  • Карма: 0
  • Skype: izhgtumekhanik@gmail.com
Re: Размер между двумя точками.
« Ответ #2 : 29-08-2023, 22:14:50 »
ошибка здесь в сведении типа

Код - Python [Выбрать]
  1. GIntent_1 = in_Doc2DSheet.CreateGeometryIntent(oPoint1, in_const_.kPointIntent)

перебрал что нашел:

kPoint2dIntent kSketchPointObject kPoint2dIntent kPointIntent kPointEnumIntent kSketchPointObject kEndPointIntent kStartPointIntent kSketchPointObject

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Размер между двумя точками.
« Ответ #3 : 30-08-2023, 07:13:58 »
Наверное логика инвентора так не дает делать. Ведь если поставить точки в эскизе на чертеже то после выхода из эскиза привязыться к ним нельзя. По факту вне эскиза на чертеже происходит привязка размера к концам примитивов. Но поставленный размер в эскизе можно извлечь на чертеж возможно через GeneralDimensions.GetRetrievableDimensions

Оффлайн izhgtumekhanikАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 54
  • Карма: 0
  • Skype: izhgtumekhanik@gmail.com
Re: Размер между двумя точками.
« Ответ #4 : 30-08-2023, 11:43:56 »
По факту вне эскиза на чертеже происходит привязка размера к концам примитивов. Но поставленный размер в эскизе можно извлечь на чертеж возможно через GeneralDimensions.GetRetrievableDimensions

у меня ошибку выдает:

Код - Python [Выбрать]
  1. oTG = AppInvCom.TransientGeometry
  2.  
  3. # создание эскиза
  4. oSketch = oSketches.Add()
  5. oSketch.Edit()
  6.  
  7. oPoint1 = oSketch.SketchPoints.Add(oTG.CreatePoint2d(0, 10), True)
  8. oPoint2 = oSketch.SketchPoints.Add(oTG.CreatePoint2d(10, 15), True)
  9.  
  10. localDimension = oSketch.DimensionConstraints.AddTwoPointDistance(oPoint1, oPoint2, in_const_.kVerticalDim, oTG.CreatePoint2d(10.2, 12.2), False)
  11.  
  12. oSketch.ExitEdit()
  13. in_Doc2DSheet.Update()
  14.  
  15. in_Doc2D.SelectSet.Clear()
  16. in_Doc2D.SelectSet.Select(oSketch)
  17.    
  18. CDefinitions = AppInvCom.CommandManager.ControlDefinitions
  19. CDefinitions = inventorApiV21.ControlDefinitions(CDefinitions)
  20.        
  21. CDefinition1 = CDefinitions.Item("DrawingRetrieveDimsCmd")
  22. CDefinition1 = inventorApiV21.ControlDefinition(CDefinition1)
  23.        
  24. CDefinition2 = CDefinitions.Item("AppContextual_OKCmd")
  25. CDefinition2 = inventorApiV21.ControlDefinition(CDefinition2)
  26.      
  27. CDefinition1.Execute()
  28. CDefinition2.Execute()
  29.  
  30. #вот тут ошибка не как не получить объект  LinearGeneralDimension из localDimension
  31. LGDimension_ = inventorApiV21.LinearGeneralDimension(localDimension)
  32. var = LGDimension_.ModelValue #- значение размера
  33. print(var)

Оффлайн izhgtumekhanikАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 54
  • Карма: 0
  • Skype: izhgtumekhanik@gmail.com
Re: Размер между двумя точками.
« Ответ #5 : 30-08-2023, 17:32:16 »
Мне нужно как то убедится что я работаю именно с тем размером. Полагаться на порядковый номер в списке - как то не очень хочется.