乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 44|回复: 1

[编程交流] 你能帮我提高我的英语水平吗

[复制链接]

3

主题

9

帖子

6

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 20:23:21 | 显示全部楼层 |阅读模式
你好
我制作了一个lisp,它通过创建一个块来创建快照,并删除不需要的元素。
他工作得很好,但我希望在任何情况下都能有所改进。
如果可能的话,添加一个进度条。
谢谢你的打扮。
  1. (defun c:fdp (/ doc dictcoll dictlst mspcoll dictcoll contour ss lst ssall bbox file)
  2.   (vl-load-com)
  3. ;;;;;; create undo mark
  4.     (setq Doc (vla-get-ActiveDocument (vlax-get-Acad-Object)))
  5.     (vla-EndUndoMark Doc)
  6.     (vla-StartUndoMark Doc)
  7. ;;;;;; purge shx
  8. (vl-load-com)
  9. (vlax-for item
  10.         (vla-get-textstyles
  11.           (vla-get-ActiveDocument (vlax-get-acad-object))
  12.         )
  13.    (if
  14.      (not
  15.    (vl-filename-extension (setq fname (vla-get-fontfile item)))
  16.      )
  17.       (setq fname (strcat fname ".shx"))
  18.    )
  19.    (cond ((findfile fname) nil)
  20.      ((findfile (strcat (getenv "WINDIR") "\\FONTS\" fname))
  21.       nil
  22.      )
  23.      (t
  24.       (vla-put-fontfile item "ltypeshp.shx")
  25.      )
  26.    )
  27. )
  28. ;;;;;;;; clean up dict
  29. (setq dictcoll (vla-get-dictionaries (vla-get-activedocument (vlax-get-acad-object))))
  30. (vlax-for di dictcoll
  31. (setq dictlst (cons (vl-catch-all-apply 'vla-get-name (list di)) dictlst))
  32. )
  33. (setq dictlst (reverse dictlst))
  34. (princ dictlst)
  35. (textscr)
  36. (princ)
  37. ;;;;;; detach all xref
  38. (vl-load-com)
  39. (vl-cmdf "_.-xref" "D" "*")
  40. (vl-cmdf "_.-image" "D" "*")
  41. (setq mspcoll (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
  42. (vlax-for ent mspcoll
  43. (if
  44. (or
  45. (eq (vl-catch-all-apply 'vla-get-objectname (list ent)) "AcDbDwfReference")
  46. (eq (vl-catch-all-apply 'vla-get-objectname (list ent)) "AcDbPdfReference")
  47. (eq (vl-catch-all-apply 'vla-get-objectname (list ent)) "AcDbDgnReference")
  48. (eq (vl-catch-all-apply 'vla-get-objectname (list ent)) "AcDbOle2Frame")
  49. )
  50. (vla-delete ent)
  51. )
  52. )
  53. (setq dictcoll (vla-get-dictionaries (vla-get-activedocument (vlax-get-acad-object))))
  54. (vlax-for di dictcoll
  55. (if
  56. (or
  57. (eq (vl-catch-all-apply 'vla-get-name (list di)) "ACAD_IMAGE_DICT")
  58. (eq (vl-catch-all-apply 'vla-get-name (list di)) "ACAD_PDFDEFINITIONS")
  59. (eq (vl-catch-all-apply 'vla-get-name (list di)) "ACAD_DGNDEFINITIONS")
  60. (eq (vl-catch-all-apply 'vla-get-name (list di)) "ACAD_DWFDEFINITIONS")
  61. )
  62. (progn
  63. (vlax-for d di
  64. (vla-delete d)
  65. )
  66. (vla-delete di)
  67. )
  68. )
  69. )
  70. ;;;;;; purge all
  71. (command "_purge" "_all" "*" "n")
  72. ;;;;;; zoom etendue
  73. (command "zoom" "et")
  74. ;;;;;; create text of layer
  75. (if
  76. (and
  77. (setq pt (getpoint "\nChoisr un point d'insertion "))
  78. (setq pt (trans pt 1 0) i -1
  79. sp (* 1.5 (getvar 'TEXTSIZE))
  80. )
  81. )
  82. (while (setq df (tblnext "LAYER" (null df)))
  83. (entmake
  84. (list
  85. (cons 0 "TEXT")
  86. (cons 7 (getvar 'TEXTSTYLE))
  87. (cons 8 (cdr (assoc 2 df)))
  88. (cons 6 "ByLayer")
  89. (cons 39 0.0)
  90. (cons 62 256)
  91. (cons 10 (setq p1 (polar pt (* 1.5 pi) (* (setq i (1+ i)) sp))))
  92. (cons 40 (getvar 'TEXTSIZE))
  93. (cons 1 (cdr (assoc 2 df)))
  94. (cons 370 -1)
  95. )
  96. )
  97. )
  98. )
  99. ;;;;;; delete layers of your choice
  100. (prompt "\nChoisir des objects pour supprimer les calques ")
  101. (if (setq ssL (ssget))
  102.    (repeat (setq nL (sslength ssl))
  103.      (if (setq l_name (cdr (assoc 8 (entget (ssname ssL (setq nL (1- nL)))))))
  104.        (progn
  105.          (setq ssE (ssget "_X" (list (cons 8 l_name))))
  106.          (repeat (setq nE (sslength ssE))
  107.            (entdel (ssname ssE (setq nE (1- nE))))
  108.          )
  109.        )
  110.      )
  111.    )
  112. )
  113. ;;;;;; zoom precedent
  114. (command "zoom" "et")
  115. ;;;;;; erase text and mtext
  116. (setq sstext (ssget "_X"  '((0 . "TEXT,MTEXT,LEADER"))))
  117. (command "_erase" sstext "")
  118. ;;;;;; make layer and set it current
  119.   (entmake
  120.      (list
  121.        (cons 0 "LAYER")
  122.        (cons 100 "AcDbSymbolTableRecord")
  123.        (cons 100 "AcDbLayerTableRecord")
  124.        (cons 2 "FDP")
  125.        (cons 70 0)
  126.        (cons 62
  127. ))
  128. (setvar "CLAYER" "FDP")
  129. ;;;;;; ortho activated
  130. (setvar 'orthomode 1)
  131. ;;;;;; create a contour
  132. (command "_pline"(while (> (getvar 'cmdactive) 0) (command pause)))
  133. ;;;;;; trim just you want
  134.       (setq contour (entlast))
  135.       (if
  136.       (wcmatch (cdr (assoc 0 (entget contour))) "*POLYLINE")
  137.    (progn
  138.      (setq bbox (ACET-ENT-GEOMEXTENTS contour))
  139.      (setq bbox (mapcar '(lambda(x)(trans x 0 1)) bbox))
  140.      (setq lst (ACET-GEOM-OBJECT-POINT-LIST contour 1e-3))
  141.      (ACET-SS-ZOOM-EXTENTS (ACET-LIST-TO-SS (list contour)))
  142.      (command "_.Zoom" "0.95x")
  143.      (if (null etrim)(load "extrim.lsp"))
  144.      (etrim contour (polar
  145.                  (car bbox)
  146.                  (angle (car bbox)(cadr bbox))
  147.                  (* (distance (car bbox)(cadr bbox)) 1.1)))
  148.      (if (and
  149.            (setq ss (ssget "_CP" lst))
  150.            (setq ssall (ssget "_X" (list (assoc 410 (entget contour)))))
  151.           )
  152.        (progn
  153.          (setq lst (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
  154.          (foreach e1 lst (ssdel e1 ssall))
  155.          (ACET-SS-ENTDEL ssall)
  156.          )
  157.        )
  158.      )
  159.    )
  160. ;;;;;; layer merge
  161. (vlax-for laylist
  162. (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object)))
  163. (command "._laymrg" "N" (vla-get-Name laylist) "" "N" "FDP" "Y")
  164. )
  165. ;;;;;; make block
  166. (setq file (strcat (vl-filename-base (getvar 'DWGNAME)) "_X"))
  167. (if (tblsearch "BLOCK" file)
  168. (command "_.-block" (setq file (strcat file "X")) "0,0" "_All" "")
  169. (command "_.-block" file "0,0" "_All" "")
  170. )
  171. (command "_.insert" file "_S" 1 "0,0" "")
  172. ;;;;;; rename block
  173. (command "_.rename" "b" file "fdp")
  174. ;;;;;; nested block t 0
  175. (if (setq sel (ssget "_X"  '((0 . "INSERT"))))
  176. (repeat (setq idx (sslength sel))
  177. (block->0 (cdr (assoc 2 (entget (ssname sel (setq idx (1- idx)))))))
  178. )
  179. )
  180. (command "_.regen")
  181. ;;;;;; end undo mark
  182. (vla-EndUndoMark Doc)
  183. (princ)
  184. )
  185. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  186. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  187. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  188. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  189. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  190. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  191. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  192. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  193. (defun block->0 ( blk / ent enx )
  194. (cond
  195. ( (member blk lst))
  196. ( (setq ent (tblobjname "block" blk))
  197. (while (setq ent (entnext ent))
  198. (entmod (subst-append 8 "0" (subst-append 62 256 (setq enx (entget ent)))))
  199. (if (= "INSERT" (cdr (assoc 0 enx)))
  200. (block->0 (cdr (assoc 2 enx)))
  201. )
  202. )
  203. (setq lst (cons blk lst))
  204. )
  205. )
  206. )
  207. (defun subst-append ( key val lst / itm )
  208. (if (setq itm (assoc key lst))
  209. (subst (cons key val) itm lst)
  210. (append lst (list (cons key val)))
  211. )
  212. )
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 21:27:07 | 显示全部楼层
进度条示例http://www.afralisp.net/dialog-control-language/tutorials/progress-bar.php
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-11 09:24 , Processed in 0.479677 second(s), 56 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表