Примечание. На этот вопрос не отвечает предложенный вопрос - это практически его противоположность. Кроме того, это я тоже задал этот вопрос и я также дал ссылку на него ниже.
Я исправляю чужой код 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()
не включает временные оси.
GetBox
иGetPartBox
. Но при наличии мультиконфигурационных сборок в Solidworks возникала ошибка для корректного определения центра чертежей иногда требуется ручная коррекция положения чертежей. - person Ivan.s   schedule 14.11.2019GetOutline()
дает видимый размер чертежа,View.Position
не всегда находится в центре этого контура - в этом проблема. - person spacer   schedule 15.11.2019GetBox
илиGetPartbox
и установил коэффициент масштабирования, умножил его. Результат - размер представления. Что касаетсяView.Position
, могу ли я получить ваш файл SolidWorks, чтобы открыть его и запустить мою программу на вашем файле? - person Ivan.s   schedule 15.11.2019GetOutLine
на своем собственном примере, получаю очень странный результат! - person Ivan.s   schedule 15.11.2019GetOutline()
не делает того, чего ты ожидал. К сожалению, мне не разрешено отдавать вам файлы. Вы можете воспроизвести это поведение, создав многотельную деталь с элементами, использующими временные оси. - person spacer   schedule 18.11.2019