乐筑天下

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

[编程交流] 文本和Grread

[复制链接]

12

主题

25

帖子

13

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-5 16:54:40 | 显示全部楼层 |阅读模式
你好
 
我有一段代码,使用grread函数插入一个文本,我想在其中添加旋转和调整大小的选项,但我不知道怎么做,如果能得到帮助,我将不胜感激。
 
谢谢
 
  1. (defun c:xaa (/ potencia prefijo pt)
  2. (setvar "cmdecho" 0)
  3. (setq potencia (strcase (getstring T "\nIngresa potencia monofásica: ")))
  4. (setq prefijo (*AX_mtext* (strcat potencia "\\P" "1Ø/220V")))
  5. (while
  6. (eq (car (setq pt (grread t 15 0))) 5)
  7. (redraw)
  8. (entmod (subst (cons 10 (cadr pt)) (assoc 10 (entget prefijo)) (entget prefijo))))
  9. (setvar "cmdecho" 1)
  10. (princ))
  11. (defun *AX_mtext* (s)
  12.   (entmakex
  13.      (list (cons 0   "MTEXT")         
  14.            (cons 100 "AcDbEntity")         
  15.            (cons 100 "AcDbMText")   
  16.            (list 10 0. 0. 0.)
  17.            (list 11 0. 0. 0.)
  18.            (cons 71 1)
  19.            (cons 40 0.2)
  20.            (cons  1 s)
  21.        (cons  7 "0-DEU-ROMANS")
  22.      )
  23.   )
  24. )
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 17:14:06 | 显示全部楼层
你好
旋转角度应该是多少?
通过调整大小,您的意思是将其高度增加“n”个单位或缩放它?
回复

使用道具 举报

12

主题

25

帖子

13

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-5 17:17:18 | 显示全部楼层
旋转角度必须为90、180、270和360,相对于高度而言,最好增加单位
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 17:26:46 | 显示全部楼层
好的,高度增量设置为0.1个单位:
  1. (defun C:test ( / potencia prefijo msg enx n sizeInc cmd grr )
  2. (if
  3.         (and
  4.                 (setq potencia (strcase (getstring T "\nIngresa potencia monofásica: ")))
  5.                 (setq prefijo (*AX_mtext* (strcat potencia "\\P" "1Ø/220V")))
  6.                 (setq msg "\nPress [+/-] to increase/decrease the size, [TAB] to rotate <exit>: ")
  7.                 (setq enx (entget prefijo))
  8.                 (setq n (cdr (assoc 40 enx)))
  9.                 (setq sizeInc 0.1)
  10.         ); and
  11.         (progn
  12.                 (setq cmd (getvar 'cmdecho)) (setvar 'cmdecho 0)
  13.                 (and msg (princ msg)) (setvar 'errno 0)
  14.                 (while (/= 52 (getvar 'errno))
  15.                         (setq grr (grread T))
  16.                         (cond
  17.                                 ((= (car grr) 2)
  18.                                         (and msg (princ msg))
  19.                                         (and (= (chr (cadr grr)) "\r") (setvar 'errno 52))
  20.                                         (cond
  21.                                                 ((= (chr (cadr grr)) "+")
  22.                                                         (setq n (+ n sizeInc))
  23.                                                         (entmod (setq enx (subst (cons 40 n) (assoc 40 enx) enx)))
  24.                                                 )
  25.                                                 ((= (chr (cadr grr)) "-")
  26.                                                         (setq n (- n sizeInc))
  27.                                                         (or (not (minusp n)) (setq n 0.1))
  28.                                                         (entmod (setq enx (subst (cons 40 n) (assoc 40 enx) enx)))
  29.                                                 )
  30.                                                 ((= (cadr grr) (ascii (strcase "\t" T)))
  31.                                                         (entmod (setq enx (subst (cons 50 (+ (cdr (assoc 50 enx)) (/ PI 2.))) (assoc 50 enx) enx)))
  32.                                                 )
  33.                                         ); cond
  34.                                 )
  35.                                 ( (= (car grr) 25) (setvar 'errno 52) )
  36.                                 ( (= (car grr) 5) (and msg (princ msg)) (entmod (subst (cons 10 (cadr grr)) (assoc 10 (entget prefijo)) (entget prefijo))) )
  37.                                 ( (= (car grr) 3) (setvar 'errno 52) )
  38.                         ); cond                       
  39.                 ); while
  40.                 (and cmd (setvar 'cmdecho cmd))
  41.         ); progn
  42. ); if
  43. (princ)
  44. ); defun C:test
  45. (defun *AX_mtext* (s)
  46. (entmakex
  47.         (list
  48.                 (cons 0 "MTEXT")         
  49.                 (cons 100 "AcDbEntity")         
  50.                 (cons 100 "AcDbMText")   
  51.                 (list 10 0. 0. 0.)
  52.                 (list 11 0. 0. 0.)
  53.                 (cons 71 1)
  54.                 (cons 40 0.2)
  55.                 (cons 1 s)
  56.                 (cons 7 "0-DEU-ROMANS")
  57.         )
  58. )
  59. )
回复

使用道具 举报

12

主题

25

帖子

13

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-5 17:40:24 | 显示全部楼层
谢谢,Grr正是我需要的
175444aotc3380z23b6g0z.jpg
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 17:48:46 | 显示全部楼层
@Grrr:
errno变量的使用非常特殊。当由CAD程序设置时,errno变量具有非常特定的含义。我并不是说你所做的是错的,但使用你自己的(布尔)变量会更有意义。
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 18:03:01 | 显示全部楼层
 
@罗伊,这一切都是从我学习“伪循环”时开始的,主要是从李的代码开始的。
我发现它有这样的潜力,而不是用setq函数定位一个新变量,总的来说,我试图减少setq的数量。
谢谢你发布这篇文章,它会让你了解更多。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 10:48 , Processed in 0.407610 second(s), 68 queries .

© 2020-2025 乐筑天下

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