如何求出所有边的总长
现有图形如下,每个方框都是由:PLINE画出的,所以每个方框都有重复的一段边,如何总长求出(重复的留一) 不好意思,图形传不上,说明一下,每个方框相邻,可能有2条边线部分重复,有可能整条线重复 小问题,大考验。目前还没想到理想的办法:
炸开,对同线线段合并,求合并后线条总长。恢复方框(或在前面用拷贝的办法,删除合并线条。) 求长度的如下,论坛上有蛮多的. 但如无痕所说的好象找不到或还没有呢.
;;; program make inchina<BR>;; by BDYCAD<BR>;; DATA: 2003-11-01<BR>;求選到的圖素的總長度.LSP<BR>(DEFUN C:TEST (/ SS SS_L N LENN LEN)<BR> (setvar "cmdecho" 0)<BR> (setq ss (ssget))<BR> (setq ss_l (sslength ss))<BR> (setq n 0)<BR> (setq lenn 0)<BR> (repeat ss_l<BR> (command "lengthen" (ssname ss n) "")<BR> (setq len (getvar "perimeter"))<BR> (setq lenn (+ len lenn))<BR> (setq n (1+ n)))<BR> (princ "\n你所選到的圖元的總長是")<BR> (princ lenn)<BR> (Princ "(mm)....")<BR> (setvar "cmdecho"1)<BR> (princ))
;;---------------------------------------------------<BR>; 精 簡 源 碼 <BR>;<BR>(defun x_lens (ss / ss ssv lens)<BR> (if (= nil ss)(setq ss (ssget '((0 . "*LINE,ARC,CIRCLE,ELLIPSE")))))<BR> (setq ssv (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object)))<BR>lens 0)<BR> (vlax-for obj ssv<BR> (setq lens (+ lens (vlax-curve-getdistatparam obj (vlax-curve-getendparam obj))))<BR> )<BR>) 难点不是求长度,是如何处理重合,部分重合的部分,那里只能算一次长度。 是的,重复的只能算一边,最好不要炸开,因为这些个方形在其它地方还用的着。 刪除重線的帖,依無痕的方法整理一下即可
dispbbs.asp?boardID=25&ID=9163&page=5
页:
[1]