编辑的带孔LISP
我收到李·麦克的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,有趣的东西! 提示:阅读vla get insertionPoint上的文本。 感谢您的快速回复!
我试着改用TextAlignmentPoint属性,效果很好。尽管我的问题是,为什么我不能通过更改InsertionPoint属性来移动对象?
你看过开发人员的帮助说明了吗? 是的,我现在正在阅读。我对帮助文件并不陌生!虽然我很难找到他们在哪里解释这两者。 找到了!谢谢
对于读者:
文本对齐点
文本:此属性将重置为0、0、0,并在“对齐”属性设置为“acAlignmentLeft”时变为只读。要定位对齐方式为左对齐、拟合或对齐的文本,请使用InsertionPoint特性。
插入点
文本:此属性为只读,但其对齐属性设置为“acAlignmentLeft”、“acAlignmentAligned”或“acAlignmentFit”的文本除外。要定位对正不是左对齐、对齐或拟合的文本,请使用TextAlignmentPoint特性。 注:
(vlax-property-available-p obj 'InsertionPoint T)
当obj(文本对象)左对齐或中间居中对齐时,vlax-property-available-p(check modify设置为T)仍将返回True。在我看来,这不应该。。。有什么想法吗? 是的,它当然会返回T,属性彼此独立,并且依赖于对象。
只需检查对齐情况,看看要使用哪个。 我必须同意并检查路线,以确定使用哪条路线显然是要走的路线。尽管很自然,如果一个属性变成只读依赖于对齐的值,那么vlax-property-available-p将基于该值现在变成只读并返回nil这一事实。你不同意李吗? 它不是只读的,只是对位置没有影响。
页:
[1]