请问关于Grread用法及方式
论坛搜索的没看懂,大致理解了grread的原理(grread ]) 我想请问 teack 和curtype 如何定义?
没太看懂用法我想写一个动态输入文字的代码刚接触grread,请赐教创建文字代码如下
(defun emtxt (pt2 str2 /)
(entmake (list
'(0 . "TEXT")
'(100 . "AcDbEntity")
'(8 . "0")
'(100 . "AcDbText")
'(7 . "tssd_rein")
'(41 . 0.7)
(cons 1 str2)
(cons 10 pt2)
(cons 40 3000)))
)
插入文字 如何用grread实现动态?
参数
track
如果提供该参数且其值不为 nil,则输入设备移动时,本函数能从定点设备中返回坐标。
allkeys
整数型,决定 grread 要执行的功能。allkeys 的几个位值相加可以获得组合功能。可以指定如下值:
1 (位0) 返回“拖动模式”坐标。如果设置了该位,而且用户只是移动定点设备而没有按下按钮或键盘,grread 函数就返回一个表,其第一个成员是类型代码 5,第二个成员是当前定点设备(鼠标或数字化仪)的位置坐标 (X,Y),这就是 AutoCAD 实现拖动的方法。
2 (位1) 返回所有的键值,包括功能键和光标键代码,用户按下光标键时并不移动光标。
4 (位2) 使用 curtype 参数传来的值控制光标的显示。
8 (位3) 在用户按下 ESC 键时不显示相应错误信息。
curtype
整数型,表明显示光标的类型。只有当 allkeys 参数的第二位为 1 时 curtype 参数才有效。该参数只控制当前 grread 函数调用时显示的光标类型。可以指定下列 curtype 值:
0 显示普通十字光标。
1 不显示光标(无十字光标)。
2 显示对象选择光标。
(defun emtxt (pt2 str2 /)
(entmakex (list
'(0 . "TEXT")
'(100 . "AcDbEntity")
'(8 . "0")
'(100 . "AcDbText")
;'(7 . "tssd_rein")
'(41 . 0.7)
(cons 1 str2)
(cons 10 pt2)
(cons 40 3000)))
)
(defun c:tt(/ pt str en elist loop gr code data)
(setq pt '(0 0 0))
(setq str "文字")
(setq en(emtxt pt str))
(if en
(progn
(setq elist(entget en))
(setq txtbox(textbox elist))
(setq cen(mapcar '(lambda(x y)(* 0.5 (+ x y)))(car txtbox)(cadr txtbox)))
(setq loop t)
(while loop
(setq gr(grread t 15 0))
(setq code(car gr))
(setq data(cadr gr))
(cond
((= code 5)(setq pt(mapcar '- data cen)) (entmod(subst(cons 10 pt)(assoc 10 elist)elist)))
((= code 3)(setq loop nil) )
((= code 11)(setq loop nil) )
((= code 25)(setq loop nil) )
)
)
)
)
) E大就是热心 谢谢长老赐教
页:
[1]