cecile 发表于 2009-6-20 23:06:00

如何将多义线边长标注在边上,面积标注在多边形内

如何将多义线边长标注在边上要居中,面积标注在多边形内,也要居中。谢谢~~

caoyin 发表于 2009-6-20 23:12:00

<p>1.多段线只能说“段”长,段是直线段还是弧线段</p><p>2.“标注居中”是什么概念?</p><p>3.面积标注用(vla-get-area(vlax-ename-&gt;vla-object(car(entsel)))),</p><p>&nbsp; 文字居中是范围居中还是质心居中要说清楚</p>

cecile 发表于 2009-6-20 23:19:00

<p>确切说是lwpolyline,不用包括弧线;</p><p>边长标注居中就是先找到线段的中心然后平移到边长的边上,然后标注数字;</p><p>面积标注就是找到面积区域的重心作为标注的中心。</p><p>谢谢~~</p>

caoyin 发表于 2009-6-20 23:55:00


;;大概意思是这样吧,自行再修改
(defun c:tt (/ pl pt pp p1 p2 an di pm aa pc)
(setq pl (entsel "\n选择lwpolyline: "))
(mapcar 'set '(pl pt) pl)
(setq pt (vlax-curve-getClosestPointTo pl pt)
      pp (fix (vlax-curve-getParamAtPoint pl pt))
      p1 (vlax-curve-getPointAtParam pl pp)
      p2 (vlax-curve-getPointAtParam pl (1+ pp))
      an (/ (* (angle p1 p2) 180.0) pi)
      di (distance p1 p2)
      pm (mapcar '(lambda (x y) (/ (+ x y) 2.)) p1 p2)
      pl (vlax-ename->vla-object pl)
      aa (vla-get-area pl)
)
(command "_.text" "_j" "_mc" "_non" pm "" an (rtos di 2 2))
(vla-getboundingbox pl 'p1 'p2)
(mapcar 'set '(p1 p2) (mapcar 'vlax-safearray->list (list p1 p2)))
(setq pc (mapcar '(lambda (x y) (/ (+ x y) 2.)) p1 p2))
(command "_.text" "_j" "_mc" "_non" pc "" an (rtos aa 2 2) "")
(princ)
)

香田里浪人 发表于 2014-1-16 21:51:58

caoyin 发表于 2009-6-20 23:55 static/image/common/back.gif


请提供完整代码
页: [1]
查看完整版本: 如何将多义线边长标注在边上,面积标注在多边形内