乐筑天下

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

[编程交流] 文本修剪框需要帮助

[复制链接]

2

主题

3

帖子

1

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 10:35:18 | 显示全部楼层 |阅读模式
我有一个lisp,它应该在选定文本周围创建一个多段线框,修剪框内的线,然后删除框。然而,我在让它正常运行时遇到了一些问题。每次我运行它时,我都会选择要使用的文本,但会出现错误
 
选择文本;错误:错误的DXF组:(-1(13.3618 5.59898
0.0))
我希望有人能帮我解决这个问题。
 
  1. ;;; This lisp routine creates a box around selected text, trims all entities within the box, and then deletes the box.
  2. (defun C:TTR (/ TEXTENT TRIMFACT TB GAP FGAP LL UR
  3. PTB1 PTB2 PTB3 PTB4 PTF1 PTF2 PTF3 PTF4 BX)
  4. (setq TEXTENT (entsel "\nSelect Text"))
  5. (setq TRIMFACT 2.0) ;Set trim gap and text height ratio HERE
  6. (command "ucs" "Entity" TEXTENT)
  7. (setq TB (textbox (list (cons -1 TEXTENT)))
  8.    LL (car TB)
  9.    UR (cadr TB)
  10. )
  11. (setq GAP (* *TXTH TRIMFACT))     
  12. (setq FGAP (* GAP 0.5))
  13. (setq PTB1 (list (- (car LL) GAP) (- (cadr LL) GAP))
  14.    PTB3 (list (+ (car UR) GAP) (+ (cadr UR) GAP))
  15.    PTB2 (list (car PTB3) (cadr PTB1))
  16.    PTB4 (list (car PTB1) (cadr PTB3))
  17.    PTF1 (list (- (car LL) FGAP) (- (cadr LL) FGAP))
  18.    PTF3 (list (+ (car UR) FGAP) (+ (cadr UR) FGAP))
  19.    PTF2 (list (car PTF3) (cadr PTF1))
  20.    PTF4 (list (car PTF1) (cadr PTF3))
  21. )
  22. (command "pline" PTB1 PTB2 PTB3 PTB4 "c")
  23. (setq BX (entlast))
  24. (command "trim" BX "" "f" PTF1 PTF3 PTF4 PTF1 "" "")
  25. (entdel BX)
  26. (redraw TEXTENT)
  27. (command "ucs" "p")
  28. (princ)
  29. ) ;end trimbox
  30. (princ "\nType TTR to start")
  31. (princ); end TEXT TRIM.lsp

提前感谢您的帮助
回复

使用道具 举报

10

主题

109

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-6 11:10:49 | 显示全部楼层
杰姆斯莱德,
进行了一些更改和添加。似乎有效。可能需要一些错误捕捉。享受
 
  1. ;;; This lisp routine creates a box around selected text, trims all entities within the box, and then deletes the box.
  2. (defun C:TTR (/ TEXTENT TRIMFACT TEXTLIST TB GAP FGAP LL UR
  3. PTB1 PTB2 PTB3 PTB4 PTF1 PTF2 PTF3 PTF4 BX *TXTH)
  4. ;(setq TEXTENT (entsel "\nSelect Text"))
  5. (setq TEXTENT (car (entsel "\nSelect Text"))) ; changed - added car to get name alone
  6. (setq TRIMFACT 1.0) ;Set trim gap and text height ratio HERE
  7. (command "ucs" "Entity" TEXTENT)
  8. (setq TEXTLIST (entget TEXTENT))          ; added to get entity record
  9. (setq *TXTH (cdr (assoc 40 TEXTLIST)))    ; added to get text height
  10. ;(setq TB (textbox (list (cons -1 TEXTENT)))
  11.   ; LL (car TB)
  12.   ; UR (cadr TB)
  13. (setq TB (textbox TEXTLIST)   ; changed
  14.    LL (car TB)
  15.    UR (cadr TB)  ; changed, was cdr
  16. )
  17. (setq GAP (* *TXTH TRIMFACT))     
  18. (setq FGAP (* GAP 0.5))
  19. (setq PTB1 (list (- (car LL) GAP) (- (cadr LL) GAP))
  20.    PTB3 (list (+ (car UR) GAP) (+ (cadr UR) GAP))
  21.    PTB2 (list (car PTB3) (cadr PTB1))
  22.    PTB4 (list (car PTB1) (cadr PTB3))
  23.    PTF1 (list (- (car LL) FGAP) (- (cadr LL) FGAP))
  24.    PTF3 (list (+ (car UR) FGAP) (+ (cadr UR) FGAP))
  25.    PTF2 (list (car PTF3) (cadr PTF1))
  26.    PTF4 (list (car PTF1) (cadr PTF3))
  27. )
  28. (command "pline" PTB1 PTB2 PTB3 PTB4 "c")
  29. (setq BX (entlast))
  30. (command "trim" BX "" "f" PTF1 PTF3 PTF4 PTF1 "" "")
  31. (entdel BX)
  32. (redraw TEXTENT)
  33. (command "ucs" "p")
  34. (princ)
  35. ) ;end trimbox
  36. (princ "\nType TTR to start")
  37. (princ); end TEXT TRIM.lsp
回复

使用道具 举报

10

主题

109

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-6 11:45:19 | 显示全部楼层
这是TTR程序,其中添加了错误捕捉和代码,以保存和恢复系统状态。
 
  1. ;;; This lisp routine creates a box around selected text, trims all
  2. ;   entities within the box, and then deletes the box.
  3. ; Modifications by CALCAD from original code by germslyde in the Cadtutor forum
  4. (defun C:TTR (/ *ERROR* CE TEXTENT TRIMFACT TEXTLIST TB GAP FGAP LL UR  
  5. PTB1 PTB2 PTB3 PTB4 PTF1 PTF2 PTF3 PTF4 BX *TXTH)
  6.   
  7. (defun *ERROR* (msg)
  8. (command "_.ucs" "R" "sys_ucs")
  9. (command "_.ucs" "D" "sys_ucs")
  10. (setvar "cmdecho" CE)
  11. (princ "\r")
  12. (princ)
  13. )
  14.   
  15. (setq CE (getvar "cmdecho"))
  16. (setvar "cmdecho" 0)
  17. (command "_.ucs" "S" "sys_ucs")
  18. (setq TEXTENT (car (entsel "\nSelect Text")))
  19. (setq TRIMFACT 2.0) ;Set trim gap and text height ratio HERE
  20. (command "_.ucs" "Entity" TEXTENT)
  21. (setq textlist (entget TEXTENT))
  22. (setq *TXTH (cdr (assoc 40 TEXTLIST)))
  23. (setq TB (textbox TEXTLIST)
  24.    LL (car TB)
  25.    UR (cadr TB)
  26. )
  27. (setq GAP (* *TXTH TRIMFACT))      
  28. (setq FGAP (* GAP 0.5))
  29. (setq PTB1 (list (- (car LL) GAP) (- (cadr LL) GAP))
  30.    PTB3 (list (+ (car UR) GAP) (+ (cadr UR) GAP))
  31.    PTB2 (list (car PTB3) (cadr PTB1))
  32.    PTB4 (list (car PTB1) (cadr PTB3))
  33.    PTF1 (list (- (car LL) FGAP) (- (cadr LL) FGAP))
  34.    PTF3 (list (+ (car UR) FGAP) (+ (cadr UR) FGAP))
  35.    PTF2 (list (car PTF3) (cadr PTF1))
  36.    PTF4 (list (car PTF1) (cadr PTF3))
  37. )
  38. (command ".pline" PTB1 PTB2 PTB3 PTB4 "c")
  39. (setq BX (entlast))
  40. (command "_.trim" BX "" "f" PTF1 PTF3 PTF4 PTF1 "" "")
  41. (entdel BX)
  42. (redraw TEXTENT)
  43. (command "_.ucs" "R" "sys_ucs")
  44. (command "_.ucs" "D" "sys_ucs")
  45. (princ "\r")
  46. (setvar "cmdecho" CE)
  47. (princ)
  48. ) ; end defun
  49. (princ "\nType TTR to start")  
  50. (princ)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 16:51 , Processed in 0.680954 second(s), 58 queries .

© 2020-2025 乐筑天下

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