sunny20102
发表于 2012-12-1 22:29:49
针对99#的补充:
好像涉及到算法的问题.;;---------------------------
;; 曲线分段测试
;; 要求: 中间按模数定尺划分n段
;; 两端对称
;; 公差delta=|两端尺寸-模数|
;;---------------------------
(defunc:test( / )
(div_curve 12600 1200.0 100.0)
; (princ)
)
;;---------------------------
;;返回值: (n_mid n_edge mod dim_edge)
;; n_mid: 中间标准模数分格数量
;; mod: 标准分格尺寸
;;n_edge: 两边分格数量(偶数)
;;dim_edge: 边部分格尺寸
;;---------------------------
(defundiv_curve(Len mod delta / num left res nn m_edge)
(setq num (fix (/ Len mod)))
(setq left (- Len (* num mod)))
(if (<= left delta);;例如:10.050.05<0.1
(if (zerop left)
(setq res (list num mod)) ;;;仅两个元素
(progn
(setq num (- num 2))
(setq m_edge (/ (- Len (* num mod)) 2.0))
(setq res (list num2modm_edge))
)
)
;|else|;(if (<= (abs (- left mod)) delta)
(progn ;;例如: 9.940.06<0.1
(setq num (1- num))
(setq m_edge (/ (- Len (* num mod)) 2.0))
(setq res (list num2modm_edge))
)
(progn
(setq n_max (fix (/ Len (- mod delta))))
(setq n_max (1+ n_max))
(setq num (1- num))
(setq nn 2.0)
(setq m_edge (/ (- Len (* num mod)) nn))
(while
(and (> (abs (- m_edge mod)) delta)
(< nn n_max)
)
(setq num (1- num))
(setq m_edge (/ (- Len (* num mod)) nn))
(setq nn (+ 2 nn))
)
(setq nn (fix (- nn 2)))
(setq res (list num nnmodm_edge))
)
)
)
res
)
;;---------------------------
;;---------------------------上面的while 循环有问题,贴上来,希望帮忙解决
sachindkini
发表于 2012-12-1 22:30:42
dear sir,
good
胆小鬼39
发表于 2012-12-2 17:55:48
看看G板的程序
yuanziyou
发表于 2012-12-26 09:41:15
学习源代码,每天进步一点点
ddisddis
发表于 2013-1-4 09:00:31
谢谢楼主分享
cxs259
发表于 2013-1-4 09:32:12
G版程序一定要看 ,学习
dbx511
发表于 2013-1-4 21:29:30
看看效果如何!
77023570
发表于 2013-1-5 00:01:01
我来好好学习一下,谢谢了
yjycad
发表于 2013-1-5 21:58:02
正需要,学习学习!
ww5w
发表于 2013-1-6 14:25:00
Gu_xl 发表于 2012-3-26 18:59 static/image/common/back.gif
;;等分曲线,返回点坐标
;;参数 Curve = 曲线图元名 p1 = 曲线上第一点 p2 = 曲线上第一点
;; Flag ...
请教一下,怎么让pts直接以点显示在线上?谢谢