现在可以输入0.125作为坡度:
- (defun c:hc (/ *error* vlst ovar cBlk tmp1 tmp2 tmp3 tmp4 blkpt)
- ; Error Handler
- (defun *error* (msg)
- (if ovar (mapcar 'setvar vlst ovar)) ; Return System Variables
- (if (not (member msg '("Function cancelled" "quit / exit abort")))
- (princ (strcat "\n<< Error: " msg " >>"))) ; Print Error Message
- (princ))
- ; Collect and Set System Variables
- (setq vlst '("CMDECHO" "OSMODE")
- ovar (mapcar 'getvar vlst))
- (mapcar 'setvar vlst '(0 0))
- ; Set Defaults
- (or hc$slp:def (setq hc$slp:def 1))
- (or hc$cop:def (setq hc$cop:def 1))
- (or hc$spc:def (setq hc$spc:def 1))
- (or hc$dir:def (setq hc$dir:def "X"))
- ; Get Block to Copy
- (if (and (setq cBlk (car (entsel "\nSelect Block: ")))
- (eq "INSERT" (cdr (assoc 0 (entget cBlk)))))
- (progn
- ; Get User Input
- (initget 6)
- (setq tmp1 (getreal (strcat "\nSpecify Slope <" (rtos hc$slp:def) "> : ")))
- (or (not tmp1) (setq hc$slp:def tmp1))
- (initget 6)
- (setq tmp2 (getint (strcat "\nSpecify Number of Copies <" (itoa hc$cop:def) "> : ")))
- (or (not tmp2) (setq hc$cop:def tmp2))
- (initget 6)
- (setq tmp3 (getreal (strcat "\nSpecify Spacing <" (rtos hc$spc:def) "> : ")))
- (or (not tmp3) (setq hc$spc:def tmp3))
- (initget "X Y")
- (setq tmp4 (getkword (strcat "\nSpecify Direction [X/Y] <" hc$dir:def "> : ")))
- (or (not tmp4) (setq hc$dir:def tmp4))
- ; Get Block Insertion Point Information and Initiate Counter
- (setq blkpt (cdr (assoc 10 (entget cBlk)))
- i 1)
- ; Copy the Block a Number of Times
- (repeat hc$cop:def
- (command "_copy" cBlk "" blkpt)
- (cond ((eq "X" hc$dir:def)
- (command
- (list (+ (* i hc$spc:def) (car blkpt))
- (cadr blkpt)
- [b][color=Red](+ (* i hc$spc:def hc$slp:def) (caddr blkpt))[/color][/b][color=Red][color=Black])[/color][/color]))
- ((eq "Y" hx$dir:def)
- (command
- (car blkpt)
- (list (+ (* i hc$spc:def) (cadr blkpt))
- [b][color=Red](+ (* i hc$spc:def hc$slp:def) (caddr blkpt))[/color][/b][color=Red][color=Black])[/color][/color])))
- (command)
- (setq i (1+ i))))
- ; Else No Block was Selected
- (princ "\n<!> No Block Selected <!>"))
- ; Return Sys Vars Back
- (mapcar 'setvar vlst ovar)
- ; Exit Cleanly
- (princ))
Z值由红色部分计算^^
即
Z=(基准Z)+(计数器*间距*斜率) |