首页/文章/ 详情

STAR-CCM+二次开发 | 三维几何创建类用法

1年前浏览6660

要真正学会STAR-CCM+二次开发,就得从API接口学起,需要下点苦功夫,一步一步来,“慢就是快”!

本文通过创建一个U形管道来演示STAR-CCM+中常见几何创建类的用法。

 

CadModel类

在进行三维几何模型创建过程中主要使用的类是CadModel,类的两大成员就是属性和方法,其中属性在二次开发中很少用到,需要重点关注常用的方法,这里列举了CadModel中两个常用的方法:getFeaturegetFeatureManager,因为使用getFeatureManager方法可以返回FeatureManage的实例对象,所以这里一并列举了FeatureManager的常用方法,帮助我们快速掌握创建草图及特征的方法。

 

U形管代码实例

本文利用IDEA编写了创建U形管的Java代码,具体如下,每一句都有比较详细的注释,如果有不懂的可以后台私信我,只要看见的并且我也会的都会回答,如果你没有等到回复,也可以尝试问问ChatGPT,我遇到不懂的也会问它,真的很方便。

import star.base.neo.DoubleVector;
import star.cadmodeler.*;
import star.common.Simulation;
import star.common.StarMacro;
import star.vis.CurrentView;
import star.vis.Scene;

public class UPipeGenerate extends StarMacro {

   @Override
   public void execute() {
       execute0();
   }
   public void execute0(){
       //定义U形管的几何尺寸
       double l = 0.26;//直段长度
       double x = 0.24;//进出口圆心距离
       double r = 0.02;//圆管半径
       //获取当前的sim文件
       Simulation sim = getActiveSimulation();
       //创建一个视图用于显示三维模型的创建过程
       Scene scene = sim.getSceneManager().createScene("3D-CAD veiw");
       //初始化视图并等待
       scene.initializeAndWait();
       scene.openInteractive();
       //新建一个“3D-CAD Model”
       CadModel model = sim.get(SolidModelManager.class).createSolidModel(scene);
       //创建一个草图
       //先获取草图基准面:YZ平面
       CanonicalSketchPlane planeYZ = (CanonicalSketchPlane) model.getFeature("YZ");
       Sketch sketch = model.getFeatureManager().createSketch(planeYZ);
       //启动草图编辑
       model.getFeatureManager().startSketchEdit(sketch);
       //创建直线段1
       LineSketchPrimitive line1 =
               sketch.createLine(new DoubleVector(new double[] {-x/2, l}), new DoubleVector(new double[] {-x/2, 0}));
       //创建直线段2
       LineSketchPrimitive line2 =
               sketch.createLine(new DoubleVector(new double[]{x/2,l}),new DoubleVector(new double[]{x/2,0}));
       //创建半圆
       CircularArcSketchPrimitive arc =
               sketch.createCircularArc(new DoubleVector(new double[]{0,0}),line1.getEndPoint(),line2.getEndPoint());
       //结束草图绘制
       model.getFeatureManager().stopSketchEdit(sketch);
       //创建草图平面
       UserSketchPlane plane1 = model.getFeatureManager().createPlaneByDefinition();
       //获取参考坐标系
       CanonicalReferenceCoordinateSystem coordinateSystem =
               ((CanonicalReferenceCoordinateSystem) model.getFeature("Lab Coordinate System"));
       //设置plane1的坐标源,有两种方式:1是导入的方式,2是参考坐标系
       plane1.setCoordinateSystemSourceOption(1);
       //plane1的参考坐标系
       plane1.setReferenceCoordinateSystem(coordinateSystem);
       //设置plane1的坐标原点为line1的起点
       plane1.getLocalOrigin().setValue(new DoubleVector(new double[]{0,-x/2,l}));
       model.getFeatureManager().execute(plane1);
       //在plane1上作图
       Sketch sketch2 = model.getFeatureManager().createSketch(plane1);
       //开始编辑草图
       model.getFeatureManager().startSketchEdit(sketch2);
       //画个圆
       CircleSketchPrimitive circle = sketch2.createCircle(new DoubleVector(new double[]{0,0}),r);
       //结束草图编辑
       model.getFeatureManager().stopSketchEdit(sketch2);
       //创建扫掠特征
       SweepMerge sweepMerge = model.getFeatureManager().createSweepMerge(sketch2,sketch);
       model.getFeatureManager().execute(sweepMerge);
       //修改视角,便于观察创建好的几何模型
       CurrentView view = scene.getCurrentView();
       view.setInput(new DoubleVector(new double[] {-0.01828077219230817, 0.05115361774682087, 0.05777722455802006}),
               new DoubleVector(new double[] {1.228501994806741, 0.2632547319482483, 0.21561062404762543}),
               new DoubleVector(new double[] {-0.13331628974488396, 0.046996041242220205, 0.9899586551953785}),
               0.4947441872638225, 0, 30.0);
   }
}


来源:CFD日志
System二次开发Origin
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-06-12
最近编辑:1年前
CFD日志
硕士 | CFD工程师 CFD仿真、风机设计、二次开发
获赞 241粉丝 2170文章 39课程 8
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈