Для русскоязычных пользователей Visio. Начинающих и профессионалов. Где взять, как сделать, что купить и т.д.

Прочее

Перечень литературы

16.12.2016  Global Shape Data in Visio Document   Thomas Winkel    

08.12.2015  Заметки к схеме от руки   Alla Vasilieva    

20.11.2015  Lumia 950 vs. 950XL Comparison Template   Chris Roth    

19.11.2015  Автодобавление и автоудаление в Visio   Alla Vasilieva    

28.07.2015  Удаление личной информации   Alla Vasilieva    

17.03.2015  Что такое имя фигуры и как его можно узнать   Alla Vasilieva    

05.05.2014  Что содержится в создаваемом Visio сайте и где это хранится   Alla Vasilieva    

26.01.2012  Сначала отразите подробную информацию, а затем организуйте ее   Alla Vasilieva    

15.07.2009  What’s My Shape’s ID?   Chris Roth    

15.05.2009  Turn It Up With the NW Airlines Volume Gauge!   Chris Roth    

23.11.2005  Additional tricks for building UI mockups with Visio   Bill Morein   (англ.) Несколько хитростей пользовательского интерфейса Visio 

Ответы на вопросы

Копирование и вставка в новую страницу в Visio 2002

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

И правда летает! Мне понравилось! На первый взгляд причина кроется в том, что некоторые шейпы оказались привязанными к направляющим. Если копировать на другую страницу эти шейпы без направляющих, то им нечего подставить в формулу. Вот тут-то все и начинается. Если копировать все вместе с направляющими, выделив это по ctrl-A, то все копируется нормально и ничего не летает. Способ борьбы можно построить на основе того, что при смещении шейпа некоторые расчетные формулы меняются на числовые значения. То есть если выделить все нужные шейпы (в Вашем случае это правая половина листа) и клавишами сместить всю эту кучу на шаг вправо, а потом на шаг влево, то рисунок внешне не изменится. Но на самом деле вместо формул в нем будут уже числа. Пропадет и мешающая привязка. Если теперь скопировать несколько шейпов на другую страницу, то они уже не улетят.  

Отображение данных шейпа в PDF

Существует ли возможность отобразить данные шейпа при конвертировании в PDF?  

Это возможно, если у вас установлен Acrobat Standard. Ниже приведен пример файла Visio с макросом (см. источник). Макрос сохраняет документ в формате PDF в той же папке, затем читает данные шейпов на всех страницах и записывает их в виде комментариев в PDF. Проверено в Visio 2013 Pro, Acrobat XI Standard, документ Visio в метрической системе. 2. Использование Acrobat - не единственная возможность. Существует множество библиотек, работающих с комментариями. Например, можно воспользоваться open-source PdfSharp. Преобразование координат должно быть несложным. Внутренние единицы Visio - это дюймы, в PDF - точки, начало координат одинаковое (левый нижний угол). Поэтому формулы Visio_X*72, Visio_Y * 72 должны давать координаты X и Y в PDF. Пример размещения комментариев есть в http://www.pdfsharp.net/wiki/Annotations-sample.ashx. Ниже приведен скрипт powershell для добавления аннотаций с использованием рассмотренной выше методики (PdfSharp). 

$visioFileName = $PSScriptRoot + "\demo\PdfNote.vsd" $pdfFileName = $PSScriptRoot + "\demo\PdfNote.pdf" Write-Host converting $visioFileName to $pdfFileName # Load PdfSharp assembly Add-Type -Path (Get-ChildItem -Filter PdfSharp.dll -Recurse $PSScriptRoot).FullName # start Visio and open the document $visio = New-Object -ComObject Visio.Application $visio.Visible = $true $visioDoc = $visio.Documents.Open($visioFileName) # Export PDF, all pages $visioDoc.ExportAsFixedFormat(1, $pdfFileName, 1, 0) # Open exported PDF with PdfSharp $pdfDoc = [PdfSharp.Pdf.IO.PdfReader]::Open($pdfFileName); for ($i = 0; $i -lt $pdfDoc.PageCount; $i = $i + 1) { $pdfPage = $pdfDoc.Pages[$i] $visioPage = $visioDoc.Pages[1 + $i] foreach ($visioShape in $visioPage.Shapes) { # if comment exists $comment = $visioShape.CellsU("Comment").ResultStr(0) if ($comment) { # add it as annotation $x = $visioShape.CellsU("PinX").ResultIU - $visioShape.CellsU("Width").ResultIU / 2 $y = $visioShape.CellsU("PinY").ResultIU + $visioShape.CellsU("Height").ResultIU / 2 $annotation = New-Object PdfSharp.Pdf.Annotations.PdfTextAnnotation $annotation.Title = $visioShape.Characters.Text $annotation.Contents = $comment $annotation.Icon = 6 # "note" icon # inches to points $point = New-Object PdfSharp.Drawing.XPoint(($x * 72), ($y * 72)) $size = New-Object PdfSharp.Drawing.XSize(0, 0) $rect = New-Object PdfSharp.Drawing.XRect($point, $size) $annotation.Rectangle = New-Object PdfSharp.Pdf.PdfRectangle($rect) $pdfPage.Annotations.Add($annotation) } } }  

Источник (и подробности) - http://visguy.com/vgforum/index.php?topic=8581