使用两倍大段数的“分割”命令,然后取每个奇数点1,3,5,。。。
确保在“除法”之前将“PDMODE”设置为3。。。
M、 R。
- (defun c:divtest ( / pdm pds e ss c n )
- (setq pdm (getvar 'pdmode)
- pds (getvar 'pdsize)
- )
- (setq e (entlast))
- (if (null e)
- (progn
- (alert "No entities in active document... Please create and restart routine...")
- (exit)
- )
- (progn
- (while (not ss)
- (prompt "\nPick curve for division with points on equal spaces and half spaces at start/end of curve")
- (if (setq ss (ssget "_+.:E:S" '((0 . "*POLYLINE,LINE,SPLINE,HELIX,CIRCLE,ARC,ELLIPSE"))))
- (progn
- (setq c (ssname ss 0))
- (initget 7)
- (setq n (getint "\nSpecify number of division spaces : "))
- (setvar 'pdmode 3)
- (setvar 'pdsize 5)
- (command "_.divide" c (* (1- n) 2))
- (setq e (entnext e))
- (repeat (- n 2)
- (setq e (entnext e))
- (entdel e)
- (setq e (entnext e))
- )
- )
- (alert "Empty sel. set... Please, select again...")
- )
- )
- )
- )
- (setvar 'pdmode pdm)
- (setvar 'pdsize pds)
- (princ)
- )
|