Hint: Read up on vla-get-insertionPoint for text.
Registered forum members do not see this ad.
I recieved a lisp from Lee Mac. Bored.lsp
Code is as follows:
Now, I have edited it to drag around an object, code as follows:Code:(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) )
This code should work with any object that has an Insertion Point Property.Code:(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) )
Now my question is: This works with a piece of single line text with a left justification, but doesn't seem to work with a Middle Center Justification. Can anyone see why it doesn't work?
Thanks in advance.
P.S. Lee Mac... thanx again, fun stuff!
Thanks for the quick reply!
I've tried using the TextAlignmentPoint property instead and it works. Though my question is that why is that I am not able to move the object by changing the InsertionPoint property?
Yes, I am in the process of reading them now. I am no stranger to the help files! Though I am having a hard time finding where they explain the both.
Found it! Thanks.
For the readers:
Text: This property will be reset to 0, 0, 0 and will become read-only when the Alignment property is set to acAlignmentLeft. To position text whose justification is left, fit, or aligned, use the InsertionPoint property.
Text: This property is read-only except for text whose Alignment property is set to acAlignmentLeft, acAlignmentAligned, or acAlignmentFit. To position text whose justification is other than left, aligned, or fit, use the TextAlignmentPoint property.
Last edited by Hippe013; 23rd Jul 2010 at 09:26 pm. Reason: Added Help Information
With the obj (text object) being Left justified or Middle Center justfied vlax-property-available-p (with check-modify set to T) will still return True. Which it seems to me that it shouldn't... any ideas about this?Code:(vlax-property-available-p obj 'InsertionPoint T)
I would have to agree and checking the alignment to see which to use is obviously the route to go. Though it would stand to reason that if one property becomes read-only dependent on the value of the alignment that vlax-property-available-p would pick up on that fact that the value has now become read-only and return nil. Wouldn't you agree Lee?