AddSection Method

Автор Тема: AddSection Method  (Прочитано 1066 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

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

  • ADN OPEN
  • Сообщений: 20
  • Карма: 2
AddSection Method
« : 03-11-2018, 22:27:33 »
Приветствую, форум.

Подскажите, кто знает- как пользоваться методом AddSection. В справочнике толком не описано, что за  planeVector и какой у него массив должен быть.

Код - Visual Basic [Выбрать]
  1. RetVal = object.AddSection(FromPoint, ToPoint, planeVector)

К примеру, мне нужна секущая плоскость направленная  сверху вниз, где я не прав - в определении  точек или вектора или там и там :-\

Код - Visual Basic [Выбрать]
  1. Sub Example_Addsection()
  2.  
  3. Dim point_section_min(0 To 2) As Double
  4. Dim point_section_max(0 To 2) As Double
  5. Dim my_section As AcadSection
  6. Dim my_ms As AcadModelSpace
  7. Dim DirectionVec(0 To 2) As Variant
  8.    
  9.    point_section_min(0) = 0
  10.    point_section_min(1) = 0
  11.    point_section_min(2) = 0
  12.    
  13.    point_section_max(0) = 1000
  14.    point_section_max(1) = 1000
  15.    point_section_max(2) = 0
  16.    
  17.  Set my_ms = ThisDrawing.ModelSpace
  18.  DirectionVec(0) = 0#
  19.  DirectionVec(1) = 0#
  20.  DirectionVec(2) = 1#
  21.    
  22. my_section = my_ms.AddSection(point_section_min, point_section_max, DirectionVec)
  23.  
  24. End Sub

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 8566
  • Карма: 1045
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: AddSection Method
« Ответ #1 : 03-11-2018, 22:34:23 »
что за  planeVector
Вектор нормали к плоскости сечения, как я понимаю.
К примеру, мне нужна секущая плоскость направленная  сверху вниз, где я не прав - в определении  точек или вектора или там и там :-\
Ну в векторе точно не прав. Ты задаешь вектор плоскости X0Y
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 20
  • Карма: 2
Re: AddSection Method
« Ответ #2 : 03-11-2018, 22:46:43 »
 Да я понимаю что это нормаль и разобрался бы куда нужно повернуть методом проб, да и конечно уже и пробовал все и даже с 9-ти значным массивом, не работает. Походу дела проблема в точках, в справочнике как-то размыто описано...
« Последнее редактирование: 04-11-2018, 14:31:00 от alihovsky »

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 8566
  • Карма: 1045
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: AddSection Method
« Ответ #3 : 03-11-2018, 22:51:44 »
мне нужна секущая плоскость направленная  сверху вниз
Это значит вертикальная плоскость? Я правильно понял?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 20
  • Карма: 2
Re: AddSection Method
« Ответ #4 : 03-11-2018, 23:15:49 »
Да, вертикальная

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

  • ADN OPEN
  • Сообщений: 20
  • Карма: 2
Re: AddSection Method
« Ответ #5 : 03-11-2018, 23:44:40 »
Это значит вертикальная плоскость? Я правильно понял?

Да в принципе не важно направление нормали, помогите запустить метод, дальше разберусь
« Последнее редактирование: 04-11-2018, 14:31:13 от alihovsky »

Отмечено как Решение alihovsky 04-11-2018, 00:14:10

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 8566
  • Карма: 1045
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: AddSection Method
« Ответ #6 : 04-11-2018, 00:03:45 »
Попробуй вот этот код:
Код - Visual Basic [Выбрать]
  1. Sub GenSection()
  2.  
  3. Dim x3DSolid As Acad3DSolid
  4. ThisDrawing.Utility.GetEntity x3DSolid, basePt, "Укажите 3D-тело"
  5.  
  6. Dim PlaneVector(0 To 2) As Double
  7. PlaneVector(0) = 0: PlaneVector(1) = 0: PlaneVector(2) = 1
  8. 'pt1 = ThisDrawing.Utility.GetPoint(, "Укажите первую точку сечения: ")
  9. 'pt2 = ThisDrawing.Utility.GetPoint(, "Укажите вторую точку сечения: ")
  10. Dim pt1(0 To 2) As Double
  11. Dim pt2(0 To 2) As Double
  12. pt1(0) = -1000#: pt1(1) = -1000#: pt1(2) = 0#
  13. pt2(0) = 1000#: pt2(1) = 1000#: pt2(2) = 0#
  14. Dim sec As AcadSection
  15.  
  16. Dim ss As AcadSectionSettings
  17.  
  18. Set sec = ThisDrawing.ModelSpace.AddSection(pt1, pt2, PlaneVector)
  19. With sec
  20.  .TopHeight = 3
  21.  .BottomHeight = 1
  22.  .State = acSectionStatePlane
  23.  Set ss = .Settings
  24. End With
  25.  
  26. With ss
  27.   .CurrentSectionType = acSectionType2dSection
  28. End With
  29.  
  30. Dim acSectionTypeSettings As AcadSectionTypeSettings
  31. Set acSectionTypeSettings = ss.GetSectionTypeSettings(acSectionType2dSection)
  32. With acSectionTypeSettings
  33.  .ForegroundLinesVisible = True
  34.  .BackgroundLinesHiddenLine = True
  35.  .IntersectionFillHatchPatternName = "ANSI31"
  36.  ' Ну и так далее
  37. End With
  38.  
  39. sec.GenerateSectionGeometry x3DSolid, BoundaryObjs, FillObjs, BakcGroundObjs, ForegroundObjs, CurveTangencyObjs
  40.  
  41. End Sub
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 20
  • Карма: 2
Re: AddSection Method
« Ответ #7 : 04-11-2018, 00:14:00 »
Попробуй вот этот код:
Спасибо огромнейшее!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 8566
  • Карма: 1045
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: AddSection Method
« Ответ #8 : 04-11-2018, 00:17:28 »
alihovsky,
Это ты поиском плохо пользовался.  ;) Вот "погуглил" бы по "AcadSection" и нашел бы примеры...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 20
  • Карма: 2
Re: AddSection Method
« Ответ #9 : 04-11-2018, 14:21:25 »
Ну в векторе точно не прав. Ты задаешь вектор плоскости X0Y

 Вы с самого начала были правы  конечно  :)
 В методе важно соотношение точек и нормалей. Вот, прикладываю  "работу над ошибками", может кому и пригодится (что навряд ли :) )

Код - Visual Basic [Выбрать]
  1. Sub Example_Addsection()
  2. Dim my_m_sp As AcadModelSpace
  3. Dim my_sctn As AcadSection
  4. Dim pt_sctn_0(0 To 2) As Double
  5. Dim pt_sctn_1(0 To 2) As Double
  6. Dim dir_vec(0 To 2) As Double
  7. Set my_m_sp = ThisDrawing.ModelSpace
  8.  
  9. 'Секущая плоскость  для вида "спереди"
  10. pt_sctn_0(0) = 0#: pt_sctn_0(1) = -1000#: pt_sctn_0(2) = 0#
  11. pt_sctn_1(0) = 1000#: pt_sctn_1(1) = -1000#: pt_sctn_1(2) = 0#
  12.  
  13. dir_vec(0) = 0: dir_vec(1) = 0: dir_vec(2) = 1
  14.  
  15. Set my_sctn = my_m_sp.AddSection(pt_sctn_0, pt_sctn_1, dir_vec)
  16.  
  17. 'Секущая плоскость  для вида "сверху"
  18. pt_sctn_0(0) = 0#: pt_sctn_0(1) = 0#: pt_sctn_0(2) = 1000#
  19. pt_sctn_1(0) = 1000#: pt_sctn_1(1) = 0#: pt_sctn_1(2) = 1000#
  20.  
  21. dir_vec(0) = 0: dir_vec(1) = 1: dir_vec(2) = 0
  22.  
  23. Set my_sctn = my_m_sp.AddSection(pt_sctn_0, pt_sctn_1, dir_vec)
  24.  
  25. 'Секущая плоскость  для вида "слева"
  26. pt_sctn_0(0) = 0#: pt_sctn_0(1) = 0#: pt_sctn_0(2) = 0#
  27. pt_sctn_1(0) = 0#: pt_sctn_1(1) = -1000#: pt_sctn_1(2) = 0#
  28.  
  29. dir_vec(0) = 0: dir_vec(1) = 0: dir_vec(2) = 1
  30.  
  31. Set my_sctn = my_m_sp.AddSection(pt_sctn_0, pt_sctn_1, dir_vec)
  32.  
  33. End Sub
« Последнее редактирование: 04-11-2018, 23:56:15 от alihovsky »

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 8566
  • Карма: 1045
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: AddSection Method
« Ответ #10 : 04-11-2018, 14:44:27 »
Вот, прикладываю  "работу над ошибками", может кому и пригодится (что навряд ли :) )
Вполне возможно, что пригодится. Всё-таки примеров работы с AcadSection достаточно мало.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 20
  • Карма: 2
Re: AddSection Method
« Ответ #11 : 04-11-2018, 15:02:27 »
Всё-таки примеров работы с AcadSection достаточно мало.

При  всем при этом у AcadSection достаточно индивидуальных методов и свойств (которые по-моему как минимум интересные), а в справочнике нет примеров :o