明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3190|回复: 14

[源码] 发一个双向偏移 lsp

[复制链接]
发表于 2021-5-14 14:35:08 | 显示全部楼层 |阅读模式
本帖最后由 alexmai 于 2021-5-14 15:56 编辑

;感谢 Lee Mac


  1. ;;--------------------------=={  Dynamic Offset  }==-----------------------------;;
  2. ;;                                                                               ;;
  3. ;;  Allows the user to dynamically offset multiple objects simultaneously, by    ;;
  4. ;;  either specifying the offset distance via mouse-click, or at the             ;;
  5. ;;  command-line. The command-line default will remember the last offset entered ;;
  6. ;;  by the user.                                                                 ;;
  7. ;;                                                                               ;;
  8. ;;  Object Snap functionality is retained, and the on-screen offset distance is  ;;
  9. ;;  determined by the nearest object in the offset selection set.                ;;
  10. ;;                                                                               ;;
  11. ;;  The user can use the +/- keys to change the number of offsets, or,           ;;
  12. ;;  alternatively, the user can press 'N' and specify the number of offsets      ;;
  13. ;;  directly.                                                                    ;;
  14. ;;                                                                               ;;
  15. ;;  The user can also press 'S' during object offset to change the layer,        ;;
  16. ;;  linetype, lineweight, and colour of the resultant offset objects.            ;;
  17. ;;                                                                               ;;
  18. ;;  By pressing TAB the user can switch modes between offsetting both sides or   ;;
  19. ;;  just one side of an object.                                                  ;;
  20. ;;                                                                               ;;
  21. ;;  The toggle for retaining or deleting the original Objects can be altered by  ;;
  22. ;;  pressing 'D'. The user can hold SHIFT to highlight the offset entities.      ;;
  23. ;;                                                                               ;;
  24. ;;-------------------------------------------------------------------------------;;
  25. ;;                                                                               ;;
  26. ;;  FUNCTION SYNTAX:  DynOff                                                     ;;
  27. ;;                                                                               ;;
  28. ;;-------------------------------------------------------------------------------;;
  29. ;;                                                                               ;;
  30. ;;  Author: Lee Mac, Copyright ?October 2009 - [url=http://www.lee-mac.com]www.lee-mac.com[/url]                  ;;
  31. ;;                                                                               ;;
  32. ;;-------------------------------------------------------------------------------;;
  33. ;;                                                                               ;;
  34. ;;  Version:                                                                     ;;
  35. ;;                                                                               ;;
  36. ;;  1.0:  17/10/2009  -  First Release                                           ;;
  37. ;;-------------------------------------------------------------------------------;;
  38. ;;  1.1:  19/10/2009  -  Added Object Snap functionality                         ;;
  39. ;;-------------------------------------------------------------------------------;;
  40. ;;  1.2:  20/10/2009  -  Added Multiple Offset Option                            ;;
  41. ;;-------------------------------------------------------------------------------;;
  42. ;;  1.3:  21/10/2009  -  Updated Object Snap Coding                              ;;
  43. ;;-------------------------------------------------------------------------------;;
  44. ;;  1.4:  23/10/2009  -  Updated Offset Number Options                           ;;
  45. ;;                    -  Added option to specify Offset factor.                  ;;
  46. ;;-------------------------------------------------------------------------------;;
  47. ;;  1.5:  29/10/2009  -  Added Settings Dialog.                                  ;;
  48. ;;-------------------------------------------------------------------------------;;
  49. ;;  1.6:  08/12/2009  -  Added option to only offset object on one side.         ;;
  50. ;;-------------------------------------------------------------------------------;;
  51. ;;  1.7:  10/12/2009  -  Added option to delete original objects.                ;;
  52. ;;-------------------------------------------------------------------------------;;
  53. ;;  1.8:  14/12/2009  -  Added ability to offset to the center of two objects.   ;;
  54. ;;-------------------------------------------------------------------------------;;
  55. ;;  1.9:  16/12/2009  -  Modified method for spacing multiple offsets.           ;;
  56. ;;                    -  Improved OSnap Coding.                                  ;;
  57. ;;-------------------------------------------------------------------------------;;
  58. ;;  2.0:  18/12/2009  -  Added colour change for offset entities.                ;;
  59. ;;                   -   Fixed Bug when using Offset Factor.                     ;;
  60. ;;-------------------------------------------------------------------------------;;
  61. ;;  2.1:  21/12/2009  -  Updated code to check for Express Tools.                ;;
  62. ;;-------------------------------------------------------------------------------;;

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

  64.                        *error* clean DynOff_Sub txt2num

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

  66.                        CODE CPT
  67.                        DATA DCFNAME DCTITLE DOC DRFT
  68.                        E1 E2 ELST ENTLST ET EXFLAG
  69.                        GR
  70.                        I IOBJ
  71.                        K MSG
  72.                        OBJ OBJLST OFF OOBJ OPT OSGRV OSTR
  73.                        PROP
  74.                        RLST
  75.                        SS
  76.                        X

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

  78.                        ; *dynOff  ~  Default Offset Distance
  79.                        ; *dynNum  ~  Default Offset Number
  80.                        ; *dynFac  ~  Default Offset Factor
  81.                        ; *dynMod  ~  Default Offset Mode (bit-coded)
  82.                        ; *dynDel  ~  Default Delete Option

  83.                        ; *DynOffDefaults*  ~ Default Dialog Settings

  84.                  )

  85.   (setq dcfname "LMAC_DynOff_V2.1.dcl"
  86.         dcTitle "Dynamic Offset V2.1 Settings")
  87.   
  88.   (or *dynOff (setq *dynOff 10.0))
  89.   (or *dynNum (setq *dynNum  1  ))
  90.   (or *dynFac (setq *dynFac  1.0))
  91.   (or *dynMod (setq *dynMod  2  ))
  92.   (or *dynDel (setq *dynDel  nil))

  93.   (or *DynOffDefaults*
  94.       (setq *DynOffDefaults* '("1" "1" 256 256 "*Source*" "*Source*"   ;; Layer
  95.                                                "ByLayer"  "ByLayer"    ;; Linetype
  96.                                                "ByLayer"  "ByLayer"))) ;; Lineweight

  97.   (setq k -1)
  98.   (setq *DynOffDefaults*
  99.     (mapcar
  100.       (function
  101.         (lambda (value)
  102.           (cond (  (<= 4 (setq k (1+ k)) 5)
  103.                    (if (tblsearch "LAYER" value) value "*Source*"))

  104.                 (  (<= 6 k 7)
  105.                    (if (tblsearch "LTYPE" value) value "ByLayer"))

  106.                 (t value)))) *DynOffDefaults*))

  107.   (setq dynMode (nth *dynMod '(1 2 3)))
  108.   

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

  110.   (defun *error* (err)
  111.     (setq eLst (clean eLst))
  112.     (and doc (vla-EndUndoMark doc))
  113.     (or (wcmatch (strcase err) "*BREAK,*CANCEL*,*EXIT*")
  114.         (princ (strcat "\n** Error: " err " **"))) (redraw) (princ))

  115.   ;;-------------------------------------------------------------------------------;;
  116.   

  117.   (defun clean (lst / lst)
  118.     (cond (lst (mapcar
  119.                  (function
  120.                    (lambda (object)
  121.                      (if (not (vlax-erased-p object))
  122.                        (vla-delete object)))) lst)
  123.            (setq lst nil))))


  124.   (defun DynOff_Sub (obj off / rLst oObj iObj i)
  125.    
  126.     (if (vl-catch-all-error-p
  127.           (vl-catch-all-apply
  128.             (function
  129.               (lambda ( )               
  130.                 (if (= 1 (logand 1 dynmode))
  131.                   (progn
  132.                     (setq i  3 oObj (vlax-invoke obj 'Offset off))
  133.                     (if (or (and et (not (acet-sys-shift-down))) (not et)) ;; -- Mod 2.0 --
  134.                       (foreach prop '(color layer linetype lineweight)
  135.                         (mapcar
  136.                           (function
  137.                             (lambda (object / val)
  138.                               (if (or (vl-position (setq val (nth i *DynOffDefaults*)) '(256 "*Source*"))
  139.                                       (and (= i 3) (= "1" (cadr *DynOffDefaults*))))
  140.                                 (vlax-put-property object prop (vlax-get-property obj prop))
  141.                                 (vlax-put-property object prop (if (< i 9) val (eval (read (strcat "acLnWt" val)))))))) oObj)
  142.                         (setq i (+ i 2))))))
  143.                
  144.                 (if (= 2 (logand 2 dynmode))
  145.                   (progn
  146.                     (setq i 2 iObj (vlax-invoke obj 'Offset (- off)))
  147.                     (if (or (and et (not (acet-sys-shift-down))) (not et)) ;; -- Mod 2.0 --
  148.                       (foreach prop '(color layer linetype lineweight)
  149.                         (mapcar
  150.                           (function
  151.                             (lambda (object / val)
  152.                               (if (or (vl-position (setq val (nth i *DynOffDefaults*)) '(256 "*Source*"))
  153.                                       (and (= i 2) (= "1" (car *DynOffDefaults*))))
  154.                                 (vlax-put-property object prop (vlax-get-property obj prop))
  155.                                 (vlax-put-property object prop (if (< i 8) val (eval (read (strcat "acLnWt" val)))))))) iObj)
  156.                         (setq i (+ i 2))))))
  157.                
  158.                 (setq rLst (append oObj iObj))))))
  159.       
  160.           (clean (append oObj iObj))
  161.       
  162.       rLst))
  163.   

  164.   (defun txt2num  (txt)
  165.     (cond ((distof txt 5)) ((distof txt 2)) ((distof txt 1)) ((distof txt 4)) ((distof txt 3))))

  166.   (defun GetOffLen (num fac / result)
  167.     (setq result 0.)
  168.     (while (not (minusp (setq num (1- num))))
  169.       (setq result (+ result (expt fac num))))
  170.    
  171.     result)

  172.   (setq et (not (vl-catch-all-error-p
  173.                   (vl-catch-all-apply (function (lambda nil (acet-sys-shift-down)))))))
  174.   (or et (princ "\nExpress Tools not Loaded - Shift option not Available."))
  175.   

  176.   (setq doc   (vla-get-ActiveDocument
  177.                 (vlax-get-acad-object))
  178.         
  179.         drft  (vla-get-drafting
  180.                 (vla-get-preferences
  181.                   (vlax-get-acad-object)))
  182.         
  183.         osGrv (osmode-grvecs-lst
  184.                 (vla-get-AutoSnapMarkerColor drft)
  185.                   (vla-get-AutoSnapMarkerSize drft)))
  186.   

  187.   (cond (  (not (DC_Write dcfname))
  188.            (princ "\nDCL File could not be Written."))

  189.         (t
  190.   
  191.           (if (setq ss (ssget "_:L" '((0 . "ARC,CIRCLE,ELLIPSE,*LINE"))))
  192.             (progn
  193.               
  194.               (vla-StartUndoMark doc)
  195.               (setq ObjLst (mapcar 'vlax-ename->vla-object
  196.                              (setq EntLst (vl-remove-if 'listp
  197.                                             (mapcar 'cadr (ssnamex ss))))) oStr "")
  198.               
  199.               (setq msg '(strcat "\n[TAB] Mode, [+/-] Offset [N]umber, Offset [F]actor"
  200.                                  "\n[C]enter, [S]ettings"
  201.                           (if et ", [SHIFT] Show Offsets" "") ", [D]elete Original = "
  202.                           (if *dynDel "Yes" "No")
  203.                                  "\nSpecify Offset <" (vl-princ-to-string *dynOff) "> : "))
  204.               (princ (eval msg))
  205.               
  206.               (while
  207.                 (progn
  208.                   (setq gr (grread 't 15 0) code (car gr) data (cadr gr))
  209.                   (redraw)
  210.                   
  211.                   (cond (  (and (= 5 code) (listp data))
  212.                            
  213.                            (setq EntLst (vl-sort EntLst
  214.                                           (function
  215.                                             (lambda (a b)
  216.                                               (< (distance data (vlax-curve-getClosestPointto a data))
  217.                                                  (distance data (vlax-curve-getClosestPointto b data)))))))
  218.                              
  219.                            (setq cPt (vlax-curve-getClosestPointto (car entLst) data)

  220.                                  off (/ (distance cPt data) (GetOffLen *dynNum *dynFac)))  ;; -- Mod 2.0 --
  221.                         
  222.                            (grdraw cPt data 3 1)

  223.                            (setq eLst (clean eLst))

  224.                            (if (and (< 0 (getvar "OSMODE") 16384)
  225.                                     (setq oPt (vl-remove-if (function null)
  226.                                                 (mapcar
  227.                                                   (function
  228.                                                     (lambda (x / o)
  229.                                                       (if (setq o (osnap data x))
  230.                                                         (list (distance data o) o x data)))) (get_osmode)))))
  231.                              
  232.                              (setq oPt (cdar (vl-sort oPt (function (lambda (a b) (< (car a) (car b)))))))
  233.                              (setq oPt nil))

  234.                            (and oPt (OsMark oPt))

  235.                            (foreach obj ObjLst (setq i -1 x 0.)
  236.                              (repeat *dynNum                     
  237.                                (setq eLst
  238.                                  (append eLst (cond ((DynOff_Sub obj
  239.                                                        (* (setq x (+ x (expt *dynFac (setq i (1+ i))))) off))) ((clean eLst)))))))
  240.                         
  241.                            (if (and eLst et (acet-sys-shift-down))
  242.                              (mapcar
  243.                                (function
  244.                                  (lambda (x) (vla-put-color x acBlue))) eLst)) ;; -- Mod 2.0 --

  245.                          t)

  246.                         (  (= code 25) nil)
  247.                         
  248.                         (  (and (= code 3) (listp data))

  249.                            (clean eLst)
  250.                         
  251.                            (setq *dynOff off)
  252.                            (setq cPt (vlax-curve-getClosestPointto (car entLst) data))
  253.                         
  254.                            (if (and (< 0 (getvar "OSMODE") 16384)
  255.                                     (setq oPt (vl-remove-if (function null)
  256.                                                 (mapcar
  257.                                                   (function
  258.                                                     (lambda (x / o)
  259.                                                       (if (setq o (osnap data x))
  260.                                                         (list (distance data o) o x data)))) (get_osmode)))))
  261.                              
  262.                              (setq oPt     (cdar (vl-sort oPt
  263.                                                    (function (lambda (a b) (< (car a) (car b))))))
  264.                                    
  265.                                    data    (osnap (caddr oPt) (cadr oPt))

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

  267.                                               (GetOffLen *dynNum *dynFac)))   ;; -- Mod 1.9 --
  268.                            
  269.                              (setq oPt nil))

  270.                            (foreach obj ObjLst (setq i -1 x 0.)
  271.                              (repeat *dynNum
  272.                                (setq eLst
  273.                                  (append eLst (cond ((DynOff_Sub obj
  274.                                                        (* (setq x (+ x (expt *dynFac (setq i (1+ i))))) *dynoff))) ((clean eLst))))))) nil)                  
  275.                         
  276.                         (  (= code 2)

  277.                            (cond (  (or (= 46 data) (< 47 data 58))
  278.                                     (setq oStr (strcat oStr (chr data)))
  279.                                     (princ (chr data)))

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

  281.                                     (while
  282.                                       (progn
  283.                                         (setq e1 (entsel "\nSelect First Object: "))

  284.                                         (cond (  (vl-consp e1)

  285.                                                  (if (wcmatch (cdr (assoc 0 (entget (car e1)))) "ARC,CIRCLE,ELLIPSE,*LINE")
  286.                                                    
  287.                                                    (while
  288.                                                      (progn
  289.                                                        (setq e2 (car (entsel "\nSelect Second Object: ")))

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

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

  293.                                                                     (setq p1 (vlax-curve-getClosestPointto (car e1) (cadr e1))
  294.                                                                           p2 (vlax-curve-getClosestPointto e2 p1))

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

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

  297.                                                                     (foreach obj ObjLst (setq i -1 x 0.)
  298.                                                                       (repeat *dynNum
  299.                                                                         (setq eLst
  300.                                                                           (append eLst

  301.                                                                             (cond (  (DynOff_Sub obj

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

  303.                                                                                   (  (clean eLst)))))))

  304.                                                                     (setq exFlag nil))

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

  306.                                                              (  (setq exFlag t) nil))))
  307.                                                    
  308.                                                    (princ "\nInvalid Object Selected.")))

  309.                                               (  (setq exFlag t) nil))))

  310.                                     exFlag)                                                                    

  311.                                  (  (vl-position data '(43 61))
  312.                                     (setq *dynNum (1+ *dynNum)))

  313.                                  (  (vl-position data '(68 100))
  314.                                     (setq *dynDel (not *dynDel))
  315.                                  
  316.                                     (princ (strcat "\nOriginal Objects "
  317.                                                    (if *dynDel "will" "will not") " be Deleted" (eval msg))))

  318.                                  (  (vl-position data '(78 110))
  319.                                     (initget 6)
  320.                                     (setq *dynNum
  321.                                           
  322.                                       (cond ((getint (strcat "\nSpecify Number of Offsets <" (itoa *dynNum) "> : ")))
  323.                                             
  324.                                             (*dynNum)))
  325.                                  
  326.                                     (princ (eval msg)))

  327.                                  (  (= data 6)
  328.                                     (cond (  (< 0 (getvar "OSMODE") 16384)
  329.                                              (setvar "OSMODE" (+ 16384 (getvar "OSMODE")))
  330.                                              (princ "\n<Osnap off>"))
  331.                                           
  332.                                           (t (setvar "OSMODE" (- (getvar "OSMODE") 16384))
  333.                                              (princ "\n<Osnap on>")))
  334.                                  
  335.                                     (princ (eval msg)))

  336.                                  (  (= data 9)

  337.                                     (setq dynmode

  338.                                       (cond (  (= 2 *dynMod)
  339.                                                (setq *dynMod 0) 1)

  340.                                             (  (nth (setq *dynMod (1+ *dynMod)) '(1 2 3))))))
  341.                                  
  342.                                  (  (vl-position data '(70 102))
  343.                                     (initget 6)
  344.                                     (setq *DynFac
  345.                                           
  346.                                       (cond ((getreal (strcat "\nSpecify Offset Factor <" (vl-princ-to-string *dynFac) "> : ")))
  347.                                             
  348.                                             (*dynFac)))

  349.                                     (princ (eval msg)))

  350.                                  (  (vl-position data '(83 115))
  351.                                     (Off_Settings dcfname (vlax-ename->vla-object (car EntLst)))
  352.                                  
  353.                                   t)                           

  354.                                  (  (= data 45)
  355.                                  
  356.                                     (cond (  (= 1 *dynNum)
  357.                                              (princ (strcat "\nMinimum Offset Number Reached." (eval msg))))
  358.                                           
  359.                                           (t (setq *dynNum (1- *dynNum)))))

  360.                                  (  (and (< 0 (strlen oStr)) (= data 8))
  361.                                  
  362.                                     (setq oStr (substr oStr 1 (1- (strlen oStr))))
  363.                                     (princ (vl-list->string '(8 32 8))))

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

  365.                                     (cond (  (zerop (strlen oStr))

  366.                                              (clean eLst)
  367.                                           
  368.                                              (foreach obj ObjLst (setq i -1 x 0.)
  369.                                                (repeat *dynNum
  370.                                                  (setq eLst
  371.                                                    (append eLst
  372.                                                            
  373.                                                      (cond (  (DynOff_Sub obj
  374.                                                                
  375.                                                                 (* (setq x (+ x (expt *dynFac (setq i (1+ i))))) *dynoff)))

  376.                                                            (  (clean eLst))))))) nil)                                    

  377.                                           (  (setq off (txt2num oStr))

  378.                                              (clean eLst)
  379.                                           
  380.                                              (setq *dynOff off)
  381.                                              (foreach obj ObjLst (setq i -1 x 0.)
  382.                                                (repeat *dynNum
  383.                                                  (setq eLst
  384.                                                    (append eLst

  385.                                                      (cond (  (DynOff_Sub obj

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

  387.                                                            (  (clean eLst))))))) nil)

  388.                                           (t (princ "\nInvalid Offset Entered.")
  389.                                              (princ (eval msg)) (setq oStr ""))))
  390.                                  (t )))
  391.                         (t ))))

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

  393.               (vla-EndUndoMark doc)))))
  394.   
  395.   (princ))

  396. (defun osMark (o / s)
  397.   (setq s (/ (getvar "VIEWSIZE") (cadr (getvar "SCREENSIZE")))
  398.         o (cons (trans (car o) 1 3) (cdr o)))

  399.   (grvecs (cdr (assoc (cadr o) osGrv))
  400.           (list (list s 0. 0. (caar o))
  401.                 (list 0. s 0. (cadar o))
  402.                 (list 0. 0. s 0.)
  403.                 (list 0. 0. 0. 1.))))

  404. (defun get_osmode nil ; by Evgeniy Elpanov
  405.   (mapcar
  406.     (function cdr)
  407.       (vl-remove-if
  408.         (function (lambda (x) (zerop (logand (getvar "OSMODE") (car x)))))
  409.         '((1    . "_end")
  410.           (2    . "_mid")
  411.           (4    . "_cen")
  412.           (8    . "_nod")
  413.           (16   . "_qua")
  414.           (32   . "_int")
  415.           (64   . "_ins")
  416.           (128  . "_per")
  417.           (256  . "_tan")
  418.           (512  . "_nea")
  419.           (2048 . "_app")))))

  420. (defun osmode-grvecs-lst (col ass / -ASS ASS COL)
  421.    ; By Evgeniy Elpanov (Modified by Lee Mac)
  422.   
  423.   (setq -ass (- ass))
  424.   
  425.   (list (list "_end"
  426.               col (list -ass -ass) (list -ass  ass)
  427.               col (list (1-  -ass) (1- -ass)) (list (1- -ass) (1+  ass))              
  428.               col (list -ass  ass) (list  ass  ass)
  429.               col (list (1-  -ass) (1+  ass)) (list (1+  ass) (1+  ass))              
  430.               col (list  ass  ass) (list  ass -ass)
  431.               col (list (1+   ass) (1+  ass)) (list (1+  ass) (1- -ass))              
  432.               col (list  ass -ass) (list -ass -ass)
  433.               col (list (1+   ass) (1- -ass)) (list (1- -ass) (1- -ass)))
  434.         
  435.         (list "_mid"
  436.               col (list -ass -ass) (list    0. ass)
  437.               col (list (1-  -ass) (1- -ass)) (list 0. (1+  ass))
  438.               col (list    0. ass) (list  ass -ass)
  439.               col (list 0. (1+  ass)) (list (1+  ass) (1- -ass))
  440.               col (list  ass -ass) (list -ass -ass)
  441.               col (list (1+   ass) (1- -ass)) (list (1- -ass) (1- -ass)))
  442.         
  443.         (list "_cen"
  444.               7   (list (* -ass 0.2) 0.)  (list (*  ass 0.2) 0.)
  445.               7   (list  0. (* -ass 0.2)) (list  0.  (*  ass 0.2))
  446.               col (list    -ass   0.)     (list (* -ass 0.86) (* ass  0.5))
  447.               col (list (* -ass 0.86) (* ass  0.5))  (list (* -ass  0.5) (* ass 0.86))
  448.               col (list (* -ass  0.5) (* ass 0.86))  (list 0. ass)
  449.               col (list 0. ass) (list (* ass 0.5)    (* ass 0.86))
  450.               col (list (* ass 0.5)   (* ass 0.86))  (list (* ass 0.86) (* ass 0.5))
  451.               col (list (* ass 0.86)  (* ass 0.5))   (list ass 0.)
  452.               col (list ass 0.) (list (* ass 0.86)   (* -ass 0.5))
  453.               col (list (* ass 0.86)  (* -ass 0.5))  (list (* ass 0.5) (* -ass 0.86))
  454.               col (list (* ass 0.5)   (* -ass 0.86)) (list 0. -ass)
  455.               col (list 0. -ass)(list (* -ass 0.5)   (* -ass 0.86))
  456.               col (list (* -ass 0.5)  (* -ass 0.86)) (list (* -ass 0.86) (* -ass 0.5))
  457.               col (list (* -ass 0.86) (* -ass 0.5))  (list -ass 0.))

  458.         (list "_nod"
  459.               col (list -ass -ass)    (list ass ass)
  460.               col (list -ass ass)     (list ass -ass)
  461.               col (list -ass 0.)      (list (* -ass 0.86) (* ass 0.5))
  462.               col (list (* -ass 0.86) (* ass 0.5))   (list (* -ass 0.5) (* ass 0.86))
  463.               col (list (* -ass 0.5)  (* ass 0.86))  (list 0. ass)
  464.               col (list 0. ass) (list (* ass 0.5)    (* ass 0.86))
  465.               col (list (* ass 0.5)   (* ass 0.86))  (list (* ass 0.86) (* ass 0.5))
  466.               col (list (* ass 0.86)  (* ass 0.5))   (list ass 0.)
  467.               col (list ass 0.) (list (* ass 0.86)   (* -ass 0.5))
  468.               col (list (* ass 0.86)  (* -ass 0.5))  (list (* ass 0.5) (* -ass 0.86))
  469.               col (list (* ass 0.5)   (* -ass 0.86)) (list 0. -ass)
  470.               col (list 0. -ass)(list (* -ass 0.5)   (* -ass 0.86))
  471.               col (list (* -ass 0.5)  (* -ass 0.86)) (list (* -ass 0.86) (* -ass 0.5))
  472.               col (list (* -ass 0.86) (* -ass 0.5))  (list -ass 0.))

  473.         (list "_qua"
  474.               col (list 0. -ass)   (list -ass 0.)
  475.               col (list 0. (1- -ass))   (list (1- -ass) 0.)
  476.               col (list -ass 0.)   (list 0. ass)
  477.               col (list (1- -ass) 0.)   (list 0. (1+ ass))
  478.               col (list 0. ass)    (list ass 0.)
  479.               col (list 0. (1+ ass))    (list (1+ ass) 0.)
  480.               col (list ass 0.)    (list 0. -ass)
  481.               col (list (1+ ass) 0.)    (list 0. (1- -ass)))

  482.         (list "_int"
  483.               col (list -ass -ass) (list ass ass)
  484.               col (list -ass (1+ -ass)) (list ass (1+ ass))
  485.               col (list (1+ -ass) -ass) (list (1+ ass) ass)
  486.               col (list -ass ass)  (list ass -ass)
  487.               col (list -ass (1+ ass))  (list ass (1+ -ass))
  488.               col (list (1+ -ass) ass)  (list (1+ ass) -ass))

  489.         (list "_ins"
  490.               col (list (* -ass 0.1) (* -ass 0.1)) (list -ass (* -ass 0.1))
  491.               col (list -ass (* -ass 0.1)) (list -ass ass)
  492.               col (list -ass ass) (list (* ass 0.1) ass)
  493.               col (list (* ass 0.1) ass)   (list (* ass 0.1) (* ass 0.1))
  494.               col (list (* ass 0.1) (* ass 0.1))   (list ass (* ass 0.1))
  495.               col (list ass (* ass 0.1))   (list ass -ass)
  496.               col (list ass -ass) (list (* -ass 0.1) -ass)
  497.               col (list (* -ass 0.1) -ass) (list (* -ass 0.1) (* -ass 0.1))
  498.               col (list (1- (* -ass 0.1)) (1- (* -ass 0.1))) (list (1- -ass) (1- (* -ass 0.1)))
  499.               col (list (1- -ass) (1- (* -ass 0.1))) (list (1- -ass) (1+ ass))
  500.               col (list (1- -ass) (1+ ass)) (list (1+ (* ass 0.1)) (1+ ass))
  501.               col (list (1+ (* ass 0.1)) (1+ ass)) (list (1+ (* ass 0.1)) (1+ (* ass 0.1)))
  502.               col (list (1+ (* ass 0.1)) (1+ (* ass 0.1))) (list (1+ ass) (1+ (* ass 0.1)))
  503.               col (list (1+ ass) (1+ (* ass 0.1)))   (list (1+ ass) (1- -ass))
  504.               col (list (1+ ass) (1- -ass)) (list (1- (* -ass 0.1)) (1- -ass))
  505.               col (list (1- (* -ass 0.1))   (1- -ass)) (list (1- (* -ass 0.1)) (1- (* -ass 0.1))))

  506.         (list "_tan"
  507.               col (list -ass ass) (list ass ass)
  508.               col (list (1- -ass) (1+ ass)) (list (1+ ass) (1+ ass))
  509.               col (list -ass 0.)  (list (* -ass 0.86) (* ass 0.5))
  510.               col (list (* -ass 0.86) (* ass 0.5)) (list (* -ass 0.5) (* ass 0.86))
  511.               col (list (* -ass 0.5) (* ass 0.86)) (list 0. ass)
  512.               col (list 0. ass) (list  (* ass 0.5) (* ass 0.86))
  513.               col (list (* ass 0.5)  (* ass 0.86)) (list (* ass 0.86) (* ass 0.5))
  514.               col (list (* ass 0.86)  (* ass 0.5)) (list ass 0.)
  515.               col (list ass 0.) (list (* ass 0.86) (* -ass 0.5))
  516.               col (list (* ass 0.86) (* -ass 0.5)) (list (* ass 0.5) (* -ass 0.86))
  517.               col (list (* ass 0.5) (* -ass 0.86)) (list 0. -ass)
  518.               col (list 0. -ass)(list (* -ass 0.5) (* -ass 0.86))
  519.               col (list (* -ass 0.5)(* -ass 0.86)) (list (* -ass 0.86) (* -ass 0.5))
  520.               col (list (* -ass 0.86)(* -ass 0.5)) (list -ass 0.))

  521.         (list "_per"
  522.               col (list -ass -ass) (list -ass ass)
  523.               col (list (1- -ass)  (1- -ass)) (list (1- -ass) (1+ ass))
  524.               col (list ass -ass)  (list -ass -ass)
  525.               col (list (1+ ass)   (1- -ass)) (list (1- -ass) (1- -ass))
  526.               col (list -ass 0.)   (list 0. 0.)
  527.               col (list -ass -1.)  (list 0. -1.)
  528.               col (list 0. 0.)     (list 0. -ass)
  529.               col (list -1. 0.)    (list -1. -ass))

  530.         (list "_nea"
  531.               col (list -ass -ass) (list ass ass)
  532.               col (list -ass ass)  (list ass ass)
  533.               col (list (1- -ass)  (1+ ass)) (list (1+ ass) (1+ ass))
  534.               col (list -ass ass)  (list ass -ass)
  535.               col (list ass -ass)  (list -ass -ass)
  536.               col (list (1+ ass) (1- -ass)) (list (1- -ass) (1- -ass)))

  537.         (list "_app"
  538.               col (list -ass -ass) (list ass ass)
  539.               col (list ass -ass)  (list -ass ass)
  540.               col (list -ass -ass) (list -ass ass)
  541.               col (list (1- -ass)  (1- -ass)) (list (1- -ass) (1+ ass))
  542.               col (list -ass ass)  (list ass ass)
  543.               col (list (1- -ass)  (1+ ass))  (list (1+ ass) (1+ ass))
  544.               col (list ass ass)   (list ass -ass)
  545.               col (list (1+ ass)   (1+ ass))  (list (1+ ass) (1- -ass))
  546.               col (list ass -ass)  (list -ass -ass)
  547.               col (list (1+ ass)   (1- -ass)) (list (1- -ass) (1- -ass)))))


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

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

  550.   (mapcar 'set '(*dyniCols *dynoCols *dyniCol *dynoCol  *dynilay
  551.                  *dynolay  *dynilin  *dynolin *dyniwgt  *dynowgt) *DynOffDefaults*)         
  552.   
  553.   (defun mklst (key lst)
  554.     (start_list key) (mapcar 'add_list lst) (end_list))

  555.   (defun img (key col)   
  556.     (start_image key)
  557.     (fill_image 0 0 (dimx_tile key) (dimy_tile key) col)
  558.     (end_image))

  559.   (setq doc  (cond (doc) ((vla-get-ActiveDocument
  560.                             (vlax-get-acad-object))))
  561.         lays (vla-get-layers doc))

  562.   (defun layCol (lay)
  563.     (vla-get-color (vla-item lays lay)))

  564.   (setq bsCol
  565.     (cond (  (vl-position (setq bsCol (vla-get-Color obj)) '(256 0))
  566.              (setq bsflag t)
  567.              (layCol (vla-get-Layer obj)))

  568.           (bsCol)))  

  569.   (defun mk_arc nil
  570.     (vec_arc (if (= "1" *dyniCols)
  571.                (if bsFlag
  572.                  (laycol
  573.                    (if (eq "*Source*" *dynilay)
  574.                      (vla-get-layer obj) *dynilay)) bsCol)
  575.                (if (= 256 *dyniCol)
  576.                  (if (eq "*Source*" *dynilay) bsCol
  577.                    (laycol *dynilay))
  578.                  *dyniCol))

  579.              bsCol

  580.              (if (= "1" *dynoCols)
  581.                (if bsFlag
  582.                  (laycol
  583.                    (if (eq "*Source*" *dynolay)
  584.                      (vla-get-layer obj) *dynolay)) bsCol)
  585.                (if (= 256 *dynoCol)
  586.                  (if (eq "*Source*" *dynolay) bsCol
  587.                    (laycol *dynolay))
  588.                  *dynoCol))))
  589.   
  590.   (cond (  (<= (setq dcTag (load_dialog fname)) 0)
  591.            (princ "\nDialog File not Found."))

  592.         (  (not (new_dialog "dsett" dcTag))
  593.            (princ "\nSettings Dialog could not be Loaded."))

  594.         (t
  595.            (vlax-for lay (vla-get-layers doc)
  596.              (setq lLay (cons (vla-get-Name lay) lLay)))
  597.            (setq lLay (cons "*Source*" (acad_strlsort lLay)))

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

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

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

  607.            (mapcar 'set_tile '("ilay" "olay" "ilin" "olin" "ilw" "olw")
  608.                    (mapcar 'itoa
  609.                            (mapcar 'vl-position
  610.                                    (list *dyniLay *dynoLay *dyniLin *dynoLin *dyniWgt *dynoWgt)
  611.                                    (list   lLay     lLay      lLin     lLin    lWgt     lWgt))))

  612.            (set_tile "icols" *dyniCols)
  613.            (set_tile "ocols" *dynoCols)

  614.            (set_tile "dtitle" dcTitle)
  615.          
  616.            (mode_tile "icol" (atoi (get_tile "icols")))
  617.            (mode_tile "ocol" (atoi (get_tile "ocols")))

  618.            (logo)
  619.            (mk_arc)
  620.            (mapcar 'img '("icol" "ocol") (list *dyniCol *dynoCol))

  621.            (action_tile "ilay"
  622.              (vl-prin1-to-string
  623.                (quote
  624.                  (progn
  625.                    (setq *dynilay (nth (atoi $value) lLay)) (mk_arc)))))

  626.            (action_tile "olay"
  627.              (vl-prin1-to-string
  628.                (quote
  629.                  (progn
  630.                    (setq *dynolay (nth (atoi $value) lLay)) (mk_arc)))))

  631.            (action_tile "ilin"
  632.              (vl-prin1-to-string
  633.                (quote
  634.                  (progn
  635.                    (setq *dyniLin (nth (atoi $value) lLin))))))

  636.            (action_tile "olin"
  637.              (vl-prin1-to-string
  638.                (quote
  639.                  (progn
  640.                    (setq *dynoLin (nth (atoi $value) lLin))))))

  641.            (action_tile "ilw"
  642.              (vl-prin1-to-string
  643.                (quote
  644.                  (progn
  645.                    (setq *dyniWgt (nth (atoi $value) lWgt))))))

  646.            (action_tile "olw"
  647.              (vl-prin1-to-string
  648.                (quote
  649.                  (progn
  650.                    (setq *dynoWgt (nth (atoi $value) lWgt))))))

  651.            (action_tile "icol"
  652.              (vl-prin1-to-string
  653.                (quote
  654.                  (progn
  655.                    (setq *dyniCol (cond ((acad_colordlg *dyniCol)) (*dyniCol)))
  656.                    (img "icol" *dyniCol)
  657.                    (mk_arc)))))
  658.          
  659.            (action_tile "ocol"
  660.              (vl-prin1-to-string
  661.                (quote
  662.                  (progn
  663.                    (setq *dynoCol (cond ((acad_colordlg *dynoCol)) (*dynoCol)))
  664.                    (img "ocol" *dynoCol)
  665.                    (mk_arc)))))

  666.            (action_tile "icols"
  667.              (vl-prin1-to-string
  668.                (quote
  669.                  (progn
  670.                    (mode_tile "icol" (atoi (setq *dyniCols $value)))
  671.                    (mk_arc)))))

  672.            (action_tile "ocols"
  673.              (vl-prin1-to-string
  674.                (quote
  675.                  (progn
  676.                    (mode_tile "ocol" (atoi (setq *dynoCols $value)))
  677.                    (mk_arc)))))
  678.                   
  679.            (action_tile "accept"
  680.              (vl-prin1-to-string
  681.                (quote
  682.                  (progn
  683.                    (setq *DynOffDefaults*
  684.                           (list *dyniCols *dynoCols *dyniCol  *dynoCol  *dynilay
  685.                                 *dynolay  *dynilin  *dynolin  *dyniwgt  *dynowgt))
  686.                    (done_dialog)))))
  687.                   
  688.            (action_tile "cancel" "(done_dialog)")

  689.            (start_dialog)
  690.            (unload_dialog dcTag))))


  691. (defun DC_Write (fname / wPath ofile)

  692.   (if (not (findfile fname))
  693.     (if (setq wPath (findfile "ACAD.PAT"))
  694.       (progn
  695.         (setq wPath (vl-filename-directory wPath))
  696.         (or (eq "\" (substr wPath (strlen wPath)))
  697.             (setq wPath (strcat wPath "\")))
  698.         
  699.         (setq ofile (open (strcat wPath fname) "w"))
  700.         
  701.         (foreach str
  702.                  
  703.           '(
  704.             "//-------------------=={ Dynamic Offset }==-------------------//"
  705.             "//                                                            //"
  706.             "//  DynOff.dcl for use in conjunction with DynOff.lsp         //"
  707.             "//------------------------------------------------------------//"
  708.             "//  Author: Lee Mac, Copyright ?2009 - [url=http://www.lee-mac.com]www.lee-mac.com[/url]       //"
  709.             "//------------------------------------------------------------//"
  710.             ""
  711.             "// Sub-Assembly Definitions"
  712.             ""
  713.             "pop : popup_list   { fixed_width = false; alignment = centered; }"
  714.             "col : image_button { alignment = centered; height = 1.5; width = 4.0;"
  715.             "                     fixed_width = true; fixed_height = true; color = 2; }"
  716.             ""
  717.             "// Main Dialog"
  718.             ""
  719.             "dsett : dialog { key = "dtitle";"
  720.             "  spacer;"
  721.             "  : row {"
  722.             "    : boxed_column { label = "Offset Preview"; fixed_width = false; "
  723.             "      : boxed_row { label = "Outer Colour"; fixed_width = true;"
  724.             "                    alignment = centered;"
  725.             "        spacer;"
  726.             "        : col  { key = "ocol"; }"
  727.             "        spacer;"
  728.             "        : toggle { key = "ocols"; label = "Source"; }"
  729.             "        spacer;"
  730.             "      } // boxed_row"
  731.             "      : image { key = "dimage"; alignment = centered;"
  732.             "                width = 24.64 ; fixed_width  = true;"
  733.             "                height = 11.39; fixed_height = true; color = -2; }"
  734.             "      : boxed_row { label = "Inner Colour"; fixed_width = true;"
  735.             "                    alignment = centered;"
  736.             "        spacer;"
  737.             "        : col  { key = "icol"; }"
  738.             "        spacer;"
  739.             "        : toggle { key = "icols"; label = "Source"; }"
  740.             "        spacer;"
  741.             "      } // boxed_row"
  742.             "    } // column"
  743.             "    : column { "
  744.             "      : boxed_column { label = "Outer Offset";"
  745.             "        : pop { label = "Layer:"; key = "olay"; }"
  746.             "        : pop { label = "Linetype:"; key = "olin"; }"
  747.             "        : pop { label = "Lineweight:"; key = "olw" ; }"
  748.             "        spacer;"
  749.             "      } // boxed_column"
  750.             "      spacer;"
  751.             "      : boxed_column { label = "Inner Offset";"
  752.             "        : pop { label = "Layer:"; key = "ilay"; }"
  753.             "        : pop { label = "Linetype:"; key = "ilin"; }"
  754.             "        : pop { label = "Lineweight:"; key = "ilw" ; }"
  755.             "        spacer;"
  756.             "      } // boxed_column"
  757.             "    } // column"
  758.             "  } // row"
  759.             "  spacer;"
  760.             "  : row {"
  761.             "    : spacer { width = 19.33; height = 3.18; }"
  762.             "    ok_cancel;"
  763.             "    spacer;"
  764.             "    : image { key = "logo" ; alignment = centered;"
  765.             "              width = 19.33; fixed_width  = true;"
  766.             "              height = 3.18; fixed_height = true; color = -15; }"
  767.             "  } // row"
  768.             "} // dialog"
  769.             ""
  770.             "//------------------------------------------------------------//"
  771.             "//                         End of File                        //"
  772.             "//------------------------------------------------------------//"
  773.             )

  774.           (write-line str ofile))
  775.         (close ofile)
  776.       t)
  777.   nil)
  778. t))

  779. (defun logo nil

  780.   (start_image "logo")

  781.   (mapcar 'vector_image
  782.          
  783.           '(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
  784.             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
  785.             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
  786.             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
  787.             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
  788.             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
  789.             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
  790.             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
  791.             88 86 86 94 93 92 92 92 92 92 92 93 113 113 112 111 109 108 107 105 109 111
  792.             112 113 113 113 96 94 93 93 93 93 93 94 95 96 97 98 99 101 102 104 105 107
  793.             108 104 103 101 100 100 99 99 98 98 98 98 98 99 100 102 103 104 101 99 98
  794.             96 94 105 107 108 109 110 112 113 114 114 114 112 111 110 108 107 105 103 102)

  795.           '(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
  796.             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
  797.             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
  798.             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
  799.             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
  800.             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
  801.             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
  802.             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
  803.             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
  804.             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)

  805.           '(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
  806.             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
  807.             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
  808.             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
  809.             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
  810.             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
  811.             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
  812.             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
  813.             92 92 93 93 113 112 111 109 108 107 105 104 111 112 113 113 113 113 94 93 93
  814.             93 93 93 94 95 96 97 98 99 101 102 104 105 107 108 109 103 101 100 100 99 99
  815.             98 98 98 98 98 99 100 102 103 104 105 99 98 96 94 96 107 108 109 110 112 113
  816.             114 114 114 112 111 110 108 107 105 103 102 101)

  817.           '(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
  818.             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
  819.             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
  820.             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
  821.             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
  822.             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
  823.             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
  824.             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
  825.             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
  826.             3 5 5 6 6 6 7 7 7 7 6 5 4 4 3 3 3 3 3 3)

  827.           '(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
  828.             14 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166
  829.             166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166
  830.             166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166
  831.             166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166
  832.             166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166
  833.             166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166
  834.             166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166
  835.             166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166
  836.             166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166
  837.             166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166
  838.             166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166
  839.             166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166
  840.             166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166
  841.             166 166 166 166))

  842.   (end_image))

  843. (defun vec_arc (iCol bCol oCol)

  844.   (start_image "dimage")

  845.   (mapcar 'vector_image

  846.           '(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)
  847.           '(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)
  848.           '(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)
  849.           '(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)

  850.           (list iCol iCol iCol iCol iCol iCol iCol iCol iCol iCol iCol iCol iCol iCol iCol
  851.                 iCol iCol iCol iCol iCol iCol iCol iCol iCol iCol iCol iCol iCol))

  852.   (mapcar 'vector_image

  853.           '(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
  854.             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
  855.             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)

  856.           '(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
  857.             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
  858.             88 85 82 117 114 111 107 104 101 97 94 91 88 85 82 146 143 139 135 132 128 125 121
  859.             146 143 139 135 132 128 125 121)

  860.           '(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
  861.             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
  862.             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)

  863.           '(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
  864.             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
  865.             85 82 80 114 111 107 104 101 97 94 91 88 85 82 80 143 139 135 132 128 125 121 117 143
  866.             139 135 132 128 125 121 117)

  867.           (list bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol
  868.                 bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol
  869.                 bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol
  870.                 bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol
  871.                 bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol bCol
  872.                 bCol bCol bCol bCol bCol))

  873.   (mapcar 'vector_image

  874.           '(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
  875.             146 146 146 146 145 144 144 143 142 141 139 138 137 135 133 131 129 127 125 123 120
  876.             118 115 112 109)

  877.           '(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
  878.             129 124 120 115 111 107 103 98 94 90 86 82 78 74 70 67 63 59 56 52 49)

  879.           '(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
  880.             146 146 145 144 144 143 142 141 139 138 137 135 133 131 129 127 125 123 120 118 115 112 109 106)

  881.           '(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
  882.             124 120 115 111 107 103 98 94 90 86 82 78 74 70 67 63 59 56 52 49 46)

  883.           (list oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol
  884.                 oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol
  885.                 oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol oCol
  886.                 oCol oCol oCol oCol oCol))

  887.   (end_image))


  888. (vl-load-com)
  889. (princ "\n:: DynOff.lsp | Version 2.1 | ?Lee Mac 2009 [url=http://www.lee-mac.com]www.lee-mac.com[/url] ::")
  890. (princ "\n:: Type "DynOff" to Invoke ::")
  891. (princ)

  892. ;;-------------------------------------------------------------------------------;;
  893. ;;                                 End of File                                   ;;
  894. ;;-------------------------------------------------------------------------------;;
"觉得好,就打赏"
    共1人打赏
发表于 2023-8-22 17:05:49 | 显示全部楼层
应该来个像系统偏移那样,输入命令以后直接可以输入数值然后点一条线,这样才最方便,省去往另一边偏移的步骤,这个并不能起到啥简化,感觉使用这个比用系统的手动还来得慢些。
 楼主| 发表于 2021-5-16 11:18:34 | 显示全部楼层
sunny_8848 发表于 2021-5-16 09:46
cad2010用不了,提示输入的字符串太长。楼主能否上传文件

把开头的  [code="lisp] 和结尾的 [/code] 删掉试试
 楼主| 发表于 2021-5-23 23:46:11 | 显示全部楼层
sunny_8848 发表于 2021-5-18 13:24
还是不行:错误: 参数类型错误: FILE nil



下载这个试试,如果都不行,估计你使用的插件与它有冲突

本帖子中包含更多资源

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

x
发表于 2021-5-14 17:47:19 | 显示全部楼层
不做个中文说明么?
发表于 2021-5-15 11:32:57 | 显示全部楼层
就是复制粘贴就完了
发表于 2021-5-15 14:26:03 | 显示全部楼层

RE: 发一个双向偏移 lsp

本帖最后由 G〆h 于 2021-5-15 14:27 编辑

补个视频教程,详见 http://www.lee-mac.com/programs.html

本帖子中包含更多资源

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

x
发表于 2021-5-16 09:46:09 | 显示全部楼层
cad2010用不了,提示输入的字符串太长。楼主能否上传文件
发表于 2021-5-18 13:24:04 | 显示全部楼层
还是不行:错误: 参数类型错误: FILE nil
发表于 2021-5-25 16:22:17 | 显示全部楼层
alexmai 发表于 2021-5-23 23:46
下载这个试试,如果都不行,估计你使用的插件与它有冲突

多谢帮忙,很好用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 04:43 , Processed in 0.229966 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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