xyzjint_cn 发表于 2004-2-22 10:59:00

如何求出所有边的总长

现有图形如下,每个方框都是由:PLINE画出的,所以每个方框都有重复的一段边,如何总长求出(重复的留一)

xyzjint_cn 发表于 2004-2-22 11:08:00

不好意思,图形传不上,说明一下,每个方框相邻,可能有2条边线部分重复,有可能整条线重复

无痕 发表于 2004-2-22 14:43:00

小问题,大考验。


目前还没想到理想的办法:


炸开,对同线线段合并,求合并后线条总长。恢复方框(或在前面用拷贝的办法,删除合并线条。)

BDYCAD 发表于 2004-2-23 10:53:00

求长度的如下,论坛上有蛮多的. 但如无痕所说的好象找不到或还没有呢.



;;;       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>)

无痕 发表于 2004-2-23 11:29:00

难点不是求长度,是如何处理重合,部分重合的部分,那里只能算一次长度。

xyzjint_cn 发表于 2004-2-23 16:11:00

是的,重复的只能算一边,最好不要炸开,因为这些个方形在其它地方还用的着。

f5612140 发表于 2004-2-24 09:58:00

刪除重線的帖,依無痕的方法整理一下即可


dispbbs.asp?boardID=25&amp;ID=9163&amp;page=5
页: [1]
查看完整版本: 如何求出所有边的总长