找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1718|回复: 8

[原创]:图形坐标取整

[复制链接]
发表于 2006-4-21 22:30:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
20060421
完成的是line,标注,多义线等等的坐标取整

这东西在调模板的时候很好用.
把其一个轴线的坐标设为整数,其他的就用这个程序取整一下,
所有尺寸标注出来的就不会不是整数了.

原来老是被骂柱网提给做地下室的不是整数,以后看来不会了.

目前不能很好的处理的是带有角度的图形.
带有角度的只好把图分成两个部分,然后把有角度的旋转到水平的取整后再转回去.

另外autolisp中竟然四舍五入的函数都没有,大家看看是不是可以从哪个角落把他找出来



  1.   [FONT=courier new]
  2. 关键代码

  3. (progn
  4.      (while (setq entn (ssname ss 0))
  5.        (ssdel entn ss)
  6.        (setq ent (entget entn))
  7.        (setq newent ent)
  8.        (setq objtype (cdr (assoc 0 ent)))
  9.        (foreach        pt ent
  10.          (progn
  11.            (setq dxftype (car pt))
  12.            (cond
  13.              ((or(= dxftype 10)(= dxftype 11)(= dxftype 13)(= dxftype 14))
  14.               (setq x1 (cadr pt))
  15.               (setq y1 (caddr pt))
  16.               (setq x1(* (myfix (/ x1 wjm_qz_jindu)) wjm_qz_jindu))
  17.               (setq y1(* (myfix (/ y1 wjm_qz_jindu)) wjm_qz_jindu))
  18.               (setq newent (subst (list dxftype x1 y1 0)  pt newent))
  19.               (princ (list "x:" x1 "y:" y1))
  20.              )
  21.              )
  22.          )
  23.        )
  24.        (if x1 (entmod newent))
  25.      )
  26.     )


  27.   [/FONT]




  1.   [FONT=courier new]
  2. (defun c:qz (/ p1 n  )
  3.   
  4.   (setq p1 (strcat "\n输入坐标取整模数<" (if wjm_qz_jindu (rtos wjm_qz_jindu 2 0) "")  ">:"))
  5.   (setq n (getint p1))
  6.   (if (/= n nil)   
  7.     (setq wjm_qz_jindu n)
  8.   )

  9.   
  10. (princ "\n选择要坐标取整的物体:")
  11. (setq ss (ssget))
  12. (if ss
  13.    (progn
  14.      (while (setq entn (ssname ss 0))
  15.        (ssdel entn ss)
  16.        (setq ent (entget entn))
  17.        (setq newent ent)
  18.        (setq objtype (cdr (assoc 0 ent)))
  19.        (foreach        pt ent
  20.          (progn
  21.            (setq dxftype (car pt))
  22.            (cond
  23.              ((or(= dxftype 10)(= dxftype 11)(= dxftype 13)(= dxftype 14))
  24.               (setq x1 (cadr pt))
  25.               (setq y1 (caddr pt))
  26.               (setq x1(* (myfix (/ x1 wjm_qz_jindu)) wjm_qz_jindu))
  27.               (setq y1(* (myfix (/ y1 wjm_qz_jindu)) wjm_qz_jindu))
  28.               (setq newent (subst (list dxftype x1 y1 0)  pt newent))
  29.               (princ (list "x:" x1 "y:" y1))
  30.              )
  31.              )
  32.          )
  33.        )
  34.        (if x1 (entmod newent))
  35. ;;;       (cond
  36. ;;;         ((eq objtype "LINE") (puline ent))
  37. ;;;         ((eq objtype "LWPOLYLINE") (pupline wjm_qz_jindu))
  38. ;;;         ((eq objtype "DIMENSION") (pudim ent))
  39. ;;;       )

  40.      )
  41.     )
  42. )
  43.   (princ)
  44. )

  45. (defun myfix (x / mid midd)
  46.   (setq mid (fix x))
  47.     (setq midd (- x mid))
  48.   (cond
  49.     ((>= midd 0.5) (setq mid (1+ mid)))
  50.     ((<= midd -0.5) (setq mid (1- mid)))
  51.     )
  52.   mid
  53.   )

  54.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-4-21 22:51:53 | 显示全部楼层
“另外autolisp中竟然四舍五入的函数都没有,大家看看是不是可以从哪个角落把他找出来”

用rtos不行吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-21 23:00:48 | 显示全部楼层
(rtos 18.6 2 0)   ="19"
(rtos 18.5 2 0)  = "19"
(rtos 18.4 2 0)  = "18"

(defun myfix (x / mid midd)
  (atoi (rtos x 2 0))
)

确实可行,谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-6-26 22:57:47 | 显示全部楼层
好象瞒实用的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-7-12 07:16:01 | 显示全部楼层
坐标取整后,实际线的位置是否可以也调整到正确的位置?还是仅仅坐标数字不真实的改变?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2008-7-17 22:58:56 | 显示全部楼层
感谢楼主分享,不错的程序
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-7-17 23:09:13 | 显示全部楼层
可否增加其他的图元坐标提取
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-7-18 23:20:54 | 显示全部楼层
要注意xy很大时,尤其是四舍五入等的计算会出现错误,应该属于浮点计算的精度限制造成的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-8-29 10:52:56 | 显示全部楼层
楼主能不能把全部代码都列出来呢?我爱心币不够,没法下载,好郁闷。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-16 16:26 , Processed in 0.188553 second(s), 48 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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