明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: 依然小小鸟

[提问] 至今没有解决的问题-碎数线如果自动取整?

[复制链接]
发表于 2023-2-24 10:07:21 | 显示全部楼层
对,如果一直发生,跟对方的领导提,让其规范制图,从源头上解决问题,而不是自己冒着风险和错误去给别人擦屁股。
发表于 2023-2-24 13:04:21 | 显示全部楼层
跟楼主同行,7楼大神正解,一直在用,非常好用
发表于 2023-3-1 15:17:09 | 显示全部楼层
正交轴网好解决,斜交轴网麻烦点
 楼主| 发表于 2023-3-3 21:09:10 | 显示全部楼层
casd 发表于 2023-3-1 15:17
正交轴网好解决,斜交轴网麻烦点

要是能解决就好了
 楼主| 发表于 2023-10-25 09:31:55 | 显示全部楼层
海盗曹 发表于 2023-2-24 13:04
跟楼主同行,7楼大神正解,一直在用,非常好用

是吗 我还不会用 我研究下
发表于 2023-10-25 10:58:36 | 显示全部楼层
本帖最后由 llsheng_73 于 2023-10-25 11:01 编辑

首先“碎数”是与模相应的,比如需要取整到10、100、1000、50等,碎数其实是与模数相应的余数;
其次是余数的处理问题,根据需要可能采取“截尾”、“进一”、“四舍五入”、“四舍六入5分单双”等进行处理;
  1. (defun fixn(a n f / b c);;f=1,截尾;;f=2,进一;f=3,四舍五入;f=4,四舍六入单进双进不进
  2.   (setq b(fix(/(rem a n)n 0.1))c(/ a n 1.))
  3.   (cond((= f 1)(*(fix c)n))
  4.        ((= f 2)(*(1+(fix c))n))
  5.        ((= f 3)(*(fix(+ c 0.5))n))
  6.        ((= f 4)(if(and(= b 5)(=(gcd(fix(/ a n 1.))2)1))
  7.                   (*(1+(fix c))n)
  8.                   (*(fix(+(fix c)(* b 0.1)))n)))
  9.         ))

有了“碎数”的处理方法后,可以先计算出线图元整取后的长度,对于应该增长的,只需要修改止点坐标就行,对于应该缩短的就麻烦些,因为无法确定最后一个子段长度是否大于“碎数”,所以应该先在取整长度位置增加节点,再去除该节点之后所有点
另外,如果是样条曲线或样条拟合的线,一般无法直接修改至目标长度,需要进行多次逼近
只有直线最简单,根据起点、长度、方向计算出终点后直接修改就行
 楼主| 发表于 2023-10-25 12:47:07 | 显示全部楼层
llsheng_73 发表于 2023-10-25 10:58
首先“碎数”是与模相应的,比如需要取整到10、100、1000、50等,碎数其实是与模数相应的余数;
其次是余 ...

谢谢73哥  我不会编程看代码   欢迎大家讨论
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 14:47 , Processed in 0.153973 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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