Aligning MText with picked point on a curve

<?xml encoding=”UTF-8″>By Balaji Ramamoorthy

In this discussion forum post, the developer wanted an MText to align automatically with the curve without having to provide additional inputs for specifying the rotation. Kent Cooper‘s nice reply in that forum post provides all that is necessary to implement that. Since this requirement of aligning an MText along a curve is quite essential in Civil / Survey applications, I am posting a bare-bone implementation of it that you can customize. The key to finding the rotation is to determine the first derivative (slope) of the curve at the point the entity was selected. 

Here is the code snippet :


<font color="#800000">(</font><b><font color="#0000FF">vl-load-com</font></b><font color="#800000">)</font>
<font color="#800000">(</font><b><font color="#0000FF">setq</font></b> <b><font color="#0000FF">es</font></b>    <font color="#800000">(</font><b><font color="#0000FF">entsel</font></b><font color="#800000">)</font>
<b><font color="#0000FF">entpt</font></b> <font color="#800000">(</font><b><font color="#0000FF">osnap</font></b> <font color="#800000">(</font><b><font color="#0000FF">cadr</font></b> <b><font color="#0000FF">es</font></b><font color="#800000">)</font> <font color="#FF0000">"_nea"</font><font color="#800000">)</font>
<b><font color="#0000FF">ang</font></b>   <font color="#800000">(</font><b><font color="#0000FF">angle</font></b> '<font color="#800000">(</font><font color="#800080">0</font> <font color="#800080">0</font> <font color="#800080">0</font><font color="#800000">)</font>
<font color="#800000">(</font><b><font color="#0000FF">vlax-curve-getFirstDeriv</font></b>
<font color="#800000">(</font><b><font color="#0000FF">vlax-ename-</font></b><font color="#800000">></font><b><font color="#0000FF">vla-object</font></b> <font color="#800000">(</font><b><font color="#0000FF">car</font></b> <b><font color="#0000FF">es</font></b><font color="#800000">)</font><font color="#800000">)</font>
<font color="#800000">(</font><b><font color="#0000FF">vlax-curve-getParamAtPoint</font></b>
<font color="#800000">(</font><b><font color="#0000FF">vlax-ename-</font></b><font color="#800000">></font><b><font color="#0000FF">vla-object</font></b> <font color="#800000">(</font><b><font color="#0000FF">car</font></b> <b><font color="#0000FF">es</font></b><font color="#800000">)</font><font color="#800000">)</font>
<b><font color="#0000FF">entpt</font></b>
<font color="#800000">)</font>
<font color="#800000">)</font>
<font color="#800000">)</font>
<font color="#800000">)</font>
<font color="#800000">(</font><b><font color="#0000FF">if</font></b> <font color="#800000">(</font><b><font color="#0000FF">and</font></b> <font color="#800000">(</font><font color="#800000">></font> <b><font color="#0000FF">ang</font></b> <font color="#800000">(</font>/ <b><font color="#0000FF">pi</font></b> <font color="#800080">2</font><font color="#800000">)</font><font color="#800000">)</font> <font color="#800000">(</font><font color="#800000"><</font><font color="#800000">=</font> <b><font color="#0000FF">ang</font></b> <font color="#800000">(</font><font color="#800000">*</font> <b><font color="#0000FF">pi</font></b> <font color="#800080">1</font>.<font color="#800080">5</font><font color="#800000">)</font><font color="#800000">)</font><font color="#800000">)</font>
<font color="#800000">(</font><b><font color="#0000FF">setq</font></b> <b><font color="#0000FF">ang</font></b> <font color="#800000">(</font><font color="#800000">+</font> <b><font color="#0000FF">ang</font></b> <b><font color="#0000FF">pi</font></b><font color="#800000">)</font><font color="#800000">)</font>
<font color="#800000">)</font>
<font color="#800000">(</font><b><font color="#0000FF">setq</font></b> <b><font color="#0000FF">hght</font></b> <font color="#800000">(</font><b><font color="#0000FF">getreal</font></b> <font color="#FF0000">"nText Height : "</font><font color="#800000">)</font><font color="#800000">)</font>
<font color="#800000">(</font><b><font color="#0000FF">setq</font></b>
<b><font color="#0000FF">mspace</font></b> <font color="#800000">(</font><b><font color="#0000FF">vla-get-modelspace</font></b>
<font color="#800000">(</font><b><font color="#0000FF">vla-get-activedocument</font></b> <font color="#800000">(</font><b><font color="#0000FF">vlax-get-acad-object</font></b><font color="#800000">)</font><font color="#800000">)</font>
<font color="#800000">)</font>
<font color="#800000">)</font>
<font color="#800000">(</font><b><font color="#0000FF">setq</font></b> <b><font color="#0000FF">mtextobj</font></b> <font color="#800000">(</font><b><font color="#0000FF">vla-addMText</font></b>
<b><font color="#0000FF">mspace</font></b>
<font color="#800000">(</font><b><font color="#0000FF">vlax-3d-point</font></b> <b><font color="#0000FF">entpt</font></b><font color="#800000">)</font>
<font color="#800080">0</font>.<font color="#800080">0</font>
<font color="#FF0000">"AUTOCAD"</font>
<font color="#800000">)</font>
<font color="#800000">)</font>
<font color="#800000">(</font><b><font color="#0000FF">vla-put-attachmentPoint</font></b>
<b><font color="#0000FF">mtextobj</font></b>
<b><font color="#0000FF">acAttachmentPointMiddleCenter</font></b>
<font color="#800000">)</font>
<font color="#800000">(</font><b><font color="#0000FF">vla-put-insertionPoint</font></b> <b><font color="#0000FF">mtextobj</font></b> <font color="#800000">(</font><b><font color="#0000FF">vlax-3d-point</font></b> <b><font color="#0000FF">entpt</font></b><font color="#800000">)</font><font color="#800000">)</font>
<font color="#800000">(</font><b><font color="#0000FF">vla-put-Rotation</font></b> <b><font color="#0000FF">mtextobj</font></b> <b><font color="#0000FF">ang</font></b><font color="#800000">)</font>
<font color="#800000">(</font><b><font color="#0000FF">vla-put-Height</font></b> <b><font color="#0000FF">mtextobj</font></b> <b><font color="#0000FF">hght</font></b><font color="#800000">)</font>
<font color="#800000">(</font><b><font color="#0000FF">vla-put-Color</font></b> <b><font color="#0000FF">mtextobj</font></b> <font color="#800080">7</font><font color="#800000">)</font>
<font color="#800000">(</font><b><font color="#0000FF">vla-put-backgroundfill</font></b> <b><font color="#0000FF">mtextobj</font></b> <b><font color="#0000FF">:vlax-true</font></b><font color="#800000">)</font>

Here is a sample output :

1


Comments

Leave a Reply

Discover more from Autodesk Developer Blog

Subscribe now to keep reading and get access to the full archive.

Continue reading