相关文章:
轻量而敏捷的工业组态软件UI设计工具-ConPipe Studio 2022
基于Visual Studio扩展的WPF工业组态UI控件-ConPipe 2023
VS2019及更早版本的VS扩展版ConPipe控件Demo下载地址(.Net Framework Trial版):点此下载
VS2022扩展版ConPipe控件下载地址(.NetCore Trial版):点此下载
继发布《轻量而敏捷的工业组态软件UI设计工具-ConPipe Studio 2022》以来,收到不少工控小伙伴的支持。我在不断完善控件之余,在化工组态控件之外又添加了机械组态控件。规划中机械组态包含:滑轮/滑轮组,绳子/钢缆(支持设置张力),液压,钢结构,墙体(斜杠),链条,龙门吊,波纹管,弹簧,升降机(伸缩式),目前滑轮/滑轮组,液压,链条,弹簧已经接近完成,下面通过动图来感受下效果。
1,链条
Xaml代码:
<Machine:ChainItemCollection
ChainWheelCollection="150,300,8,0 360,240,7,1 570,240,7,1 810,347,13,0 490,420,7,0"
ChainItemOpacity="0.5"
ShowKeySlot="False"
ChainItemSize="100,39" HorizontalAlignment="Left" Height="550" Margin="100,100,0,0" VerticalAlignment="Top" Width="1140" />
ChainItemOpacity为链条的透明度;ShowKeySlot设置是否显示链轮轴的键槽(链轮中心轴边缘突出的小方块);ChainItemSize设置每节链条的尺寸(ChainWheelCollection设置后必须设置ChainItemSize后才能显示出链条,否则不显示链条);ChainWheelCollection是链轮的配置数据,每个链轮有四个参数,不同的链轮用空格隔开。前两个参数是链轮轴心的XY坐标,这个坐标是相对于Machine:ChainItemCollection的内部坐标;第三个参数是链轮的齿数(链轮的半径不需要设置,ChainItemSize和齿数确定后链轮的半径也就确定了,这跟在UG等三位软件中设计齿轮一个道理,齿轮的半径由模数和齿数决定);第四个参数指示链轮是否为压链轮(压链轮的意思是:链轮在链条形成的封闭曲线之外,动画中最上面的两个链轮就是压链轮)。在ChainWheelCollection中配置链轮有个非常重要的规则需要遵循的是:链轮的指派顺序必须是顺时针方向的,如下图所标:
2,弹簧
同样是一行代码搞定
<Machine:CoilSpring
SpiralDirection="Left"
Thickness="10"
Turns="10"
RendColor="DarkRed"
MinHeight="95"
MaxHeight="195" Margin="536,250,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Height="123" Width="70"/>
Thickness设置弹簧的粗细,默认就是10;Turns设置弹簧匝数(弹簧中间有螺纹的部分,不包含上下两个平直端);RendColor设置弹簧的颜色;MinHeight设置弹簧压缩后的最小长度;MaxHeight设置弹簧拉伸后的最大长度;Height可以实时设置的弹簧的长度;VerticalAlignment设置为Top或Bottom可以让弹簧实现顶部或底部固定。
3,液压联动
两个部件两行代码,绿色的RotateableBox控件的Content可以设置为其他任何控件的组合。
<Machine:RotateableBox Name="rotateableBox"
FixedRotatePoint="0,49"
ActiveRotatePoint="236,49"
WorkDirection="Clockwise"
Margin="250,316,0,0" Height="50" Width="532" Background="Green" Opacity="0.5" />
<Machine:PistonRod
RelevantSystem="{Binding ElementName=rotateableBox}"
FixedRotatePoint="300,374"
ShowTopBallCup="True" RodDiameterRate="0.9" MaxTravel="120" PistonCylinderHeight="130" CurrentTravel="0" Width="50" />
Machine:RotateableBox的尺寸可以自己定义;FixedRotatePoint为固定旋转点(图中左下角的位置),相对于Machine:RotateableBox的任意位置;ActiveRotatePoint为Machine:RotateableBox与活塞杆联动的位置,也是相对于Machine:RotateableBox的任意位置;通过设置Content属性来定制想要的效果。
Machine:PistonRod为活塞杆。RelevantSystem为关联系统,也就是Machine:RotateableBox,试用绑定的方式赋值,也可以通过C#代码在后台设置;FixedRotatePoint为固定旋转点,相对于父容器的任意位置;CurrentTravel设置活塞杆当前的行程;MaxTravel设置最大行程;ShowTopBallCup设置是否显示活塞杆两头的球头座;RodDiameterRate设置活塞杆的宽度占控件宽度的比例;PistonCylinderHeight设置活塞筒的长度;Width设置活塞杆的最大宽度。
下图展示RodDiameterRate设置为0.2(模拟气缸的外形)
四,滑轮组
滑轮组由一组滑轮和绳索组成
<Machine:PulleyRopeCollection Name="pulleyRopeCollection"
PulleyCollection="0,571,113,35,0,1 0,715,381,35,0 0,443,381,35,0"
HorizontalAlignment="Left" VerticalAlignment="Top" Width="800" Height="600" />
PulleyCollection是滑轮的配置数据,每个滑轮有六个参数,不同的滑轮用空格隔开。第一参数设置滑轮是否带钩;第二、三个参数设置环论轴心的XY坐标;第四个参数设置滑轮的半径;第五个参数为可选参数,设置滑轮是否为驱动轮;第五个参数为可选参数,设置滑轮是否为固定的(固定的滑轮不可以转动,指示用来托住绳子的)。
5,动滑轮
四个滑轮一条绳索。也许有看官会说,明明是三个滑轮啊?!其实最左边那个绳头是半径为0的滑轮而已。
<Machine:Pulley x:Name="p1" Center="228,58" Radius="28" IsDrivePulley="True" IsReverse="False" />
<Machine:PulleyBlock x:Name="p2" Center="228,450" Radius="18" HorizontalAlignment="Left" />
<Machine:Pulley x:Name="p3" Center="168,158" Radius="28" IsPressurePulley="True" IsStatic="True" IsReverse="True" />
<Machine:Pulley x:Name="p4" Center="50,130" Radius="0" IsStatic="True" />
<Machine:PulleyRope x:Name="rope" Panel.ZIndex="99" RopeThickness="3" PulleyArray="p1,p2,p3,p4" />
Center设置滑轮的轴心位置,相对于父容器的任意位置;Radius为滑轮的半径;IsDrivePulley设置是否为驱动轮,如果滑轮组和绳索不是闭合的,驱动轮上的绳子就会绕满一整圈充当集线轮;IsReverse设置滑轮反转;
Machine:PulleyRope是绳索,PulleyArray配置绳索相关联的滑轮Name,指派顺序同样满足顺时针的规则;RopeThickness设置绳索的粗细;在Distance中设置绳索移动的长度,正增长会带动滑轮顺时针转动并计算旋转的速度,直径大的滑轮转速慢,直径小的滑轮转速快且是成比例的;