乐筑天下

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

[编程交流] 请帮忙,Lisp本地化obj

[复制链接]

2

主题

13

帖子

11

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 20:07:17 | 显示全部楼层 |阅读模式
请帮助,Lisp本地化具有相同内容的对象!
对不起,我英语不好!
khoanh ve Engli。图纸
210726ods323alale7l22i.jpg
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 20:13:40 | 显示全部楼层
像这样的http://www.cadtutor.net/forum/showthread.php?91084-Area-Statement-Under-Layer-quot-Acquired-No.-amp-Area quot到csv
回复

使用道具 举报

2

主题

13

帖子

11

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 20:18:15 | 显示全部楼层
否,所有文字ONT=>边界,所有文字CLN=>边界(或图案填充)
回复

使用道具 举报

63

主题

141

帖子

16

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
387
发表于 2022-7-5 20:25:34 | 显示全部楼层
请附上您的图纸。
回复

使用道具 举报

2

主题

13

帖子

11

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 20:31:37 | 显示全部楼层
非常感谢。
khoanh ve Engli。图纸
回复

使用道具 举报

63

主题

141

帖子

16

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
387
发表于 2022-7-5 20:34:45 | 显示全部楼层
  1. (defun c:test ()
  2. (vl-load-com)
  3. ;;-------------------=={ UnFormat String }==------------------;;
  4. ;;                                                            ;;
  5. ;;  Returns a string with all MText formatting codes removed. ;;
  6. ;;------------------------------------------------------------;;
  7. ;;  Author: Lee Mac, Copyright © 2011 - www.lee-mac.com       ;;
  8. ;;------------------------------------------------------------;;
  9. ;;  Arguments:                                                ;;
  10. ;;  str - String to Process                                   ;;
  11. ;;  mtx - MText Flag (T if string is for use in MText)        ;;
  12. ;;------------------------------------------------------------;;
  13. ;;  Returns:  String with formatting codes removed            ;;
  14. ;;------------------------------------------------------------;;
  15. (defun LM:UnFormat (str mtx / _replace rx)
  16.    (defun _replace (new old str) (vlax-put-property rx 'pattern old) (vlax-invoke rx 'replace str new))
  17.    (if        (setq rx (vlax-get-or-create-object "VBScript.RegExp"))
  18.      (progn (setq str (vl-catch-all-apply
  19.                  (function
  20.                    (lambda ()
  21.                      (vlax-put-property rx 'global actrue)
  22.                      (vlax-put-property rx 'multiline actrue)
  23.                      (vlax-put-property rx 'ignorecase acfalse)
  24.                      (foreach pair '(("\032" . "\\\\\\\")
  25.                                      (" " . "\\\\P|\\n|\\t")
  26.                                      ("$1" . "\\\\(\\\\[ACcFfHLlOopQTW])|\\\\[ACcFfHLlOopQTW][^\\\\;]*;|\\\\[ACcFfHLlOopQTW]")
  27.                                      ("$1$2/$3" . "([^\\\\])\\\\S([^;]*)[/#\\^]([^;]*);")
  28.                                      ("$1$2" . "\\\\(\\\\S)|[\\\\](})|}")
  29.                                      ("$1" . "[\\\\]({)|{")
  30.                                     )
  31.                        (setq str (_replace (car pair) (cdr pair) str))
  32.                      )
  33.                      (if mtx
  34.                        (_replace "\\\" "\032" (_replace "\\$1$2$3" "(\\\\[ACcFfHLlOoPpQSTW])|({)|(})" str))
  35.                        (_replace "\" "\032" str)
  36.                      )
  37.                    )
  38.                  )
  39.                )
  40.      )
  41.      (vlax-release-object rx)
  42.      (if (null (vl-catch-all-error-p str))
  43.        str
  44.      )
  45.      )
  46.    )
  47. )
  48. ;; Unique  -  Lee Mac
  49. ;; Returns a list with duplicate elements removed.
  50. (defun LM:Unique (l / x r)
  51.    (while l
  52.      (setq x (car l)
  53.     l (vl-remove x (cdr l))
  54.     r (cons x r)
  55.      )
  56.    )
  57.    (reverse r)
  58. )
  59. ;;
  60. ;;
  61. ;; Source : http://www.theswamp.org/index.php?topic=10371.0
  62.                                 ;Union polylines
  63.                                 ;Stefan M. 09.01.2014
  64. (defun UNIP (lst / *error* i lst r1 reg ss sysvar prop)
  65.    (or acDoc (setq acDoc (vla-get-activedocument (vlax-get-acad-object))))
  66.    (setq ms (vlax-get acDoc
  67.                (if (= 1 (getvar 'cvport))
  68.                  'paperspace
  69.                  'modelspace
  70.                )
  71.      )
  72.    )
  73.    (vla-startundomark acDoc)
  74.    (setq sysvar (mapcar 'getvar '(peditaccept draworderctl cmdecho)))
  75.    (defun *error* (msg)
  76.      (and msg (not (wcmatch (strcase msg) "*CANCEL*,*QUIT*,*EXIT*")) (princ (strcat "\nError: " msg)))
  77.      (mapcar 'setvar '(peditaccept draworderctl cmdecho) sysvar)
  78.      (vla-endundomark acDoc)
  79.      (princ)
  80.    )
  81.    (foreach x lst (vla-put-closed x :vlax-true))
  82.    (setq prop (mapcar '(lambda (p) (vlax-get (car lst) p)) '(Layer LineType Color)))
  83.    (setq reg (vlax-invoke ms 'AddRegion lst))
  84.    (foreach x lst
  85.      (if (not (vlax-erased-p x))
  86. (vla-delete x)
  87.      )
  88.    )
  89.    (setq r1 (car reg))
  90.    (foreach x (cdr reg) (vlax-invoke r1 'boolean acunion x))
  91.    (mapcar '(lambda (p v) (vlax-put r1 p v)) '(Layer LineType Color) prop)
  92.    (setq lst (apply 'append
  93.              (mapcar '(lambda (a)
  94.                         (if (listp a)
  95.                           (mapcar 'vlax-vla-object->ename a)
  96.                           (list (vlax-vla-object->ename a))
  97.                         )
  98.                       )
  99.                      (mapcar '(lambda (e / p)
  100.                                 (if (eq (vla-get-objectname e) "AcDbRegion")
  101.                                   (progn (setq p (vlax-invoke e 'explode)) (vla-delete e) p)
  102.                                   e
  103.                                 )
  104.                               )
  105.                              (vlax-invoke r1 'explode)
  106.                      )
  107.              )
  108.       )
  109.    )
  110.    (vla-delete r1)
  111.    (setq ss (ssadd))
  112.    (foreach x lst (ssadd x ss))
  113.    (mapcar 'setvar '(peditaccept draworderctl cmdecho) '(1 0 0))
  114.    (command "_pedit" "_m" ss "" "_j" "" "")
  115.    (*error* nil)
  116.    (princ)
  117. )
  118. ;;
  119. ;; ==========================
  120. ;; ACTUAL PROGRAM STARTS HERE
  121. ;; ==========================
  122. ;;
  123. (setvar "cmdecho" 0)
  124. (setq oldsnapmode (getvar "snapmode"))
  125. (setq oldosmode (getvar "osmode"))
  126. (setq oldlayer (getvar "clayer"))
  127. (setq oldorthomode (getvar "orthomode"))
  128. (setvar "snapmode" 0)
  129. (setvar "osmode" 0)
  130. (setvar "orthomode" 0)
  131. (setq sset (ssget "_:L" '((0 . "*TEXT"))))
  132. (setq textlist nil)
  133. (setq textstrlist nil)
  134. (repeat (setq n (sslength sset))
  135.    (setq ent (ssname sset (setq n (1- n))))
  136.    (setq obj (vlax-ename->vla-object ent))
  137.    (setq txtstring (strcat (LM:UnFormat (vla-get-textstring obj) nil)))
  138.    (setq textlist (cons (list ent txtstring) textlist))
  139.    (setq textstrlist (cons txtstring textstrlist))
  140. )
  141. (setq uniqtextlist (LM:Unique textstrlist))
  142. (setq finallist nil)
  143. (foreach xx uniqtextlist
  144.    (setq templist nil)
  145.    (foreach yy        textlist
  146.      (if (equal xx (cadr yy))
  147. (progn (setq templist (cons (car yy) templist)))
  148.      )
  149.    )
  150.    (setq finallist (cons (list xx templist) finallist))
  151. )
  152. (setq cnt 1)
  153. (foreach xx finallist
  154.    (setq lyrname (strcat "LYR-" (car xx)))
  155.    (if        (not (tblsearch "LAYER" lyrname))
  156.      (command "_.-layer" "M" lyrname "C" cnt "" "L" "Continuous" "" "LW" 0.25 "" "")
  157.    )
  158.    (setq cnt (1+ cnt))
  159.    (setq entlist (cadr xx))
  160.    (setvar 'clayer lyrname)
  161.    (setq joinlist nil)
  162.    (foreach yy        entlist
  163.      (setq obj (vlax-ename->vla-object yy))
  164.      (setq inspt (vlax-safearray->list (vlax-variant-value (vla-get-textalignmentpoint obj))))
  165.      (command "-boundary" inspt "")
  166.      (setq joinlist (cons (vlax-ename->vla-object (entlast)) joinlist))
  167.    )
  168.    (UNIP joinlist)
  169. )
  170. (setvar "snapmode" oldsnapmode)
  171. (setvar "orthomode" oldorthomode)
  172. (setvar "osmode" oldosmode)
  173. (if (tblsearch "LAYER" oldlayer)
  174.    (setvar "clayer" oldlayer)
  175. )
  176. (princ)
  177. )

 
通过键入测试运行。
回复

使用道具 举报

2

主题

13

帖子

11

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 20:38:02 | 显示全部楼层
很好,但是怎么样?
回复

使用道具 举报

63

主题

141

帖子

16

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
387
发表于 2022-7-5 20:43:45 | 显示全部楼层
当我运行例程时,会根据您的需要创建两个边界,第一个用于所有ONT文本,第二个用于所有CLN文本。
 
例行公事中有什么问题?
回复

使用道具 举报

2

主题

13

帖子

11

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 20:48:24 | 显示全部楼层
非常感谢。
我想要这样的东西:
2.dwg
回复

使用道具 举报

63

主题

141

帖子

16

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
387
发表于 2022-7-5 20:55:20 | 显示全部楼层
请检查我在#6后修改的代码。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 09:02 , Processed in 0.367991 second(s), 75 queries .

© 2020-2025 乐筑天下

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