如何用python测量visio中的连接器长度?

问题描述 投票:0回答:1

我正在尝试测量visio文件中每个连接器的长度,我用它来计划房屋平面图中的电源线长度。

我找不到Microsoft Visio文件中连接器几何的起始坐标。

我使用python解压缩* .vsdx(Visio 2019)并分析page1.xml

但我找不到几何的开始。我试图找出微软的帮助,但它并没有把我带到任何地方。

简单的连接器:

<Shape ID='1' NameU='Dynamic connector' Name='Dynamischer Verbinder' Type='Shape' Master='2'>
<Cell N='PinX' V='4.03543297686481' F='Inh'/>
<Cell N='PinY' V='6.397637646249088' F='Inh'/>
<Cell N='Width' V='0.1968503937007874' F='GUARD(0.19685039370079DL)'/>
<Cell N='Height' V='-3.740157393191775' F='GUARD(EndY-BeginY)'/>
<Cell N='LocPinX' V='0.09842519685039369' F='Inh'/>
<Cell N='LocPinY' V='-1.870078696595888' F='Inh'/>
<Cell N='BeginX' V='3.937007782307131'/>
<Cell N='BeginY' V='8.267716342844976'/>
<Cell N='EndX' V='4.133858171422488'/>
<Cell N='EndY' V='4.527558949653201'/>
<Cell N='LayerMember' V='0'/>
<Cell N='BegTrigger' V='1' F='_XFTRIGGER(Sheet.1!EventXFMod)'/>
<Cell N='EndTrigger' V='1' F='_XFTRIGGER(Sheet.1!EventXFMod)'/>
<Cell N='TxtPinX' V='2.292715350904473E-9' F='Inh'/>
<Cell N='TxtPinY' V='-1.968503891153566' F='Inh'/>
<Section N='Control'>
<Row N='TextPosition'>
<Cell N='X' V='2.292715350904473E-9'/>
<Cell N='Y' V='-1.968503891153566'/>
<Cell N='XDyn' V='2.292715350904473E-9' F='Inh'/>
<Cell N='YDyn' V='-1.968503891153566' F='Inh'/>
</Row>
</Section>
<Section N='Geometry' IX='0'>
<Row T='MoveTo' IX='1'>
<Cell N='X' V='2.292715350904473E-9'/>
</Row>
<Row T='LineTo' IX='2'>
<Cell N='X' V='2.292715350904473E-9'/>
<Cell N='Y' V='-3.740157393191775'/>
</Row>
<Row T='LineTo' IX='3'>
<Cell N='X' V='0.1968503914080722'/>
<Cell N='Y' V='-3.740157393191775'/>
</Row>
</Section>
</Shape>

我希望找到几何的开始,但它不存在?

我不明白“moveto”部分?

python xml visio connector
1个回答
2
投票

你似乎选择了一种非常难的做事方式(特别是计算长度)。通常对于类似的任务,使用Visio本身,它提供了一个人性化的API来计算连接器长度。例如,如果连接器是贝塞尔曲线,您会怎么做?好吧,它理论上可以:)

enter image description here

使用Windows上的python,您可以尝试使用python COM模块(例如win32com)。然后连接器长度计算由Visio完成并使用它是一件微不足道的事情:

connector.LengthIU

关于“MoveTo”部分 - 我相信在vsdx中可以省略琐碎(零)部分,因此Y单元没有数据,即我说的是缺少<Cell N='Y' V='0'/>。但我不是百分百肯定。另请注意,几何部分中的值是相对的(与形状引脚相对)。

© www.soinside.com 2019 - 2024. All rights reserved.