hjqpdga 发表于 2004-9-5 08:25:00

编程求助如何计算n根直线的长度,并且列表、归类、汇总

编程求助如何计算n根直线的长度,并且列表、归类、汇总

ZZXXQQ 发表于 2004-9-6 14:57:00

下面的程序可以做到按长度排序,并将结果存入文件中。楼主的归类是按什么进行的?程序对选中的图元(PLINE,SPLINE,LINE,ARC,CIRCLE)有效,如果楼主只要对直线进行处理,可以加入判断分离无用图元。


(DEFUN C:TT (/ SS SS_L N LENN LEN I J LLIST TEMPL IJ)<BR>       (setq ss (ssget))<BR>       (setq ss_l (sslength ss))<BR>       (setq n 0)<BR>       (setq lenn 0)<BR>       (SETQ LLIST (LIST))<BR>       (repeat ss_l<BR>                       (command "lengthen" (ssname ss n) "")<BR>                       (setq len (getvar "perimeter"))<BR>                       (SETQ LLIST (CONS (LIST LEN (SSNAME SS N)) LLIST))<BR>                       (setq lenn (+ len lenn))<BR>                       (setq n (1+ n)))<BR>       (princ "\nThe total Length is 您所选到的像素总长是 : ")<BR>       (princ lenn)<BR>       (Princ "(mm)....\n")<BR>       (SETQ LLIST (REVERSE LLIST)<BR>                                                       SL (LENGTH LLIST) I 0)<BR>       (WHILE (&lt; I SL)<BR>               (SETQ LEN1 (CAR (NTH I LLIST)) IJ I J (1+ I))<BR>               (WHILE (&lt; J SL)<BR>                       (SETQ LEN2 (CAR (NTH J LLIST)) J (1+ J))<BR>                       (IF (&lt; LEN2 LEN1) (SETQ LEN1 LEN2 IJ (1- J)))<BR>               )<BR>               (IF (&gt; IJ I) (PROGN<BR>                       (SETQ TEMPL1 (LIST) TEMPL (LIST))<BR>                       (REPEAT I (SETQ TEMPL1 (CONS (CAR LLIST) TEMPL1) LLIST (CDR LLIST)))<BR>                       (REPEAT (- IJ I)<BR>                               (SETQ TEMPL (CONS (CAR LLIST) TEMPL) LLIST (CDR LLIST))<BR>                       )<BR>                       (SETQ LLIST (APPEND (REVERSE TEMPL1) (LIST (CAR LLIST)) (REVERSE TEMPL) (CDR LLIST)))<BR>               ))<BR>               (SETQ I (1+ I))<BR>       )<BR>       (IF (SETQ F (OPEN "LENTABLE.TXT" "w")) (PROGN<BR>               (SETQ I 0)<BR>               (REPEAT SL<BR>                       (PRINC (NTH I LLIST) F) (PRINC (NTH I LLIST)) (PRINC "\n") (PRINC "\n" F)<BR>                       (SETQ I (1+ I))<BR>               )<BR>               (PRINC "\nTotal Length = "        F) (PRINC        LENN F) (PRINC "\n" F)<BR>               (CLOSE F)<BR>       ))<BR>       (princ)<BR>)<BR>(PRINC "\n输入TT执行求选集的总长,排序结果在LENTABLE.TXT文件中。")<BR>(PRINC)
页: [1]
查看完整版本: 编程求助如何计算n根直线的长度,并且列表、归类、汇总