现在更新的用法大体是这样的,直接指定长度后,看第二个点在8个象限的哪一部分了,然后判断后画矩形
xj6019 发表于 2022-4-27 15:08
试试这样的,彻底改了一下,输入的时候要保证长度大于宽度,然后画的时候会根据鼠标点的第二点的位置画矩 ...
厉害了,老师,还有就是可以点击第一个点后,第二个点可以直接输入数字来确定第二个点的长度吗?比如我想固定一个18,点击第一个点后,我想高或者宽500或者1000,我直接输入数字 就变成了想要的数字,而不是一直是最开始设定的宽和高
你是想把第一个宽度固定为比方18,然后长度每次都输入来确定长度吗,那样就每个第二个点都要输入一次才画了,是这个意思吗
(defun c:tt (); tt(定宽方向矩形)
(setq ww (Udist 7 "" "距离<输入或鼠标直接量取>" ww nil))
(while (and (setq p1 (getpoint "\n第1点<退出>: "))
(setq p2 (getcorner p1 "\n第2点<退出>: "))
)
(setq dd (if (> (abs (- (cadr p2) (cadr p1))) (abs (- (car p2) (car p1)))) t nil)
w1 (if (> (cadr p2) (cadr p1)) ww (- ww))
w2 (if (> (car p2) (car p1)) ww (- ww))
p2 (cond (dd (list (+ (car p1) w2) (cadr p2)))
((null dd) (list (car p2) (+ (cadr p1) w1)))
)
)
(command"rectang" "non"p1 "non"p2)
)
(princ)
)
xj6019 发表于 2022-4-27 15:26
你是想把第一个宽度固定为比方18,然后长度每次都输入来确定长度吗,那样就每个第二个点都要输入一次才画了 ...
嗯嗯老师,就是这个意思的
xyp1964 发表于 2022-4-27 15:32
还是院长厉害,院长的代码好简洁呀,佩服厉害了
xyp1964 发表于 2022-4-27 15:32
命令: tt
; 错误: no function definition: UDIST
老师这是什么情况呢
本帖最后由 酷酷提 于 2022-4-27 16:39 编辑
xj6019 发表于 2022-4-27 15:26
你是想把第一个宽度固定为比方18,然后长度每次都输入来确定长度吗,那样就每个第二个点都要输入一次才画了 ...
老师,就是现在的逻辑可能有一点问题,就是比如说我们用命令rec画矩形,是先点击第一个点,再输入尺寸,您第二个代码第一步没有问题,但是画第二个矩形的时候,还是要先输入尺寸,再点击确定方向,这个就和正常的操作逻辑顺序发生了一定的变化,操作起来就有一点迷糊,这个可不可以调整一下:画第二个矩形的时候,先点击第一个点,移动了鼠标方向后,再输入长度尺寸。。。麻烦您了
酷酷提 发表于 2022-4-27 16:36
老师,就是现在的逻辑可能有一点问题,就是比如说我们用命令rec画矩形,是先点击第一个点,再输入尺寸, ...
哥们,又更新了,去老地方下载,改成先指定第二个点,再输入长度后画矩形了,脑袋快成浆糊了,差不多咱就不折腾了吧
xj6019 发表于 2022-4-27 17:05
哥们,又更新了,去老地方下载,改成先指定第二个点,再输入长度后画矩形了,脑袋快成浆糊了,差不多咱就 ...
麻烦老师了哈,第三个完全可以用了