本帖最后由 ucuc2003 于 2015-8-11 14:23 编辑 
  - ;重新加工了下,增加了距离记忆功能,楼主不知道你后期还有没有再重新优化过?
 
  
- ;;;http://bbs.mjtd.com/thread-113876-1-1.html
 
 - ;;;间隙分割,异等偏移,定距等分
 
 - ;;;by荒野孤行,修改ucuc2003
 
 - (defun c:TT5 (/ o_DIMZIN os sel len gap npy a) 
 
 -   (princ"定距等分")
 
 -   (setvar "cmdecho" 0)
 
 -   (setq o_DIMZIN (getvar "DIMZIN"))
 
 -   (setq os (getvar "osmode"))
 
 -  (defun *Error* (msg);出错处理
 
 -     (if (and msg (not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*QUIT*,*EXIT*,")))
 
 -       (progn
 
 -         (setvar "DIMZIN" o_DIMZIN)
 
 -         (setvar "osmode" os)
 
 -       )
 
 -     )
 
 -  )
 
 -   (setvar "osmode" 15359)
 
 -   (setvar "DIMZIN" 8)
 
  
-   (if (= djdf_oldlen nil) (setq djdf_oldlen 1000))
 
 -   (princ (strcat "\n指定等分总距离<" (rtos djdf_oldlen 2 7) ">: "))
 
 -   (setq len (getdist))
 
 -   (if len (setq djdf_oldlen len) (setq len djdf_oldlen))
 
  
-   (if (= djdf_oldgap nil) (setq djdf_oldgap 50))
 
 -   (princ (strcat "\n指定固定间距<" (rtos djdf_oldgap 2 7) ">(这个值不能大于等分总距离" (rtos len 2 7) "): "))
 
 -   (setq gap (getdist))
 
 -   (if gap (setq djdf_oldgap gap) (setq gap djdf_oldgap))
 
  
-   (if (> gap len)
 
 -     (progn (alert "请按照规定重新输入!") (exit))
 
 -   )
 
  
-   (setq a (1+ (fix (/ len gap))))
 
  
-   (if (= djdf_olddfs nil) (setq djdf_olddfs 10))
 
 -   (princ (strcat "\n指定等分数<" (rtos djdf_olddfs 2 7) ">(这个值不能大于" (rtos a 2 7) "):"))
 
 -   (setq npy (getint))
 
 -   (if npy (setq djdf_olddfs npy) (setq npy djdf_olddfs))
 
 -   (setvar "DIMZIN" o_DIMZIN)
 
 -   (if (> npy a)
 
 -     (progn (alert "请按照规定重新输入!") (exit))
 
 -   )
 
  
-  ;(while
 
 -   (while
 
 -     (progn
 
 -       (setq sel (entsel "\n请点选(直线、多段线、圆弧、圆、射线、或构造线):"))
 
 -       (not (if (= sel nil)
 
 -              nil
 
 -              (wcmatch (cdr (assoc 0 (entget (car sel)))) "LWPOLYLINE,POLYLINE,LINE,XLINE,RAY,SPLINE,CIRCLE,ARC") ;实体类型必须为大写
 
 -            )
 
 -       )
 
 -     )
 
 -     (princ"\n未选取任何图元,请重新点选:")
 
 -   )
 
 -   (setq len (/ (- len (* (- npy 1) gap)) npy))
 
 -   (initget 1)
 
 -   (setq pt1 (getpoint "\n指定等分偏移方向:"))
 
 -   (setvar "osmode" 0)
 
 -   (setq len1 len
 
 -         gap1 gap
 
 -   )
 
 -   (command "undo" "be")
 
 -   (repeat (- npy 1)
 
 -     (command "OFFSET" len sel pt1 "")
 
 -     (setq gap (+ gap1 len))
 
 -     (command "OFFSET" gap sel pt1 "")
 
 -     (setq len (+ len1 gap))
 
 -   )
 
 -   (command "OFFSET" len sel pt1 "")
 
 -   (setvar "osmode" os)
 
 -   (command "undo" "e")
 
 -  ;);while
 
 -   (princ)
 
 - )
 
 
  |