关于刻字,NX自身提供了文本曲线命令。但不能调整文字间距,部分字体汉字自相交、重合。解决这些问题,通过网上检索,可以用过windowsAPI “GetGlyphOutlineW”直接解析系统字体,获取点位信息。GetGlyphOutlineW获取的点位信息包含:1、直线,2、二次贝塞尔曲线,3、三次贝塞尔曲线。点位是按笔画顺序输出的。详细用法百度或CSDN很多详细教程。

获取点位信息后,需要检查以下情况:

1、自身轮廓自相交,比如字体"Arial"的“餐”字:

2、两个轮廓相交与一点情况,比如字体"Arial"的“左”,“全”字:

3、自身轮廓重合笔画,比如字体"Arial"的“计”字:

4、两个轮廓自相交区域交大的,比如字体"Arial"的“名”字:

解决方案:

1、以同一笔画轮廓点数据作为线段,遍历。找到自身相交的地方,哪个端点距离相交位置进,移动哪个端点,移动方向为线段的另一个端点方向,移动距离大约移动0.01至0.02mm即可(因为文字轮廓数据还未放大),我取的是0.015mm。

2、不同笔画相交于一点的判断,同样采用线段形式遍历,方案同第一步;

3、同一笔画轮廓去除相邻线段角度为0的,即重合或多余的笔画,去除后需要检查是否断开,需要用线段补齐。

4、不同笔画轮廓相交多点或部分线段在另一个轮廓内,这种思路与第一步大致相同,但移动距离为交点到最近的端点距离+0.01或0.02mm。

5、划分区域,判断笔画是否在其他笔画内部,用于划分拉伸区域,判断点是否在轮廓内按下图所示,需要配合格林公式。

如继续扩展工具:

A、比如需要与NX文本曲线一致的动态效果,则需要鼠标点位转换到3D点位,预览曲线设置透视显示。

B、当鼠标点位位于面上时,获取鼠标预选对象,将预览曲线平面垂直与面上鼠标点位处的法向;

C、使用快捷键调整字体大小,使用键盘钩子,截获对应的消息;

D、创建刻字跟随求2D曲线边界,那每个字的矩阵需要以曲线所在点的方向确定,文字距离,则需要两点角度和方向确定,这个可以参考口罩滚子的2D刀路转3D刀路算法;

E、文字斜切变换,直接计算点位到Y轴的距离,即高度,然后按cot角度*高度,即为X轴移动距离;

F、反字,则直接沿Y轴翻转,即点位做旋转变换;

G、支持单线字,这个可以解析CAD字体点位或NX自身字体点位,然后按点创建,这些点位均为线段,创建结果并不美观。

NX/UG二次开发-建模-刻字实现方案相关推荐

  1. NX/UG二次开发—建模—UDO

    最近学习了一下UDO,以下主要讲一下我遇到的一些疑问和笔记,希望对新手有一些帮助.(在UG安装目录下有个官方例子用NXopen函数写的,大家可以参考一下..\Siemens\NX 11.0\UGOPE ...

  2. NX/UG二次开发—建模—关于创建单线汉字的三种思路

    最近有人问我在NX里绘制单线汉字,简单操作了一下,发现在曲线文本命令中并不存在单线汉字,只能绘制单线字母(可以注意一下:下拉列表中都是系统字,不存在UG字体,为什么?): 1.通过制图模块可以创建单线 ...

  3. NX/UG二次开发创建曲面偏置体

    NX/UG二次开发--创建曲面偏置体 创建曲面偏置体 1.曲面偏置 创建曲面偏置体 这里介绍了一种对模型曲面进行偏置来获得偏置体的方法. 1.曲面偏置 void OffsetFace(tag_t fa ...

  4. NX/UG二次开发—菜单—ACTIONS的应用

    NX二次开发菜单打开网站,打开程序,打开文件夹响应.以下是常用的几种方式,实际上如果你熟悉DOS命令,BAT的话基本上想要打开什么程序都可以! (1)网站的打开:   ACTIONS "st ...

  5. NX/UG二次开发—装配—克隆相关知识总结

    一.克隆部件或装配-七步法: 1. UF_CLONE_initialise 初始化克隆操作     2. UF_CLONE_add_assembly/UF_CLONE_add_part添加装配/部件文 ...

  6. NX/UG二次开发环境配置方法—史上最详细版(以NX11.0和Visual Studio 2017为例)

    一.前言 本人之前在用NX12.0以及Visual Studio 2017进行NX二次开发时,进行过开发环境的配置,当时也遇到了一点问题,好在最后解决了.最近由于项目需求,我卸载了NX12.0,重装了 ...

  7. NX/UG二次开发—调用NX内部函数实现功能汇总(部分只有标题)

    1.调用NX自身功能并返回开发工具界面UIFW_create_command: 2.C++与C#开发的dll互相调用且可以传参: 3.NX进度条的创建.显示.删除MT_create_progress_ ...

  8. NX/UG二次开发-其他-NX标题显示工作部件路径

    以前看群里有人讨论过,NX标题显示当前工作部件的全路径,也不知道为什么会有这个需求,之前用过定时器去做,但有卡顿现象.后来改用打开部件回调去做,但是切换模块后又没有了,暂时没有找到切换模块回调,后来就 ...

  9. NX/UG二次开发—QT—基于QT平台的UG二次开发

    1.新建QT工程,选择C++库,工程名称qtugdemo: 2.添加对话框文件: 3.将UG入口函数考入到qtugdemo.cpp中,并添加如下代码: 4.修改*.pro文件,添加UG函数需要的lib ...

最新文章

  1. python保存模型与参数_如何导出python中的模型参数
  2. 使用Hadoop和ELK进行业务代码分析!分分钟捉到Bug!
  3. 在华为云服务器的Linux系统中搭建开发环境
  4. s6-4 TCP 数据段
  5. android enum 内存,Android 中的 Enum 到底占多少内存?该如何用?
  6. IntelliJ IDEA for Mac 封装字段(添加setter/getter方法)
  7. 事件Event:带你体验鸿蒙轻内核中一对多、多对多任务同步
  8. m1芯片macbook安装torch环境(采用conda-forge)
  9. pip matplotlib 使用镜像源,pytorch 1.5 cpu
  10. 「小程序JAVA实战」小程序 loading 提示框与页面跳转(37)
  11. Delphi 精选文章地址
  12. 万字长文带你解析23 个问题 TCP 疑难杂症!
  13. Linux “身陷囹圄”?
  14. 查看JDK进程信息的几个命令
  15. 属性篇(2)—If you love css …
  16. 传奇服务器+技能cd修改器,CD登陆器KEY文件修改教程+配套工具_【传奇爱好者】...
  17. Obsidian使用手册
  18. 如何将PDF转成高清JPG图片
  19. html文字排版步骤,CSS text-align内容位置排版教程
  20. Vue项目 在chrome页面崩溃:喔唷 崩溃了(总结)

热门文章

  1. 2020年南大CS预推免经历
  2. javascript 往一个节点动态添加元素、内容并判断是否溢出,溢出则删除
  3. c#自杀程序的关键方法
  4. 使用Auto.js完成一键自动登录武汉理工大学鉴湖宿舍校园网(安卓手机端)
  5. Vista系统优化(2)——系统盘终极减肥
  6. 爱奇艺html5不显示画面,爱奇艺有声音但是没有画面怎么办_爱奇艺黑屏怎么解决...
  7. 路由器动态域名解析不稳定之我的解决办法
  8. Ubuntu系统下BTC服务安装
  9. 基于linux4.4程序,linux驱动之i2c总线驱动调用分析【基于linux4.4】
  10. 一看就会Android之手机震动的设置