明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: 自贡黄明儒

[讨论] ET中已知函数的整理

[复制链接]
 楼主| 发表于 2013-9-4 13:44 | 显示全部楼层
本帖最后由 自贡黄明儒 于 2013-10-26 14:00 编辑

  1. ;;特别字符处理(ACET-STR-ESC-WILDCARDS "#a@b");"`#a`@b"
  2. (defun ACET-STR-ESC-WILDCARDS (A / X LST)
  3.   (SETQ LST '("#" "@" "." "*" "?" "~" "[" "]" ","))
  4.   (foreach X LST
  5.     (SETQ A (ACET-STR-REPLACE X (STRCAT "`" X) A))
  6.   )
  7.   A
  8. )
  9. ;;(ACET-STR-REPLACE "B" "2" "ssABCsBs");"ssA2Cs2s"
  10. (defun ACET-STR-REPLACE1 (o n s)  
  11.   (XD::String:Replace (strcat "[" o "]") s n "I")
  12. )
  13. ;;(ACET-STR-TO-LIST "B" "ssABCsBs");("ssA" "Cs" "s")
  14. (defun ACET-STR-TO-LIST1 (d str)
  15.   (XD::String:RegExpS (strcat "[^" d "]+") str "I")
  16. )
  17. ;;(ACET-STR-WCMATCH "ssABCsBs" "*c*");T
  18. (defun ACET-STR-WCMATCH1 (str f)
  19.   (if (XD::String:RegExpS (strcat "[" f "]+") str "") T)
  20. )
  21. ;; 用正则表达式替换字符 by 梁雄啸.2007.7
  22. (defun XD::String:Replace (pat str nstr key / end)  
  23.   (vl-load-com)
  24.   (if (not *xxvbsexp)
  25.     (setq *xxvbsexp (vlax-get-or-create-object "VBScript.RegExp"))
  26.   )
  27.   (vlax-put *xxvbsexp 'Pattern pat)
  28.   (if (not key)(setq key ""))
  29.   (setq key (strcase key))
  30.   (setq keys '(("I"  "IgnoreCase")("G"  "Global")("M"  "Multiline")))
  31.   (mapcar '(lambda(x)
  32.              (if (wcmatch key (strcat "*" (car x) "*"))
  33.                (vlax-put *xxvbsexp (read(cadr x)) 0)
  34.                (vlax-put *xxvbsexp (read(cadr x)) -1)
  35.                ))
  36.           keys)
  37.   (vlax-invoke *xxvbsexp 'replace str nstr)
  38. )

  39. ;|
  40. ACET-STR-WCMATCH                        (EXRXSUBR)         
  41. ACET-STR-TO-LIST                        (SUBR)              
  42. ACET-STR-SPACE-TRIM                     (SUBR)              
  43. ACET-STR-REPLACE                        (EXRXSUBR)         
  44. ACET-STR-M-FIND                         (SUBR)              
  45. ACET-STR-LR-TRIM                        (SUBR)              
  46. ACET-STR-LIST-SELECT                    (SUBR)              
  47. ACET-STR-IS-PRINTABLE                   (SUBR)              
  48. ACET-STR-FORMAT                         (EXRXSUBR)         
  49. ACET-STR-FIND                           (EXRXSUBR)         
  50. ACET-STR-ESC-WILDCARDS                  (SUBR)              
  51. ACET-STR-EQUAL                          (EXRXSUBR)         
  52. ACET-STR-ENV-EXPAND                     (SUBR)              
  53. ACET-STR-COLLATE                        (EXRXSUBR)
  54. |;



  55. ;;限定角度在0~2pi之间
  56. (defun ACET-ANGLE-FORMAT (A / B)
  57.   (SETQ B (+ PI PI))
  58.   (while (< A 0)
  59.     (SETQ A (+ A B))
  60.   )
  61.   (while (>= A B)
  62.     (SETQ A (- A B))
  63.   )
  64.   (if (EQUAL A B 1.0e-008)
  65.     (SETQ A 0.0)
  66.   )
  67.   A
  68. )

  69. (defun ACET-SYS-LMOUSE-DOWN ()
  70.   (< (ACET-SYS-KEYSTATE 1) 0)
  71. )
  72. (defun ACET-SYS-CONTROL-DOWN ()
  73.   (< (ACET-SYS-KEYSTATE 17) 0)
  74. )
  75. (defun ACET-SYS-SHIFT-DOWN ()
  76.   (< (ACET-SYS-KEYSTATE 16) 0)
  77. )

  78. ;;取得用户坐标系
  79. ;;(ACET-UCS-GET (car (entsel)));((-1824.72 3183.16 0.0) (-0.389905 0.920855 0.0) (-0.920855 -0.389905 0.0))
  80. ;;(ACET-UCS-GET nil)世界坐标系
  81. (defun ACET-UCS-GET (NA / E1 ORG XDIR YDIR)
  82.   (if (and NA
  83.            (SETQ E1 (ENTGET NA ("*")))
  84.            (= "VIEWPORT" (CDR (ASSOC 0 E1)))
  85.            (= 1 (CDR (ASSOC 71 E1)))
  86.       )
  87.     (SETQ ORG  (CDR (ASSOC 110 E1))
  88.           XDIR (CDR (ASSOC 111 E1))
  89.           YDIR (CDR (ASSOC 112 E1))
  90.     )
  91.     (SETQ ORG  (GETVAR "ucsorg");当前坐标系原点
  92.           XDIR (GETVAR "ucsxdir");当前空间中当前视口的当前 UCS 的 X 方向
  93.           YDIR (GETVAR "ucsydir");当前空间中当前视口的当前 UCS 的 Y 方向
  94.     )
  95.   )
  96.   (LIST ORG XDIR YDIR)
  97. )

  98. ;;alert
  99. (defun ACET-ALERT (MSG)
  100.   (if (NOT (EQUAL 4 (LOGAND 4 (GETVAR "cmdactive"))))
  101.     (ALERT MSG)
  102.     (PRINC (STRCAT "\n" MSG))
  103.   )
  104.   (PRINC)
  105. )

  106. ;;表中第n项插入A
  107. ;;(ACET-LIST-INSERT-NTH 1 '(3 3 3 3) 2);(3 3 1 3 3)
  108. (defun ACET-LIST-INSERT-NTH (A LST N / LST2 J)
  109.   (SETQ J 0)
  110.   (repeat N
  111.     (SETQ LST2 (CONS (NTH J LST) LST2))
  112.     (SETQ J (+ J 1))
  113.   )
  114.   (SETQ LST2 (CONS A LST2))
  115.   (repeat (- (LENGTH LST) N)
  116.     (SETQ LST2 (CONS (NTH J LST) LST2))
  117.     (SETQ J (+ J 1))
  118.   )
  119.   (REVERSE LST2)
  120. )
  121. ;;图元列表增加默认值
  122. (defun ACET-ELIST-ADD-DEFAULTS (E1 / N)
  123.   (SETQ N (VL-POSITION (ASSOC 8 E1) E1))
  124.   (SETQ N (+ N 1))
  125.   (if (NOT (ASSOC 6 E1))
  126.     (SETQ E1 (ACET-LIST-INSERT-NTH (CONS 6 "BYLAYER") E1 N)
  127.           N  (+ N 1)
  128.     )
  129.   )
  130.   (if (NOT (ASSOC 39 E1))
  131.     (SETQ E1 (ACET-LIST-INSERT-NTH (CONS 39 0.0) E1 N)
  132.           N  (+ N 1)
  133.     )
  134.   )
  135.   (if (NOT (ASSOC 48 E1))
  136.     (SETQ E1 (ACET-LIST-INSERT-NTH (CONS 48 1.0) E1 N)
  137.           N  (+ N 1)
  138.     )
  139.   )
  140.   (if (NOT (ASSOC 62 E1))
  141.     (SETQ E1 (ACET-LIST-INSERT-NTH (CONS 62 256) E1 N)
  142.           N  (+ N 1)
  143.     )
  144.   )
  145.   (if (NOT (ASSOC 370 E1))
  146.     (SETQ E1 (ACET-LIST-INSERT-NTH (CONS 370 255) E1 N)
  147.           N  (+ N 1)
  148.     )
  149.   )
  150.   E1
  151. )

  152. ;;返回文件目录(ACET-FILENAME-DIRECTORY "C:\\Program Files\\DTIImain.DCL");"C:\\Program Files\\"
  153. (defun ACET-FILENAME-DIRECTORY (A / B)
  154.   (SETQ A (VL-FILENAME-DIRECTORY A))
  155.   (if (NOT A)
  156.     (SETQ A "")
  157.   )
  158.   (if (and (NOT (EQUAL A ""))
  159.            (SETQ B (SUBSTR A (STRLEN A) 1))
  160.            (NOT (EQUAL B "\\"))
  161.            (NOT (EQUAL B ":"))
  162.            (NOT (EQUAL B "/"))
  163.       )
  164.     (SETQ A (STRCAT A "\\"))
  165.   )
  166.   A
  167. )

  168. ;;进度显示
  169. (defun ACET-SPINNER ()
  170.   (if (NOT #SPIN)
  171.     (SETQ #SPIN "-")
  172.   )
  173.   (cond
  174.     ((= #SPIN "-") (SETQ #SPIN "\\"))
  175.     ((= #SPIN "\\") (SETQ #SPIN "|"))
  176.     ((= #SPIN "|") (SETQ #SPIN "/"))
  177.     (t (SETQ #SPIN "-"))
  178.   )
  179.   (PRINC (STRCAT (CHR 8) #SPIN))
  180. )
  181. ;;提取组码
  182. (defun ACET-DXF        (CODE E1)
  183.   (CDR (ASSOC CODE E1))
  184. )

  185. ;;布局时,取得一个视口对象(ACET-PSPACE-VIEWPORT-ENAME)
  186. (defun ACET-PSPACE-VIEWPORT-ENAME (/ SS)
  187.   (SETQ        SS
  188.          (SSGET        "_x"
  189.                 (LIST '(0 . "VIEWPORT")
  190.                       '(67 . 1)
  191.                       '(69 . 1)
  192.                       (CONS 410 (GETVAR "ctab"))
  193.                 )
  194.          )
  195.   )
  196.   (if SS
  197.     (SSNAME SS 0)
  198.   )  
  199. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-20 09:34 , Processed in 0.169189 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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