[求助]有请大哥动手
<p>这个东东我搞了好久没编好 (简单的东西并不是没有意义) </p><p>有请前辈们编编试试,小弟先谢谢了 </p><p>编程思路:</p><p>;一, 选择图元1:线长*0.5 叛断 若长度小于5. 计算有多少个 若大于5.计算线长相加和<br/>;二, 选择图元2:线长*1 叛断 若长度小于5. 计算有多少个 若大于5.计算线长相加和<br/>;三, 选择图元3:线长*1.5 叛断 若长度小于5. 计算有多少个 若大于5.计算线长相加和<br/>;四, 文字输出:图元1小于5多少? 大于5线长和是?若无选择则不列印<br/>;五, 文字输出:图元1小于5多少? 大于5线长和是?若无选择则不列印<br/>;六, 文字输出:图元1小于5多少? 大于5线长和是?若无选择则不列印</p> 大概看了看,主要是程序结构有问题。在if后面如果需要运行多个函数,这些函数要用progn函数括起来。(defun C:LU(/ CURVE TLEN SS N SUMLEN1 SUM)
(vl-load-com)
(PRINC "\n选择1 :")
(IF (SETQ SS1 (ssget '((0 . "CIRCLE,REGION,ELLIPSE,*LINE,ARC")))) (PRINC "\n1"))
(PRINC "\n选择2 :")
(IF (SETQ SS2 (ssget '((0 . "CIRCLE,REGION,ELLIPSE,*LINE,ARC")))) (PRINC "\n2"))
(PRINC "\n选择3 :")
(IF (SETQ SS3 (ssget '((0 . "CIRCLE,REGION,ELLIPSE,*LINE,ARC")))) (PRINC "\n3"))
(IF (OR SS1 SS2 SS3) (PROGN
(SETQ SUMLEN 0.0)
(IF SS1 (progn
(setq SUMLEN1 1 SUM 0 N 0)
(repeat (sslength SS1)
(setq CURVE (vlax-ename->vla-object (ssname SS N)))
(if(/= (vla-get-objectname CURVE) "AcDbRegion")
(setq TLEN (vlax-curve-getdistatparam CURVE (vlax-curve-getendparam CURVE)))
(setq TLEN (vla-get-perimeter CURVE))
)
(if (<= TLEN 5)
(setq SUM (1+ SUM))
(setq SUMLEN1 (+ SUMLEN1 TLEN))
)
(setq N (1+ N))
)
(setq suma (strcat (rtos SUM 2 0) "个物件<=5长度"))
(setq sumb (strcat ">5总长度=" (rtos SUMLEN1 2 5)))
))
(IF SS2 (progn
(setq SUMLEN1 1 SUM 0 N 0)
(repeat (sslength SS2)
(setq CURVE (vlax-ename->vla-object (ssname SS N)))
(if (/= (vla-get-objectname CURVE) "AcDbRegion")
(setq TLEN (vlax-curve-getdistatparam CURVE (vlax-curve-getendparam CURVE)))
(setq TLEN (vla-get-perimeter CURVE))
)
(if (<= TLEN 5)
(setq SUM (1+ SUM))
(setq SUMLEN1 (+ SUMLEN1 TLEN))
)
(setq N (1+ N))
)
(setq sumc (strcat (rtos SUM 2 0) "个物件<=5长度"))
(setq sumd (strcat ">5总长度=" (rtos SUMLEN1 2 5)))
))
(IF SS3 (progn
(setq SUMLEN1 1 SUM 0 N 0)
(repeat(sslength SS3)
(setq CURVE (vlax-ename->vla-object (ssname SS N)))
(if (/= (vla-get-objectname CURVE) "AcDbRegion")
(setq TLEN (vlax-curve-getdistatparam CURVE (vlax-curve-getendparam CURVE)))
(setq TLEN (vla-get-perimeter CURVE))
)
(if (<= TLEN 5)
(setq SUM (1+ SUM))
(setq SUMLEN1 (+ SUMLEN1 TLEN))
)
(setq N (1+ N))
)
(setq sume (strcat (rtos SUM 2 0) "个物件<=5长度"))
(setq sumf (strcat ">5总长度=" (rtos SUMLEN1 2 5)))
))
))
(setq j8 (getpoint "\nInsert Point 文字插入点 :"))
(command "_.text" "_S" "standard" j8 "5" "0" suma)
(command "_.text" "" sumb "_.text" "" sumc"_.text" "" sumd"_.text" "" sume"_.text" "" sumf)
(princ)
)
页:
[1]