Есть ли альтернатива View.GetOutline(), которая включает временные оси?

Примечание. На этот вопрос не отвечает предложенный вопрос - это практически его противоположность. Кроме того, это я тоже задал этот вопрос и я также дал ссылку на него ниже.

Я исправляю чужой код VBA для SolidWorks, который размещает чертежные виды рядом друг с другом в зависимости от их размера. Размер представления берется из ограничивающей рамки, возвращаемой View.GetOutline(), а положение представления устанавливается путем изменения свойства View.Position. Код обрабатывает многотельные детали, создавая один лист чертежа для каждого тела.

Проблема заключается в том, что свойство View.Position соответствует центру ограничивающей рамки, которая включает временные оси, а View.GetOutline() их не включает — оно возвращает немного больше, чем контур выделения, отображаемый графическим интерфейсом SolidWorks.

Это многотельная деталь и один из неправильных видов чертежа с включенными временными осями в графическом интерфейсе SW:

множественная часть введите здесь описание изображения

На чертеже вы можете увидеть:

  • контур выделения, показанный графическим интерфейсом SW (светло-голубой пунктирный прямоугольник)
  • диагональ контура, возвращаемая View.GetOutline() (красная линия)
  • центр вида, как в свойстве View.Position (красный X)
  • временные оси (синие кресты и линии)

Есть ли способ получить реальный размер вида чертежа, который соответствует ограничивающей рамке, центром которой является свойство View.Position?

По-видимому, чертежный вид включает в себя временные оси других тел в этой многотельной детали. Это указывает на альтернативный вопрос: Есть ли способ предотвратить включение временных осей других тел в многотельной детали в вид чертежа одного тела?

Для справки: проблема остается неизменной независимо от того, какой метод используется для создания представления (например, CreateDrawViewFromModelView3(), CreateUnfoldedViewAt3(), CreateRelativeView() и т. д.).

Примечание. Я спросил другой вопрос, связанный с той же проблемой, которую я изменил, потому что ошибочно предположил, что View.GetOutline() не включает временные оси.


person spacer    schedule 31.10.2019    source источник
comment
Отвечает ли это на ваш вопрос? Есть ли альтернатива View.GetOutline () что дает лучший контур?   -  person Anna    schedule 01.11.2019
comment
Спасибо @Anna, но это также вопрос, который я задал, тот, на который я ссылался в этом вопросе. Ссылка изменилась, когда я изменил заголовок, но это тот же вопрос.   -  person spacer    schedule 03.11.2019
comment
Чтобы получить правильный реальный размер многотельной сборки, я использую функции GetBox и GetPartBox. Но при наличии мультиконфигурационных сборок в Solidworks возникала ошибка для корректного определения центра чертежей иногда требуется ручная коррекция положения чертежей.   -  person Ivan.s    schedule 14.11.2019
comment
Спасибо @Ivan, я не уверен, что следую за тобой. У меня там одно тело View, и я могу получить центр View. Чего я не могу получить, так это контура View, контура, центром которого является View.Position.   -  person spacer    schedule 14.11.2019
comment
Я рассчитываю размер вида, размер листа, коэффициент масштабирования. По этому значению определите View.position и назначьте его View   -  person Ivan.s    schedule 14.11.2019
comment
@Ivan, как рассчитать размер представления? GetOutline() дает видимый размер чертежа, View.Position не всегда находится в центре этого контура - в этом проблема.   -  person spacer    schedule 15.11.2019
comment
Я получил реальный размер на GetBox или GetPartbox и установил коэффициент масштабирования, умножил его. Результат - размер представления. Что касается View.Position, могу ли я получить ваш файл SolidWorks, чтобы открыть его и запустить мою программу на вашем файле?   -  person Ivan.s    schedule 15.11.2019
comment
Теперь я использую функцию GetOutLine на своем собственном примере, получаю очень странный результат!   -  person Ivan.s    schedule 15.11.2019
comment
@ Иван, ты понял, о чем я говорю - GetOutline() не делает того, чего ты ожидал. К сожалению, мне не разрешено отдавать вам файлы. Вы можете воспроизвести это поведение, создав многотельную деталь с элементами, использующими временные оси.   -  person spacer    schedule 18.11.2019
comment
Мне не нужно использовать эту функцию в моем приложении. Я знал об этом странном поведении. Я объяснил свой способ дать правильный результат размера вида без смещения от вида чертежа. Затем я вычисляю позицию просмотра и назначаю ее. Я знал, что назначение положения, рассчитанное простым способом (размер прорисовки, размер вида, расстояние между видами), дает неверный результат. В моем варианте это было связано с изменением масштаба. Я изменил формулу простого способа на формулу, в которой используются два центра обзора (центр в старой шкале и центр в новой шкале). Я не использую временные оси в моделях.   -  person Ivan.s    schedule 18.11.2019