乐筑天下

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

[编程交流] 文本分隔符

[复制链接]

40

主题

132

帖子

107

银币

后起之秀

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

铜币
227
发表于 2022-7-6 17:25:46 | 显示全部楼层 |阅读模式
希望将过时的LISP更改为多行文字
而不是打破一个盒子
我需要一个图案填充/图像来隐藏它下面的内容。
 
  1. (defun tberror (S)
  2. (if (/= S "Function cancelled")
  3.    (princ (strcat "\nError: " S))
  4. )
  5. (setvar "CLAYER" TEMPLA)
  6. (setvar "BLIPMODE" TEMPBLIP)
  7. (setvar "OSMODE" TEMPOS)
  8. (setvar "CMDECHO" TEMPCMD)
  9. (setq *error* OLDERR)
  10. (princ)
  11. ) ;end tberror
  12. (defun C:TB ( / TEMP FIRST TX ANG TEMPLA TEMPCMD TEMPBLIP
  13. TEMPOS TXTST TXTH)
  14. (setq OLDERR *error*
  15. *error* TBERROR)
  16. (setq TEMPCMD (getvar "CMDECHO")
  17.    TEMPLA  (getvar "CLAYER")
  18.    TEMPBLIP (getvar "BLIPMODE")
  19.    TEMPOS (getvar "OSMODE")
  20.    TXTST (getvar "TEXTSTYLE")
  21. *TXTH (getvar "TEXTSIZE"))
  22. (setvar "CMDECHO" 0)
  23. (setvar "BLIPMODE" 0)
  24. (setq TXTH (cdr (assoc 40 (tblsearch "style" TXTST))))
  25. (setq TEMP T)
  26. (setq FIRST T)
  27. (while TEMP
  28.    (setvar "OSMODE" 512)     
  29.    (setq PT1 (getpoint "\nInsertion point for text: "))     
  30.    (setvar "OSMODE" 0)
  31.    (cond
  32.      ((/= PT1 nil)
  33.        (if FIRST
  34.          (progn
  35.            (if (= TXTH 0)
  36.              (progn
  37.                (princ "\nHeight <")
  38.                (princ *TXTH)
  39.                (setq H (getreal ">: "))
  40.                (if (= H nil) (setq H *TXTH)(setq *TXTH H))
  41.              )
  42.            )
  43.            (if (not *ANG)(setq *ANG 0))
  44.            (princ "\nRotation angle <")
  45.            (princ (* *ANG (/ 180 3.1415926)))
  46.            (setq ANG (getangle PT1 ">: "))
  47.            (if (not ANG)(setq ANG *ANG)(setq *ANG ANG))
  48.            (setq ANG (* ANG (/ 180 3.1415926)))   
  49.            (if (not *TEXT)(setq *TEXT "XXX"))
  50.            (princ "\nText <")
  51.            (princ *TEXT)
  52.            (setq TX (getstring T ">: "))
  53.            (if (= TX "") (setq TX *TEXT)(setq *TEXT TX))
  54.          ) ;end progn
  55.        ) ;end first
  56.        (if (= TXTH 0)
  57.          (command "text" "j" "mc" PT1 *TXTH ANG TX )
  58.        (command "text" "j" "mc" PT1  ANG TX ))
  59.        (trimbox)
  60.      ) ;end pt1
  61.      ((null PT1)
  62.      (setq TEMP nil))
  63.    );end cond
  64.    (setq FIRST nil)
  65. );end while
  66. (setvar "CLAYER" TEMPLA)
  67. (setvar "BLIPMODE" TEMPBLIP)
  68. (setvar "OSMODE" TEMPOS)
  69. (setvar "CMDECHO" TEMPCMD)
  70. (princ)
  71. )      
  72. (defun trimbox (/ TEXTENT TRIMFACT TB GAP FGAP LL UR
  73. PTB1 PTB2 PTB3 PTB4 PTF1 PTF2 PTF3 PTF4 BX)
  74. (setq TEXTENT (entlast))
  75. (setq TRIMFACT 0.5) ;trim gap and text height ratio  
  76. (command "ucs" "Entity" TEXTENT)
  77. (setq TB (textbox (list (cons -1 TEXTENT)))
  78.    LL (car TB)
  79.    UR (cadr TB)
  80. )
  81. (setq GAP (* *TXTH TRIMFACT))     
  82. (setq FGAP (* GAP 0.5))
  83. (setq PTB1 (list (- (car LL) GAP) (- (cadr LL) GAP))
  84.    PTB3 (list (+ (car UR) GAP) (+ (cadr UR) GAP))
  85.    PTB2 (list (car PTB3) (cadr PTB1))
  86.    PTB4 (list (car PTB1) (cadr PTB3))
  87.    PTF1 (list (- (car LL) FGAP) (- (cadr LL) FGAP))
  88.    PTF3 (list (+ (car UR) FGAP) (+ (cadr UR) FGAP))
  89.    PTF2 (list (car PTF3) (cadr PTF1))
  90.    PTF4 (list (car PTF1) (cadr PTF3))
  91. )
  92. (command "pline" PTB1 PTB2 PTB3 PTB4 "c")
  93. (setq BX (entlast))
  94. (command "trim" BX "" "f" PTF1 PTF3 PTF4 PTF1 "" "")
  95. (entdel BX)
  96. (redraw TEXTENT)
  97. (command "ucs" "p")
  98. (princ)
  99. ) ;end trimbox
  100. (princ "\nType TB to start")
  101. (princ); end tb.lsp
回复

使用道具 举报

40

主题

132

帖子

107

银币

后起之秀

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

铜币
227
发表于 2022-7-6 17:53:27 | 显示全部楼层
这可能会有所帮助
如果程序指定了多行文字,而不是将3d块插入到它或某种区域下,该怎么办
这样行吗??
回复

使用道具 举报

40

主题

132

帖子

107

银币

后起之秀

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

铜币
227
发表于 2022-7-6 18:22:30 | 显示全部楼层
我想我是有点含糊这里有一个更好的尝试,在我试图做什么。。。
 
  1. (DEFUN C:PT( / P1 P2 A)
  2. (SETVAR "ORTHOMODE" 0)
  3. (SETQ A "")
  4. (SETQ P1(GETPOINT "\n1st point: ")
  5. P2(GETPOINT P1 "\n2nd point: "))
  6. (COMMAND "ZOOM" "W" P1 P2)
  7. (WHILE (= A "")
  8. (COMMAND "2D SOLID" "C" P1 P2 "" PAUSE "")
  9. (COMMAND "ZOOM" "P")
  10. (PRINC)
  11. )
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 18:40:54 | 显示全部楼层
大写字母意味着你的叫喊
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 17:42 , Processed in 0.396382 second(s), 60 queries .

© 2020-2025 乐筑天下

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