xiaocainiao 发表于 2024-1-30 19:36:28

使用getpoint函数直接输入距离后、如何获取输入的距离值

请教一下论坛的各位大神!
(setq pt (getpoint"\n指定点"))使用getpoint函数时、可以输入一个距离来确定点的坐标、例如:用上面的代码提示指定点时、输入500就可以确定pt点的坐标、这里我想请教一下、输入500这个距离以后、有没有办法获取到500这个距离值、主要是想判断这个pt的坐标是由鼠标点击确定的、还是输入距离确定的、如果是输入距离确定的、就获取到这个距离值来实现其他的功能



xyp1964 发表于 2024-1-30 22:55:24

;; 方式 : (setq pt (Upoint 1 "" "点" pt '(0 0)))   
(defun Upoint (bit kwd msg def bpt / inp)
(if def
    (setq pts (strcat(rtos (car def))
                ", "
                (rtos (cadr def))
                (if (and (caddr def) (= 0 (getvar "flatland")))
                  (strcat ", " (rtos (caddr def)))
                  ""
                )
              )
          msg (strcat "\n" msg "<" pts ">: ")
          bit (* (fix (/ bit 2)))
    )
    (setq msg (strcat "\n" msg ": "))
)
(initget bit kwd)
(setq inp (if bpt(getpoint msg bpt)(getpoint msg)))
(if inp inp def)
)

xiaocainiao 发表于 2024-2-4 15:41:58

shiy65 发表于 2024-2-4 10:51
楼主的问题,是和CAD共同完成了(getpoint)的输入,楼主给了距离,cad定了方向。
迷惑是,楼主不知道是ca ...

(defun c:tt ()
        (setq lastpt(getvar "lastpoint"))
        (setq pt (getpoint "\n指定点:"))
        (terpri)
        (setq laststr (getvar "LASTPROMPT"))
        (if (= laststr "指定点:")
                (princ "\n pt点是由鼠标指定的")
                (princ (strcat "\n pt点是由输入距离确定的、并且输入距离=" (rtos (distance lastpt pt) 2 2)))
        )
)

这个是其他朋友给出的答案、我想要的就是这个、主要目的是想在鼠标指定和输入距离这两种模式下、分别执行不同的操作

xiaocainiao 发表于 2024-2-4 08:46:10

你有种再说一遍 发表于 2024-2-3 20:59
你只有自己会问问题之后,才能自己解决问题.你总是寄望于别人理解你,那我为什么要去理解你呢?
这就是我为 ...

我感觉你有点搞笑啊、有哪个人在问问题的时候不希望大家都能理解呢?难道说我问问题是故意让大家看不懂、然后让大家去猜我想干什么的?

还有你说了一大堆、教我什么了?教我怎么解决问题了?还是教我怎么问问题了?还是教我怎么去思考了?

你如果真心想帮别人、要么直接点给答案;要么指出别人的错误;或者想让别人自己思考的时候、最起码给个思路或者方向。

你会的别人不一定会、你能想到的别人不一定想到、大家来这里问问题肯定是自己想不出来才会问的、还说我张嘴就问、难道我解决不了、问问题还有错了。

大家帮忙解答、不管有没有理解或者解决我的问题、最起码都是真心想要帮助别人、我都是非常感激的;而你纯粹就是出来找存在感了、本来不想回复你、你还跑到别人的评论下面说一堆风凉话、难道不应该反思你自己吗?

飞雪神光 发表于 2024-1-30 19:52:59

(setq pt (getpoint "\n指定点:"))
(setq pt2 (getpoint pt "\n指定下一点:"))
(terpri)
(setq lastpt (getvar "LASTPROMPT"))
(if (= lastpt "指定下一点:")
        (princ "\n鼠标指定")
        (princ (strcat "\n输入距离" (rtos (distance pt pt2) 2 2)))
)
(princ)

xiaocainiao 发表于 2024-1-30 20:03:22

飞雪神光 发表于 2024-1-30 19:52


谢谢解答、我是想只通过一个getpoint函数的返回值、来确定是哪种方式得到的点坐标、因为我第一个获取用户输入代码就是(setq pt (getpoint"\n指定点"))、前面没有其他用户输入代码了

弥勒 发表于 2024-1-30 20:16:14

请注意 getpoint 函数还可以接受一个整数或实数作为 pt 参数,并使用直接距离输入法来指定点。这种方法以 LASTPOINT 系统变量的值作为起点,将 pt 作为距离,根据当前光标相对于 lastpoint 的位置确定方向。其结果是在当前光标位置的方向上和上一点之间的距离为指定值的点。

xiaocainiao 发表于 2024-1-30 20:23:21

弥勒 发表于 2024-1-30 20:16
请注意 getpoint 函数还可以接受一个整数或实数作为 pt 参数,并使用直接距离输入法来指定点。这种方法以 L ...

我的问题就是这个、就是getpoint提示指定点时、我输入了一个整数、然后怎么判断最后得到的点坐标、是通过输入整数得到的、还是直接鼠标指定点得到的

hhh454 发表于 2024-1-30 21:45:19

假如是参数化绘图,建议用2个命令来实现功能,做成dcl面板,直接点击可能会快点,我刚刚做了一个批量画窗线的插件,也遇到过类似的问题,会用到判断,因为我是知道程序运行的结果就是2个,干脆我就做成一个面板2个命令,参数设置也放到一起了,浅见供参考

飞雪神光 发表于 2024-1-30 21:56:17

这样?差别不大(setq lastpt(getvar "lastpoint"))
(setq pt (getpoint "\n指定点:"))
(terpri)
(setq laststr (getvar "LASTPROMPT"))
(if (= laststr "指定点:")
        (princ "\n鼠标指定")
        (princ (strcat "\n输入距离" (rtos (distance lastpt pt) 2 2)))
)
(princ)

努.力 发表于 2024-1-30 23:42:13

前段时间我也在找这个功能,可以用下面变量获得
(getvar'lastprompt)

qazxswk 发表于 2024-1-31 00:25:05

读了十几年的书,也没有看懂楼主要表达啥玩意儿
页: [1] 2 3
查看完整版本: 使用getpoint函数直接输入距离后、如何获取输入的距离值