APP下载

船用CAD参数化绘图系统的配置化实现方法

2021-10-25刘杰杨梓辉韩博志李强陈新华

船海工程 2021年5期
关键词:绘图命令图纸

刘杰,杨梓辉,韩博志,李强,陈新华

(1.武汉理工大学 能源与动力工程学院,武汉 430063;2.中船黄埔文冲船舶有限公司,广州 510715)

工业产品设计已全面进入数字化设计阶段,CAD软件应用广泛。为加快设计过程,关于CAD参数化绘图系统或CAD辅助绘图功能增强方面的工作[1],在船舶产品设计领域,针对船体[2-3]、联轴器[4]等典型结构及部件设计已有相应文献报道,也扩展应用到参数化的有限元分析模型构建方面[5-6]。这些参数化绘图系统基本都采用“特定对象绘图特征分析→参数设计→定向程序开发→数据输入与绘图命令生成”这样的逻辑处理流程。这一处理流程针对特定对象开发CAD参数化绘图系统技术完全可行,但仍然存在如下不足之处。

1)采用这样的处理流程需要对CAD二次开发的相关绘图语句非常熟悉,针对不同的CAD软件可能需要完全重新开发。

2)开发的系统只能针对单一对象,而对新对象,必须完整重复一次开发过程,程序开发中调试工作量大。

3)程序界面及功能模块的开发工作量大,通用性、移植性和扩展性不强。

4)开发周期长,用户自身无法调整。

针对上述不足,考虑开发新的处理方法,利用平台化软件的思路,提高CAD参数绘图系统开发的效率和灵活性。

1 实现方案

CAD图纸文件的生成可以通过两种方式:①通过软件的GUI界面进行手工绘制;②通过编辑相应的绘图命令流,并在CAD中执行命令流。为便于陈述,选取图1所示的一份简单图形的CAD图纸。图2所示为该图纸对应的命令流。

图1 示例图纸

图2 示例图纸对应的部分CAD绘制语句

改变图2所示的命令流中的具体值,并重新执行新的命令流,生成图纸中对应图形的尺寸、位置即会改变,进而生成一份新的图纸,这也是目前所有的CAD参数化绘图系统所采用的实现方式。但现有的CAD参数化绘图系统其命令流输出不仅包括其中的参数值,也包括对应的绘图语句,如Line、ARC等命令。这样设计导致产生命令流的语句在程序逻辑中固化,通用性不强,虽然程序实现的难度不大,但需要对CAD软件本身的命令语句比较熟悉。

为改变这种处理模式,构建如图3所示的处理方法。

图3 系统设计流程

该方法中,首先通过已经存在的图纸文件构建对应对象的初始绘图命令流,再编辑这个初始命令流形成对应对象的参数化绘图模板文件,在模板文件中特别设计标记符号。程序运行时,通过选择特定的绘制对象加载相应的模板,自动解析模板文件,获取其中的标记符号,根据获取信息自动创建相应的参数输入界面。最后,在用户输入相应的参数后,替换原来命令流模板文件中的标记,形成一个新的完整命令流,并自动传递给CAD软件执行,得到需要的CAD图纸文件。该处理方法有别于传统处理方法的核心在于,完全不是由程序生成命令的语句,即程序并不直接输出如Line、ARC等命令语句的,只是替换模板文件中的参数占位符,由此提高方法的通用性,也可以让用户自行创建和修改模板文件。

2 关键技术

2.1 命令流模板文件的辅助构建

本方法的源头是需要与参数化绘图对象对应的命令流模板。该命令流模板可以通过手工编辑产生,但需要对CAD命令语句及语法非常熟悉;同时还需要对绘制对象本身的特性很了解,比如轴系部件的绘制顺序、绘制的细节等,无形中增加了开发的难度。为此,在构建命令流模板文件时,采用一种新思路,即通过已有的CAD图纸文件来产生初始的命令流文件。采用程序技术将CAD图纸文件转换为CAD命令流,简化命令流模板文件的创建。图2所示即为与图1对应图纸根据该方法生成的命令流。

但图2所示的命令流文本中,每个绘图命令中仍然是一个具体的值,必须将具体的值变成参数的占位符号,才能变成命令流模板文件。此步骤非常关键,但人工逐一的修改很容易出错。为方便构建模板文件,需要有相应的工具来简化这个步骤。

观察分析图1可知:图形之间一般存在较强的关联性,例如:图1正中3个圆有着相同的圆心,那么只需要定义一个参数,简化参数的数量。若不考虑图形间的关联性,参数个数会增加很多,导致输入界面比较复杂,降低用户的使用体验。因此需要能在选择某个参数值后,自动选择所有该初始命令流文件中的相同参数,并能全部或由用户来决定是否替换为相应的占位标识符号。命令流模板文件辅助编辑界面见图4。

图4 命令流模板文件辅助编辑界面

在程序中定义一个字符串变量来存储获取到的命令流文本,将该命令流文本置于程序界面左侧的文本框中,通过字符串切割函数,将字符串变量中的所有参数值分割出来,存储在一个数组中,去除数组中重复的参数。用列表控件来显示该数组,置于程序界面的右侧。用户每次在列表控件中点击某个参数时,程序会在原字符串变量中匹配该参数,在左侧文本框中使用高亮颜色来显示,用户即可编辑替换。编辑完成后,保存为命令流模板文件。通过该界面能加快命令流模板文件的创建。

2.2 模板文件中的参数创建

分析命令流特征发现,在命令流中,存在参数之间的依赖关系,即有些参数是可以通过其他参数值来计算确定的,这样可以简化参数的数量。图1中标记有“左下角小圆”与“中间最里层圆”为该图纸的关键部分,标记有“左直线”、“左上角圆弧”与“上直线”以及其他未标记的部分为该图纸的次要部分,若确定关键部分的参数信息,次要部分的参数信息即可由关键部分的参数信息计算得出。例如:左直线的长度可由左下角小圆的圆心坐标y1与中间最里层圆的圆心坐标y2计算得出;上直线的长度可由左下角小圆的圆心坐标x1与中间最里层圆的圆心坐标x2计算得出。

任意一份图纸都会存在关键部分与次要部分,关键是如何确定。一种方法是通过对设计对象的理解,人工确定;另一种方法是通过读取多份同类图纸,分析其命令流,为每一份图纸找出关键部分与次要部分。要实现通用化的CAD参数绘图系统,必须采用第2种方法。限于篇幅关系,这个问题不展开。

将关键部分的命令流参数称为“直接参数”,次要部分的命令流参数称为“间接参数”。“直接参数”设定为由用户手动输入,“间接参数”设定为程序通过由输入的“直接参数”计算得出。因此,设计中采用将命令流模板文件中的“标记符号”分为两类:“直接参数”修改为含有“{和}”的标记占位符,“间接参数”修改为含有“[和]”的标记占位符。为了方便配置,将模板文件也分成“命令流模板”和“计算模板”两类。图1示例图纸的部分命令流模板文件见图5。

图5 命令流模板文件

同时,为了能计算得出“间接参数”,还需在分析图纸及其命令流的基础上配置一份计算模板文件,在计算模板文件中给出参数间的计算关系。与图5命令流模板文件配套的计算模板文件见图6。

图6 计算模板文件

2.3 参数提取与界面自动创建

程序运行时,用户在选择完需要进行参数化绘图的模板文件后,程序会首先加载其中的命令流模板文件,再识别命令流模板文件中的“直接参数”占位符,构建一个表格式的参数输入界面,见图7。

图7 参数输入界面

表格式输入界面的好处是不需要考虑界面的布局;而且,在参数比较多的情况下,传统的1个控件输入1个值的界面设计方式很难实现通用化。

在所有的“直接参数”输入完毕后,还需要进行“间接参数”的计算,根据文献[7]中的表达式解析思想,构建表达式计算分析类。

3 程序实现

在.net平台利用VB.net2017语言进行程序开发实现,分为两个主要功能:①通过案例CAD图纸文件生成对应的命令流文件,在此文件基础上编辑形成命令流模板,编辑对应的计算参数配置模板,并将这些信息保存到数据库;②构建用户操作界面,提供用户选择需要绘制的对象图纸类型,再根据选择加载相应的命令流模板文件,自动识别模板文件中的参数,对应创建参数输入界面,再根据用户输入替换命令流模板,形成完整命令流后传递给CAD软件执行,得到最终的CAD图纸。

程序的实现流程见图8。

图8 程序实现流程

4 应用效果

将该方法应用在船舶轴系设计,产生的图纸示例见图9。

图9 实现的效果示例

对比上下2个图形,可以发现其中不仅是参数值的差异,也有图元对象细节的差异。比如图中下部的轴段中有过渡圆弧、有对称轴线示意、有连接法兰信息等,而上部的轴段则没有这些细节信息。传统的CAD参数化系统要实现这个差异,必须定义很多个系统配置参数,根据系统配置参数的用户取值来决定输出图元对象时的细节。这样,系统实现的复杂度明显增加,而且不可能包含所有的细节配置特征,导致很多情况下只有修改源程序才能实现功能的修改。但本文构建的方法,其核心是命令流模板文件,针对同一个需要参数化绘制的对象,可以构建不同的命令流模板。如图9所示,其上下分别为2个命令流模板文件所生成的,在下部图元所对应的命令流模板中,包含了更多的细节绘制命令,因此输出时就有更多的细节信息。因为命令流模板本质上是普通的文本文件,修改很方便,可以由用户来修改命令流模板文件,给予用户一定的自主调整的可能,而不需要修改源程序。因此,本方法实现的是一种CAD参数化绘图系统的开发平台,借助该平台中提供的命令流模板文件的配置设定工具,只需要开发配置更多的命令流模板文件,就可以实现对CAD参数化绘制对象的扩展。

5 结论

对现有CAD参数化绘图系统,提出新的实现方法,利用已有的案例图纸产生绘图命令流初始文件,再通过相应的辅助工具创建形成命令流模板,模板文件中包括“直接参数”,和“间接参数”两类占位符号。运行时通过创建好的命令流模板文件自动创建出相应的输入界面,根据输入参数进行计算后替换原来命令流模板文件形成新的绘图命令流,实现参数化绘图的目的。解决了其中配置化表达式计算、模板文件辅助编辑等关键问题。该方法将传统的CAD参数化绘图系统提升到平台化开发的高度,已在实际的轴系辅助设计软件中得到集成应用,效果良好。但在模板文件构建的方便性方面,还有进一步提升的空间。

猜你喜欢

绘图命令图纸
编辑部故事
管理Windows10的PowerShell命令行使用记录
叮咚鸟
浅谈汽车线束产品图纸管理
疫情就是命令 防控就是责任
看图纸
解析Windows10的内部命令
绘图机器人
宝箱4
爸爸的“神秘宝贝”