我收到李·麦克的Lisp程序。无聊的lsp
代码如下:
-
- (defun c:bored ( / cir cnt gr lst n d )
- ;; © Lee Mac 2010
- (setq lst (list (getvar 'viewctr) (getvar 'viewctr)) cnt 0)
- (while (eq 5 (car (setq gr (grread nil 13 0))))
- (redraw)
- (setq cir nil n 0 lst (append lst (list (last lst) (cadr gr)))
- cnt (1+ cnt))
- (if (< 100 cnt) (setq lst (cddr lst)))
- (repeat 50
- (setq d (/ (distance (car lst) (last lst)) 4.))
- (repeat 4
- (setq cir (cons (polar (car lst) (* (setq n (1+ n)) (/ (* pi 2) 50)) d) cir))
- (setq d (/ d 2.))
- )
- )
- (grvecs (append (list (rem (/ cnt 100) 255)) lst cir))
- )
- (redraw)
- (princ)
- )
现在,我将其编辑为围绕对象拖动,代码如下:
- (defun c:bored2 ( / )
- ;; © Lee Mac 2010
- ;Edit by Hippe 2010
- (setq obj (vlax-ename->vla-object (car (entsel))))
- (setq ins (vlax-get-property obj 'InsertionPoint))
- (setq lst (list (getvar 'viewctr) (getvar 'viewctr)) cnt 0)
- (while (eq 5 (car (setq gr (grread nil 13 0))))
- (redraw)
- (setq cir nil n 0 lst (append lst (list (last lst) (cadr gr)))
- cnt (1+ cnt))
- (if (< 100 cnt) (setq lst (cddr lst)))
- ;(repeat 50
- ; (setq d (/ (distance (car lst) (last lst)) 4.))
- ;(repeat 4
- ; (setq cir (cons (polar (car lst) (* (setq n (1+ n)) (/ (* pi 2) 50)) d) cir))
- ; (setq d (/ d 2.))
- ; )
-
- (grvecs (append (list (rem (/ cnt 100) 255)) lst cir))
- (vlax-put-property obj 'InsertionPoint (vlax-3d-point (nth 0 lst)))
- (vla-update obj)
- )
- (redraw)
- (vlax-put-property obj 'InsertionPoint ins)
- (vlax-release-object obj)
- (princ)
- )
此代码应适用于具有插入点特性的任何对象。
现在我的问题是:这适用于带有左对正的单行文本,但似乎不适用于中间对正。有人知道为什么它不起作用吗?
提前谢谢。
hippe013
P、 李-麦克。。。又是thanx,有趣的东西! |