<?xml encoding=”UTF-8″>By Daniel Du
Issue
The AddDimAligned method of Block object produces incorrect dimension objects. How can I add dimension entities to a Block object?
Solution
The AddDimAligned method as well as other AddDimxxx methods of adding dimension entities to a Block object results in dimension objects that are incorrect.
This is a known problem. Use the following workaround to add dimension entities to a block object:
- Create a Dimension entity in model space.
2. Use the CopyObject method to copy the Dimension entity to a Block object.
3. Delete the original Dimension entity from model space.
The following sample code creates a block “test”, adds a DimRotated entity to the block, and then inserts the block into model space.
<font face="新宋体"><font><span><font color="#0000ff">Sub</font></span></font></font><font><font face="新宋体"><font color="#000000"> f_SolAddDiminBlocks()<br> </font><span><font color="#008000">'Workaround for Adding dimensions to block AutoCAD</font></span><br><span><font color="#0000ff"> Dim</font></span><font color="#000000"> po_rotDim </font><span><font color="#0000ff">As</font></span></font><font face="新宋体"><font color="#000000"> AcadDimAligned<br> </font><span><font color="#0000ff">Dim</font></span><font color="#000000"> po_block </font><span><font color="#0000ff">As</font></span></font><font face="新宋体"><font color="#000000"> AcadBlock<br> </font><span><font color="#0000ff">Dim</font></span><font color="#000000"> pd_ext1(0 </font><span><font color="#0000ff">To</font></span><font color="#000000"> 2) </font><span><font color="#0000ff">As</font></span><font color="#000000"> </font><span><font color="#0000ff">Double</font></span><br><span><font color="#0000ff"> Dim</font></span><font color="#000000"> pd_ext2(0 </font><span><font color="#0000ff">To</font></span><font color="#000000"> 2) </font><span><font color="#0000ff">As</font></span><font color="#000000"> </font><span><font color="#0000ff">Double</font></span><br><span><font color="#0000ff"> Dim</font></span><font color="#000000"> pd_lineLoc(0 </font><span><font color="#0000ff">To</font></span><font color="#000000"> 2) </font><span><font color="#0000ff">As</font></span><font color="#000000"> </font><span><font color="#0000ff">Double</font></span><br><span><font color="#0000ff"> Dim</font></span><font color="#000000"> po_array(0) </font><span><font color="#0000ff">As</font></span><font color="#000000"> </font><span><font color="#0000ff">Object</font></span><br></font><font face="新宋体"><font color="#000000"> <br> pd_ext1(0) = 3 : pd_ext1(1) = 3 : pd_ext1(2) = 0<br> pd_ext2(0) = 10 : pd_ext2(1) = 3 : pd_ext2(2) = 0<br> pd_lineLoc(0) = 5 : pd_lineLoc(1) = 4 : pd_lineLoc(2) = 0<br> </font><span><font color="#008000">'create dimeionsion object</font></span><br></font><font face="新宋体"><font color="#000000"> po_rotDim = ThisDrawing.ModelSpace.AddDimAligned(pd_ext1, pd_ext2,<br> pd_lineLoc)<br> <br> </font><span><font color="#008000">'create a new block by name test</font></span><br><font color="#000000"> po_block = ThisDrawing.Blocks.Add(pd_ext1, </font><span><font color="#a31515">"test"</font></span></font><font face="新宋体"><font color="#000000">)<br> </font><span><font color="#008000">'insert a block reference</font></span><br><font color="#000000"> ThisDrawing.ModelSpace.InsertBlock(pd_ext1, </font><span><font color="#a31515">"test"</font></span></font><font face="新宋体"><font color="#000000">, 1, 1, 1, 0)<br> </font><span><font color="#008000">'copy dimension object</font></span><br></font></font><font face="新宋体"><font><font color="#000000"> po_array(0) = po_rotDim<br> ThisDrawing.CopyObjects(po_array, po_block)<br> po_rotDim.Delete()<br> </font><span><font color="#008000">'release the references</font></span><br><font color="#000000"> po_block = </font><span><font color="#0000ff">Nothing</font></span><br><font color="#000000"> po_rotDim = </font><span><font color="#0000ff">Nothing</font></span><br><span><font color="#0000ff">End</font></span><font color="#000000"> </font></font><span><font color="#0000ff">Sub</font></span></font>

Leave a Reply