明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2694|回复: 12

[源码] grread函数精确输入的方法

[复制链接]
发表于 2016-9-30 11:09:41 | 显示全部楼层 |阅读模式
grread函数的应用非常广泛,论坛里的例子也不少。
grread函数也有不足,就是精确输入,比如通过grread函数拖动输入一个距p1点距离为12.5的点,做起来还是有难度的。
这里自定义了一个函数,可以解决这个问题:
  1. (defun cs-int-grdata (lst / FLAG)
  2.   (cond
  3.     ((= (type lst) 'list)
  4.      (mapcar 'cs-int-grdata lst)
  5.      )
  6.     ((member (type lst) '(int REAL))
  7.      (setq flag 0)
  8.      (and (ACET-SYS-CONTROL-DOWN) (setq flag (+ flag 2)))
  9.      (and (ACET-SYS-SHIFT-DOWN) (setq flag (+ flag 4)))
  10.      (CS-INT lst (cdr (assoc flag '((0 . 0.1) (2 . 0.5) (4 . 5) (6 . 10)))))
  11.      )
  12.     (t lst)
  13.     )
  14.   )
其中的CS-INT函数,请参考
http://bbs.mjtd.com/thread-173452-grread函数 1-1.html
用grread函数拖动,得出的坐标点或距离或角度等数不一定是我们想要的数据,如果加入cs-int-grdata函数进行处理,就很容易得到我们想要的数据
示例:
  1. (defun tt (p1 / DIS PT)
  2.   (princ "\n")
  3.   (while (/= 3 (car (setq pt (grread t 4 0))))
  4.     (if  (= 5 (car pt))
  5.       (progn
  6.   (setq pt (cadr pt))
  7.   (setq dis (cs-int-grdata (distance p1 pt)))
  8.   (redraw)
  9.   (grdraw p1 pt 1 1)
  10.   (princ (strcat "\r距离为:" (rtos dis)))
  11.       )
  12.     )
  13.   )
  14.   (princ "\r")
  15.   (redraw)
  16.   (if (= 3 (car pt))
  17.     (setq dis (cs-int-grdata (distance p1 (cadr pt))))
  18.   )
  19. )
运行函数tt时,只拖动鼠标,命令行提示的距离按0.1进行圆整
                       拖动鼠标的同时,按下ctrl键,命令行提示的距离按0.5进行圆整
                       拖动鼠标的同时,按下shift键,命令行提示的距离按5进行圆整
                       拖动鼠标的同时,按下shift和Ctrl键,命令行提示的距离按10进行圆整
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2016-10-2 20:38:15 | 显示全部楼层
皇上快溜 发表于 2016-10-1 22:00
楼主可以可以帮忙搞个,任意两点求整数,然后点选目标做偏移的程序么?

应该叫做动态偏移,我有一个做好的,只是和其他程序在一起,很难单独剥离出来。
其实,做一个动态偏移的程序并不难,偏移一个实体,无外乎需要三个输入,一是选择实体,二是确定偏移方向,三是确定偏移距离。
第一个可以用entsel函数,后面两个可以用grread函数动态实现
发表于 2016-10-8 10:55:55 | 显示全部楼层
lijiao 发表于 2016-10-8 08:59
[系统本身的拉伸命令太弱了]
不知道哪些方面弱?你希望的拉伸命令是什么样子?能不能谈谈你的想法?
只 ...

如图所示,比如我要拉伸图中的那条红色边,又要不选到共它对象,且拉伸的方向不变,拉伸到绿色边的位置,当然这个距离是可控的,这个用系统实现就比较繁琐了

本帖子中包含更多资源

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

x
 楼主| 发表于 2016-10-8 08:59:43 | 显示全部楼层
luyu9635 发表于 2016-10-7 22:45
大神能做一个任意角度的动态点选拉伸吗,非正交的拉伸,系统本身的拉伸命令太弱了,这个可能很有用

[系统本身的拉伸命令太弱了]
不知道哪些方面弱?你希望的拉伸命令是什么样子?能不能谈谈你的想法?
只要想法定下来了,接下来就是实现手段的事。
发表于 2016-9-30 13:41:08 | 显示全部楼层
顶一下!学习学习。
发表于 2016-10-1 15:51:34 | 显示全部楼层
有点意思啊
  
发表于 2016-10-1 22:00:20 | 显示全部楼层
楼主可以可以帮忙搞个,任意两点求整数,然后点选目标做偏移的程序么?
发表于 2016-10-2 20:51:18 | 显示全部楼层
lijiao 发表于 2016-10-2 20:38
应该叫做动态偏移,我有一个做好的,只是和其他程序在一起,很难单独剥离出来。
其实,做一个动态偏移的 ...

谢谢回复,,,,,
发表于 2016-10-7 22:45:36 | 显示全部楼层
lijiao 发表于 2016-10-2 20:38
应该叫做动态偏移,我有一个做好的,只是和其他程序在一起,很难单独剥离出来。
其实,做一个动态偏移的 ...

大神能做一个任意角度的动态点选拉伸吗,非正交的拉伸,系统本身的拉伸命令太弱了,这个可能很有用
发表于 2016-10-8 10:39:44 | 显示全部楼层
lijiao 发表于 2016-10-2 20:38
应该叫做动态偏移,我有一个做好的,只是和其他程序在一起,很难单独剥离出来。
其实,做一个动态偏移的 ...

大神能做一个任意角度的动态点选拉伸吗,非正交的拉伸,系统本身的拉伸命令太弱了,这个可能很有用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-20 02:03 , Processed in 0.204016 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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