全球FlexSim系统仿真中文论坛

搜索
查看: 2731|回复: 1

【官网翻译】有没有办法在视图缩放的时候,保持对象的大小固定不变?

[复制链接]
小太阳sun 发表于 2017-11-5 19:53:24 | 显示全部楼层 |阅读模式
原帖地址https://answers.flexsim.com/questions/44223/is-there-a-way-to-maintain-object-size-regardless.html原作者:Enrique Elizaga phil.bobo

Enrique Elizaga:
你好,
我想在视图缩放中保持保持一个对象大小(总是2 x 2 x 2)固定。这可能实现吗?

您可以通过添加以下代码使用自定义绘制触发器来获得此功能:
double size = 5.0;
int shapeIndex =getshapeindex("fs3d\\Processor\\Processor.3ds");
double scaleFactor = size *viewpointradius(view).value / 100.0;
if (viewprojectiontype(view).value == 1)// orthographic projection
         scaleFactor= size * 10.0 / viewmagnification(view).value;
fglScale(scaleFactor, scaleFactor,scaleFactor);
drawobject(view, shapeIndex, 0);

该示例代码绘制了一个处理器形状。您可以调整getshapeindex()的调用来绘制不同的形状。例如,使用“fs3d \\ General \\ Plane.3ds”绘制一个平面。
您可以调整大小变量以使其变大或变小。
附件是一个示例模型,展示了这一点。

它好像将三维物体(球体)的基准点画在实体的中心(比如红色的)。我尝试了中心基准点的选择,但它不会起作用,它总是在一个角上。
添加fglTranslate()调用来翻译图形的位置:
double size = 5.0;
int shapeIndex =getshapeindex("fs3d\\General\\Sphere.3ds");
double scaleFactor =size*viewpointradius(view).value/100.0;
if (viewprojectiontype(view).value == 1)
         scaleFactor= size*10.0/viewmagnification(view).value;
fglTranslate(0.5, 0.5, 0.5);
fglScale(scaleFactor, scaleFactor, scaleFactor);
fglTranslate(-0.5, -0.5, -0.5);
drawobject(view, shapeIndex, 0);
或者在三维建模程序(如AC3D)中修改形状,使形状以原点为中心。一般的球体形状的位置是在它的原点,而不是它的中心。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 1威望 +12 收起 理由
慧娴亚伦 + 12 很给力!

查看全部评分

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|全球FlexSim系统仿真中文论坛 ( 京ICP备14043114号-2 )

GMT+8, 2024-4-19 01:33 , Processed in 0.083040 second(s), 16 queries .

Powered by Discuz! X3.3© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表