hbshyjch 发表于 2010-9-29 08:47:00

邀请有志之士完成此编程

<p>我想实现的是一边画多义线一边在多义线末端动态显示此多义线累计长度(象橡皮筋拉动的时候),而且多义线的末端始终跟随一个半径为10000的园</p>
<p>先谢谢诸位了</p>

hbshyjch 发表于 2010-9-29 08:51:00

图片示例

Gu_xl 发表于 2010-9-29 11:26:00

请你搜索一下GrRead函数的应用,很容易实现的!

hbshyjch 发表于 2010-9-29 19:21:00

帮帮忙给个思路,我真的对这个函数不是很懂

Gu_xl 发表于 2010-9-30 12:15:00

给你段演示代码,自己修改下吧!

(defun c:tt(/ ss zc strzc p pt flag)
;(setierr)
(setq cmddia (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(setq p1 (getpoint "\n第一点:"))
(setq pnext (getpoint p1 "\n下一点:"))
    ;;;线段初始长度
(setq zc (distance p1 pnext))
(command "line" p1 pnext "")
(setq ss0 (ssadd (entlast)))
(setq p1 pnext)
(setq flag t)
(while flag;(/= 2 flag)
(while (= (car (setq p (grread t 2))) 5)
(if ss (command "erase" ss ""))
(setq ss nil)
;;;鼠标位置坐标
(setq pt (cadr p))
(if (not (equal p1 pt 0.0001))
    (progn
(command "line" p1 pt "")
(setq ss (ssadd (entlast)))
(command "circle" pt 5)
(ssadd (entlast) ss)
;;;计算总长度值ZC
(setq zc1 (+ zc (distance p1 pt)))
;;;标注长度
(setq strZC (rtos zc1 2 3))
(command "text" pt 1.5 0 strZC )
(ssadd (entlast) ss)
)
    )
) ;_ while
   
(if ss (command "erase" ss ""))
(setq pnext (cadr p))
    (if (= 'LIST (type pnext))
      (progn
    (setq zc (+ zc (distance p1 pnext)))
    ;(setq flag (car p))
    (command "line" p1 pnext "")
    (ssadd (entlast) ss0)
    (setq p1 pnext)
    )
      (setq flag nil)
      )
)
;(reerr)
(setvar "CMDECHO" 0)
(princ)
)

hbshyjch 发表于 2010-9-30 13:54:00

<p><font face="Verdana" color="#61b713"><b>太感谢Gu_xl了,就是要的这个效果</b></font></p>
<p><strong><font color="#61b713">再次严重感谢</font></strong></p>
页: [1]
查看完整版本: 邀请有志之士完成此编程