|
|
本帖最后由 redfoxzf 于 2026-4-16 18:31 编辑
设计过程中,画一个光栅盘,参照论坛教程,做了个简单的。
见附图
文字和刻度线均为72个,一个拉伸命令,一个阵列
简略的光栅盘
总想做细化点,实际结果是这样的。
试了好多次,刻度线和文字分成两个拉伸命令,分别阵列,也是各种奇怪。
吊诡的光栅盘
效尝试好多次,最后试验出这个效果。
细化刻度的光栅盘
Creo12.4.2和Creo10.0.9版本,都有这种现象。
刻度线增量阵列代码(验证合格):
/* 计算当前角度
/* 因为间隔是 1 度,所以直接等于索引号
angle_val = idx1 * 1
/* 第一级判断:90 的倍数 (0, 90, 180, 270) -> 长度 2
if (mod(angle_val, 90) == 0)
memb_v = 2
else
/* 第二级判断:10 的倍数 (10, 20, 30...) -> 长度 1.3
if (mod(angle_val, 10) == 0)
memb_v = 1.3
else
/* 第三级判断:5 的倍数 (5, 15, 25...) -> 长度 1
if (mod(angle_val, 5) == 0)
memb_v = 1
else
/* 第四级:其余刻度 -> 长度 0.5
memb_v = 0.5
endif
endif
endif
文字刻度代码:
/* 1. 判断是否为 5 的倍数
if (mod(sd2, 5) == 0)
/* 如果是 0 度,显示 "0"
if (sd2 == 0)
STR = "0"
else
/* 其他 5 的倍数(5, 10...),转换为字符串
STR = itos(abs(sd2))
endif
else
/* 不是 5 的倍数
/* 关键修正:草绘器不支持 " " (空格),必须用 "." (点) 或其他可见字符
/* 点 "." 在远处看就是一个点,视觉上最接近隐藏效果
STR = "."
endif
由于源文件太大,不方便上传,分享我摸索出来,最后做成功的思路吧:
由于刻度线分四种长度规格,其中最短刻度线有360根(包含重叠),和文字72个数量不一样。
我总想用关系式,一个阵列完成所有,前面多次尝试,总是出现莫名bug。
最后采用折中办法,完成。
1.阵列3种长度刻度线(if else endif关系式)及文字,数量72,角度间隔5度。
草绘尺寸关系式代码:
/*sd2是刻度与Y轴夹角。
if sd2==0 /*1.开始0度,刻写字符0
STR="0"
else
if sd2>359 /*2.到360度,刻写字符0
STR="0"
else
STR=itos(abs(sd2))/*3.其他刻写角度数字,因间隔5度,所以最终刻写72个字符,均是5的倍数。
endif
endif
阵列类型尺寸,角度增量5,刻度长度采用增量关系式:
/* 1. 计算当前实例对应的角度
/*idx1 是阵列索引 (0, 1, 2...),间隔是 5 度
angle_val = idx1 * 5
/* 2. 判断是否为 90/180/270/0 度 (长度设为 2)
/*使用取模函数 mod 来判断是否整除
if (mod(angle_val, 90) == 0)
memb_v = 2
else
/* 3. 判断是否为 10 的整数倍 (长度设为 1.3) */
if (mod(angle_val, 10) == 0)
memb_v = 1.3
else
/* 4. 其余情况 (长度设为 1) */
memb_v = 1
endif
endif
2.阵列短刻度线,360个,重叠到短线上,不影响。
常规,阵列类型:轴,360个,角度间隔1度。
|
|