乐筑天下

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

[编程交流] 无法修改MacAlign Mtex

[复制链接]

8

主题

56

帖子

48

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 11:25:59 | 显示全部楼层 |阅读模式
我正在尝试创建一个路由,该路由将根据传递给它的变量标记管道。我希望通过选择可以一次执行多行/多行。我必须使用多行文字,因为我使用的是叠加分数。
 
我有一个a编写的例程,可以处理规则线,现在我需要它来处理多边形线。我想我会尝试将macalign多行文字修改为循环,但不管我做了什么,它都会给我一个语法错误。
 
这是我写的lisp,我知道它很有效,但很实用。
 
  1. (defun c:pipesize (); / sset item ctr check)
  2. (if (= pipesize "1/2")
  3. (setq pipesize (strcat "\\A;{\\H0.7x;\\S1#2;}" (chr 34)))
  4. )
  5. (if (= pipesize "3/4")
  6. (setq pipesize (strcat "\\A;{\\H0.7x;\\S3#4;}" (chr 34)))
  7. )
  8. (if (= pipesize "1/2")
  9. (setq pipesize (strcat "\\A;{\\H0.7x;\\S1#2;}" (chr 34)))
  10. )
  11. (if (= pipesize "1")
  12. (setq pipesize (strcat "1" (chr 34)))
  13. )
  14. (if (= pipesize "1 1/4")
  15. (setq pipesize (strcat "\\A1;1{\\H0.7x;\\S1#4;}" (chr 34)))
  16. )
  17. (if (= pipesize "1 1/2")
  18. (setq pipesize (strcat "\\A1;1{\\H0.7x;\\S1#2;}" (chr 34)))
  19. )
  20. (if (= pipesize "2")
  21. (setq pipesize (strcat "2" (chr 34)))
  22. )
  23. (if (= pipesize "2 1/2")
  24. (setq pipesize (strcat "\\A2;1{\\H0.7x;\\S1#2;}" (chr 34)))
  25. )
  26. (if (= pipesize "3")
  27. (setq pipesize (strcat "3" (chr 34)))
  28. )
  29. (if (= pipesize "2")
  30. (setq pipesize (strcat "4" (chr 34)))
  31. )
  32. ;(setq pipesize "\\A;{\\H0.7x;\\S3#4;}")
  33. ;(setq pipesize "1")
  34. ;load the visual lisp extensions
  35. (vl-load-com)
  36. ;check for selection
  37. ;make the remove layers if they don't exist
  38. (setq acadDocument (vla-get-activedocument (vlax-get-acad-object)))
  39. (setq theLayers (vla-get-layers acadDocument))
  40. (setq newLayer (vla-add theLayers "f-text"))
  41. ;done makeing new layers
  42. (princ)
  43. ;get the selection set
  44. (setq pt (osnap (getpoint "Select Pipe and Text location") "near"))
  45. (while (NOT (NULL PT))
  46. (setq sset (ssget pt))
  47. ;set up the counter
  48. (setq ctr 0)
  49. ;count the number of entities and loop
  50. (setq item (ssname sset ctr))
  51. ;convert to vl object
  52. (setq item (vlax-ename->vla-object item))
  53. ;check to see what type of entity it is.
  54. (if (= "AcDbLine" (vla-get-ObjectName item))
  55. ;change the lines layer
  56. (setq ang (vlax-get-property item 'Angle))
  57. );if
  58. (if (= "AcDbLine" (vla-get-ObjectName item))
  59. ;change the lines layer
  60. (setq ang (vlax-get-property item 'Angle))
  61. );if
  62. ;increment the counter
  63. (setq dist (* 1 scalem))
  64. (setq ang2 (+ ang (/ pi 2)))
  65. (setq pt2 (polar pt ang2 dist))
  66. (setq ang (rtd ang))
  67. (princ "\n")
  68. (princ ang)
  69. (cond
  70. ((and (>= ang 45) (< ang 135))
  71. (setq ang 90))
  72. ((and (>= ang 135) (< ang 225))
  73. (setq ang 0))
  74. ((and (>= ang 225) (< ang 315))
  75. (setq ang 90))
  76. ((or (>= ang 315) (< ang 45))
  77. (setq ang 0))
  78. )
  79. (setq ang2 (dtr ang))
  80. (setq ang2 (+ ang2 (/ pi 2)))
  81. (setq pt2 (polar pt ang2 dist))
  82. (command "-mtext" pt2 "j" "mc" "R" ang "w"  "90" pipesize "")
  83. (princ)
  84. (setq pt (osnap (getpoint "Select Pipe and Text location") "near"))
  85. )
  86. );defun
回复

使用道具 举报

1

主题

8

帖子

7

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 11:29:33 | 显示全部楼层
你好
我不知道这是否是你想要的,但它确实帮了我很多。它会用你的图层名称来标记这条线,所以我用管道的大小来命名我的图层。
非常感谢在这个网站上帮助我的每一个人。
雪莉
 
http://www.cadtutor.net/forum/showthread.php?p=288453#post288453
回复

使用道具 举报

8

主题

56

帖子

48

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 11:34:15 | 显示全部楼层
是的,我把它们都看了一遍,没有一个看起来很正常。我只需要把一些多行文字放在一条直线上,并重复多次。所有漂亮的例程都只放在文本上,或者默认放在行的中点。
 
谢谢!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:37:59 | 显示全部楼层
你到底想找什么?用户会选择管道尺寸,然后选择多条管线吗?
 
我能看到我能做什么
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:41:40 | 显示全部楼层
您可能还想使用对象扩展数据检查这个更高级的选项
回复

使用道具 举报

8

主题

56

帖子

48

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 11:42:04 | 显示全部楼层
这正是我想要做的。我选择一个“按钮”,然后你可以选择多行,它将其放置在行的上方或左侧。我写的套路很好,除了台词之外什么都没有。我的日常工作还很初级,当我复制、粘贴和修改时,评论就被删除了。。。。它还使用一些自定义变量,但如果我可以通过选择行来多次将多行文字放置在直线或pline等上方,我可以使其与我们的系统一起工作。我们必须使用多行文字,因为我们在叠加分数。lisp的第一部分设置要放置的多行文字,并将其移除。
 
另一方面,我一直在使用/修改你的许多例程,非常感谢你在所有这些工作中投入的时间和精力。
 
再次感谢,
 
马特
回复

使用道具 举报

8

主题

56

帖子

48

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 11:47:23 | 显示全部楼层
 
我也搞砸了。我喜欢它的连接方式,但当我试图“循环”该程序时,它会移动文本,而不是添加另一个实例。如果这可以循环并动态移动,那将是猫的喵喵叫声。我也不确定这是不是mtext,我看了这么多我的大脑是一片模糊。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:50:49 | 显示全部楼层
谢谢你的夸奖,我很感激
 
最后一个例程可以同时完成这两个任务,但我并不特别想修改它,我将看看我能用MacAlign做些什么
回复

使用道具 举报

8

主题

56

帖子

48

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 11:52:04 | 显示全部楼层
 
我再看一次。。。。
 
你有一个捐赠按钮,这样我可以给你买一杯啤酒?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:56:53 | 显示全部楼层
 
我以前是这样的,但他们不久前就被删除了-我会给你发邮件的
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 02:20 , Processed in 0.328723 second(s), 72 queries .

© 2020-2025 乐筑天下

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