乐筑天下

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

[编程交流] 水平

[复制链接]

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 06:27:22 | 显示全部楼层 |阅读模式
我有一个水平(单行和多文本)的图纸,目前设置为本地基准,我需要修改所有的军械基准。为了帮助减少执行此操作所需的时间,我正在寻找lisp例程,该例程可以找到小数点后3位的级别,并向其中添加一个集合数字。(即在图纸上的每一层增加0.57m。
 
提前谢谢你的帮助
回复

使用道具 举报

29

主题

519

帖子

477

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
163
发表于 2022-7-6 06:42:05 | 显示全部楼层
看看李的网站。我很确定他有一个LISP程序,可以做你想做的事。
回复

使用道具 举报

57

主题

243

帖子

190

银币

后起之秀

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

铜币
285
发表于 2022-7-6 06:52:17 | 显示全部楼层
如果我理解你的问题,对于类似的情况,我使用这个例程。作者未知。
 
  1. (defun chgterr (s)
  2.   (if (/= s "Function cancelled")   
  3.      (princ (strcat "\nError: " s))
  4.   )
  5.   (setq p nil)                     
  6.   (setq *error* olderr)            
  7.   (princ)
  8. )
  9. (defun C:INC (/ p l n e os as ns st s nsl osl sl si chf chm olderr)
  10.   (setq olderr  *error*            
  11.         *error* chgterr
  12.         chm     0)
  13.   (setq p (ssget))                  
  14.   (setq inc (getreal "\nIncrement:"))
  15.      (setq l 0 n (sslength p))
  16.      (while (< l n)                 
  17.         (if (= "TEXT"               
  18.                (cdr (assoc 0 (setq e (entget (ssname p l))))))
  19.               (progn
  20.                (setq s (cdr (setq as (assoc 1 e))))
  21.                (setq mn (atof s))
  22.                (setq nm (+ mn inc))
  23.                (setq s (rtos nm))
  24.                (setq e (subst (cons 1 s) as e))
  25.                (entmod e)         
  26.                (setq chm (1+ chm))
  27.               )
  28.         )
  29.         (setq l (1+ l))
  30.      )
  31.   (princ chm)
  32.   (princ " text lines")
  33.   (princ " changed.")
  34.   (terpri)
  35.   (setq *error* olderr)            
  36.   (princ)
  37. )
回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 07:06:03 | 显示全部楼层
太好了,这正是我想要的,谢谢你的帮助:)
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 07:07:38 | 显示全部楼层
 
这稍微简单一些,并且支持“撤消”功能:
  1. (vl-load-com)
  2. (defun c:FOO (/ *error* ss i acDoc)
  3. (defun *error* (msg)
  4.    (if acDoc
  5.      (vla-endundomark acDoc)
  6.    )
  7.    (cond ((not msg))                                                   ; Normal exit
  8.          ((member msg '("Function cancelled" "quit / exit abort")))    ; <esc> or (quit)
  9.          ((princ (strcat "\n** Error: " msg " ** ")))                  ; Fatal error, display it
  10.    )
  11.    (princ)
  12. )
  13. (if (and (setq ss (ssget '((0 . "MTEXT,TEXT") (1 . "*#.#*"))))
  14.           (setq i (getreal "\nEnter increment: "))
  15.      )
  16.    (progn
  17.      (vla-startundomark
  18.        (setq acDoc (vla-get-activedocument (vlax-get-acad-object)))
  19.      )
  20.      (vlax-for x (vla-get-activeselectionset acDoc)
  21.        (vla-put-textstring
  22.          x
  23.          (rtos (+ i (atof (vla-get-textstring x))) 2 3)
  24.        )
  25.      )
  26.      (prompt (strcat "\n** " (itoa (sslength ss)) " object(s) modified ** ")
  27.      )
  28.    )
  29. )
  30. (*error* nil)
  31. )
回复

使用道具 举报

57

主题

243

帖子

190

银币

后起之秀

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

铜币
285
发表于 2022-7-6 07:17:54 | 显示全部楼层
 
对于文字和多行文字:
 
 
 
  1. (defun chgterr (s)
  2.   (if (/= s "Function cancelled")   
  3.      (princ (strcat "\nError: " s))
  4.   )
  5.   (setq p nil)                     
  6.   (setq *error* olderr)            
  7.   (princ)
  8. )
  9. (defun C:INC (/ p l n e os as ns st s nsl osl sl si chf chm olderr)
  10.   (setq olderr  *error*            
  11.         *error* chgterr
  12.         chm     0)
  13.   (setq p (ssget '((0 . "TEXT,MTEXT"))))                 
  14.   (setq inc (getreal "\nIncrement:"))
  15.      (setq l 0 n (sslength p))
  16.      (while (< l n)                 
  17.             
  18.                (cdr (assoc 0 (setq e (entget (ssname p l)))))
  19.               (progn
  20.                (setq s (cdr (setq as (assoc 1 e))))
  21.                (setq mn (atof s))
  22.                (setq nm (+ mn inc))
  23.                (setq s (rtos nm))
  24.                (setq e (subst (cons 1 s) as e))
  25.                (entmod e)         
  26.                (setq chm (1+ chm))
  27.               );progn
  28.         (setq l (1+ l))
  29.       ); while
  30.    
  31.   (princ chm)
  32.   (princ " text lines")
  33.   (princ " changed.")
  34.   (terpri)
  35.   (setq *error* olderr)            
  36.   (princ)
  37.   );defun
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 07:29:42 | 显示全部楼层
 
我当然希望用户总是选择一个有效的选择集。。。示例:考虑一个TextString=“领结很酷”。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 18:23 , Processed in 0.619217 second(s), 66 queries .

© 2020-2025 乐筑天下

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