明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2401|回复: 16

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

[复制链接]
发表于 2023-2-23 12:12:09 | 显示全部楼层 |阅读模式
楼主本人是结构专业  经常需要跟建筑 设备这些专业配合 但是他们发过来的图纸经常有很多线是碎数,请问有没有一个插件 能自动让这些碎数全部变为整数   我是处女座 我有强迫症 接受不了碎数的存在,之前我都是一根一根的调整  很繁琐  希望有大神能开发出来一个插件 批量让碎数线段变为整数
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 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-2-23 19:22:52 | 显示全部楼层
本帖最后由 wzg356 于 2023-2-23 20:04 编辑

rem 多少的问题
比如它提的问题是,处理结果(rem num 1000)=0

别处理 图了

就用这个方式解决数据读取使用统计的问题


;(num2int 13998 1000)===14000
按楼主的标准,modenum为最低5,最高1000的能整除5的整数
;数据修改为符合模数modenum的结果
(defun num2int(num modenum)
(setq n(/ (* 1.0 num) modenum))
(setq n0(fix n))
(* modenum(if(>=(- n n0)0.5)(1+ n0) n0))
)


 楼主| 发表于 2023-2-23 12:18:44 | 显示全部楼层
mahuan1279 发表于 2023-2-23 12:16
啥是碎数?碎数变成整数的规则是啥?

比如线段的长度是 13999.23045  我想变为14000   
或者线段的长度是13998  我想变为 14000
再或者线段长度是14000.5687  我想变为14000
发表于 2023-2-23 12:16:47 | 显示全部楼层
啥是碎数?碎数变成整数的规则是啥?
发表于 2023-2-23 12:45:55 | 显示全部楼层
依然小小鸟 发表于 2023-2-23 12:18
比如线段的长度是 13999.23045  我想变为14000   
或者线段的长度是13998  我想变为 14000
再或者线段 ...

设置容差不行么?
发表于 2023-2-23 12:55:14 | 显示全部楼层
他应该是说,长度变成整数后,线本身也会延长或缩短成这个整数吧。
例如之前的线是1400.445,处理后,这个条线会两端各缩短0.2225,一起缩短0.445,让这条线的实际长度为成1400,是这个意思吧。
发表于 2023-2-23 12:57:30 | 显示全部楼层
这个应该给一个判断,小数点后面大于等于5的,线向两端延长成整数,如果小数点后面小于5的,线两端缩短成整数,这个应该是个简单的功能吧。
发表于 2023-2-23 13:00:21 来自手机 | 显示全部楼层
本帖最后由 lxl217114 于 2023-2-23 13:36 编辑

高飞鸟版主有个取整的插件

http://bbs.mjtd.com/thread-86961-1-1.html
发表于 2023-2-23 16:11:09 | 显示全部楼层
这个应该比较好实现吧,用ssget圈选过滤对象,得到选择集,然后用循环,对每个对象判断长度,如果不是整数,可以用cad自带的lenthen命令加长或者减短就行了,加长或者减短的数值按自己需要的设置
发表于 2023-2-24 09:14:41 | 显示全部楼层
直线与标注等都有方向性,那边缩都不完美,一般整张图都能同一个方向画线与标注可能性不大。规范画图才是王道。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 12:46 , Processed in 0.282533 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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