乐筑天下

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

[编程交流] 多行文字旋转为“viewtwist”l

[复制链接]

3

主题

11

帖子

8

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 11:03:24 | 显示全部楼层 |阅读模式
大家好,
 
第一个帖子,但直接到它!
 
使用以下代码时,多行文字编辑器将被抑制,而文字条目将移动到命令行(请参见屏幕截图)。我以前在另一个lisp例程中注意到过这一点(不是我自己写的,我也没有复习过)。可以修改我的例程以防止多行文字编辑器被抑制吗?
 
  1. (defun c:MTR (/ mtang1 mtang2)
  2. (setq oldcmd (getvar "cmdecho"))
  3. (setvar "cmdecho" 0)
  4. (setq mtang1 (getvar "viewtwist"))
  5. (setq mtang2 (/ (* mtang1 180) pi))
  6. (command "mtext" pause "r" mtang2 pause)
  7. (setvar "cmdecho" oldcmd)
  8. (princ)
  9. )

                               
登录/注册后可看大图

 
如果我的编码与您的感受不一致,请原谅,但这只是我编写AutoLISP的第二天!我是一个整洁的人,我相信我的嵌套和括号放置等,最终会让所有整洁的程序员感到高兴。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:10:47 | 显示全部楼层
嗨,Ryan,
 
欢迎来到CADTutor
 
尝试一下:
 
  1. (defun c:MTR ( / *error* oldcmd mtang )
  2. (defun *error* ( msg )
  3.    (and oldcmd (setvar "CMDECHO" oldcmd))
  4.    (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
  5.        (princ (strcat "\n** Error: " msg " **")))
  6.    (princ)
  7. )
  8.    
  9. (setq oldcmd (getvar "cmdecho"))
  10. (setvar "cmdecho" 0)
  11. (setq mtang (/ (* (getvar "viewtwist") 180.) pi))
  12. (initdia)
  13. (command "mtext" pause "r" mtang pause)
  14. (setvar "cmdecho" oldcmd)
  15. (princ)
  16. )

 
我添加了一个错误处理程序,以便在用户点击Esc时恢复CMDECHO。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 11:13:56 | 显示全部楼层
(定义c:MTR(/mtang1 mtang2)
(setq oldcmd(getvar“cmdecho”))
(setvar“cmdecho”0)
(setq mtang1(getvar“viewtwist”))
(setq mtang2(/(*mtang1 180)pi))
(setq mtang3(rtos mtang2))
(命令“mtext”pause pause mtang3“”)
(setvar“cmdecho”oldcmd)
(普林斯“享受代码RyanGC”)
(普林斯)
)
 
嗨,如果这能满足你的需要,我会很高兴的。如果没有,我可以为你改装。
 
萨尔瓦特
专业Autocad绘图员
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:17:56 | 显示全部楼层
(initdia)用法:
回复

使用道具 举报

3

主题

11

帖子

8

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 11:22:42 | 显示全部楼层
 
嗨,李,
 
这非常有效。非常感谢。我最初的尝试有点离谱!对我来说,前方的学习曲线很陡峭,嗯。。。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:28:24 | 显示全部楼层
你比你想象的要近。减去错误处理程序,您只需要(initdia)。
回复

使用道具 举报

3

主题

11

帖子

8

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 11:35:36 | 显示全部楼层
 
你好Tharwat,
 
这不起作用,原因我还没有确定。当我想了解“Lisp程序”的情况时,我将仔细研究一下这一点,也许我可以尝试解释为什么这没有达到我想要的结果。在所有情况下,李·麦克对我原作的编辑都非常有效。
 
谢谢,尽管如此。
R
回复

使用道具 举报

3

主题

11

帖子

8

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 11:36:52 | 显示全部楼层
 
您已经为我在(initdia)上发布了一些详细信息,谢谢。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:40:45 | 显示全部楼层
欢迎你,瑞安,正如艾伦所说,你非常接近-我只是想确保你的日常工作是无懈可击的:眨眼:
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:49:04 | 显示全部楼层
您可以使用getpoint作为第一个选择,但遗憾的是,getcorner与当前UCS不匹配,因此该过程不可能完全无缝。
 
  1. (defun c:MTR (/ *error* oldcmd pt)
  2. (defun *error* (msg)
  3.    (and oldcmd (setvar "CMDECHO" oldcmd))
  4.    (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
  5.        (princ (strcat "\n** Error: " msg " **"))
  6.    )
  7.    (princ)
  8. )
  9. (setq oldcmd (getvar "cmdecho"))
  10. (setvar "cmdecho" 0)
  11. (initdia)
  12. (if (setq pt (getpoint "\nSpecify first corner: "))
  13.    (command "_.mtext" "_non" pt "_r" (/ (* (getvar "viewtwist") 180.) pi) pause)
  14. )
  15. (setvar "cmdecho" oldcmd)
  16. (princ)
  17. )

 
 
我还将viewtwist转换放在命令表达式中(只是为了表明它可以完成)。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 11:34 , Processed in 0.530774 second(s), 76 queries .

© 2020-2025 乐筑天下

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