找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 451|回复: 4

[转贴]:Autonumb

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-7-30 20:41:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×

  1. ;;;CADALYST 03/05  Tip2018: autonumb.lsp   Automatic Numbering         (c) Scott Bestmeyer


  2.                                         ;AUTONUMB.LSP for release 15
  3.                                         ;Auto numbers text strings.
  4.                                         ;Written by: S. Restmeyer 3/01

  5. ;;;
  6. ;;;----------------------ERROR FUNCTION----------------------------
  7. ;;;
  8. (DEFUN ERR (S)                                ;if an error (such as CTRL-C)
  9.                                         ;occurs while this command is active...
  10.   (if (not (member s '("console break" "Function cancelled")))
  11.     (princ (strcat "\nError: " s))
  12.   )
  13.   (command "_.UNDO" "_E")                ;end any outstanding UNDO group
  14.   (setvar "cmdecho" cmd)                ;restore saved mode
  15.   (setq *error* olderr)
  16.   (princ)
  17. )
  18. ;;;---------------------- MAIN PROGRAM ----------------------------
  19. ;;;
  20. (defun C:DDNUMB        (/ CMD dcl_id1 olderr)
  21.   (setq        olderr        *error*
  22.         *error*        err
  23.   )
  24.   (SETQ CMD (GETVAR "CMDECHO"))
  25.   (command "_.UNDO" "_G")
  26.   (setvar "cmdecho" 0)
  27.   (defun set_replace ()
  28.     (cond
  29.       ((= (get_tile "do_replace") "0")
  30.        (set_tile "sort_type" "0")
  31.        (mode_tile "sort_type" 1)
  32.        (set_tile "start_no" " ")
  33.        (mode_tile "start_no" 1)
  34.        (set_tile "txt_inc" " ")
  35.        (mode_tile "txt_inc" 1)
  36.       )
  37.     )
  38.     (cond
  39.       ((= (get_tile "do_replace") "1")
  40.        (mode_tile "sort_type" 0)
  41.        (mode_tile "start_no" 0)
  42.        (mode_tile "txt_inc" 0)
  43.        (if sort_type
  44.          (set_tile "sort_type" sort_type)
  45.          (set_tile "sort_type" "0")
  46.        )
  47.        (if txt_inc
  48.          (set_tile "txt_inc" (rtos txt_inc 2 0))
  49.          (set_tile "txt_inc" "1")
  50.        )
  51.        (if start_no
  52.          (progn
  53.            (if lead_0
  54.              (progn
  55.                (setq start_no
  56.                       (strcat (substr lead_0
  57.                                       1
  58.                                       (- (strlen lead_0)
  59.                                          (strlen (rtos start_no 2 0))
  60.                                       )
  61.                               )
  62.                               (rtos start_no 2 0)
  63.                       )
  64.                )
  65.                (set_tile "start_no" start_no)
  66.              )
  67.              (set_tile "start_no" (rtos start_no 2 0))
  68.            )
  69.          )
  70.          (set_tile "start_no" "1")
  71.        )
  72.       )
  73.     )
  74.   )
  75.   (defun my_help ()
  76.     (setq file_name (findfile "autonumb.pdf"))
  77.     (startapp "acrobat.exe" (strcat """ file_name """))
  78.   )
  79.   (defun get_data ()
  80.     (setq suffix (get_tile "suffix"))
  81.     (setq prefix (get_tile "prefix"))
  82.     (setq start_no (get_tile "start_no"))
  83.     (if        (= (itoa (atoi start_no)) start_no)
  84.       (setq lead_0 nil)
  85.       (setq lead_0 start_no)
  86.     )
  87.     (setq start_no (atoi start_no))
  88.     (setq txt_inc (atoi (get_tile "txt_inc")))
  89.     (setq sort_type (get_tile "sort_type"))
  90.     (setq do_replace (get_tile "do_replace"))
  91.   )
  92. ;;;-------------------------------------------------------------------
  93. ;;;-----------THIS SECTION RETRIEVES USER INPUT INFORMATION------------
  94. ;;;
  95.   (setq dcl_id1 (load_dialog "autonumb.dcl"))
  96.   (if (not (new_dialog "ddstart" dcl_id1))
  97.     (exit)
  98.   )
  99.   (setq        sort_list '("Selection"              "Top-Bottom"
  100.                     "Left-Right"      "Bottom-Top"
  101.                     "Right-Left"
  102.                    )
  103.   )
  104.   (start_list "sort_type")
  105.   (mapcar 'add_list sort_list)
  106.   (end_list)
  107.   (if sort_type
  108.     (set_tile "sort_type" sort_type)
  109.     (set_tile "sort_type" "0")
  110.   )
  111.   (if prefix
  112.     (set_tile "prefix" prefix)
  113.   )
  114.   (if suffix
  115.     (set_tile "suffix" suffix)
  116.   )
  117.   (if start_no
  118.     (progn
  119.       (if lead_0
  120.         (progn
  121.           (setq
  122.             start_no (strcat (substr lead_0
  123.                                      1
  124.                                      (-        (strlen lead_0)
  125.                                         (strlen (rtos start_no 2 0))
  126.                                      )
  127.                              )
  128.                              (rtos start_no 2 0)
  129.                      )
  130.           )
  131.           (set_tile "start_no" start_no)
  132.         )
  133.         (set_tile "start_no" (rtos start_no 2 0))
  134.       )
  135.     )
  136.     (set_tile "start_no" "1")
  137.   )
  138.   (if txt_inc
  139.     (set_tile "txt_inc" (rtos txt_inc 2 0))
  140.     (set_tile "txt_inc" "1")
  141.   )
  142.   (action_tile "do_replace" "(set_replace)")
  143.   (action_tile "numb_hlp" "(my_help)")
  144.   (action_tile
  145.     "accept"
  146.     "(setq start_ok T)(get_data)(done_dialog 1)"
  147.   )
  148.   (action_tile "cancel" "(setq start_ok nil)(done_dialog 0)")
  149.   (start_dialog)
  150.   (unload_dialog dcl_id1)
  151. ;;;-------------------------------------------------------------------
  152. ;;;---------------THIS SECTION MODIFIES SELECTED TEXT-----------------
  153. ;;;
  154.   (defun get_txt (/ sset sset1 sset2 sset3 test num llen temp old)
  155.     (setq sset (ssget '((0 . "TEXT"))))
  156.     (setq num 0)
  157.     (if        (= do_replace "1")
  158.       (progn
  159.         (cond
  160.           ((= sort_type "0")
  161.            (while (< num (sslength sset))
  162.              (setq temp (entget (ssname sset num)))
  163.              (setq old (assoc 1 temp))
  164.              (if lead_0
  165.                (setq start_no
  166.                       (strcat (substr lead_0
  167.                                       1
  168.                                       (- (strlen lead_0)
  169.                                          (strlen (rtos start_no 2 0))
  170.                                       )
  171.                               )
  172.                               (rtos start_no 2 0)
  173.                       )
  174.                )
  175.                (setq start_no (rtos start_no 2 0))
  176.              )
  177.              (setq new (cons 1 (strcat prefix start_no suffix)))
  178.              (setq temp (subst new old temp))
  179.              (entmod temp)
  180.              (setq start_no (atoi start_no))
  181.              (setq start_no (+ start_no txt_inc))
  182.              (setq num (+ num 1))
  183.            )
  184.           )
  185.           ((= sort_type "1")
  186.            (setq temp (caddr (assoc 10 (entget (ssname sset num)))))
  187.            (setq sset1 (list temp))
  188.            (setq num (+ num 1))
  189.            (while (< num (sslength sset))
  190.              (setq temp (caddr (assoc 10 (entget (ssname sset num)))))
  191.              (setq sset1 (append sset1 (list temp)))
  192.              (setq num (+ num 1))
  193.            )
  194.            (setq sset2 (list ""))
  195.            (while (< (- (length sset2) 1) (sslength sset))
  196.              (setq temp (apply 'max sset1))
  197.              (setq sset2 (append sset2 (list temp)))
  198.              (setq sset3 (list ""))
  199.              (setq num (- (length sset1) 1))
  200.              (while (> num -1)
  201.                (setq test (nth num sset1))
  202.                (if (not (member test sset2))
  203.                  (setq sset3 (append sset3 (list test)))
  204.                )
  205.                (setq num (- num 1))
  206.              )
  207.              (setq sset1 (cdr sset3))
  208.            )
  209.            (setq sset2 (cdr sset2))
  210.            (setq llen 0)
  211.            (while (< llen (length sset2))
  212.              (setq test (nth llen sset2))
  213.              (setq num 0)
  214.              (while
  215.                (not
  216.                  (= (caddr (assoc 10 (entget (ssname sset num)))) test)
  217.                )
  218.                 (setq num (+ num 1))
  219.              )
  220.              (setq temp (entget (ssname sset num)))
  221.              (setq old (assoc 1 temp))
  222.              (if lead_0
  223.                (setq start_no
  224.                       (strcat (substr lead_0
  225.                                       1
  226.                                       (- (strlen lead_0)
  227.                                          (strlen (rtos start_no 2 0))
  228.                                       )
  229.                               )
  230.                               (rtos start_no 2 0)
  231.                       )
  232.                )
  233.                (setq start_no (rtos start_no 2 0))
  234.              )
  235.              (setq new (cons 1 (strcat prefix start_no suffix)))
  236.              (setq temp (subst new old temp))
  237.              (entmod temp)
  238.              (setq start_no (atoi start_no))
  239.              (setq start_no (+ start_no txt_inc))
  240.              (setq llen (+ llen 1))
  241.            )
  242.           )
  243.           ((= sort_type "2")
  244.            (setq temp (cadr (assoc 10 (entget (ssname sset num)))))
  245.            (setq sset1 (list temp))
  246.            (setq num (+ num 1))
  247.            (while (< num (sslength sset))
  248.              (setq temp (cadr (assoc 10 (entget (ssname sset num)))))
  249.              (setq sset1 (append sset1 (list temp)))
  250.              (setq num (+ num 1))
  251.            )
  252.            (setq sset2 (list ""))
  253.            (while (< (- (length sset2) 1) (sslength sset))
  254.              (setq temp (apply 'max sset1))
  255.              (setq sset2 (append sset2 (list temp)))
  256.              (setq sset3 (list ""))
  257.              (setq num (- (length sset1) 1))
  258.              (while (> num -1)
  259.                (setq test (nth num sset1))
  260.                (if (not (member test sset2))
  261.                  (setq sset3 (append sset3 (list test)))
  262.                )
  263.                (setq num (- num 1))
  264.              )
  265.              (setq sset1 (cdr sset3))
  266.            )
  267.            (setq sset2 (cdr sset2))
  268.            (setq llen (- (length sset2) 1))
  269.            (while (> llen -1)
  270.              (setq test (nth llen sset2))
  271.              (setq num 0)
  272.              (while
  273.                (not (= (cadr (assoc 10 (entget (ssname sset num)))) test)
  274.                )
  275.                 (setq num (+ num 1))
  276.              )
  277.              (setq temp (entget (ssname sset num)))
  278.              (setq old (assoc 1 temp))
  279.              (if lead_0
  280.                (setq start_no
  281.                       (strcat (substr lead_0
  282.                                       1
  283.                                       (- (strlen lead_0)
  284.                                          (strlen (rtos start_no 2 0))
  285.                                       )
  286.                               )
  287.                               (rtos start_no 2 0)
  288.                       )
  289.                )
  290.                (setq start_no (rtos start_no 2 0))
  291.              )
  292.              (setq new (cons 1 (strcat prefix start_no suffix)))
  293.              (setq temp (subst new old temp))
  294.              (entmod temp)
  295.              (setq start_no (atoi start_no))
  296.              (setq start_no (+ start_no txt_inc))
  297.              (setq llen (- llen 1))
  298.            )
  299.           )
  300.           ((= sort_type "3")
  301.            (setq temp (caddr (assoc 10 (entget (ssname sset num)))))
  302.            (setq sset1 (list temp))
  303.            (setq num (+ num 1))
  304.            (while (< num (sslength sset))
  305.              (setq temp (caddr (assoc 10 (entget (ssname sset num)))))
  306.              (setq sset1 (append sset1 (list temp)))
  307.              (setq num (+ num 1))
  308.            )
  309.            (setq sset2 (list ""))
  310.            (while (< (- (length sset2) 1) (sslength sset))
  311.              (setq temp (apply 'max sset1))
  312.              (setq sset2 (append sset2 (list temp)))
  313.              (setq sset3 (list ""))
  314.              (setq num (- (length sset1) 1))
  315.              (while (> num -1)
  316.                (setq test (nth num sset1))
  317.                (if (not (member test sset2))
  318.                  (setq sset3 (append sset3 (list test)))
  319.                )
  320.                (setq num (- num 1))
  321.              )
  322.              (setq sset1 (cdr sset3))
  323.            )
  324.            (setq sset2 (cdr sset2))
  325.            (setq llen (- (length sset2) 1))
  326.            (while (> llen -1)
  327.              (setq test (nth llen sset2))
  328.              (setq num 0)
  329.              (while
  330.                (not
  331.                  (= (caddr (assoc 10 (entget (ssname sset num)))) test)
  332.                )
  333.                 (setq num (+ num 1))
  334.              )
  335.              (setq temp (entget (ssname sset num)))
  336.              (setq old (assoc 1 temp))
  337.              (if lead_0
  338.                (setq start_no
  339.                       (strcat (substr lead_0
  340.                                       1
  341.                                       (- (strlen lead_0)
  342.                                          (strlen (rtos start_no 2 0))
  343.                                       )
  344.                               )
  345.                               (rtos start_no 2 0)
  346.                       )
  347.                )
  348.                (setq start_no (rtos start_no 2 0))
  349.              )
  350.              (setq new (cons 1 (strcat prefix start_no suffix)))
  351.              (setq temp (subst new old temp))
  352.              (entmod temp)
  353.              (setq start_no (atoi start_no))
  354.              (setq start_no (+ start_no txt_inc))
  355.              (setq llen (- llen 1))
  356.            )
  357.           )
  358.           ((= sort_type "4")
  359.            (setq temp (cadr (assoc 10 (entget (ssname sset num)))))
  360.            (setq sset1 (list temp))
  361.            (setq num (+ num 1))
  362.            (while (< num (sslength sset))
  363.              (setq temp (cadr (assoc 10 (entget (ssname sset num)))))
  364.              (setq sset1 (append sset1 (list temp)))
  365.              (setq num (+ num 1))
  366.            )
  367.            (setq sset2 (list ""))
  368.            (while (< (- (length sset2) 1) (sslength sset))
  369.              (setq temp (apply 'max sset1))
  370.              (setq sset2 (append sset2 (list temp)))
  371.              (setq sset3 (list ""))
  372.              (setq num (- (length sset1) 1))
  373.              (while (> num -1)
  374.                (setq test (nth num sset1))
  375.                (if (not (member test sset2))
  376.                  (setq sset3 (append sset3 (list test)))
  377.                )
  378.                (setq num (- num 1))
  379.              )
  380.              (setq sset1 (cdr sset3))
  381.            )
  382.            (setq sset2 (cdr sset2))
  383.            (setq llen 0)
  384.            (while (< llen (length sset2))
  385.              (setq test (nth llen sset2))
  386.              (setq num 0)
  387.              (while
  388.                (not (= (cadr (assoc 10 (entget (ssname sset num)))) test)
  389.                )
  390.                 (setq num (+ num 1))
  391.              )
  392.              (setq temp (entget (ssname sset num)))
  393.              (setq old (assoc 1 temp))
  394.              (if lead_0
  395.                (setq start_no
  396.                       (strcat (substr lead_0
  397.                                       1
  398.                                       (- (strlen lead_0)
  399.                                          (strlen (rtos start_no 2 0))
  400.                                       )
  401.                               )
  402.                               (rtos start_no 2 0)
  403.                       )
  404.                )
  405.                (setq start_no (rtos start_no 2 0))
  406.              )
  407.              (setq new (cons 1 (strcat prefix start_no suffix)))
  408.              (setq temp (subst new old temp))
  409.              (entmod temp)
  410.              (setq start_no (atoi start_no))
  411.              (setq start_no (+ start_no txt_inc))
  412.              (setq llen (+ llen 1))
  413.            )
  414.           )
  415.         )
  416.       )
  417.       (progn
  418.         (setq start_no nil)
  419.         (setq txt_inc nil)
  420.         (while (< num (sslength sset))
  421.           (setq temp (entget (ssname sset num)))
  422.           (setq old (assoc 1 temp))
  423.           (if lead_0
  424.             (setq
  425.               start_no (strcat (substr lead_0
  426.                                        1
  427.                                        (- (strlen lead_0)
  428.                                           (strlen (rtos start_no 2 0))
  429.                                        )
  430.                                )
  431.                                (rtos start_no 2 0)
  432.                        )
  433.             )
  434.             (setq start_no (rtos start_no 2 0))
  435.           )
  436.           (setq new (cons 1 (strcat prefix start_no suffix)))
  437.           (setq temp (subst new old temp))
  438.           (entmod temp)
  439.           (setq start_no (atoi start_no))
  440.           (setq num (+ num 1))
  441.         )
  442.       )
  443.     )
  444.   )
  445.   (if start_ok
  446.     (get_txt)
  447.   )
  448.   (setq *error* olderr)
  449.   (setvar "cmdecho" cmd)
  450. )

DCL

  1. //----------------------------------------------------------------------------
  2. //
  3. // Corresponding dialogue for DDNUMB.LSP
  4. //
  5. //----------------------------------------------------------------------------

  6. //dcl_settings : default_dcl_settings { audit_level = 3; }


  7. ddstart : dialog {
  8.      label = "Auto Number";
  9.         initial_focus = "prefix";
  10.                 : row {
  11.                 : boxed_column {
  12.                         fixed_width = true;
  13.                         label = "&Prefix";
  14.                                 : edit_box {
  15.                                         key = "prefix";
  16.                                         mnemonic = "P";
  17.                                         fixed_width = true;
  18.                                            }
  19.                                 }
  20.                 : boxed_column {
  21.                         fixed_width = true;
  22.                         label = "Start &No";
  23.                                 : edit_box {
  24.                                         key = "start_no";
  25.                                         mnemonic = "N";
  26.                                         fixed_width = true;
  27.                                            }
  28.                                 }
  29.                 : boxed_column {
  30.                         fixed_width = true;
  31.                         label = "&Suffix";
  32.                                 : edit_box {
  33.                                         key = "suffix";
  34.                                         mnemonic = "S";
  35.                                         fixed_width = true;
  36.                                            }
  37.                                 }
  38.                         }
  39.         : row {
  40.                 : boxed_column {
  41.                         fixed_width = true;
  42.                         label = "&Increment";
  43.                                 : edit_box {
  44.                                         key = "txt_inc";
  45.                                         mnemonic = "I";
  46.                                         fixed_width = true;
  47.                                            }
  48.                                 }
  49.                 : boxed_column {
  50.                         fixed_width = true;
  51.                         label = "Sort &By";
  52.                                 : popup_list {
  53.                                         key = "sort_type";
  54.                                         width = 13;
  55.                                         fixed_width = true;
  56.                                         }
  57.                                 }
  58.                 : toggle {
  59.                         label = "Replace";
  60.                         key = "do_replace";
  61.                         value = 1;
  62.                         }
  63.                 }
  64.                 spacer_1;
  65.                 : row {
  66.         ok_cancel;
  67.                         : button {
  68.                                 key = "numb_hlp";
  69.                                 label = "Help";
  70.                                 mnemonic = "H";
  71.                                 }
  72.                         }
  73.                 }
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2005-7-30 20:46:17 | 显示全部楼层
dcl
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2005-7-30 21:49:26 | 显示全部楼层
最初由 chdxllll 发布
[B]有些什么功能,主要可以用在那方面?介绍一下 [/B]

学会自己看,我也是看到后觉得有用就贴上来,你可以搜索以前的关于自动编号相关帖子。
说明以上程序未经测试,只是转贴。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-8-15 21:24:29 | 显示全部楼层
很好用啊,不过那个replace选项什么意思?不选就出错
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2005-8-16 10:14:27 | 显示全部楼层
最初由 贱人 发布
[B]很好用啊,不过那个replace选项什么意思?不选就出错 [/B]

程序中有错误,看了下程序,应该是 ET 中自动编号的DCL版本,Replace 取消作者的意思可能是加前后缀,这个就和ET中的不同了。按这个意思我编译了个文件,DCL已汉化。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-29 01:20 , Processed in 0.197754 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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