马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
20060421
完成的是line,标注,多义线等等的坐标取整
这东西在调模板的时候很好用.
把其一个轴线的坐标设为整数,其他的就用这个程序取整一下,
所有尺寸标注出来的就不会不是整数了.
原来老是被骂柱网提给做地下室的不是整数,以后看来不会了.
目前不能很好的处理的是带有角度的图形.
带有角度的只好把图分成两个部分,然后把有角度的旋转到水平的取整后再转回去.
另外autolisp中竟然四舍五入的函数都没有,大家看看是不是可以从哪个角落把他找出来

- [FONT=courier new]
- 关键代码
- (progn
- (while (setq entn (ssname ss 0))
- (ssdel entn ss)
- (setq ent (entget entn))
- (setq newent ent)
- (setq objtype (cdr (assoc 0 ent)))
- (foreach pt ent
- (progn
- (setq dxftype (car pt))
- (cond
- ((or(= dxftype 10)(= dxftype 11)(= dxftype 13)(= dxftype 14))
- (setq x1 (cadr pt))
- (setq y1 (caddr pt))
- (setq x1(* (myfix (/ x1 wjm_qz_jindu)) wjm_qz_jindu))
- (setq y1(* (myfix (/ y1 wjm_qz_jindu)) wjm_qz_jindu))
- (setq newent (subst (list dxftype x1 y1 0) pt newent))
- (princ (list "x:" x1 "y:" y1))
- )
- )
- )
- )
- (if x1 (entmod newent))
- )
- )
- [/FONT]

- [FONT=courier new]
- (defun c:qz (/ p1 n )
-
- (setq p1 (strcat "\n输入坐标取整模数<" (if wjm_qz_jindu (rtos wjm_qz_jindu 2 0) "") ">:"))
- (setq n (getint p1))
- (if (/= n nil)
- (setq wjm_qz_jindu n)
- )
-
- (princ "\n选择要坐标取整的物体:")
- (setq ss (ssget))
- (if ss
- (progn
- (while (setq entn (ssname ss 0))
- (ssdel entn ss)
- (setq ent (entget entn))
- (setq newent ent)
- (setq objtype (cdr (assoc 0 ent)))
- (foreach pt ent
- (progn
- (setq dxftype (car pt))
- (cond
- ((or(= dxftype 10)(= dxftype 11)(= dxftype 13)(= dxftype 14))
- (setq x1 (cadr pt))
- (setq y1 (caddr pt))
- (setq x1(* (myfix (/ x1 wjm_qz_jindu)) wjm_qz_jindu))
- (setq y1(* (myfix (/ y1 wjm_qz_jindu)) wjm_qz_jindu))
- (setq newent (subst (list dxftype x1 y1 0) pt newent))
- (princ (list "x:" x1 "y:" y1))
- )
- )
- )
- )
- (if x1 (entmod newent))
- ;;; (cond
- ;;; ((eq objtype "LINE") (puline ent))
- ;;; ((eq objtype "LWPOLYLINE") (pupline wjm_qz_jindu))
- ;;; ((eq objtype "DIMENSION") (pudim ent))
- ;;; )
- )
- )
- )
- (princ)
- )
- (defun myfix (x / mid midd)
- (setq mid (fix x))
- (setq midd (- x mid))
- (cond
- ((>= midd 0.5) (setq mid (1+ mid)))
- ((<= midd -0.5) (setq mid (1- mid)))
- )
- mid
- )
- [/FONT]
|