回复 4041186888 的帖子
一个简单的例子
- (defun C:yl (/ id pt1 pt2 txt_ss txt_ent)
- (SETQ ID T)
- (setq pt1 (getpoint "\n点取一点:"))
- (command "_.TEXT"
- "j"
- "bl"
- PT1
- 300.0
- 0
- (strcat "x=" (rtos (car pt1)) ",y=" (rtos (car pt1))) ;文字
- )
- (setq txt_ss (entlast)) ;选取该文字
- (setq txt_ent (entget txt_ss)) ;取组码
- (while ID
- (SETQ pt2 (GRREAD T 4 0))
- (IF (= 5 (CAR pt2)) ;鼠标跟踪
- (PROGN (REDRAW) ;清屏
- (grdraw (cadr pt2) pt1 1 0) ;在屏幕上画一条线,
- (SETQ txt_ent (SUBST (CONS 11 (cadr pt2)) (ASSOC 11 txt_ent) txt_ent)) ;改组码
- (ENTMOD txt_ent) ;改文字位置
- (ENTUPD txt_ss)
- )
- )
- ;;;若点击鼠标左、右键或键盘任意按键,则取得当前鼠标位置,并退出循环
- (IF (OR (= 3 (CAR pt2)) (= 2 (CAR pt2)) (= 11 (CAR pt2)))
- (PROGN (REDRAW)
- (SETQ ID NIL)
- (command "line" pt1 (cadr pt2) "")
- )
- )
- )
- )
|