明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 436|回复: 5

[经验] 快速制作并加载线型

[复制链接]
发表于 2024-6-15 21:27 | 显示全部楼层 |阅读模式
本帖最后由 dcl1214 于 2024-6-15 21:52 编辑

  1. (DEFUN $xian-xing-zi-ding-yi$        (lin-path          LIN-NAMES
  2.                                  /                  $jia-zai-xian-xing$
  3.                                  $make-lin$          $write-lin$
  4.                                 )
  5.     ;($xian-xing-zi-ding-yi$ nil(list "abc" "123" "秦始皇"))
  6.     (defun $jia-zai-xian-xing$ (lin-path xxm / LinPath)
  7.                                         ;这里的线型是加载单线型  
  8.       (if xxm
  9.         (if (tblobjname "LTYPE" xxm)
  10.           ()
  11.           (progn
  12.             (or        (and lin-path (setq linpath (findfile lin-path)))
  13.                 (setq linpath (findfile "zx.lin"))
  14.             )
  15.             (if
  16.               (not
  17.                 (vl-catch-all-error-p
  18.                   (vl-catch-all-apply
  19.                     'vla-load
  20.                     (list
  21.                       (vla-get-Linetypes
  22.                         (vla-get-ActiveDocument (vlax-get-acad-object))
  23.                       )
  24.                       xxm
  25.                       (vl-catch-all-apply 'findfile (LIST LinPath))
  26.                     )
  27.                   )
  28.                 )
  29.               )
  30.                (tblobjname "LTYPE" xxm)
  31.             )
  32.             (IF        (NOT (tblobjname "LTYPE" xxm))
  33.               (PROGN
  34.                 (if (= (GETVAR 'PRODUCT) "ZWCAD")
  35.                   (setq linpath (FINDFILE "zwcadiso.lin"))
  36.                   (setq linpath (FINDFILE "acadiso.lin"))
  37.                 )
  38.                 (if
  39.                   (not
  40.                     (vl-catch-all-error-p
  41.                       (vl-catch-all-apply
  42.                         'vla-load
  43.                         (list
  44.                           (vla-get-Linetypes
  45.                             (vla-get-ActiveDocument
  46.                               (vlax-get-acad-object)
  47.                             )
  48.                           )
  49.                           xxm
  50.                           (findfile LinPath)
  51.                         )
  52.                       )
  53.                     )
  54.                   )
  55.                    (tblobjname "LTYPE" xxm)
  56.                 )
  57.               )
  58.             )
  59.           )
  60.         )
  61.         (print "$jia-zai-xian-xing$  遇到空值")
  62.       )
  63.       (tblobjname "LTYPE" xxm)
  64.     )
  65.     (defun $make-lin$ (str / cadrlst carlst L LIN-STR lst relst strs h)
  66.       (vl-catch-all-apply
  67.         'vla-put-Height
  68.         (list
  69.           (vla-item
  70.             (vla-get-TextStyles
  71.               (vla-get-ActiveDocument (vlax-get-acad-object))
  72.             )
  73.             "Standard"
  74.           )
  75.           0.0
  76.         )
  77.       )
  78.       (setq h 2.0)
  79.       (setq lst (vl-string->list str))
  80.       (setq L (LENGTH LST))
  81.       (if (AND str)
  82.         (progn
  83.           (SETQ L (* L h))
  84.           (SETQ LIN-STR (STRCAT "*" STR))
  85.           (SETQ LIN-STR (STRCAT LIN-STR "\n"))
  86.           (SETQ LIN-STR (STRCAT LIN-STR "A,"))
  87.           (SETQ
  88.             LIN-STR (STRCAT LIN-STR (VL-PRINC-TO-STRING (* L h)))
  89.           )
  90.           (SETQ LIN-STR (STRCAT LIN-STR ",-0.5,["))
  91.           (SETQ LIN-STR (STRCAT LIN-STR (VL-PRIN1-TO-STRING STR)))
  92.           (SETQ
  93.             LIN-STR
  94.              (STRCAT LIN-STR
  95.                      ",STANDARD,S="
  96.                      (VL-PRIN1-TO-STRING h)
  97.                      ",R=0.0,X=0.0,Y=-"
  98.                      (VL-PRIN1-TO-STRING (* h 0.45))
  99.                      "],"
  100.              )
  101.           )
  102.           (SETQ
  103.             LIN-STR
  104.              (STRCAT
  105.                LIN-STR
  106.                (strcat "-" (VL-PRINC-TO-STRING (- L (* (LENGTH LST)h 0.25))))
  107.              )
  108.           )
  109.         )
  110.       )
  111.       LIN-STR
  112.     )   
  113.     (defun $write-lin$ (lin-path str / f)
  114.       (if (and lin-path (SETQ lin-path (findfile lin-path)))
  115.         ()
  116.         (PROGN
  117.           (SETQ        F
  118.                  (open (SETQ lin-path (strcat (getvar 'dwgprefix) "lin.lin"))
  119.                        "W"
  120.                  )
  121.           )
  122.           (IF F
  123.             ()
  124.             (SETQ lin-path NIL)
  125.           )
  126.           (AND F (CLOSE F))
  127.           (SETQ F NIL)
  128.         )
  129.       )
  130.       (and lin-path (setq f (open lin-path "a")))
  131.       (and str f (write-line str f))
  132.       (and f (close f))
  133.       (IF F
  134.         lin-path
  135.       )
  136.     )
  137.    ;(if (FINDFILE "LIN.lin")(vl-file-delete(FINDFILE "LIN.lin")))
  138.     (if        lin-path
  139.       ()
  140.       (setq lin-path (findfile "LIN.lin"))
  141.     )
  142.     (setq LIN-NAMES (vl-remove nil LIN-NAMES))
  143.     (MAPCAR
  144.       (FUNCTION
  145.         (LAMBDA        (LIN-NAME)
  146.           (IF ($jia-zai-xian-xing$ lin-path LIN-NAME)
  147.             ()
  148.             (PROGN
  149.               ($jia-zai-xian-xing$
  150.                 ($write-lin$ lin-path ($make-lin$ LIN-NAME))
  151.                 LIN-NAME
  152.               )
  153.             )
  154.           )
  155.         )
  156.       )
  157.       LIN-NAMES
  158.     )
  159.   )


"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-6-15 22:25 | 显示全部楼层
感谢大佬的无私奉献
发表于 2024-6-15 22:43 | 显示全部楼层
这是一个完整的lisp吗
发表于 2024-6-17 08:32 | 显示全部楼层
感谢大佬的无私奉献
发表于 2024-6-18 08:12 | 显示全部楼层
收下了,谢谢
发表于 2024-6-18 17:19 | 显示全部楼层
厉害厉害,学到了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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