[求助]怎样在2002中求型心
请问有没有什么可以快速求pline型心的工具,求出型心希望能自动标注出型心的位置。大虾帮帮忙!急
walkmanlh@21cn.com ;;For polyline
(defun CENTROID ()
(setq POLY(car (entsel "\nPick polyline: "))
LIS (MAKEPOINTLIS POLY)
N (* 1.0 (length LIS))
TOTAL (list
(apply '+ (mapcar 'car LIS))
(apply '+ (mapcar 'cadr LIS))
)
)
(setq X1 (/ (car TOTAL) N)
Y1 (/ (cadr TOTAL) N)
)
(command "_.POINT" (list X1 Y1))
(prompt (strcat "\n型心=(" (rtos X1) "," (rtos Y1) ")"))
(princ)
)
(defun DXFEG (C E) (cdr (assoc C (entget E))))
(defun DXF (C E) (cdr (assoc C E)))
(defun MAKEPOINTLIS (E / EG LIS)
(setq LIS NIL)
(cond
((= "LWPOLYLINE" (DXFEG 0 E))
(setq EG (entget E))
(while
(setq EG (member (assoc 10 EG) EG))
(setq LIS (cons (cdar EG) LIS)
EG(cdr EG)
)
)
(reverse LIS)
)
((= "POLYLINE" (DXFEG 0 E))
(while
(and
(setq E (entnext E))
(setq EG (entget E))
(/= "SEQEND" (DXFEG 0 E))
)
(setq LIS (cons (DXF 10 EG) LIS))
)
(reverse LIS)
)
(t (alert " not a polyline ") NIL)
)
) 本帖最后由 作者 于 2003-7-2 21:52:19 编辑
请问下斑竹,这个东西怎么用,我太不会lisp 。用2002加载了,但是什么命令?
不好意思了!
我这样试了下就好象可以了,是否对?
给看看!
defun CENTROID 里加了个c:
能否继续完善下它,想让他标出不是点,而是一个直线的十字
龙哥,帮了个大忙,这样免了好多辛苦事。
感谢ing. 1.命令是這樣
(centroid)
2.一个直线的十字
指令: pdmode
輸入 PDMODE 的新值<0>: 2 没告诉怎么用 (setvar "pdmode" 2)或(command "pdmode" 2) 异型的形状也可以吗? 本来也想写个这程序的,试试吧再说。
TSSD的只能对矩形示形心。 经我实测..(我没有去细读程序)..与tssd2006的求形心及利cad将pline转成region后列表的质量特性有相当大的误差!..估计是算法问题 <p>这个方法求的型心不一定在多边形内哦! 对与凹多边形,此程序求的型心在多边形外面了,</p><p>有没有一种方法,求出一个点一定在多边形里面呢,让它与中心位置最接近,我问了很多人他们都说没有这种固定的心,请问大家有简单的办法吗?</p><p>因为我现在在做一个程序,我想在区域里面标号,但是这个标号一定不能在闭合多边形外,最好最接近多边形的中心位置!</p>
页:
[1]
2