明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 931|回复: 6

[讨论] 求助:字符串拆分识别划线

[复制链接]
发表于 2025-10-21 15:01:38 | 显示全部楼层 |阅读模式
本帖最后由 zgs378530220 于 2025-10-21 15:04 编辑

现在需要根据字符串内容画多线段:
例如字符串:“960*6+640+1280+[960*2+640]+1280*2+[960*2]+960*2+ []960*5”
字符串规则1:
*前数字(960或640或1280)为多线段一段的长度,*后数字为该多线段的数量,当数量为1时可省略
字符串规则2:
字符串中必须成组出现[];
当[]中间为空时,是折角;
当不为空时,是弧形;
当不存在[]时,为平面;
允许出现多组[];
折角角度和弧形角度暂时统一按照90度;

现在0~1组[]的结果比较容易用拆组判断解决,
求:如果出现[]两组或以上,该怎么解决,希望各位大大出出主意

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2025-10-21 15:58:40 | 显示全部楼层
使用+将字符串分解,然后对每一段进行可能性分类:

  • 包含[]
  • 包含[XXXXXXX]
  • 只包含[
  • 只包含]
  • 。。。。

然后针对每种分类进行处理,整体上,需要一个角度的全局变量,根据分类确实能够是否需要增加90度。
回复 支持 反对

使用道具 举报

发表于 2025-10-22 09:50:28 | 显示全部楼层
本帖最后由 llsheng_73 于 2025-10-22 09:52 编辑

按一楼的附图理解:[]出现时,线路会转折90度( 要么用弧线过渡,要么直接转)
那么需要转折-90度时,是不是用][或其它符号,另外,是不是需要用特定符号带数值来指定角度,当符号不出现时,直线方向为0度,转折为90度?
不然使用场景极其受限
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-10-22 12:06:37 来自手机 | 显示全部楼层
kozmosovia 发表于 2025-10-21 15:58
使用+将字符串分解,然后对每一段进行可能性分类:



如果字符串是960*5+640+[960*5+640+960*2],这样的[]内有多个+就容易漏掉
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-10-22 12:08:23 来自手机 | 显示全部楼层
llsheng_73 发表于 2025-10-22 09:50
按一楼的附图理解:[]出现时,线路会转折90度( 要么用弧线过渡,要么直接转)
那么需要转折-90度时,是不 ...

实际角度是个变量,通过正负值判断方向,而非通过[]判断
回复 支持 反对

使用道具 举报

发表于 2025-10-22 13:56:42 | 显示全部楼层
zgs378530220 发表于 2025-10-22 12:06
如果字符串是960*5+640+[960*5+640+960*2],这样的[]内有多个+就容易漏掉

不会漏掉,说了需要有变量记录角度,或者和当前形状,只需要根据分解的数据绘制。
初始化:角度0,形状直线
960*5:绘制直线
640:绘制直线
[960*5:修改角度或者形状,然后绘制
640:按照刚刚修改的角度形状绘制
960*2]:按照刚刚修改的角度形状绘制,并更新角度或者形状

所以只需要枚举[和]可能出现的位置情况并相应处理即可。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-10-22 17:38:24 | 显示全部楼层
kozmosovia 发表于 2025-10-22 13:56
不会漏掉,说了需要有变量记录角度,或者和当前形状,只需要根据分解的数据绘制。
初始化:角度0,形状 ...

理解了,
用一个变量记录当前+分组的状态,这样无论多少[]都可以
这个方法非常好,
感谢
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-12-12 06:59 , Processed in 0.193549 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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