All Forums
 Категория Visio
 Форум Вопросы и ответы
 Проблема с точкой соединения!
Author Previous Topic Topic Next Topic  

yabes

39 Posts

Posted - 03/04/2010 :  06:53:04
Здравствуйте! Вот кусок кода:
intRowIndex = sh.AddRow(visSectionConnectionPts, visRowLast, visTagCnnctPt)
Set vsoRow = sh.Section(visSectionConnectionPts).Row(intRowIndex)
vsoRow.Cell(visCnnctX).Formula = 2.5 & "mm"
vsoRow.Cell(visCnnctY).Formula = 10 & "mm"


Происходит следущее: координата Y всегда по непонятной причине умножается на 2.2222. Т.е. в результате точка соединения будет на расстоянии 22.2222 от начала коннектора! Что делать? Вариант: "постоянно делите на 2.2222" не подходит, так как в этом случае другие проблемы возникнут!

yabes

39 Posts

Posted - 03/04/2010 :  06:59:48
Ну не совсем на 2.2222 умножает. Например, если я пишу координату 15 mm, то он нарисует ее на расстоянии 33.3333!
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 03/04/2010 :  17:15:58
Можно предположить, что Вы показали здесь только фрагмент кода. А дальше еще что-то делаете с коннектором, что изменяет его конфигурацию. После этого Visio пересчитывает формулы, в том числе и координаты точки соединения. Пытается "помочь" пользователю тащить точку соединения вслед за изменяющейся геометрией коннектора.
Попробуйте обернуть 10 & "mm" в функцию Guard. Этим Вы защитите координату от "чужого" влияния.
Go to Top of Page

bdfy

Belarus
267 Posts

Posted - 03/05/2010 :  09:41:43
с созданием точек соединения на коннекторах вообще странная штука. у меня так и не получилось корректно сделать через макрос
http://visguy.com/vgforum/index.php?topic=1477.0
iConnRow = con.AddRow(visSectionConnectionPts, 1, visCnnctX)
    'Debug.Print "iConnRow " & iConnRow
    
    con.AddSection visSectionScratch
    con.AddRow visSectionScratch, visRowLast, visTagDefault
    
    con.CellsSRC(visSectionScratch, 0, visScratchA).FormulaU = "Geometry1.X2"
    con.CellsSRC(visSectionScratch, 0, visScratchB).FormulaU = "Geometry1.Y2"
   
    
    con.CellsSRC(visSectionConnectionPts, iConnRow, visCnnctX).FormulaU = "Geometry1.X2"
    con.CellsSRC(visSectionConnectionPts, iConnRow, visCnnctY).FormulaU = "Geometry1.Y2"

дает в ячейке коннектора запись в "5 mm" например, а такое же присвоение для ячейки Scratch формулу ="Geometry1.X2" как положено.
Go to Top of Page
  Previous Topic Topic Next Topic  
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)