明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 7802|回复: 25

[源码] 动态偏移(LEE MAC)

[复制链接]
发表于 2013-12-4 19:32 | 显示全部楼层 |阅读模式
本帖最后由 flyfox1047 于 2013-12-4 20:04 编辑

Offset DistanceThe user may enter the offset distance at the command line, or onscreen
偏移距离可以在屏幕上指定
Offset NumberThe number of offsets can be increased/decreased using the +/- keys, or alternatively the user may enter the offset number by pressing N
可以通过“-”和"+"号减少或增加偏移的数量,又或者输入N后直接输入偏移的数量
Offset FactorThe factor of the distance between successive offsets can be altered by pressing F
可以通过“F”键改变连续偏移之间的距离因子
Offset SettingsDestination Layer/Linetype/LineWeight and Colour can be changed by pressing S
目标图层/线型/线宽和颜色可以按S键来改变
Offset ModeCan be changed by pressing Tab, the user has the ability to offset the set of objects to either side, or both sides simultaneously
可以通过按“TAB”键来改变偏移方向和双边偏移
Object DeletionThe user can retain/delete the original object by pressing D
用户可以按"D"键来保留或删除原来的对象
Offset to CenterThe user can offset to the center of two objects by pressing C
可以偏移到两个对象的中心 按"C"键
Highlight OffsetsBy holding Shift, the user can highlight offset entities (requires Express Tools)
按住Shift键,用户可以突出颜色显示偏移动象(需要ET工具


  1. (defun c:DynOff (/    ;; --=={ Local Functions }==--

  2.                        *error* clean DynOff_Sub txt2num

  3.                       ;; --=={ Local Variables }==--

  4.                        CODE CPT
  5.                        DATA DCFNAME DCTITLE DOC DRFT
  6.                        E1 E2 ELST ENTLST ET EXFLAG
  7.                        GR
  8.                        I IOBJ
  9.                        K MSG
  10.                        OBJ OBJLST OFF OOBJ OPT OSGRV OSTR
  11.                        PROP
  12.                        RLST
  13.                        SS
  14.                        X

  15.                       ;; --=={ Global Variables }==--

  16.                        ; *dynOff  ~  Default Offset Distance
  17.                        ; *dynNum  ~  Default Offset Number
  18.                        ; *dynFac  ~  Default Offset Factor
  19.                        ; *dynMod  ~  Default Offset Mode (bit-coded)
  20.                        ; *dynDel  ~  Default Delete Option

  21.                        ; *DynOffDefaults*  ~ Default Dialog Settings

  22.                  )

  23.   (setq dcfname "LMAC_DynOff_V2.1.dcl"
  24.         dcTitle "Dynamic Offset V2.1 Settings")
  25.   
  26.   (or *dynOff (setq *dynOff 10.0))
  27.   (or *dynNum (setq *dynNum  1  ))
  28.   (or *dynFac (setq *dynFac  1.0))
  29.   (or *dynMod (setq *dynMod  2  ))
  30.   (or *dynDel (setq *dynDel  nil))

  31.   (or *DynOffDefaults*
  32.       (setq *DynOffDefaults* '("1" "1" 256 256 "*Source*" "*Source*"   ;; Layer
  33.                                                "ByLayer"  "ByLayer"    ;; Linetype
  34.                                                "ByLayer"  "ByLayer"))) ;; Lineweight

  35.   (setq k -1)
  36.   (setq *DynOffDefaults*
  37.     (mapcar
  38.       (function
  39.         (lambda (value)
  40.           (cond (  (<= 4 (setq k (1+ k)) 5)
  41.                    (if (tblsearch "LAYER" value) value "*Source*"))

  42.                 (  (<= 6 k 7)
  43.                    (if (tblsearch "LTYPE" value) value "ByLayer"))

  44.                 (t value)))) *DynOffDefaults*))

  45.   (setq dynMode (nth *dynMod '(1 2 3)))
  46.   

  47.   ;; --=={ Error Handler }==--

  48.   (defun *error* (err)
  49.     (setq eLst (clean eLst))
  50.     (and doc (vla-EndUndoMark doc))
  51.     (or (wcmatch (strcase err) "*BREAK,*CANCEL*,*EXIT*")
  52.         (princ (strcat "\n** Error: " err " **"))) (redraw) (princ))

  53.   ;;-------------------------------------------------------------------------------;;
  54.   

  55.   (defun clean (lst / lst)
  56.     (cond (lst (mapcar
  57.                  (function
  58.                    (lambda (object)
  59.                      (if (not (vlax-erased-p object))
  60.                        (vla-delete object)))) lst)
  61.            (setq lst nil))))


  62.   (defun DynOff_Sub (obj off / rLst oObj iObj i)
  63.    
  64.     (if (vl-catch-all-error-p
  65.           (vl-catch-all-apply
  66.             (function
  67.               (lambda ( )               
  68.                 (if (= 1 (logand 1 dynmode))
  69.                   (progn
  70.                     (setq i  3 oObj (vlax-invoke obj 'Offset off))
  71.                     (if (or (and et (not (acet-sys-shift-down))) (not et)) ;; -- Mod 2.0 --
  72.                       (foreach prop '(color layer linetype lineweight)
  73.                         (mapcar
  74.                           (function
  75.                             (lambda (object / val)
  76.                               (if (or (vl-position (setq val (nth i *DynOffDefaults*)) '(256 "*Source*"))
  77.                                       (and (= i 3) (= "1" (cadr *DynOffDefaults*))))
  78.                                 (vlax-put-property object prop (vlax-get-property obj prop))
  79.                                 (vlax-put-property object prop (if (< i 9) val (eval (read (strcat "acLnWt" val)))))))) oObj)
  80.                         (setq i (+ i 2))))))
  81.                
  82.                 (if (= 2 (logand 2 dynmode))
  83.                   (progn
  84.                     (setq i 2 iObj (vlax-invoke obj 'Offset (- off)))
  85.                     (if (or (and et (not (acet-sys-shift-down))) (not et)) ;; -- Mod 2.0 --
  86.                       (foreach prop '(color layer linetype lineweight)
  87.                         (mapcar
  88.                           (function
  89.                             (lambda (object / val)
  90.                               (if (or (vl-position (setq val (nth i *DynOffDefaults*)) '(256 "*Source*"))
  91.                                       (and (= i 2) (= "1" (car *DynOffDefaults*))))
  92.                                 (vlax-put-property object prop (vlax-get-property obj prop))
  93.                                 (vlax-put-property object prop (if (< i 8) val (eval (read (strcat "acLnWt" val)))))))) iObj)
  94.                         (setq i (+ i 2))))))
  95.                
  96.                 (setq rLst (append oObj iObj))))))
  97.       
  98.           (clean (append oObj iObj))
  99.       
  100.       rLst))
  101.   

  102.   (defun txt2num  (txt)
  103.     (cond ((distof txt 5)) ((distof txt 2)) ((distof txt 1)) ((distof txt 4)) ((distof txt 3))))

  104.   (defun GetOffLen (num fac / result)
  105.     (setq result 0.)
  106.     (while (not (minusp (setq num (1- num))))
  107.       (setq result (+ result (expt fac num))))
  108.    
  109.     result)

  110.   (setq et (not (vl-catch-all-error-p
  111.                   (vl-catch-all-apply (function (lambda nil (acet-sys-shift-down)))))))
  112.   (or et (princ "\nExpress Tools not Loaded - Shift option not Available."))
  113.   

  114.   (setq doc   (vla-get-ActiveDocument
  115.                 (vlax-get-acad-object))
  116.         
  117.         drft  (vla-get-drafting
  118.                 (vla-get-preferences
  119.                   (vlax-get-acad-object)))
  120.         
  121.         osGrv (osmode-grvecs-lst
  122.                 (vla-get-AutoSnapMarkerColor drft)
  123.                   (vla-get-AutoSnapMarkerSize drft)))
  124.   

  125.   (cond (  (not (DC_Write dcfname))
  126.            (princ "\nDCL File could not be Written."))

  127.         (t
  128.   
  129.           (if (setq ss (ssget "_:L" '((0 . "ARC,CIRCLE,ELLIPSE,*LINE"))))
  130.             (progn
  131.               
  132.               (vla-StartUndoMark doc)
  133.               (setq ObjLst (mapcar 'vlax-ename->vla-object
  134.                              (setq EntLst (vl-remove-if 'listp
  135.                                             (mapcar 'cadr (ssnamex ss))))) oStr "")
  136.               
  137.               (setq msg '(strcat "\n[TAB] Mode, [+/-] Offset [N]umber, Offset [F]actor"
  138.                                  "\n[C]enter, [S]ettings"
  139.                           (if et ", [SHIFT] Show Offsets" "") ", [D]elete Original = "
  140.                           (if *dynDel "Yes" "No")
  141.                                  "\nSpecify Offset <" (vl-princ-to-string *dynOff) "> : "))
  142.               (princ (eval msg))
  143.               
  144.               (while
  145.                 (progn
  146.                   (setq gr (grread 't 15 0) code (car gr) data (cadr gr))
  147.                   (redraw)
  148.                   
  149.                   (cond (  (and (= 5 code) (listp data))
  150.                            
  151.                            (setq EntLst (vl-sort EntLst
  152.                                           (function
  153.                                             (lambda (a b)
  154.                                               (< (distance data (vlax-curve-getClosestPointto a data))
  155.                                                  (distance data (vlax-curve-getClosestPointto b data)))))))
  156.                              
  157.                            (setq cPt (vlax-curve-getClosestPointto (car entLst) data)

  158.                                  off (/ (distance cPt data) (GetOffLen *dynNum *dynFac)))  ;; -- Mod 2.0 --
  159.                         
  160.                            (grdraw cPt data 3 1)

  161.                            (setq eLst (clean eLst))

  162.                            (if (and (< 0 (getvar "OSMODE") 16384)
  163.                                     (setq oPt (vl-remove-if (function null)
  164.                                                 (mapcar
  165.                                                   (function
  166.                                                     (lambda (x / o)
  167.                                                       (if (setq o (osnap data x))
  168.                                                         (list (distance data o) o x data)))) (get_osmode)))))
  169.                              
  170.                              (setq oPt (cdar (vl-sort oPt (function (lambda (a b) (< (car a) (car b)))))))
  171.                              (setq oPt nil))

  172.                            (and oPt (OsMark oPt))

  173.                            (foreach obj ObjLst (setq i -1 x 0.)
  174.                              (repeat *dynNum                     
  175.                                (setq eLst
  176.                                  (append eLst (cond ((DynOff_Sub obj
  177.                                                        (* (setq x (+ x (expt *dynFac (setq i (1+ i))))) off))) ((clean eLst)))))))
  178.                         
  179.                            (if (and eLst et (acet-sys-shift-down))
  180.                              (mapcar
  181.                                (function
  182.                                  (lambda (x) (vla-put-color x acBlue))) eLst)) ;; -- Mod 2.0 --

  183.                          t)

  184.                         (  (= code 25) nil)
  185.                         
  186.                         (  (and (= code 3) (listp data))

  187.                            (clean eLst)
  188.                         
  189.                            (setq *dynOff off)
  190.                            (setq cPt (vlax-curve-getClosestPointto (car entLst) data))
  191.                         
  192.                            (if (and (< 0 (getvar "OSMODE") 16384)
  193.                                     (setq oPt (vl-remove-if (function null)
  194.                                                 (mapcar
  195.                                                   (function
  196.                                                     (lambda (x / o)
  197.                                                       (if (setq o (osnap data x))
  198.                                                         (list (distance data o) o x data)))) (get_osmode)))))
  199.                              
  200.                              (setq oPt     (cdar (vl-sort oPt
  201.                                                    (function (lambda (a b) (< (car a) (car b))))))
  202.                                    
  203.                                    data    (osnap (caddr oPt) (cadr oPt))

  204.                                    *dynOff (/ (distance (vlax-curve-getClosestPointto (car entLst) data) data)

  205.                                               (GetOffLen *dynNum *dynFac)))   ;; -- Mod 1.9 --
  206.                            
  207.                              (setq oPt nil))

  208.                            (foreach obj ObjLst (setq i -1 x 0.)
  209.                              (repeat *dynNum
  210.                                (setq eLst
  211.                                  (append eLst (cond ((DynOff_Sub obj
  212.                                                        (* (setq x (+ x (expt *dynFac (setq i (1+ i))))) *dynoff))) ((clean eLst))))))) nil)                  
  213.                         
  214.                         (  (= code 2)

  215.                            (cond (  (or (= 46 data) (< 47 data 58))
  216.                                     (setq oStr (strcat oStr (chr data)))
  217.                                     (princ (chr data)))

  218.                                  (  (vl-position data '(67 99)) (clean eLst)

  219.                                     (while
  220.                                       (progn
  221.                                         (setq e1 (entsel "\nSelect First Object: "))

  222.                                         (cond (  (vl-consp e1)

  223.                                                  (if (wcmatch (cdr (assoc 0 (entget (car e1)))) "ARC,CIRCLE,ELLIPSE,*LINE")
  224.                                                    
  225.                                                    (while
  226.                                                      (progn
  227.                                                        (setq e2 (car (entsel "\nSelect Second Object: ")))

  228.                                                        (cond (  (eq 'ENAME (type e2))

  229.                                                                 (if (wcmatch (cdr (assoc 0 (entget e2))) "ARC,CIRCLE,ELLIPSE,*LINE")
  230.                                                                   (progn

  231.                                                                     (setq p1 (vlax-curve-getClosestPointto (car e1) (cadr e1))
  232.                                                                           p2 (vlax-curve-getClosestPointto e2 p1))

  233.                                                                     (setq *dynOff (/ (distance p1 p2)

  234.                                                                                      (GetOffLen (1+ *dynNum) *dynFac)))  ;; -- Mod 2.0 --

  235.                                                                     (foreach obj ObjLst (setq i -1 x 0.)
  236.                                                                       (repeat *dynNum
  237.                                                                         (setq eLst
  238.                                                                           (append eLst

  239.                                                                             (cond (  (DynOff_Sub obj

  240.                                                                                        (* (setq x (+ x (expt *dynFac (setq i (1+ i))))) *dynoff)))

  241.                                                                                   (  (clean eLst)))))))

  242.                                                                     (setq exFlag nil))

  243.                                                                   (princ "\nInvalid Object Selected.")))

  244.                                                              (  (setq exFlag t) nil))))
  245.                                                    
  246.                                                    (princ "\nInvalid Object Selected.")))

  247.                                               (  (setq exFlag t) nil))))

  248.                                     exFlag)                                                                    

  249.                                  (  (vl-position data '(43 61))
  250.                                     (setq *dynNum (1+ *dynNum)))

  251.                                  (  (vl-position data '(68 100))
  252.                                     (setq *dynDel (not *dynDel))
  253.                                  
  254.                                     (princ (strcat "\nOriginal Objects "
  255.                                                    (if *dynDel "will" "will not") " be Deleted" (eval msg))))

  256.                                  (  (vl-position data '(78 110))
  257.                                     (initget 6)
  258.                                     (setq *dynNum
  259.                                           
  260.                                       (cond ((getint (strcat "\nSpecify Number of Offsets <" (itoa *dynNum) "> : ")))
  261.                                             
  262.                                             (*dynNum)))
  263.                                  
  264.                                     (princ (eval msg)))

  265.                                  (  (= data 6)
  266.                                     (cond (  (< 0 (getvar "OSMODE") 16384)
  267.                                              (setvar "OSMODE" (+ 16384 (getvar "OSMODE")))
  268.                                              (princ "\n<Osnap off>"))
  269.                                           
  270.                                           (t (setvar "OSMODE" (- (getvar "OSMODE") 16384))
  271.                                              (princ "\n<Osnap on>")))
  272.                                  
  273.                                     (princ (eval msg)))

  274.                                  (  (= data 9)

  275.                                     (setq dynmode

  276.                                       (cond (  (= 2 *dynMod)
  277.                                                (setq *dynMod 0) 1)

  278.                                             (  (nth (setq *dynMod (1+ *dynMod)) '(1 2 3))))))
  279.                                  
  280.                                  (  (vl-position data '(70 102))
  281.                                     (initget 6)
  282.                                     (setq *DynFac
  283.                                           
  284.                                       (cond ((getreal (strcat "\nSpecify Offset Factor <" (vl-princ-to-string *dynFac) "> : ")))
  285.                                             
  286.                                             (*dynFac)))

  287.                                     (princ (eval msg)))

  288.                                  (  (vl-position data '(83 115))
  289.                                     (Off_Settings dcfname (vlax-ename->vla-object (car EntLst)))
  290.                                  
  291.                                   t)                           

  292.                                  (  (= data 45)
  293.                                  
  294.                                     (cond (  (= 1 *dynNum)
  295.                                              (princ (strcat "\nMinimum Offset Number Reached." (eval msg))))
  296.                                           
  297.                                           (t (setq *dynNum (1- *dynNum)))))

  298.                                  (  (and (< 0 (strlen oStr)) (= data 8))
  299.                                  
  300.                                     (setq oStr (substr oStr 1 (1- (strlen oStr))))
  301.                                     (princ (vl-list->string '(8 32 8))))

  302.                                  (  (vl-position data '(13 32))

  303.                                     (cond (  (zerop (strlen oStr))

  304.                                              (clean eLst)
  305.                                           
  306.                                              (foreach obj ObjLst (setq i -1 x 0.)
  307.                                                (repeat *dynNum
  308.                                                  (setq eLst
  309.                                                    (append eLst
  310.                                                            
  311.                                                      (cond (  (DynOff_Sub obj
  312.                                                                
  313.                                                                 (* (setq x (+ x (expt *dynFac (setq i (1+ i))))) *dynoff)))

  314.                                                            (  (clean eLst))))))) nil)                                    

  315.                                           (  (setq off (txt2num oStr))

  316.                                              (clean eLst)
  317.                                           
  318.                                              (setq *dynOff off)
  319.                                              (foreach obj ObjLst (setq i -1 x 0.)
  320.                                                (repeat *dynNum
  321.                                                  (setq eLst
  322.                                                    (append eLst

  323.                                                      (cond (  (DynOff_Sub obj

  324.                                                                 (* (setq x (+ x (expt *dynFac (setq i (1+ i))))) off)))

  325.                                                            (  (clean eLst))))))) nil)

  326.                                           (t (princ "\nInvalid Offset Entered.")
  327.                                              (princ (eval msg)) (setq oStr ""))))
  328.                                  (t )))
  329.                         (t ))))

  330.               (if *dynDel (mapcar (function vla-delete) ObjLst))

  331.               (vla-EndUndoMark doc)))))
  332.   
  333.   (princ))

  334. (defun osMark (o / s)
  335.   (setq s (/ (getvar "VIEWSIZE") (cadr (getvar "SCREENSIZE")))
  336.         o (cons (trans (car o) 1 3) (cdr o)))

  337.   (grvecs (cdr (assoc (cadr o) osGrv))
  338.           (list (list s 0. 0. (caar o))
  339.                 (list 0. s 0. (cadar o))
  340.                 (list 0. 0. s 0.)
  341.                 (list 0. 0. 0. 1.))))

  342. (defun get_osmode nil ; by Evgeniy Elpanov
  343.   (mapcar
  344.     (function cdr)
  345.       (vl-remove-if
  346.         (function (lambda (x) (zerop (logand (getvar "OSMODE") (car x)))))
  347.         '((1    . "_end")
  348.           (2    . "_mid")
  349.           (4    . "_cen")
  350.           (8    . "_nod")
  351.           (16   . "_qua")
  352.           (32   . "_int")
  353.           (64   . "_ins")
  354.           (128  . "_per")
  355.           (256  . "_tan")
  356.           (512  . "_nea")
  357.           (2048 . "_app")))))

  358. (defun osmode-grvecs-lst (col ass / -ASS ASS COL)
  359.    ; By Evgeniy Elpanov (Modified by Lee Mac)
  360.   
  361.   (setq -ass (- ass))
  362.   
  363.   (list (list "_end"
  364.               col (list -ass -ass) (list -ass  ass)
  365.               col (list (1-  -ass) (1- -ass)) (list (1- -ass) (1+  ass))              
  366.               col (list -ass  ass) (list  ass  ass)
  367.               col (list (1-  -ass) (1+  ass)) (list (1+  ass) (1+  ass))              
  368.               col (list  ass  ass) (list  ass -ass)
  369.               col (list (1+   ass) (1+  ass)) (list (1+  ass) (1- -ass))              
  370.               col (list  ass -ass) (list -ass -ass)
  371.               col (list (1+   ass) (1- -ass)) (list (1- -ass) (1- -ass)))
  372.         
  373.         (list "_mid"
  374.               col (list -ass -ass) (list    0. ass)
  375.               col (list (1-  -ass) (1- -ass)) (list 0. (1+  ass))
  376.               col (list    0. ass) (list  ass -ass)
  377.               col (list 0. (1+  ass)) (list (1+  ass) (1- -ass))
  378.               col (list  ass -ass) (list -ass -ass)
  379.               col (list (1+   ass) (1- -ass)) (list (1- -ass) (1- -ass)))
  380.         
  381.         (list "_cen"
  382.               7   (list (* -ass 0.2) 0.)  (list (*  ass 0.2) 0.)
  383.               7   (list  0. (* -ass 0.2)) (list  0.  (*  ass 0.2))
  384.               col (list    -ass   0.)     (list (* -ass 0.86) (* ass  0.5))
  385.               col (list (* -ass 0.86) (* ass  0.5))  (list (* -ass  0.5) (* ass 0.86))
  386.               col (list (* -ass  0.5) (* ass 0.86))  (list 0. ass)
  387.               col (list 0. ass) (list (* ass 0.5)    (* ass 0.86))
  388.               col (list (* ass 0.5)   (* ass 0.86))  (list (* ass 0.86) (* ass 0.5))
  389.               col (list (* ass 0.86)  (* ass 0.5))   (list ass 0.)
  390.               col (list ass 0.) (list (* ass 0.86)   (* -ass 0.5))
  391.               col (list (* ass 0.86)  (* -ass 0.5))  (list (* ass 0.5) (* -ass 0.86))
  392.               col (list (* ass 0.5)   (* -ass 0.86)) (list 0. -ass)
  393.               col (list 0. -ass)(list (* -ass 0.5)   (* -ass 0.86))
  394.               col (list (* -ass 0.5)  (* -ass 0.86)) (list (* -ass 0.86) (* -ass 0.5))
  395.               col (list (* -ass 0.86) (* -ass 0.5))  (list -ass 0.))

  396.         (list "_nod"
  397.               col (list -ass -ass)    (list ass ass)
  398.               col (list -ass ass)     (list ass -ass)
  399.               col (list -ass 0.)      (list (* -ass 0.86) (* ass 0.5))
  400.               col (list (* -ass 0.86) (* ass 0.5))   (list (* -ass 0.5) (* ass 0.86))
  401.               col (list (* -ass 0.5)  (* ass 0.86))  (list 0. ass)
  402.               col (list 0. ass) (list (* ass 0.5)    (* ass 0.86))
  403.               col (list (* ass 0.5)   (* ass 0.86))  (list (* ass 0.86) (* ass 0.5))
  404.               col (list (* ass 0.86)  (* ass 0.5))   (list ass 0.)
  405.               col (list ass 0.) (list (* ass 0.86)   (* -ass 0.5))
  406.               col (list (* ass 0.86)  (* -ass 0.5))  (list (* ass 0.5) (* -ass 0.86))
  407.               col (list (* ass 0.5)   (* -ass 0.86)) (list 0. -ass)
  408.               col (list 0. -ass)(list (* -ass 0.5)   (* -ass 0.86))
  409.               col (list (* -ass 0.5)  (* -ass 0.86)) (list (* -ass 0.86) (* -ass 0.5))
  410.               col (list (* -ass 0.86) (* -ass 0.5))  (list -ass 0.))

  411.         (list "_qua"
  412.               col (list 0. -ass)   (list -ass 0.)
  413.               col (list 0. (1- -ass))   (list (1- -ass) 0.)
  414.               col (list -ass 0.)   (list 0. ass)
  415.               col (list (1- -ass) 0.)   (list 0. (1+ ass))
  416.               col (list 0. ass)    (list ass 0.)
  417.               col (list 0. (1+ ass))    (list (1+ ass) 0.)
  418.               col (list ass 0.)    (list 0. -ass)
  419.               col (list (1+ ass) 0.)    (list 0. (1- -ass)))

  420.         (list "_int"
  421.               col (list -ass -ass) (list ass ass)
  422.               col (list -ass (1+ -ass)) (list ass (1+ ass))
  423.               col (list (1+ -ass) -ass) (list (1+ ass) ass)
  424.               col (list -ass ass)  (list ass -ass)
  425.               col (list -ass (1+ ass))  (list ass (1+ -ass))
  426.               col (list (1+ -ass) ass)  (list (1+ ass) -ass))

  427.         (list "_ins"
  428.               col (list (* -ass 0.1) (* -ass 0.1)) (list -ass (* -ass 0.1))
  429.               col (list -ass (* -ass 0.1)) (list -ass ass)
  430.               col (list -ass ass) (list (* ass 0.1) ass)
  431.               col (list (* ass 0.1) ass)   (list (* ass 0.1) (* ass 0.1))
  432.               col (list (* ass 0.1) (* ass 0.1))   (list ass (* ass 0.1))
  433.               col (list ass (* ass 0.1))   (list ass -ass)
  434.               col (list ass -ass) (list (* -ass 0.1) -ass)
  435.               col (list (* -ass 0.1) -ass) (list (* -ass 0.1) (* -ass 0.1))
  436.               col (list (1- (* -ass 0.1)) (1- (* -ass 0.1))) (list (1- -ass) (1- (* -ass 0.1)))
  437.               col (list (1- -ass) (1- (* -ass 0.1))) (list (1- -ass) (1+ ass))
  438.               col (list (1- -ass) (1+ ass)) (list (1+ (* ass 0.1)) (1+ ass))
  439.               col (list (1+ (* ass 0.1)) (1+ ass)) (list (1+ (* ass 0.1)) (1+ (* ass 0.1)))
  440.               col (list (1+ (* ass 0.1)) (1+ (* ass 0.1))) (list (1+ ass) (1+ (* ass 0.1)))
  441.               col (list (1+ ass) (1+ (* ass 0.1)))   (list (1+ ass) (1- -ass))
  442.               col (list (1+ ass) (1- -ass)) (list (1- (* -ass 0.1)) (1- -ass))
  443.               col (list (1- (* -ass 0.1))   (1- -ass)) (list (1- (* -ass 0.1)) (1- (* -ass 0.1))))

  444.         (list "_tan"
  445.               col (list -ass ass) (list ass ass)
  446.               col (list (1- -ass) (1+ ass)) (list (1+ ass) (1+ ass))
  447.               col (list -ass 0.)  (list (* -ass 0.86) (* ass 0.5))
  448.               col (list (* -ass 0.86) (* ass 0.5)) (list (* -ass 0.5) (* ass 0.86))
  449.               col (list (* -ass 0.5) (* ass 0.86)) (list 0. ass)
  450.               col (list 0. ass) (list  (* ass 0.5) (* ass 0.86))
  451.               col (list (* ass 0.5)  (* ass 0.86)) (list (* ass 0.86) (* ass 0.5))
  452.               col (list (* ass 0.86)  (* ass 0.5)) (list ass 0.)
  453.               col (list ass 0.) (list (* ass 0.86) (* -ass 0.5))
  454.               col (list (* ass 0.86) (* -ass 0.5)) (list (* ass 0.5) (* -ass 0.86))
  455.               col (list (* ass 0.5) (* -ass 0.86)) (list 0. -ass)
  456.               col (list 0. -ass)(list (* -ass 0.5) (* -ass 0.86))
  457.               col (list (* -ass 0.5)(* -ass 0.86)) (list (* -ass 0.86) (* -ass 0.5))
  458.               col (list (* -ass 0.86)(* -ass 0.5)) (list -ass 0.))

  459.         (list "_per"
  460.               col (list -ass -ass) (list -ass ass)
  461.               col (list (1- -ass)  (1- -ass)) (list (1- -ass) (1+ ass))
  462.               col (list ass -ass)  (list -ass -ass)
  463.               col (list (1+ ass)   (1- -ass)) (list (1- -ass) (1- -ass))
  464.               col (list -ass 0.)   (list 0. 0.)
  465.               col (list -ass -1.)  (list 0. -1.)
  466.               col (list 0. 0.)     (list 0. -ass)
  467.               col (list -1. 0.)    (list -1. -ass))

  468.         (list "_nea"
  469.               col (list -ass -ass) (list ass ass)
  470.               col (list -ass ass)  (list ass ass)
  471.               col (list (1- -ass)  (1+ ass)) (list (1+ ass) (1+ ass))
  472.               col (list -ass ass)  (list ass -ass)
  473.               col (list ass -ass)  (list -ass -ass)
  474.               col (list (1+ ass) (1- -ass)) (list (1- -ass) (1- -ass)))

  475.         (list "_app"
  476.               col (list -ass -ass) (list ass ass)
  477.               col (list ass -ass)  (list -ass ass)
  478.               col (list -ass -ass) (list -ass ass)
  479.               col (list (1- -ass)  (1- -ass)) (list (1- -ass) (1+ ass))
  480.               col (list -ass ass)  (list ass ass)
  481.               col (list (1- -ass)  (1+ ass))  (list (1+ ass) (1+ ass))
  482.               col (list ass ass)   (list ass -ass)
  483.               col (list (1+ ass)   (1+ ass))  (list (1+ ass) (1- -ass))
  484.               col (list ass -ass)  (list -ass -ass)
  485.               col (list (1+ ass)   (1- -ass)) (list (1- -ass) (1- -ass)))))


  486. ;; ----=={ DCL Section }==----

  487. (defun Off_Settings (fname obj / mklst img layCol mk_arc lays dcTag lLay lLin bsCol bsflag)

  488.   (mapcar 'set '(*dyniCols *dynoCols *dyniCol *dynoCol  *dynilay
  489.                  *dynolay  *dynilin  *dynolin *dyniwgt  *dynowgt) *DynOffDefaults*)         
  490.   
  491.   (defun mklst (key lst)
  492.     (start_list key) (mapcar 'add_list lst) (end_list))

  493.   (defun img (key col)   
  494.     (start_image key)
  495.     (fill_image 0 0 (dimx_tile key) (dimy_tile key) col)
  496.     (end_image))

  497.   (setq doc  (cond (doc) ((vla-get-ActiveDocument
  498.                             (vlax-get-acad-object))))
  499.         lays (vla-get-layers doc))

  500.   (defun layCol (lay)
  501.     (vla-get-color (vla-item lays lay)))

  502.   (setq bsCol
  503.     (cond (  (vl-position (setq bsCol (vla-get-Color obj)) '(256 0))
  504.              (setq bsflag t)
  505.              (layCol (vla-get-Layer obj)))

  506.           (bsCol)))  

  507.   (defun mk_arc nil
  508.     (vec_arc (if (= "1" *dyniCols)
  509.                (if bsFlag
  510.                  (laycol
  511.                    (if (eq "*Source*" *dynilay)
  512.                      (vla-get-layer obj) *dynilay)) bsCol)
  513.                (if (= 256 *dyniCol)
  514.                  (if (eq "*Source*" *dynilay) bsCol
  515.                    (laycol *dynilay))
  516.                  *dyniCol))

  517.              bsCol

  518.              (if (= "1" *dynoCols)
  519.                (if bsFlag
  520.                  (laycol
  521.                    (if (eq "*Source*" *dynolay)
  522.                      (vla-get-layer obj) *dynolay)) bsCol)
  523.                (if (= 256 *dynoCol)
  524.                  (if (eq "*Source*" *dynolay) bsCol
  525.                    (laycol *dynolay))
  526.                  *dynoCol))))
  527.   
  528.   (cond (  (<= (setq dcTag (load_dialog fname)) 0)
  529.            (princ "\nDialog File not Found."))

  530.         (  (not (new_dialog "dsett" dcTag))
  531.            (princ "\nSettings Dialog could not be Loaded."))

  532.         (t
  533.            (vlax-for lay (vla-get-layers doc)
  534.              (setq lLay (cons (vla-get-Name lay) lLay)))
  535.            (setq lLay (cons "*Source*" (acad_strlsort lLay)))

  536.            (vlax-for lin (vla-get-linetypes doc)
  537.              (setq lLin (cons (vla-get-Name lin) lLin)))
  538.            (setq lLin (append '("*Source*" "ByLayer") (acad_strlsort (cddr (reverse lLin)))))

  539.            (setq lWgt '("*Source*" "ByLayer"
  540.                         "000" "005" "009" "013" "015" "018" "020" "025" "030"
  541.                         "035" "040" "050" "053" "060" "070" "080" "090" "100"
  542.                         "106" "120" "140" "158" "200" "211"))

  543.            (mapcar 'mklst '("ilay" "olay" "ilin" "olin" "olw" "ilw")
  544.                    (list lLay lLay lLin lLin lWgt lWgt))

  545.            (mapcar 'set_tile '("ilay" "olay" "ilin" "olin" "ilw" "olw")
  546.                    (mapcar 'itoa
  547.                            (mapcar 'vl-position
  548.                                    (list *dyniLay *dynoLay *dyniLin *dynoLin *dyniWgt *dynoWgt)
  549.                                    (list   lLay     lLay      lLin     lLin    lWgt     lWgt))))

  550.            (set_tile "icols" *dyniCols)
  551.            (set_tile "ocols" *dynoCols)

  552.            (set_tile "dtitle" dcTitle)
  553.          
  554.            (mode_tile "icol" (atoi (get_tile "icols")))
  555.            (mode_tile "ocol" (atoi (get_tile "ocols")))

  556.            (logo)
  557.            (mk_arc)
  558.            (mapcar 'img '("icol" "ocol") (list *dyniCol *dynoCol))

  559.            (action_tile "ilay"
  560.              (vl-prin1-to-string
  561.                (quote
  562.                  (progn
  563.                    (setq *dynilay (nth (atoi $value) lLay)) (mk_arc)))))

  564.            (action_tile "olay"
  565.              (vl-prin1-to-string
  566.                (quote
  567.                  (progn
  568.                    (setq *dynolay (nth (atoi $value) lLay)) (mk_arc)))))

  569.            (action_tile "ilin"
  570.              (vl-prin1-to-string
  571.                (quote
  572.                  (progn
  573.                    (setq *dyniLin (nth (atoi $value) lLin))))))

  574.            (action_tile "olin"
  575.              (vl-prin1-to-string
  576.                (quote
  577.                  (progn
  578.                    (setq *dynoLin (nth (atoi $value) lLin))))))

  579.            (action_tile "ilw"
  580.              (vl-prin1-to-string
  581.                (quote
  582.                  (progn
  583.                    (setq *dyniWgt (nth (atoi $value) lWgt))))))

  584.            (action_tile "olw"
  585.              (vl-prin1-to-string
  586.                (quote
  587.                  (progn
  588.                    (setq *dynoWgt (nth (atoi $value) lWgt))))))

  589.            (action_tile "icol"
  590.              (vl-prin1-to-string
  591.                (quote
  592.                  (progn
  593.                    (setq *dyniCol (cond ((acad_colordlg *dyniCol)) (*dyniCol)))
  594.                    (img "icol" *dyniCol)
  595.                    (mk_arc)))))
  596.          
  597.            (action_tile "ocol"
  598.              (vl-prin1-to-string
  599.                (quote
  600.                  (progn
  601.                    (setq *dynoCol (cond ((acad_colordlg *dynoCol)) (*dynoCol)))
  602.                    (img "ocol" *dynoCol)
  603.                    (mk_arc)))))

  604.            (action_tile "icols"
  605.              (vl-prin1-to-string
  606.                (quote
  607.                  (progn
  608.                    (mode_tile "icol" (atoi (setq *dyniCols $value)))
  609.                    (mk_arc)))))

  610.            (action_tile "ocols"
  611.              (vl-prin1-to-string
  612.                (quote
  613.                  (progn
  614.                    (mode_tile "ocol" (atoi (setq *dynoCols $value)))
  615.                    (mk_arc)))))
  616.                   
  617.            (action_tile "accept"
  618.              (vl-prin1-to-string
  619.                (quote
  620.                  (progn
  621.                    (setq *DynOffDefaults*
  622.                           (list *dyniCols *dynoCols *dyniCol  *dynoCol  *dynilay
  623.                                 *dynolay  *dynilin  *dynolin  *dyniwgt  *dynowgt))
  624.                    (done_dialog)))))
  625.                   
  626.            (action_tile "cancel" "(done_dialog)")

  627.            (start_dialog)
  628.            (unload_dialog dcTag))))


  629. (defun DC_Write (fname / wPath ofile)

  630.   (if (not (findfile fname))
  631.     (if (setq wPath (findfile "ACAD.PAT"))
  632.       (progn
  633.         (setq wPath (vl-filename-directory wPath))
  634.         (or (eq "\\" (substr wPath (strlen wPath)))
  635.             (setq wPath (strcat wPath "\\")))
  636.         
  637.         (setq ofile (open (strcat wPath fname) "w"))
  638.         
  639.         (foreach str
  640.                  
  641.           '(
  642.             "//-------------------=={ Dynamic Offset }==-------------------//"
  643.             "//                                                            //"
  644.             "//  DynOff.dcl for use in conjunction with DynOff.lsp         //"
  645.             "//------------------------------------------------------------//"
  646.             "//  Author: Lee Mac, Copyright ?2009 - www.lee-mac.com       //"
  647.             "//------------------------------------------------------------//"
  648.             ""
  649.             "// Sub-Assembly Definitions"
  650.             ""
  651.             "pop : popup_list   { fixed_width = false; alignment = centered; }"
  652.             "col : image_button { alignment = centered; height = 1.5; width = 4.0;"
  653.             "                     fixed_width = true; fixed_height = true; color = 2; }"
  654.             ""
  655.             "// Main Dialog"
  656.             ""
  657.             "dsett : dialog { key = \"dtitle\";"
  658.             "  spacer;"
  659.             "  : row {"
  660.             "    : boxed_column { label = \"Offset Preview\"; fixed_width = false; "
  661.             "      : boxed_row { label = \"Outer Colour\"; fixed_width = true;"
  662.             "                    alignment = centered;"
  663.             "        spacer;"
  664.             "        : col  { key = \"ocol\"; }"
  665.             "        spacer;"
  666.             "        : toggle { key = \"ocols\"; label = \"Source\"; }"
  667.             "        spacer;"
  668.             "      } // boxed_row"
  669.             "      : image { key = \"dimage\"; alignment = centered;"
  670.             "                width = 24.64 ; fixed_width  = true;"
  671.             "                height = 11.39; fixed_height = true; color = -2; }"
  672.             "      : boxed_row { label = \"Inner Colour\"; fixed_width = true;"
  673.             "                    alignment = centered;"
  674.             "        spacer;"
  675.             "        : col  { key = \"icol\"; }"
  676.             "        spacer;"
  677.             "        : toggle { key = \"icols\"; label = \"Source\"; }"
  678.             "        spacer;"
  679.             "      } // boxed_row"
  680.             "    } // column"
  681.             "    : column { "
  682.             "      : boxed_column { label = \"Outer Offset\";"
  683.             "        : pop { label = \"Layer:\"; key = \"olay\"; }"
  684.             "        : pop { label = \"Linetype:\"; key = \"olin\"; }"
  685.             "        : pop { label = \"Lineweight:\"; key = \"olw\" ; }"
  686.             "        spacer;"
  687.             "      } // boxed_column"
  688.             "      spacer;"
  689.             "      : boxed_column { label = \"Inner Offset\";"
  690.             "        : pop { label = \"Layer:\"; key = \"ilay\"; }"
  691.             "        : pop { label = \"Linetype:\"; key = \"ilin\"; }"
  692.             "        : pop { label = \"Lineweight:\"; key = \"ilw\" ; }"
  693.             "        spacer;"
  694.             "      } // boxed_column"
  695.             "    } // column"
  696.             "  } // row"
  697.             "  spacer;"
  698.             "  : row {"
  699.             "    : spacer { width = 19.33; height = 3.18; }"
  700.             "    ok_cancel;"
  701.             "    spacer;"
  702.             "    : image { key = \"logo\" ; alignment = centered;"
  703.             "              width = 19.33; fixed_width  = true;"
  704.             "              height = 3.18; fixed_height = true; color = -15; }"
  705.             "  } // row"
  706.             "} // dialog"
  707.             ""
  708.             "//------------------------------------------------------------//"
  709.             "//                         End of File                        //"
  710.             "//------------------------------------------------------------//"
  711.             )

  712.           (write-line str ofile))
  713.         (close ofile)
  714.       t)
  715.   nil)
  716. t))

  717. (defun logo nil

  718.   (start_image "logo")

  719.   (mapcar 'vector_image
  720.          
  721.           '(24 21 19 18 17 16 15 14 1 1 0 0 17 8 0 0 1 1 1 1 8 8 7 7 7 7 7 7 33 33 35
  722.             37 38 39 41 48 47 46 46 54 52 51 50 49 41 42 43 44 45 46 46 47 47 48 48 48
  723.             48 48 49 49 49 49 48 48 48 47 47 44 46 47 48 49 49 50 50 51 52 52 53 53 53
  724.             53 53 53 53 52 52 52 52 51 51 51 51 52 54 54 55 56 58 59 60 62 70 70 68 67
  725.             65 64 62 61 59 58 57 55 64 63 63 63 63 62 61 71 70 69 69 69 69 69 68 69 69
  726.             69 47 26 27 28 28 28 28 28 27 27 26 25 36 34 33 33 33 46 46 47 77 77 77 76
  727.             75 74 73 73 73 72 72 72 72 72 72 72 72 73 73 74 75 79 76 76 76 75 75 75 75
  728.             75 76 76 76 77 77 78 78 79 80 81 83 84 85 86 93 76 77 87 87 81 80 88 88 88
  729.             88 86 86 94 93 92 92 92 92 92 92 93 113 113 112 111 109 108 107 105 109 111
  730.             112 113 113 113 96 94 93 93 93 93 93 94 95 96 97 98 99 101 102 104 105 107
  731.             108 104 103 101 100 100 99 99 98 98 98 98 98 99 100 102 103 104 101 99 98
  732.             96 94 105 107 108 109 110 112 113 114 114 114 112 111 110 108 107 105 103 102)

  733.           '(16 18 19 20 21 21 21 21 22 23 23 24 24 0 0 0 1 2 3 21 21 21 20 19 18 1 1 0 1
  734.             1 2 2 3 4 5 5 4 3 3 1 1 2 3 4 5 6 7 9 10 12 12 13 15 16 18 19 21 23 25 25 27
  735.             28 30 31 33 34 35 40 38 37 36 34 34 33 31 30 28 28 26 25 23 21 21 19 18 16 15
  736.             14 13 11 10 10 9 8 7 6 5 4 3 3 2 2 0 0 0 0 0 0 0 0 0 0 0 0 1 20 21 22 22 23
  737.             24 24 23 23 22 21 20 4 3 2 2 0 0 0 1 2 2 4 4 20 21 23 23 24 24 23 22 21 20 1
  738.             1 0 4 5 6 7 8 9 11 12 13 15 16 18 20 20 22 23 25 26 27 29 30 34 30 29 27 26
  739.             24 22 21 19 18 16 15 13 12 12 10 9 8 7 6 5 4 4 3 3 3 4 10 10 12 12 19 19 20
  740.             21 22 22 21 21 20 19 6 6 5 3 13 14 15 16 17 18 19 19 20 19 18 17 15 14 5 9 11
  741.             12 14 14 16 17 18 19 20 21 21 22 22 22 22 21 21 20 19 19 18 18 17 16 14 12 11
  742.             10 8 7 6 6 5 5 3 3 3 3 3 5 5 6 6 6 7 7 7 7 6 5 4 4 3 3 3 3 3)

  743.           '(21 19 18 17 16 15 14 8 1 0 0 17 24 0 0 1 1 1 1 1 8 7 7 7 7 7 7 8 33 35 37 38
  744.             39 41 41 47 46 46 46 52 51 50 49 48 42 43 44 45 46 46 47 47 48 48 48 48 48 49
  745.             49 49 49 48 48 48 47 47 44 46 47 48 49 49 50 50 51 52 52 53 53 53 53 53 53 53
  746.             52 52 52 52 51 51 51 51 52 54 54 55 56 58 59 60 62 64 70 68 67 65 64 62 61 59
  747.             58 57 55 54 63 63 63 63 62 61 71 70 69 69 69 69 69 68 69 69 69 70 26 27 28 28
  748.             28 28 28 27 27 26 25 36 34 33 33 33 33 46 47 47 77 77 76 75 74 73 73 73 72 72
  749.             72 72 72 72 72 72 73 73 74 75 79 76 76 76 75 75 75 75 75 76 76 76 77 77 78 78
  750.             79 80 81 83 84 85 86 87 76 77 77 87 81 80 88 88 88 88 86 86 94 93 92 92 92 92
  751.             92 92 93 93 113 112 111 109 108 107 105 104 111 112 113 113 113 113 94 93 93
  752.             93 93 93 94 95 96 97 98 99 101 102 104 105 107 108 109 103 101 100 100 99 99
  753.             98 98 98 98 98 99 100 102 103 104 105 99 98 96 94 96 107 108 109 110 112 113
  754.             114 114 114 112 111 110 108 107 105 103 102 101)

  755.           '(18 19 20 21 21 21 21 21 23 23 24 24 16 0 0 1 2 3 21 22 21 20 19 18 1 1 0 0 1 2
  756.             2 3 4 5 5 4 3 3 1 1 2 3 4 5 6 7 9 10 12 12 13 15 16 18 19 21 23 25 25 27 28 30
  757.             31 33 34 35 40 38 37 36 34 34 33 31 30 28 28 26 25 23 21 21 19 18 16 15 14 13
  758.             11 10 10 9 8 7 6 5 4 3 3 2 2 1 0 0 0 0 0 0 0 0 0 0 0 1 20 21 22 22 23 24 24 23
  759.             23 22 21 20 4 3 2 2 0 0 0 1 2 2 4 4 20 21 23 23 24 24 23 22 21 20 1 1 0 0 5 6 7
  760.             8 9 11 12 13 15 16 18 20 20 22 23 25 26 27 29 30 34 30 29 27 26 24 22 21 19 18
  761.             16 15 13 12 12 10 9 8 7 6 5 4 4 4 3 3 4 10 10 12 12 19 19 20 21 22 22 21 21 20
  762.             19 6 6 5 3 3 14 15 16 17 18 19 19 20 19 18 17 15 14 13 9 11 12 14 14 16 17 18 19
  763.             20 21 21 22 22 22 22 21 21 20 19 19 18 18 17 16 14 12 11 10 8 7 6 6 5 5 5 3 3 3
  764.             3 5 5 6 6 6 7 7 7 7 6 5 4 4 3 3 3 3 3 3)

  765.           '(14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
  766.             14 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166
  767.             166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166
  768.             166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166
  769.             166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166
  770.             166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166
  771.             166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166
  772.             166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166
  773.             166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166
  774.             166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166
  775.             166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166
  776.             166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166
  777.             166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166
  778.             166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166
  779.             166 166 166 166))

  780.   (end_image))

  781. (defun vec_arc (iCol bCol oCol)

  782.   (start_image "dimage")

  783.   (mapcar 'vector_image

  784.           '(0 48 48 48 48 47 46 45 44 43 42 40 39 37 35 33 31 29 26 24 21 19 16 14 11 8 5 2)
  785.           '(0 146 143 141 138 135 132 130 127 124 122 119 117 115 113 111 109 107 105 104 103 101 100 99 99 98 98 97)
  786.           '(0 48 48 48 47 46 45 44 43 42 40 39 37 35 33 31 29 26 24 21 19 16 14 11 8 5 2 0)
  787.           '(0 143 141 138 135 132 130 127 124 122 119 117 115 113 111 109 107 105 104 103 101 100 99 99 98 98 97 97)

  788.           (list iCol iCol iCol iCol iCol iCol iCol iCol iCol iCol iCol iCol iCol iCol iCol
  789.                 iCol iCol iCol iCol iCol iCol iCol iCol iCol iCol iCol iCol iCol))

  790.   (mapcar 'vector_image

  791.           '(0 42 39 35 32 28 25 21 18 14 10 7 3 42 39 35 32 28 25 21 18 14 10 7 3 71 69 66 63
  792.             60 58 55 52 48 45 71 69 66 63 60 58 55 52 48 45 93 92 90 89 88 86 84 82 80 78 76
  793.             74 93 92 90 89 88 86 84 82 80 78 76 74 97 97 97 97 96 96 95 94 97 97 97 97 96 96 95 94)

  794.           '(0 58 57 55 54 53 52 51 50 50 49 49 49 58 57 55 54 53 52 51 50 50 49 49 49 80 77 75
  795.             72 70 68 65 63 62 60 80 77 75 72 70 68 65 63 62 60 117 114 111 107 104 101 97 94 91
  796.             88 85 82 117 114 111 107 104 101 97 94 91 88 85 82 146 143 139 135 132 128 125 121
  797.             146 143 139 135 132 128 125 121)

  798.           '(0 39 35 32 28 25 21 18 14 10 7 3 0 39 35 32 28 25 21 18 14 10 7 3 0 69 66 63 60 58
  799.             55 52 48 45 42 69 66 63 60 58 55 52 48 45 42 92 90 89 88 86 84 82 80 78 76 74 71 92
  800.             90 89 88 86 84 82 80 78 76 74 71 97 97 97 96 96 95 94 93 97 97 97 96 96 95 94 93)

  801.           '(0 57 55 54 53 52 51 50 50 49 49 49 48 57 55 54 53 52 51 50 50 49 49 49 48 77 75 72
  802.             70 68 65 63 62 60 58 77 75 72 70 68 65 63 62 60 58 114 111 107 104 101 97 94 91 88
  803.             85 82 80 114 111 107 104 101 97 94 91 88 85 82 80 143 139 135 132 128 125 121 117 143
  804.             139 135 132 128 125 121 117)

  805.           (list bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol
  806.                 bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol
  807.                 bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol
  808.                 bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol
  809.                 bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol
  810.                 bCol bCol bCol bCol bCol))

  811.   (mapcar 'vector_image

  812.           '(56 51 47 43 39 35 30 26 22 17 13 8 4 0 106 103 100 97 93 90 86 83 79 75 72 68 64 60
  813.             146 146 146 146 145 144 144 143 142 141 139 138 137 135 133 131 129 127 125 123 120
  814.             118 115 112 109)

  815.           '(11 9 8 6 5 4 3 2 1 1 0 0 0 0 46 42 39 36 34 31 28 25 23 21 18 16 14 12 146 142 137 133
  816.             129 124 120 115 111 107 103 98 94 90 86 82 78 74 70 67 63 59 56 52 49)

  817.           '(51 47 43 39 35 30 26 22 17 13 8 4 0 0 103 100 97 93 90 86 83 79 75 72 68 64 60 56 146
  818.             146 146 145 144 144 143 142 141 139 138 137 135 133 131 129 127 125 123 120 118 115 112 109 106)

  819.           '(9 8 6 5 4 3 2 1 1 0 0 0 0 0 42 39 36 34 31 28 25 23 21 18 16 14 12 11 142 137 133 129
  820.             124 120 115 111 107 103 98 94 90 86 82 78 74 70 67 63 59 56 52 49 46)

  821.           (list oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol
  822.                 oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol
  823.                 oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol
  824.                 oCol oCol oCol oCol oCol))

  825.   (end_image))


  826. (vl-load-com)
  827. (princ "\n:: DynOff.lsp | Version 2.1 | ?Lee Mac 2009 www.lee-mac.com ::")
  828. (princ "\n:: Type \"DynOff\" to Invoke ::")
  829. (princ)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2018-11-6 10:59 | 显示全部楼层
试用过之后,只有一个感觉:好精美的程序啊
发表于 2016-9-29 14:14 | 显示全部楼层
代码加点中文解释就更好了
发表于 2023-10-11 22:54 | 显示全部楼层
大师之作,学习都学不会
发表于 2013-12-4 19:50 | 显示全部楼层
983行代码.........看着都晕啊~~~~~~功能没试...支持一下
 楼主| 发表于 2013-12-4 20:02 | 显示全部楼层
ysq101 发表于 2013-12-4 19:50
983行代码.........看着都晕啊~~~~~~功能没试...支持一下

不简简单单的是偏移,可以很多附加选项
发表于 2013-12-4 20:06 | 显示全部楼层
意义不大
发表于 2013-12-4 22:52 | 显示全部楼层
源码汉化才好用
发表于 2013-12-5 06:48 | 显示全部楼层
好像在论坛上看过类似的
楼主辛苦了
发表于 2013-12-6 08:05 | 显示全部楼层
看到这个,学习道路还很长
发表于 2013-12-6 09:26 | 显示全部楼层
lee的代码真是博大精深那
发表于 2013-12-6 12:25 | 显示全部楼层
用了一下,确实功能强大,非常不错
发表于 2013-12-7 08:15 | 显示全部楼层
确实很厉害,学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-6-25 13:43 , Processed in 0.253114 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表