ibodybuilding 发表于 2015-11-24 17:56:00

点表函数调用问题

;;; 得到曲线vla_obj端点表

(defun get_endpoints (vla_obj / startpoint endpoint obj_length points point side)
(setq startpoint (vlax-curve-getStartPoint vla_obj)
        endpoint (vlax-curve-getEndPoint vla_obj)
        obj_length (vlax-curve-getDistAtPoint vla_obj endpoint)
        startpoint (get_z startpoint gclst)
        endpoint (get_z endpoint gclst)
        slope (* (/ (abs (- (nth 2 startpoint) (nth 2 endpoint))) obj_length) 100)
        slopestr (strcat (rtos slope 2 3) "%")
        side (- (nth 2 startpoint) (nth 2 endpoint))
        points (append
               (list startpoint)
               (list endpoint)
               (list slopestr side)
             )
)
points
)


;;; 取表中z值
(defun get_z (pt xyzlst / xyz i xx yy)
(setq i 0)
(setq xyz (nth 0 xyzlst))
(while (xyz)
    (if (< ((abs (- (nth 0 pt) (nth i xyz))) 0.1))
      (if (< ((abs (- (nth 1 pt) (nth (1+ i) xyz))) 0.1))
        (progn
          (setq pt (list (nth 0 pt) (nth 1 pt) (nth (+ i 2) xyz))
                xyz nil
          )
        )
      )
    )
    (setq i (+ i 3))
    (setq xyz (nth i xyzlst))
)
pt
)


经多次调试,以上两个函数存在问题,但无法发现问题,求大神指导,方便的话可以留Q,有尝指导。谢谢!

其中gclst为三维点表,例(3165.46 1266.03 2118.9 1278.06 1190.49 943.907),vla_obj 为pl线的对象


ibodybuilding 发表于 2015-11-24 17:59:40

补充,函数功能为,判断pl线端点坐标,将gclst中与端点最近的(x,y值相差在0.1之内)点的z坐标赋值到pl端点坐标的z值,并赋值其他两个计算值。

ibodybuilding 发表于 2015-11-25 12:26:24

求大神帮忙呀

知者无疆 发表于 2015-11-25 13:14:00

关注一下,

ibodybuilding 发表于 2015-11-25 13:17:15

已解决,while函数及if函数的括号问题。
页: [1]
查看完整版本: 点表函数调用问题