leeooo 发表于 2009-4-8 08:29:00

请求高手帮忙解决或修改“自动标注面积周长”的lisp文件,不胜感激!

本帖最后由 作者 于 2009-4-8 8:30:55 编辑 <br /><br /> <p>各位高手大侠好!</p><p>初学lisp纯粹瞎编的,点击封闭区域自动标注面积周长,<font size="5"><strong>正常运行了几天</strong></font>,但之后出现下面的问题无法解决,请求高手达人帮忙解决或者修改lisp,不胜感激!!!</p><p>命令:<br/>命令: mj \n请点取要标注的范围内一点:-boundary<br/>指定内部点或 [高级选项(A)]: 正在选择所有对象...<br/>正在选择所有可见对象...<br/>正在分析所选数据...<br/>正在分析内部孤岛...<br/>指定内部点或 [高级选项(A)]:<br/>BOUNDARY 已创建 1 个多段线<br/>命令: MJ 未知命令“MJ”。按 F1 查看帮助。<br/>命令: ; 错误: ActiveX 服务器返回错误: 未知名称: Perimeter<br/>命令:</p><p><font size="5"><strong>请求高手达人帮忙解决或者修改lisp或者编个类似的</strong>,不胜感激需要修改的代码如下:</font></p><p>(defun C:mj (/&nbsp; pt a b c s ss tt ttt )<br/>(vl-load-com)<br/>(setq pt (getpoint "<a href="file://n/">\\n</a>请点取要标注的范围内一点:"))<br/>(command "-boundary" pt "" "")<br/>(setq a (entlast))<br/>(setq b (vlax-ename-&gt;vla-object a))<br/>(setq s (vla-get-area b))<br/>(setq ss (rtos (/ s 1000000)2 2))<br/>(setq tt (vla-get-perimeter b))<br/>(setq ttt (rtos (/ tt 1000)2 2))<br/>(command "textsize" 200 "")<br/>(command "mtext"&nbsp; pt pt (strcat "面积=" ss "平米\n" "周长=" ttt "米") "")<br/>(command "erase" a "")<br/>) <br/></p><p></p>

Akifans 发表于 2020-7-1 17:30:18

leeooo 发表于 2009-4-8 09:58
本帖最后由 作者 于 2009-4-8 10:37:49 编辑无意中看到论坛sailorcwx大侠的,很羡慕,努力学习了,现转 ...

您好,输入的字符串有缺陷:'(

denghui002006 发表于 2019-1-14 11:11:33

leeooo 发表于 2009-4-8 09:53
已经修改正确,点击区域自动封闭标注面积周长很小的lispdefun C:mj (/&nbsp; pt a b c s ss tt ttt )(vl- ...

太棒了 可以用 谢谢

liminnet 发表于 2009-4-8 09:16:00

wchaop 发表于 2009-4-8 09:46:00

vla-get-perimeter的对象只能是面域!

leeooo 发表于 2009-4-8 09:49:00

<p>谢谢大家 </p><p>对的vla-get-perimeter有问题</p><p>改为vla-get-length即可</p>

leeooo 发表于 2009-4-8 09:53:00

<p>已经修改正确,点击区域自动封闭标注面积周长很小的lisp:</p><p></p><p>(defun C:mj (/&nbsp; pt a b c s ss tt ttt )<br/>(vl-load-com)<br/>(setq pt (getpoint "<a href="file://n/"><font color="#000000">\\n</font></a>请点取要标注的范围内一点:"))<br/>(command "-boundary" pt "" "")<br/>(setq a (entlast))<br/>(setq b (vlax-ename-&gt;vla-object a))<br/>(setq s (vla-get-area b))<br/>(setq ss (rtos (/ s 1000000)2 2))<br/>(setq tt (vla-get-length b))<br/>(setq ttt (rtos (/ tt 1000)2 2))<br/>(command "textsize" 200 "")<br/>(command "mtext"&nbsp; pt pt (strcat "面积=" ss "平米\n" "周长=" ttt "米") "")<br/>(command "erase" a "")<br/>) </p>

leeooo 发表于 2009-4-8 09:58:00

本帖最后由 作者 于 2009-4-8 10:37:49 编辑 <br /><br /> <p>无意中看到论坛<strong><font face="Verdana" color="#61b713">sailorcwx</font></strong>大侠的,很羡慕,努力学习了,现转帖如下,选择封闭区域,自动编号标注面积,甚是节约时间,比如几千个面积需要标注咋办?用这个lisp很快高效啊,顺便请问如何把周长长度加在面积的下面: </p><p>(defun c:markarea(/ ACADDOC ACADSPC OBJAREA OBJLLPOINT OBJRUPOINT SELECTIONSET TEXTBASEPOINT TEXTHEIGHT TEXTINDEX TEXTOBJ)<br/>&nbsp; (vl-load-com)<br/>&nbsp; (setq AcadDoc (vla-get-activedocument (vlax-get-acad-object)))<br/>&nbsp; (if (= (getvar "TILEMODE") 1)(setq AcadSpc (vla-get-modelspace AcadDoc))(setq AcadSpc (vla-get-paperspace AcadDoc)))<br/>&nbsp; (setq TextHeight (getdist "\n输入标注文字高度:")<br/>&nbsp;TextIndex (getint "\n输入起始编号:")<br/>&nbsp;)<br/>&nbsp; (ssget '((0 . "LWPOLYLINE")))<br/>&nbsp; (setq Selectionset (vla-get-activeselectionset AcadDoc))<br/>&nbsp; (if (and TextHeight Selectionset TextIndex)<br/>&nbsp;&nbsp;&nbsp; (vlax-for Obj Selectionset<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq ObjArea (vla-get-area obj)<br/>&nbsp;&nbsp;&nbsp;&nbsp; ObjLlPoint nil<br/>&nbsp;&nbsp;&nbsp;&nbsp; ObjRuPoint nil<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vla-GetBoundingBox Obj 'ObjLlPoint 'ObjRuPoint)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq TextBasePoint (mapcar '(lambda(x y) (/ (+ x y) 2)) (vlax-safearray-&gt;list ObjLlPoint)(vlax-safearray-&gt;list ObjRuPoint))<br/>&nbsp;&nbsp;&nbsp;&nbsp; TextObj (vla-addtext AcadSpc (strcat (itoa TextIndex) "号面积=" (rtos ObjArea) "平方米") (vlax-3d-point TextBasePoint) TextHeight)<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vla-put-alignment TextObj acAlignmentCenter)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vla-put-TextAlignmentPoint TextObj (vlax-3d-point TextBasePoint))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq TextIndex (1+ TextIndex))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )</p>

leeooo 发表于 2009-4-8 10:36:00

<div><font size="2">请问各位高手达人</font><font face="Verdana" color="#61b713" size="3"><strong>:</strong></font></div><div><strong><font face="Verdana" color="#61b713">如何在面积的下面加上周长,不胜感激,就像下面一样:</font></strong></div><div><strong><font face="Verdana" color="#61b713"></font></strong>&nbsp;</div><div><font size="2">1号面积=74.00平方米</font></div><div><font size="2">1号周长=109.69米</font></div><div><font size="2"></font></div><div><div><font size="2">2号面积=274.00平方米</font></div><div><font size="2">3号周长=1109.69米</font></div></div><div><font size="2"></font>&nbsp;</div><div><strong><font face="Verdana" color="#61b713">如何把上面很多标注的面积和周长列表统计到excel ,这是很考脑筋的问题,请求帮忙!万分感谢!!!</font></strong></div>

leeooo 发表于 2009-4-11 09:22:00

<div><font size="2">请问各位高手达人</font><font face="Verdana" color="#61b713" size="3"><strong>:</strong></font></div><div><strong><font face="Verdana" color="#61b713"></font></strong></div><div><strong><font face="Verdana" color="#61b713">如何在面积的下面加上周长,不胜感激,就像下面一样</font></strong></div><div><div><div><font size="2"></font></div></div></div><div><strong><font face="Verdana" color="#61b713">如何把上面很多标注的面积和周长列表统计到excel ,这是很考脑筋的问题,请求帮忙!万分感谢!!!</font></strong></div>

yuandke 发表于 2009-4-11 16:43:00

<p>感谢各位老大,这个程序很好,解决了我的不少问题。</p><p>接下来有个小问题请教一下大家。</p><p>这个程序生成的数字和汉字是“txt.shx”这个字体的</p><p>我怎么样才能通过修改这个程序的方法使生成的字体为“宋体”呢!</p><p>谢谢各位大大啦!</p>

ljttjl 发表于 2009-4-13 20:36:00

<p>也可见以下面积和周长标注程序</p><p>明经CAD社区 → 工程篇 → 测绘与GIS → 自动标注选择区域的封闭图形的面积和周长程序 <br/><a href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=72983">http://bbs.mjtd.com/forum.php?mod=viewthread&tid=72983</a></p>
页: [1] 2
查看完整版本: 请求高手帮忙解决或修改“自动标注面积周长”的lisp文件,不胜感激!