只要看看它,正如关于使用ACI所说的那样,让用户选择一个ACI并将其转换为True会更有意义。我换了线路
- (defun c:landowner (/ Layername LayerColor name)
- (setq SUCE (getvar "cmdecho"))
- (setq SUOM (getvar "orthomode"))
- (setq SUSM (getvar "osmode"))
- (setq SUAB (getvar "angbase"))
- (setq SUAD (getvar "angdir"))
- (setq SUCL (getvar "clayer"))
- (setq SUCR (getvar "cecolor"))
- (setq dcl_id (load_dialog "landowner.dcl"))
- (if (not (new_dialog "landowner" dcl_id))
- (exit)
- );if
- (if *name1*
- (set_tile "name" *name1*)
- (set_tile "name" "Default")
- )
- (action_tile "name" "(setq *name1* $value)")
- (start_dialog)
- (unload_dialog dcl_id)
- (setq layername (strcat "CCC_LANDOWNER_"*name1*)
- LayerColor (acad_truecolordlg '(62 . 7) nil))
- (entmake (list (cons 0 "LAYER")
- (cons 100 "AcDbSymbolTableRecord")
- (cons 100 "AcDbLayerTableRecord")
- (cons 2 Layername)
- (car LayerColor)
- (if (> (length LayerColor) 1)
- (car (cdr LayerColor)))
- (cons 70 0)
- (cons 420 (SetLuminance (cdr (assoc 420 lst)) 50))
- )
- )
- )
- (setvar "clayer" layername)
- (command "._pline")
- (while (= 1 (logand 1 (getvar "cmdactive")))
- (command pause))
- (setq pline (entlast)
- elist (entget pline)
- )
- (command "_chprop" pline "" "_color" (cdr (car LayerColor)) "" "")
- (command "_.draworder" pline "" "_F");<--set pline's draw order to front
- (setvar "hpname" "honey")
- (setvar "hpscale" 2)
- (command "-hatch" "S" pline "" "")
- (setvar "hpname" ".")
- (setvar "cmdecho" SUCE)
- (setvar "orthomode" SUOM)
- (setvar "osmode" SUSM)
- (setvar "angbase" SUAB)
- (setvar "angdir" SUAD)
- (setvar "clayer" SUCL)
- (setvar "cecolor" SUCR)
- (princ)
- )
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (defun SetLuminance ( tc lum / hsl )
- ( (lambda ( hsl ) (apply 'LM:RGB->True (LM:HSL->RGB (car hsl) (cadr hsl) lum)))
- (apply 'LM:RGB->HSL (LM:True->RGB tc))
- )
- )
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; RGB -> HSL - Lee Mac 2011
- ;; Args: r,g,b - Red,Green,Blue values
- (defun LM:RGB->HSL ( r g b / _round d h l m n s )
- (setq r (/ r 255.)
- g (/ g 255.)
- b (/ b 255.)
- n (min r g b)
- m (max r g b)
- d (- m n)
- l (/ (+ m n) 2.)
- )
- (defun _round ( n )
- (fix (+ n (if (minusp n) -0.5 0.5)))
- )
- (mapcar '_round
- (cond
- ( (zerop d)
- (list 0 0 (* m 100))
- )
- (t
- (setq s (if (< l 0.5) (/ d (+ m n)) (/ d (- 2. m n))))
- (setq h
- (cond
- ( (= g m) (+ (/ (- b r) d) 2))
- ( (= b m) (+ (/ (- r g) d) 4))
- ( (/ (- g b) d))
- )
- )
- (list (rem (+ 360 (* h 60)) 360) (* s 100) (* l 100))
- )
- )
- )
- )
- ;; RGB -> True - Lee Mac 2011
- ;; Args: r,g,b - Red,Green,Blue values
- (defun LM:RGB->True ( r g b )
- (+
- (lsh (fix r) 16)
- (lsh (fix g)
- (fix b)
- )
- )
- ;; HSL -> RGB - Lee Mac 2011
- ;; Args: 0 <= h <= 360, 0 <= s,l <= 100
- (defun LM:HSL->RGB ( h s l / _sub _round u v )
|