<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Curve text in Visual LISP, AutoLISP and General Customization Forum</title>
    <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/curve-text/m-p/5568313#M142723</link>
    <description>Set AutoCAD variable TEXTSIZE.</description>
    <pubDate>Thu, 02 Apr 2015 10:23:45 GMT</pubDate>
    <dc:creator>ВeekeeCZ</dc:creator>
    <dc:date>2015-04-02T10:23:45Z</dc:date>
    <item>
      <title>Curve text</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/curve-text/m-p/5568157#M142722</link>
      <description>&lt;P&gt;I`ll post below the original Lisp.I need to be ask when i use it what height of text i want&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;;;--------------------=={ CurveText.lsp }==-------------------;;&lt;BR /&gt;;; ;;&lt;BR /&gt;;; Positions Text along a curve object (arc, circle, spline, ;;&lt;BR /&gt;;; ellipse, line, lwpolyline, polyline), and rotates text ;;&lt;BR /&gt;;; to fit to the curve accordingly. ;;&lt;BR /&gt;;; ;;&lt;BR /&gt;;; If run in versions &amp;gt; AutoCAD2000, the resultant text will ;;&lt;BR /&gt;;; form an anonymous group. ;;&lt;BR /&gt;;;------------------------------------------------------------;;&lt;BR /&gt;;; Author: Lee Mac, Copyright © 2012 - &lt;A target="_blank" href="http://www.lee-mac.com"&gt;www.lee-mac.com&lt;/A&gt; ;;&lt;BR /&gt;;;------------------------------------------------------------;;&lt;BR /&gt;;; Version: 1.4 - 22-02-2012 ;;&lt;BR /&gt;;;------------------------------------------------------------;;&lt;/P&gt;&lt;P&gt;(defun c:CTC ( / sel str obj )&lt;BR /&gt;(cond&lt;BR /&gt;( (= 4 (logand 4 (cdr (assoc 70 (tblsearch "LAYER" (getvar 'CLAYER))))))&lt;BR /&gt;(princ "\nCurrent Layer Locked.")&lt;BR /&gt;)&lt;BR /&gt;( (and&lt;BR /&gt;(setq sel&lt;BR /&gt;(LM:SelectionOrText "\nSpecify or Select Text String: "&lt;BR /&gt;(function&lt;BR /&gt;(lambda ( x ) (wcmatch (cdr (assoc 0 (entget x))) "*TEXT,ATTRIB"))&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;(or&lt;BR /&gt;(and&lt;BR /&gt;(eq 'STR (type sel))&lt;BR /&gt;(setq str sel)&lt;BR /&gt;)&lt;BR /&gt;(setq str (cdr (assoc 1 (entget sel))))&lt;BR /&gt;)&lt;BR /&gt;(setq obj (LM:SelectIf "\nSelect Curve: " 'LM:CurveObject-p))&lt;BR /&gt;)&lt;BR /&gt;(LM:CurveText str obj)&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;(princ)&lt;BR /&gt;)&lt;/P&gt;&lt;P&gt;(defun LM:CurveText ( str ent / *error* 3pi/2 a1 a2 a3 acdoc acspc df di dr g1 g2 gr in ln lst ms obj p1 p2 p3 pi/2 ts )&lt;/P&gt;&lt;P&gt;(defun *error* ( msg )&lt;BR /&gt;(foreach obj lst&lt;BR /&gt;(if&lt;BR /&gt;(and&lt;BR /&gt;(not (vlax-erased-p obj))&lt;BR /&gt;(vlax-write-enabled-p obj)&lt;BR /&gt;)&lt;BR /&gt;(vla-delete obj)&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;(if (null (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*"))&lt;BR /&gt;(princ (strcat "\nError: " msg))&lt;BR /&gt;)&lt;BR /&gt;(princ)&lt;BR /&gt;)&lt;/P&gt;&lt;P&gt;(setq acdoc (vla-get-activedocument (vlax-get-acad-object))&lt;BR /&gt;acspc (vlax-get-property acdoc (if (= 1 (getvar 'CVPORT)) 'paperspace 'modelspace))&lt;BR /&gt;)&lt;BR /&gt;(or *offset* (setq *offset* 0.0))&lt;BR /&gt;(or *spacin* (setq *spacin* 1.1))&lt;/P&gt;&lt;P&gt;(setq ts&lt;BR /&gt;(/ (getvar 'textsize)&lt;BR /&gt;(if (LM:isAnnotative (getvar 'textstyle))&lt;BR /&gt;(cond ((getvar 'cannoscalevalue)) ( 1.0 ))&lt;BR /&gt;1.0&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;)&lt;/P&gt;&lt;P&gt;(setq lst&lt;BR /&gt;(mapcar&lt;BR /&gt;(function&lt;BR /&gt;(lambda ( c )&lt;BR /&gt;(setq obj (vla-addtext acspc (chr c) (vlax-3D-point (getvar 'VIEWCTR)) ts))&lt;BR /&gt;(vla-put-alignment obj acalignmentmiddlecenter)&lt;BR /&gt;obj&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;(vl-string-&amp;gt;list str)&lt;BR /&gt;)&lt;BR /&gt;)&lt;/P&gt;&lt;P&gt;(setq ms (princ "\nPosition Text: [+/-] Offset, [&amp;lt;/&amp;gt;] Spacing")&lt;BR /&gt;ln (- (/ (1+ (strlen str)) 2.0))&lt;BR /&gt;pi/2 (/ pi 2.0)&lt;BR /&gt;3pi/2 (/ (* 3.0 pi) 2.0)&lt;BR /&gt;)&lt;BR /&gt;(while&lt;BR /&gt;(progn&lt;BR /&gt;(setq gr (grread t 15 0)&lt;BR /&gt;g1 (car gr)&lt;BR /&gt;g2 (cadr gr)&lt;BR /&gt;)&lt;BR /&gt;(cond&lt;BR /&gt;( (or (= 05 g1) (= 03 g1))&lt;BR /&gt;(setq p1 (trans g2 1 0)&lt;BR /&gt;p2 (vlax-curve-getclosestpointto ent p1)&lt;BR /&gt;a1 (angle p2 p1)&lt;BR /&gt;di (vlax-curve-getdistatpoint ent p2)&lt;BR /&gt;dr (angle '(0.0 0.0 0.0) (vlax-curve-getfirstderiv ent (vlax-curve-getparamatpoint ent p2)))&lt;BR /&gt;df (- a1 dr)&lt;BR /&gt;in ln&lt;BR /&gt;a2 (cond&lt;BR /&gt;( (and (&amp;gt; dr pi/2) (&amp;lt;= dr pi))&lt;BR /&gt;(- pi)&lt;BR /&gt;)&lt;BR /&gt;( (and (&amp;gt; dr pi) (&amp;lt;= dr 3pi/2))&lt;BR /&gt;pi&lt;BR /&gt;)&lt;BR /&gt;( 0.0 )&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;(foreach obj&lt;BR /&gt;(if (and (&amp;lt; pi/2 dr) (&amp;lt;= dr 3pi/2))&lt;BR /&gt;(reverse lst)&lt;BR /&gt;lst&lt;BR /&gt;)&lt;BR /&gt;(if (setq p3 (vlax-curve-getPointatDist ent (+ di (* (setq in (1+ in)) *spacin* ts))))&lt;BR /&gt;(progn&lt;BR /&gt;(setq a3 (angle '(0. 0. 0.) (vlax-curve-getfirstderiv ent (vlax-curve-getparamatpoint ent p3))))&lt;BR /&gt;(vla-put-TextAlignmentPoint obj&lt;BR /&gt;(vlax-3D-point (polar p3 (+ a3 df) (* ts *offset*)))&lt;BR /&gt;)&lt;BR /&gt;(vla-put-rotation obj (+ a2 a3))&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;(= 05 g1)&lt;BR /&gt;)&lt;BR /&gt;( (= 25 g1)&lt;BR /&gt;nil&lt;BR /&gt;)&lt;BR /&gt;( (= 02 g1)&lt;BR /&gt;(cond&lt;BR /&gt;( (member g2 '(13 32))&lt;BR /&gt;nil&lt;BR /&gt;)&lt;BR /&gt;( (member g2 '(43 61))&lt;BR /&gt;(setq *offset* (+ *offset* 0.1))&lt;BR /&gt;)&lt;BR /&gt;( (member g2 '(45 95))&lt;BR /&gt;(setq *offset* (- *offset* 0.1))&lt;BR /&gt;)&lt;BR /&gt;( (member g2 '(46 62))&lt;BR /&gt;(setq *spacin* (+ *spacin* 0.05))&lt;BR /&gt;)&lt;BR /&gt;( (member g2 '(44 60))&lt;BR /&gt;(setq *spacin* (- *spacin* 0.05))&lt;BR /&gt;)&lt;BR /&gt;( (princ (strcat "\nInvalid Keypress." ms))&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;( t )&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;&lt;BR /&gt;(if (&amp;lt; 15.0 (atof (getvar 'ACADVER)))&lt;BR /&gt;(vla-appenditems (vla-add (vla-get-groups acdoc) "*")&lt;BR /&gt;(vlax-make-variant&lt;BR /&gt;(vlax-safearray-fill&lt;BR /&gt;(vlax-make-safearray vlax-vbObject (cons 0 (1- (length lst))))&lt;BR /&gt;lst&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;(princ)&lt;BR /&gt;)&lt;/P&gt;&lt;P&gt;(defun LM:CurveObject-p ( ent )&lt;BR /&gt;(null&lt;BR /&gt;(vl-catch-all-error-p&lt;BR /&gt;(vl-catch-all-apply 'vlax-curve-getEndParam (list ent))&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;)&lt;/P&gt;&lt;P&gt;(defun LM:SelectIf ( msg pred )&lt;BR /&gt;(&lt;BR /&gt;(lambda ( f / e )&lt;BR /&gt;(while&lt;BR /&gt;(progn (setvar 'ERRNO 0) (setq e (car (entsel msg)))&lt;BR /&gt;(cond&lt;BR /&gt;( (= 7 (getvar 'ERRNO))&lt;BR /&gt;(princ "\nMissed, try again.")&lt;BR /&gt;)&lt;BR /&gt;( (eq 'ENAME (type e))&lt;BR /&gt;(if (and f (null (f e)))&lt;BR /&gt;(princ "\nInvalid Object.")&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;e&lt;BR /&gt;)&lt;BR /&gt;(eval pred)&lt;BR /&gt;)&lt;BR /&gt;)&lt;/P&gt;&lt;P&gt;(defun LM:isAnnotative ( style / obj xdt )&lt;BR /&gt;(and&lt;BR /&gt;(setq obj (tblobjname "STYLE" style))&lt;BR /&gt;(setq xdt (cadr (assoc -3 (entget obj '("AcadAnnotative")))))&lt;BR /&gt;(= 1 (cdr (assoc 1070 (reverse xdt))))&lt;BR /&gt;)&lt;BR /&gt;)&lt;/P&gt;&lt;P&gt;(defun LM:SelectionOrText ( msg pred / en g1 g2 gr result )&lt;BR /&gt;(setq pred (eval pred))&lt;BR /&gt;&lt;BR /&gt;(if msg&lt;BR /&gt;(princ msg)&lt;BR /&gt;(princ (setq msg "\nSelect Objects or Enter Text: "))&lt;BR /&gt;)&lt;BR /&gt;(setq result "")&lt;/P&gt;&lt;P&gt;(while&lt;BR /&gt;(progn&lt;BR /&gt;(setq gr (grread t 13 2)&lt;BR /&gt;g1 (car gr)&lt;BR /&gt;g2 (cadr gr)&lt;BR /&gt;)&lt;BR /&gt;(cond&lt;BR /&gt;( (= 03 g1)&lt;BR /&gt;(if (setq en (car (nentselp g2)))&lt;BR /&gt;(if (pred en)&lt;BR /&gt;(not (setq result en))&lt;BR /&gt;(princ (strcat "\nInvalid Object Selected." msg))&lt;BR /&gt;)&lt;BR /&gt;(princ (strcat "\nMissed, try again." msg))&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;( (= 02 g1)&lt;BR /&gt;(cond&lt;BR /&gt;( (&amp;lt; 31 g2 127)&lt;BR /&gt;(setq result (strcat result (princ (chr g2))))&lt;BR /&gt;)&lt;BR /&gt;( (= 13 g2)&lt;BR /&gt;nil&lt;BR /&gt;)&lt;BR /&gt;( (= 08 g2)&lt;BR /&gt;(if (&amp;lt; 0 (strlen result))&lt;BR /&gt;(progn&lt;BR /&gt;(setq result (substr result 1 (1- (strlen result))))&lt;BR /&gt;(princ (vl-list-&amp;gt;string '(8 32 8)))&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;t&lt;BR /&gt;)&lt;BR /&gt;( t )&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;( (= 25 g1)&lt;BR /&gt;nil&lt;BR /&gt;)&lt;BR /&gt;( t )&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;)&lt;BR /&gt;result&lt;BR /&gt;)&lt;/P&gt;&lt;P&gt;(vl-load-com)&lt;BR /&gt;(princ "\n:: CurveText.lsp | Version 1.4 | © Lee Mac 2012 &lt;A target="_blank" href="http://www.lee-mac.com"&gt;www.lee-mac.com&lt;/A&gt; ::")&lt;BR /&gt;(princ "\n:: Type \"CurveText\" to Invoke ::")&lt;BR /&gt;(princ)&lt;/P&gt;</description>
      <pubDate>Thu, 02 Apr 2015 07:56:49 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/curve-text/m-p/5568157#M142722</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2015-04-02T07:56:49Z</dc:date>
    </item>
    <item>
      <title>Re: Curve text</title>
      <link>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/curve-text/m-p/5568313#M142723</link>
      <description>Set AutoCAD variable TEXTSIZE.</description>
      <pubDate>Thu, 02 Apr 2015 10:23:45 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/curve-text/m-p/5568313#M142723</guid>
      <dc:creator>ВeekeeCZ</dc:creator>
      <dc:date>2015-04-02T10:23:45Z</dc:date>
    </item>
  </channel>
</rss>

