近期研究了椭圆形图例的定制,涉及三角函数和椭圆标准方程,勾起了我高中时代的很多回忆。
找找你当年所处的象限吧:
今天我们通过定制自由变换的椭圆形图例,学习COMOS图例定制方法。
复习下椭圆的概念:
在数学中,椭圆是围绕两个焦点的平面中的曲线,使得对于曲线上的每个点,到两个焦点的距离之和是恒定的。
开始COMOS图例定制,创建一个设备对象(注:为便于学习未按推荐结构创建设备)。
命名为容器,如下图所示(可点击“设置图标”按钮为设备选择ico格式的文件作为图标,此处不详细介绍)
点击“符 ”选项卡
取消左下角“隐藏未使用的绘图类型”复选框
然后上方列表将显示如下内容
我们本次以绘制PFD图例为例,选择类型“M21_P1”图纸类型“PFD” 行,双击相应的符 单元格。将看到如下所示的绘图板,我们画一条直线和一个圆,点击保存,然后关闭绘图板。
回到符 选项卡界面,选中PFD,点击“显示符 脚本”按钮。
将看到窗口中有绘制直线和圆的脚本。
其中
DrawLine p1, p2 ‘绘制从P1点到P2点的直线
DrawCircle p3, p4 ‘绘制以P3为圆心 P3至P4为半径的圆
我们发现用画图板绘制的图形会自动转换成相应的脚本,同样的通过脚本也可以自动生成图形。
按上述方法绘制的线和圆的尺寸都是固定的,虽足够使用,但不够灵活。定制自由变换的图例,可以满足灵活使用的需要。
首先需要一个自由变化的变量,这里我们借助控制点对象实现,控制点是一个可随鼠标移动的点:
Set g1=(“G1”,18,9,true)
其中参数”G1″为控制点名称,18为控制点初始x坐标,9为初始y坐标。
获取控制点的当前坐标方法为:
g1.x ’x坐标
g1.y ‘y坐标
先以简单的矩形图例为例介绍控制点的用法,矩形坐标系见下图
那么绘制自由变换的“矩形图例”对应的脚本即为
Set g1=grab(“G1”,18,9,true)
Set P1=Coord(g1.x,g1.y) ‘P1坐标
Set P2=Coord(g1.x,-g1.y) ‘P2坐标
Set P3=Coord(-g1.x,-g1.y) ‘P3坐标
Set P4=Coord(-g1.x,g1.y) ‘P4坐标
DrawLine P1,P2 ‘画线P1-P2
DrawLine P2,P3 ‘画线P2-P3
DrawLine P3,P4 ‘画线P3-P4
DrawLine P4,P1 ‘画线P4-P1
图例定制完成后,需要在PFD图纸中进行测试。
首先在单元选项卡创建”工艺”节点
然后创建“工艺单元”
创建”工艺流程图”
双击打开工艺流程图,将新建的容器对象拖拽至图纸中
双击图例,待控制点显示后,鼠标左键拖拽控制点进行测试
对于常用图例可以放入文档右侧符 栏中,限于篇幅,暂不做具体介绍。
接下来我们试着做一个椭圆图例。
我们知道椭圆的标准方程有两种,取决于焦点所在的坐标轴:
1)焦点在X轴时,标准方程为:
2)焦点在Y轴时,标准方程为:
以焦点在X轴为例,参考三角函数公式:
求解得到椭圆上某点坐标为:
x=a*cosβ ‘椭圆某点x坐标
y=b*sinβ ‘椭圆某点y坐标
其中a为长轴的一半 b为短轴的一半
借助微积分的概念,将椭圆曲线分割成若干点,将相邻点以直线方式连接,当分割数量足够大时,直线形成的曲线将无限接近椭圆。
我们将椭圆以0.01弧度进行分割 ,定制脚本如下:
Set G1=grab(“G1”,18,9,true)
a=G1.x ‘椭圆长轴a取控制点x坐标
b=g1.x*0.6 ‘椭圆短轴取a*0.6
pi=3.1415926 ‘π
For i=0 To 2*pi step 0.01 ‘从0到2π弧度,每偏转0.01弧度绘制一条直线
x1=a*cos(i) ‘椭圆上P1点的x坐标
y1=b*sin(i) ‘椭圆上P1点的y坐标
x2=a*cos(i+0.01) ‘椭圆上旋转0.01弧度的P2点的x坐标
y2=b*sin(i+0.01) ‘椭圆上旋转0.01弧度的P2点的y坐标
Set P1=Coord(x1,y1)
Set P2=Coord(x2,y2)
DrawLine P1,P2 ‘绘制P1-P2直线
Next
图例效果图如下:
结合矩形和椭圆,可以完成带封头的容器图例定制:
Function Geometrie (PARAM)
ResetToDefaults
Header.Layer = “2”
Header.Width = 0.1
Set G1=grab(“G1”,9,18,true)
Set P3=Coord(g1.x,g1.y)
Set P4=Coord(-g1.x,g1.y)
Set P5=Coord(-g1.x,-g1.y)
Set P6=Coord(g1.x,-g1.y)
DrawLine P3,p4
DrawLine P4,P5
DrawLine P5,P6
DrawLine P6,P3
a=g1.x ‘椭圆长轴a取控制点x坐标
b=g1.x*0.6 ‘椭圆短轴取a*06
pi=3.1415926
‘绘制上半椭圆
For i=0 To pi step 0.01 ‘每偏转0.01弧度绘制一次直线
x1=a*cos(i) ‘椭圆上P1点的x坐标
y1=b*sin(i) +g1.y’椭圆上P1点的y坐标 向上偏移g1.y以便与矩形上边对齐
x2=a*cos(i+0.01) ‘椭圆上旋转0.01弧度的P2点的y坐标
y2=b*sin(i+0.01)+g1.y ‘椭圆上旋转0.01弧度的P2点的y坐标 向上偏移g1.y以便与矩形上边对齐
Set P1=Coord(x1,y1)
Set P2=Coord(x2,y2)
DrawLine P1,P2 ‘绘制P1-P2直线
Next
‘绘制下半椭圆
For i=pi To 2*pi step 0.01
x1=a*cos(i)
y1=b*sin(i)-g1.y ‘向下偏移,与矩形下边对齐
x2=a*cos(i+0.01)
y2=b*sin(i+0.01)-g1.y ‘向下偏移,与矩形下边对齐
Set P1=Coord(x1,y1)
Set P2=Coord(x2,y2)
DrawLine P1,P2
Next
End Function
图例效果如下:
今天就到这里吧~
~转发~
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!