本帖最后由 ljpnb 于 2011-6-21 14:04 编辑
1078815748 发表于 2011-6-21 12:07 
回复 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)
- )
|