乐筑天下

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

[编程交流] LISP例程到全局编辑te

[复制链接]

17

主题

333

帖子

319

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
83
发表于 2022-7-6 09:12:26 | 显示全部楼层
我觉得衬衫是个笑话
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 09:17:15 | 显示全部楼层
英雄联盟
就等着我的4yo帮我拿一个。
回复

使用道具 举报

17

主题

333

帖子

319

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
83
发表于 2022-7-6 09:18:09 | 显示全部楼层
它不必一次运行多个图形,只需在当前图形中即可。A.scr文件会很好。
回复

使用道具 举报

17

主题

333

帖子

319

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
83
发表于 2022-7-6 09:21:48 | 显示全部楼层
哈哈,找到一个。自动麻木。我将与大家分享。
 
链接
 
肖恩
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:24:13 | 显示全部楼层
为了好玩。。。
 
  1. (defun c:MODT () (c:ModifyText))
  2. (defun c:ModifyText  (/ *error* option string pattern _PutString)
  3. ;; © RenderMan, 2011
  4. (princ "\rMODIFYTEXT")
  5. (vl-load-com)
  6. (defun *error*  (msg)
  7.    (and oldNomutt (setvar 'nomutt oldNomutt))
  8.    (if acDoc
  9.      (vla-endundomark acDoc))
  10.    (cond ((not msg))                                                   ; Normal exit
  11.          ((member msg '("Function cancelled" "quit / exit abort")))    ; <esc> or (quit)
  12.          ((princ (strcat "\n** Error: " msg " ** "))))                 ; Fatal error, display it
  13.    (princ))
  14. (initget "PREFIX REPLACE SUFFIX")
  15. (if
  16.    (and
  17.      (setq option
  18.             (getkword "\nEnter option [PREFIX/REPLACE/SUFFIX]: "))
  19.      (/= "" (setq string (getstring "\nEnter text to add: ")))
  20.      (cond
  21.        ((= "PREFIX" option)
  22.         (defun _PutString  (oText)
  23.           (vla-put-textstring
  24.             oText
  25.             (strcat string (vla-get-textstring oText)))))
  26.        ((and (= "REPLACE" option)
  27.              (setq
  28.                pattern
  29.                 (getstring
  30.                   T
  31.                   "\nEnter text to replace (case sensitive): ")))
  32.         (defun _PutString  (oText)
  33.           (vla-put-textstring
  34.             oText
  35.             (vl-string-subst
  36.               string
  37.               pattern
  38.               (vla-get-textstring oText)))))
  39.        ((= "SUFFIX" option)
  40.         (defun _PutString  (oText)
  41.           (vla-put-textstring
  42.             oText
  43.             (strcat (vla-get-textstring oText) string))))))
  44.     ((lambda (acDoc oldNomutt / ss)
  45.        (vla-startundomark acDoc)
  46.        (prompt
  47.          "\nSelect entity on desired layer(s) to modify all text: ")
  48.        (setvar 'nomutt 1)
  49.        (while (and (/= nil (setq ss (ssget ":S:E:L")))
  50.                    (cond (pattern
  51.                           (setq ss
  52.                                  (ssget
  53.                                    "_X"
  54.                                    (list
  55.                                      '(0 . "MTEXT,TEXT")
  56.                                      (cons 1 (strcat "*" pattern "*"))
  57.                                      (cons 8
  58.                                            (vla-get-layer
  59.                                              (vlax-ename->vla-object
  60.                                                (ssname ss 0))))))))
  61.                          ((setq ss
  62.                                  (ssget
  63.                                    "_X"
  64.                                    (list
  65.                                      '(0 . "MTEXT,TEXT")
  66.                                      (cons 8
  67.                                            (vla-get-layer
  68.                                              (vlax-ename->vla-object
  69.                                                (ssname ss 0))))))))))
  70.          (vlax-for oText
  71.                    (setq ss (vla-get-activeselectionset acDoc))
  72.            (_PutString oText))
  73.          (vla-delete ss))
  74.        (*error* nil))
  75.       (vla-get-activedocument (vlax-get-acad-object))
  76.       (getvar 'nomutt))
  77.     (progn
  78.       (cond
  79.         (option
  80.          (prompt "\n** Invalid input: Must enter a text string ** "))
  81.         ((prompt "\n** Invalid input: Must select an option ** ")))
  82.       (princ))))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:29:33 | 显示全部楼层
派对有点晚了,但也许可以从你的剧本中调用这样的内容:
 
  1. ;; (TextLayerEdit "YourLayer" "Text to Add" <mode>)
  2. ;; <mode> = 0  -  replace
  3. ;;        = 1  -  prefix
  4. ;;        = 2  -  suffix
  5. ;; <layer> can use wildcards.
  6. (defun TextLayerEdit ( layer newtext mode / e i s v )
  7.    (if (setq s (ssget "_X" (list '(0 . "TEXT,MTEXT") (cons 8 layer))))
  8.        (repeat (setq i (sslength s))
  9.            (setq e (entget (ssname s (setq i (1- i))))
  10.                  v (assoc 1 e)
  11.            )
  12.            (entmod
  13.                (subst
  14.                    (cons 1
  15.                        (cond
  16.                            (   (= 0 mode) newtext)
  17.                            (   (= 1 mode) (strcat newtext (cdr v)))
  18.                            (   (strcat (cdr v) newtext))
  19.                        )
  20.                    )
  21.                    v e
  22.                )
  23.            )
  24.        )
  25.    )
  26.    (princ)
  27. )

 
调用层名称、要添加的文本和相关模式号:
 
  1. (TextLayerEdit "YourLayerName" "%%159" 2)

 
[注意,层名称可能使用通配符]
 
_______________________________________________
 
有了这些兴趣,“Lee Mac Programming”t恤听起来像是一个有利可图的生意!
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:30:48 | 显示全部楼层
如果你真的感兴趣,我会帮你设计/品牌,你可以建立一个免费的CaféPress在线商店。没有前期成本,而且这些商品是按订单生产的。
 
... 这是我为我当地的无国界工程师分会(EWB)所做的,他们要求我担任时事通讯编辑,并担任委员会主席,负责我对时事通讯进行的图形增强眨眼:
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:34:38 | 显示全部楼层
李,至于代码。。。首先,像往常一样简洁,但我很好奇。。。代码是否迭代选择集中每个实体的模式条件?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:39:06 | 显示全部楼层
 
我之前的帖子也是在开玩笑,但谢谢你的建议和好意,让我自愿为你的时间Renderman。
 
 
谢谢Renderman;是的,你是对的,为了便于编码,我牺牲了在循环中计算(最多)两个“=”表达式的效率;但既然你提出了这一点,这里有一个可能的选择:
 
  1. ;; (TextLayerEdit "YourLayer" "Text to Add" <mode>)
  2. ;; <mode> = 0  -  replace
  3. ;;        = 1  -  prefix
  4. ;;        = 2  -  suffix
  5. ;; <layer> can use wildcards.
  6. (defun TextLayerEdit ( layer newtext mode / e f i s v )
  7.    (setq f
  8.        (eval
  9.            (list 'lambda '( s )
  10.                (cond
  11.                    (   (= 0 mode) newtext)
  12.                    (   (= 1 mode) (list 'strcat newtext 's))
  13.                    (   (list 'strcat 's newtext))
  14.                )
  15.            )
  16.        )
  17.    )
  18.    (if (setq s (ssget "_X" (list '(0 . "TEXT,MTEXT") (cons 8 layer))))
  19.        (repeat (setq i (sslength s))
  20.            (setq e (entget (ssname s (setq i (1- i))))
  21.                  v (assoc 1 e)
  22.            )
  23.            (entmod (subst (cons 1 (f (cdr v))) v e))
  24.        )
  25.    )
  26.    (princ)
  27. )
回复

使用道具 举报

22

主题

326

帖子

185

银币

后起之秀

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

铜币
243
发表于 2022-7-6 09:41:55 | 显示全部楼层
@李:我认为你不需要eval list来分配一个函数^^Just(setq f(lambda(s)…)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 09:23 , Processed in 0.868430 second(s), 70 queries .

© 2020-2025 乐筑天下

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