鬼魔 发表于 2007-6-19 14:25:00

[求助]标注问题

<p>最近接了套扇形建筑,标注大部分都是对齐标注,修改起来极不方便,哪位朋友能帮编个,对齐标注转线性标注 和线性标注转对齐标注。</p><p>在下先谢了。</p>

英雄无敌 发表于 2007-6-21 08:55:00

<p>我试着编了一个,但发现在2004下用不了,在R14下却可以用,也不知道为什么,可能2004与R14的结构不一样了。</p><p>如果能找到2004以上的方法更好,但我帮不了你了,如果不行,你可以将你的图形转为R14,再用R14打开,修改好尺寸后再用2004或以上的打开。但不要用转换器,用2007另存为R14。你也可以把图放上来,我可以给你转。</p>

英雄无敌 发表于 2007-6-21 09:33:00

修改了一下,这个可在2004下使用了,在其它未做调试。

英雄无敌 发表于 2007-6-21 09:44:00

<p>又修改了一下,原来这样也行!</p><p>当然,这样改尺寸是会变的,不变是不可能的,不然就不是实际尺寸了。</p><p>&nbsp;</p>

鬼魔 发表于 2007-6-21 15:29:00

<p>我试了下06的不行,找了个04的,转换了标注会乱跳</p><p>&nbsp;我现在只能用线性标注去旋转角度,工作量挺大</p>

英雄无敌 发表于 2007-6-22 09:20:00

本帖最后由 作者 于 2007-6-22 9:40:12 编辑 <br /><br /> <p>那试试这个吧,这个将你原来的尺寸删除,而新建一个,我用entmod不能成功,改用了entmake</p><p>(defun c:g-l (/ ss n lst)<br/>&nbsp; (setq ss (ssget '((0 . "dimension"))))<br/>&nbsp; (if ss<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq n 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (repeat (sslength ss)<br/>&nbsp;(setq lst (entget (ssname ss n)))</p><p>&nbsp;(setq ang (angle (cdr (assoc 13 lst)) (cdr (assoc 14 lst))))<br/>&nbsp;(setq lst<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (list</p><p>&nbsp;&nbsp; (assoc 0 lst)<br/>&nbsp;&nbsp; '(100 . "AcDbEntity")</p><p>&nbsp;&nbsp; '(100 . "AcDbDimension")<br/>&nbsp;&nbsp; (assoc 2&nbsp;&nbsp;lst)<br/>&nbsp;&nbsp; (assoc 10 lst)<br/>&nbsp;&nbsp; (assoc 11 lst)</p><p>&nbsp;&nbsp; '(70 . 32)<br/>&nbsp;&nbsp; (assoc 1&nbsp;lst)<br/>&nbsp;&nbsp; (assoc 3 lst)<br/>&nbsp;&nbsp; '(100 . "AcDbAlignedDimension")<br/>&nbsp;&nbsp; (assoc 13 lst)<br/>&nbsp;&nbsp; (assoc 14 lst)<br/>&nbsp;&nbsp; (cons 50 ang)<br/>&nbsp;&nbsp; '(100<br/>&nbsp;&nbsp;&nbsp;&nbsp; .<br/>&nbsp;&nbsp;&nbsp;&nbsp; "AcDbRotatedDimension"<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );list</p><p>&nbsp;);setq </p><p>&nbsp;(entdel (ssname ss n))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (entmake lst)<br/>&nbsp;(setq n (1+ n))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );repeat<br/>&nbsp;&nbsp;&nbsp; );progn<br/>&nbsp; );end if<br/>(princ"\n转换完成!")<br/>&nbsp; (princ)<br/>)</p>

英雄无敌 发表于 2007-6-22 09:50:00

<p>上面那个我在2007下试了,可以用,如果要将线性改为对齐,可用下面的代码,但尺寸位置可能就变了。</p><p>(defun c:l-g (/ ss n lst)<br/>&nbsp; (setq ss (ssget '((0 . "dimension"))))<br/>&nbsp; (if ss<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq n 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (repeat (sslength ss)<br/>&nbsp;(setq lst (entget (ssname ss n)))</p><p>;;; (setq ang (angle (cdr (assoc 13 lst)) (cdr (assoc 14 lst))))<br/>&nbsp;(setq lst<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (list</p><p>&nbsp;&nbsp; (assoc 0 lst)<br/>&nbsp;&nbsp; '(100 . "AcDbEntity")</p><p>&nbsp;&nbsp; '(100 . "AcDbDimension")<br/>&nbsp;&nbsp; (assoc 2&nbsp; lst)<br/>&nbsp;&nbsp; (assoc 10 lst)<br/>&nbsp;&nbsp; (assoc 11 lst)</p><p>&nbsp;&nbsp; '(70 . 33)<br/>&nbsp;&nbsp; (assoc 1 lst)<br/>&nbsp;&nbsp; (assoc 3 lst)<br/>&nbsp;&nbsp; '(100 . "AcDbAlignedDimension")<br/>&nbsp;&nbsp; (assoc 13 lst)<br/>&nbsp;&nbsp; (assoc 14 lst)<br/>&nbsp;&nbsp; (cons 50 0)<br/>;;;&nbsp;&nbsp; '(100<br/>;;;&nbsp;&nbsp;&nbsp;&nbsp; .<br/>;;;&nbsp;&nbsp;&nbsp;&nbsp; "AcDbRotatedDimension"<br/>;;;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );list</p><p>&nbsp;);setq </p><p>&nbsp;(entdel (ssname ss n))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (entmake lst)<br/>&nbsp;(setq n (1+ n))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );repeat<br/>&nbsp;&nbsp;&nbsp; );progn<br/>&nbsp; );end if<br/>(princ"\n转换完成!")<br/>&nbsp; (princ)<br/>)<br/></p>

鬼魔 发表于 2007-6-22 23:22:00

<p>感谢英雄无敌帮了我大忙</p><p>线性转对齐时,长短脚不一样确实会乱跳,幸好我有剪标注线的</p><p>非常好,再次QQQ英雄无敌</p>

英雄无敌 发表于 2007-6-23 15:09:00

能给你带来方便我也很高兴,在这个过程中我也学到了不少,有些东西当你无法ENTMOD的时候,你可以ENTMAKE它。

英雄无敌 发表于 2007-7-2 11:20:00

<p>修改了一下,修正了线性转对齐时,标注会改变的问题,但程序是以保留第14脚,修改第13脚的位置来实现的,没有采用保留短脚或长脚的方法,但可以实现。</p><p>&nbsp;</p>
页: [1] 2
查看完整版本: [求助]标注问题