StartPoint StartPoint

Автор Тема: StartPoint StartPoint  (Прочитано 1976 раз)

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

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

  • ADN OPEN
  • Сообщений: 4
  • Карма: 0
StartPoint StartPoint
« : 07-12-2019, 02:14:16 »
подскажите пожалуйста, по какому алгоритму Инвентор выбирает какая точка чертежной кривой(дуги, например) будет StartPoint, а какая EndPoint ?
Пытаюсь сделать так, чтобы при выборе дуги ее можно было однозначно определить по стартпоинт, ендпоинт и центрпоинт, но очень похожие дуги могут иметь эти граничные точки в разных своих концах, например у одной сверху начало, а у другой снизу, заранее спасибо.

Отмечено как Решение funnydogs2u 10-12-2019, 23:44:44

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: StartPoint StartPoint
« Ответ #1 : 08-12-2019, 15:09:14 »
по какому алгоритму Инвентор выбирает какая точка чертежной кривой(дуги, например) будет StartPoint, а какая EndPoint ?

Можно либо просто по перебирать выделенные сегменты чертежа и понять где они соединяются,
либо можно попытаться посмотреть посмотреть через

DrawingView.DrawingCurves( [ModelObject] As Variant ) As DrawingCurvesEnumerator
Т.е. попадешь на вход коллекцию трехмерных объектов и получаешь на выходе коллекцию чертежных сегментов на чертеже которые им соответствуют
Может там и найдется какая нибудь закономерность.

Там пример был в хэлпе как работать с сегментами на чертежном виде:
Код - Visual Basic [Выбрать]
  1. Public Sub CreateDetailView()
  2.     ' Set a reference to the drawing document.
  3.    ' This assumes a drawing document is active.
  4.    Dim oDrawDoc As DrawingDocument
  5.     Set oDrawDoc = ThisApplication.ActiveDocument
  6.  
  7.     ' Select a drawing view.
  8.    Dim oDrawingView As DrawingView
  9.     Set oDrawingView = ThisApplication.CommandManager.Pick(kDrawingViewFilter, "Select a drawing view.")
  10.        
  11.     'Set a reference to the active sheet.
  12.    Dim oSheet As Sheet
  13.     Set oSheet = oDrawingView.Parent
  14.  
  15.     ' Set a reference to the center of the base view.
  16.    Dim oPoint As Point2d
  17.     Set oPoint = oDrawingView.Center
  18.    
  19.     ' Translate point by a distance equal to the width of the view
  20.    ' This will be the placement point of the detail view.
  21.    oPoint.X = oPoint.X + oDrawingView.Width
  22.    
  23.     ' Arbitrarily find an arc within the selected drawing view.
  24.    ' The detail view will include this arc.
  25.    Dim oCurve As DrawingCurve
  26.     Dim oArcCurve As DrawingCurve
  27.     For Each oCurve In oDrawingView.DrawingCurves
  28.         If oCurve.CurveType = kCircularArcCurve Then
  29.             Set oArcCurve = oCurve
  30.             Exit For
  31.         End If
  32.     Next
  33.    
  34.     If Not oArcCurve Is Nothing Then
  35.         ' Use the range of the arc in sheet space to calculate the detail view box.
  36.        Dim oCornerOne As Point2d
  37.         Set oCornerOne = oArcCurve.Evaluator2D.RangeBox.MinPoint
  38.         oCornerOne.X = oCornerOne.X - 1
  39.         oCornerOne.Y = oCornerOne.Y - 1
  40.        
  41.         Dim oCornerTwo As Point2d
  42.         Set oCornerTwo = oArcCurve.Evaluator2D.RangeBox.MaxPoint
  43.         oCornerTwo.X = oCornerTwo.X + 1
  44.         oCornerTwo.Y = oCornerTwo.Y + 1
  45.        
  46.         ' Create the detail view with a rectangular box.
  47.        Dim oDetailView As DetailDrawingView
  48.         Set oDetailView = oSheet.DrawingViews.AddDetailView(oDrawingView, oPoint, _
  49.         kFromBaseDrawingViewStyle, False, oCornerOne, oCornerTwo, , oDrawingView.Scale * 2)
  50.     Else
  51.         MsgBox "No arc was found in the selected drawing view."
  52.     End If
  53. End Sub
  54.  

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

  • ADN OPEN
  • Сообщений: 4
  • Карма: 0
Re: StartPoint StartPoint
« Ответ #2 : 10-12-2019, 23:44:14 »
Спасибо, пришёл к выводу что если сопрягается внешние грани, то стартпоинт и эндпоинт одни, если сопряжение было по внутренним граням и основная часть дуги в металле, то ровно противоположные, вроде получилось таким образом все перебрать. вариантов дуг до 180 градусов получилось 16, собственно если учесть внешнее/внутреннее сопряжения то 32 варианта