samifox 发表于 2022-7-5 19:39:55

grread公司

你好
 
我遵循这个代码,它的操作方式与fens选择模式相同,
 
除了两样东西,我都有,
 
(grread 5),5代表什么?(不懂文件)
什么使PT为零?(当它终止程序主循环时)
 

(defun VECTORS (/ PT PTLIST)
; Sequential choice of points
; by ElpanovEvgeniy
; (2005-10-19 17:59:01)
; (VECTORS)
(setq PTLIST (list
                (setq PT (getpoint "\n Specify the first point"))
            ) ;_list
) ;_setq
(princ "\n Specify the following point")
(princ)
(while
   (setq PT
          (progn (while
                   (and (setq PT (grread 5))
                        (= (car PT) 5)
                   ) ;_and
                  (redraw)
                  (mapcar
                      (function
                        (lambda (x1 x2)
                        (grdraw x1 x2 6 5)
                        ) ;_lambda
                      ) ;_function
                      (cons (cadr PT) PTLIST)
                      PTLIST
                  ) ;_mapcar
               ) ;_while
               (if (listp (cadr PT))
                   (cadr PT)
               ) ;_if
          ) ;_progn
   ) ;_setq
    (setq PTLIST (cons PT PTLIST))
) ;_while
) ;_defun

 
谢谢

Lee Mac 发表于 2022-7-5 19:52:15

整数5对应于grread的allkeys参数,是位代码1(返回“拖动模式”坐标)和4(使用“curtype”参数中传递的值来控制光标显示)的组合。
 
 
grread函数通常不会返回nil;while循环通常在(car PT)不等于5时终止,即当用户输入不是鼠标移动时(例如2=键盘输入,3=左键单击等)。

samifox 发表于 2022-7-5 20:06:36

 
你能举一个使用allkeys和curtype参数的例子吗?
 
 
当输入不是5时,内部while终止,但外部while仅在PT为零时终止,因此。。。PT如何得到零?
 
谢谢
S

Lee Mac 发表于 2022-7-5 20:10:52

 
我建议回顾一下这篇文章中发布的众多示例。
 
 
对于最外层while循环的测试表达式,符号PT被分配由以下表达式返回的值:
因此,如果grread返回的列表的第二项(cadr)是一个点(即,如果用户左键单击了一个点),则返回单击的点,否则返回nil,导致while循环终止。

samifox 发表于 2022-7-5 20:29:23

除了曲线角之外,是否可以执行与代码相同的操作?

Lee Mac 发表于 2022-7-5 20:33:35

 
是的,您只需要计算一组向量来近似这里的弧快速示例。

samifox 发表于 2022-7-5 20:46:04

 
谢谢李
 
我继续探索功能,
我写了一个测试程序,
 
用户要求定义水平边界线,
然后将点附着到光标并更改其颜色
根据其透视位置,在边界线下方或上方。
 
请提供更有效的方法来改进此代码。
 
 
2
 
 
谢谢
S
页: [1]
查看完整版本: grread公司