linhui12 发表于 2009-4-30 23:21:00

[求助]求空间POLYLINE线各顶点处夹角(已解决)

本帖最后由 作者 于 2009-5-21 22:09:47 编辑 <br /><br /> <p>各位朋友,所供的是明友"wangjin"写的求取两相交空间直线的夹角的程序,请大家帮忙改改,使得程序实现用户选取一根(3或4点)POLYLINE,即可求得夹角A及R、L、E、T这五要素?R由用户输入。</p>

linhui12 发表于 2009-5-4 18:36:00

<p>迫切需要此功能,恳请大家出手。先谢谢大家了!</p>

linhui12 发表于 2009-5-6 12:02:00

本帖最后由 作者 于 2009-5-6 22:27:16 编辑 <br /><br /> <p>怎么又沉了呀,现在附上公式与说明,期待大家触手</p>

linhui12 发表于 2009-5-7 16:15:00

还是没有朋友出手吗,班竹们能否帮助改改或从新写一个啊。先谢谢了

sailorcwx 发表于 2009-5-7 19:56:00

<p>大项目,一般不会有人去写的,太费心思了</p>

linhui12 发表于 2009-5-7 21:17:00

<p>我知道这个不容易,但还是希望万能的明经会有人出手。</p><p>不然不要那些复杂功能了,请大家帮忙写段程序实现:选去POLYLINE-》右键-》输出POLYLINE各拐点夹角(锐角)</p><p>找到几个求角度的函数,大家看看能不能用。。。</p>

linhui12 发表于 2009-5-10 19:19:00

<p>继续顶起求助...</p>

liminnet 发表于 2009-5-11 08:44:00

linhui12 发表于 2009-5-12 12:48:00

用以下程序可以得出一楼图片中的各值(2维坐标),请哪位朋友帮忙改改使它可以支持3维坐标(或选取空间POLYLINE线)就能求出各值。先谢谢了。

sailorcwx 发表于 2009-5-13 00:47:00


(defun c:test()
;加载vlisp函数
(vl-load-com)
;选取多段线
(if (setq Pline (entsel))
    (progn
      ;提取多段线图元名称
      (setq Pline (car Pline)
   ;提取DXF组码
   PlDXFs (entget Pline)
   ;初始化顶点表
   PLCoordinates nil
   )
      ;提取顶点
      (setq Tmp (vlax-safearray->list (vlax-variant-value (vla-get-coordinates (vlax-ename->vla-object Pline))))
   i 1
   )
      (repeat (/ (length Tmp) 3)
(setq PLCoordinates (append PLCoordinates (list (list (nth (- i 1) Tmp) (nth i Tmp) (nth (+ i 1) Tmp))))
       i (+ i 3)
       )
)
      ;三个点以上
      (if (> (length PLCoordinates) 3)
(progn
   ;构造三个表
   (setq ListA (reverse (cddr (reverse PLCoordinates)))
ListB (cdr (reverse (cdr (reverse PLCoordinates))))
ListC (cddr PLCoordinates)
;初始化弧度表
ListAngle '()
)
   
   ;计算夹角
   (mapcar '(lambda(ptA ptB ptC)
       ;计算过程
       (princ ptA)
       (princ ptB)
       (princ PtC)
       )
    listA listB listC   
    )
   ;显示结果
   ListAngle
   
   )

)
      
      )
   
    )

(princ)

)
睡觉咯,明天继续,有兴趣的接力
页: [1] 2
查看完整版本: [求助]求空间POLYLINE线各顶点处夹角(已解决)