1078815748
发表于 2011-6-21 07:45:19
198526
发表于 2011-6-21 08:42:17
回复 ljpnb 的帖子
是我考虑不周,谢谢提醒!
zhynt
发表于 2011-6-21 10:27:50
回复 1078815748 的帖子
不知道你要什么样的效果。
ljpnb
发表于 2011-6-21 11:03:12
zhynt 发表于 2011-6-20 21:05 static/image/common/back.gif
也来凑个热闹(改了一下)
修改了一下,相对完美了一些。
我看程序还不够完美,当等分线与参考线不垂直时,出来的结果会不一样。。
我图片贴不上来,不然会一看就明白了。。。。
zhynt
发表于 2011-6-21 11:29:25
本帖最后由 zhynt 于 2011-6-21 11:34 编辑
回复 ljpnb 的帖子
哦,按你的要求改了一下,增加参考线方向的判断:
(setq ptangle (angle pt1 pt2)
ptangle2 (angle pt3 pt4) ;参考线角度
ptn (polar pta ptangle2 0.01) ;按参考线方向生成参考点
jpt (inters pta ptn pt1 pt2 nil)
ang (angle jpt pta)
l3 (/ (- l1 (* jianju (- n 1))) n)
pt5 (polar pt1 ptangle l3)
)
1078815748
发表于 2011-6-21 12:01:41
1078815748
发表于 2011-6-21 12:07:51
ljpnb
发表于 2011-6-21 14:02:26
本帖最后由 ljpnb 于 2011-6-21 14:04 编辑
1078815748 发表于 2011-6-21 12:07 http://bbs.mjtd.com/static/image/common/back.gif
回复 1078815748 的帖子
遇到这样的分格总是用手算出来再把点放上去,工作用量太大了,也太麻烦了,总想找 ...
(defun c:test ()
(princ "\n请选择需要等分的圆弧:")
(if (setq ss (ssget '((0 . "ARC"))))
(progn
(setq n (getint "\n 输入几个大格:"))
(or (setq l (getreal "\n输入小格弧长<15>:")) (setq l 15.))
(setq i 0)
(setq os (getvar "osmode"))
(setvar "osmode" 0)
(setvar "pdmode" 34);;值可以设定其它的
(SETVAR "CMDECHO" 0)
(command "undo" "g")
(repeat (sslength ss)
(setq obj (vlax-Ename->Vla-Object (ssname ss i)))
(setq len (vla-get-arclength obj))
(setq dis (/ (- len (* l (1- n))) n))
(setq k 1.)
(repeat (1- n)
(setq point1
(vlax-curve-getPointAtDist obj (+ (* k dis) (* (1- k) l)))
)
(setq point2
(vlax-curve-getPointAtDist obj (+ (* k dis) (* k l)))
)
(command "point" point1)
(command "point" point2)
(setq k (1+ k))
)
(setq i (1+ i))
)
)
)
(setvar "osmode" os)
(command "undo" "e")
(SETVAR "CMDECHO" 1)
(princ)
)
xyp1964
发表于 2011-6-21 14:14:18
另类等分
1078815748
发表于 2011-6-21 14:34:59