liminnet 发表于 2008-11-18 15:40:00

caoyin 发表于 2008-11-18 16:05:00

;; ▓ (lt:dim-definingPoint edata)<br/>;; [功能] 获取标注的定义点<br/>;; [参数] edata---标注对象的 DXF 定义数据<br/>;; [返回] 包含两个点的表,依次为 (第一个尺寸线定义点 第二个尺寸线定义点)<br/>(defun lt:dim-definingPoint (edata / dxf typ p10 p13 p14 ang)<br/>&nbsp; (setq dxf (lambda (x) (cdr (assoc x edata)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typ (- (dxf 70) 32)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p10 (dxf 10)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p13 (dxf 13)<br/>&nbsp; )<br/>&nbsp; (list (cond<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((zerop typ)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq ang (dxf 50) p13 (list (car p13) (cadr p13) (last p10)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (inters p10 (polar p10 ang 1) p13 (polar p13 (+ ang (/ pi 2)) 1) nil)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((= typ 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq p14 (dxf 14) ang (if (equal p14 p13 1e-7) 0 (angle p14 p13)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (equal p10 p14 1e-7)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p13<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (polar p10 ang (dxf 42))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p10<br/>&nbsp; )<br/>)

caoyin 发表于 2008-11-18 16:08:00

<p>还有更好方法:</p><p>就是获取箭头块(或SOLID)的坐标</p>

liminnet 发表于 2008-11-18 16:24:00

liminnet 发表于 2008-12-3 11:21:00

liminnet 发表于 2008-12-3 11:35:00

caoyin 发表于 2008-12-3 14:12:00

<p>这是早期版本产生的,改为</p><p>(defun lt:dim-definingPoint (edata / dxf typ p10 p13 p14 ang)<br/>&nbsp; (setq dxf (lambda (x) (cdr (assoc x edata)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typ (dxf 70)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p10 (dxf 10)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p13 (dxf 13)<br/>&nbsp; )<br/>&nbsp; (if (&gt; typ 1) (setq typ (- typ 32)))</p>

liminnet 发表于 2008-12-3 14:43:00

caoyin 发表于 2008-12-3 16:28:00

<p></p><p>(setq edata (entget (car (entsel))<font color="#0909f7">'("ACAD")</font>))</p><p>-&gt;</p><p>........</p><p>("ACAD" (1000 . "DSTYLE") (1002 . "{") (1070 . 40) (1040 . 1.5) (1070 . 79) <br/>(1070 . 0) (1070 . 144) <font color="#ff0000">(1040 . 0.133333)</font> (1070 . 179) (1070 . 0) (1002 . <br/>"}"))))</p><p>将红色部分是当前标注对象的测量比例因子,将(dxf 42)替换成&nbsp;<font color="#0000ff">(dxf 42) 除以该值</font><font color="#000000">,自己改改看</font></p><p>得到实际的测量距离</p>

liminnet 发表于 2008-12-3 17:10:00

页: [1] 2
查看完整版本: [caoyin版主自己解决了]能得到标注的两个尺寸界线与尺寸线的交点坐标吗