乐筑天下

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

[编程交流] 文本对齐故障

[复制链接]

13

主题

75

帖子

62

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 12:12:58 | 显示全部楼层 |阅读模式
红色表示lisp的方式,蓝色表示希望文本的方式,黄色表示旋转的基线。我怎样才能解决这个问题?
 
http://picasaweb.google.com.br/lh/photo/w65MxseLptWKSFq_ORaw2g?feat=directlink
 
代码如下
 
  1. (defun c:cc (/ ent obj r l c center p1 p2 p3 p4 p5  lb obj2 ro rot)
  2. (vl-load-com)
  3. (if (setq ent (entsel "\nSelecione o ARCO: "))
  4.    (progn
  5.      (setq obj (vlax-ename->vla-object (car ent)))
  6.      (setq r (vla-get-radius obj)
  7.     l (vla-get-arclength obj)
  8.     c (vla-get-center obj)
  9.     )
  10.      (setq center (vlax-safearray->list
  11.       (vlax-variant-value c)))
  12.      )
  13.    )
  14. (setq p1 (getpoint "\nSelecione ponto de inserção para o texto: "))
  15. (setq lb (entsel "\nSelecione Linha de alinhamento de texto: "))
  16. (setq obj2 (vlax-ename->vla-object (car lb)))
  17. (setq ro (vla-get-angle obj2)
  18. )
  19. (setq rot (/ (* 180 ro) (* 2 pi)))
  20. (setq p2 (polar p1 rot 2.5))
  21. (setq p3 (polar p2 rot 2.5))
  22. (setq p4 (polar p3 rot 2.5))
  23. (setq p5 (polar p4 rot 2.5))
  24.      (setq p6 (list (+(car p1)20) (cadr p1)))
  25.    (entmake
  26.      (list
  27. (cons 0 "TEXT")
  28. (cons 1  "CC")
  29. (cons 72 2)
  30. (cons 73 3)
  31. (cons 50 ro)
  32. (cons 40 2.0)
  33. (cons 10 p1)
  34. (cons 11 p1))
  35.      )
  36.    (entmake
  37.      (list
  38. (cons 0 "TEXT")
  39. (cons 1 (strcat "N= " (rtos (car center) 2 3)))
  40. (cons 72 2)
  41. (cons 73 3)
  42. (cons 40 2.0)
  43. (cons 50 ro)
  44. (cons 10 p2)
  45. (cons 11 p2))
  46.      )
  47.    (entmake
  48.      (list
  49. (cons 0 "TEXT")
  50. (cons 1 (strcat "E= " (rtos (cadr center) 2 3)))
  51. (cons 72 2)
  52. (cons 73 3)
  53. (cons 40 2.0)
  54. (cons 50 ro)
  55. (cons 10 p3)
  56. (cons 11 p3))
  57.      )
  58.    (entmake
  59.      (list
  60. (cons 0 "TEXT")
  61. (cons 1 (strcat "R= " (rtos r)))
  62. (cons 72 2)
  63. (cons 73 3)
  64. (cons 40 2.0)
  65. (cons 50 ro)
  66. (cons 10 p4)
  67. (cons 11 p4))
  68.      )
  69.    (entmake
  70.      (list
  71. (cons 0 "TEXT")
  72. (cons 1 (strcat "D= " (rtos l 2 3)))
  73. (cons 72 2)
  74. (cons 73 3)
  75. (cons 40 2.0)
  76. (cons 50 ro)
  77. (cons 10 p5)
  78. (cons 11 p5))
  79. )(princ)
  80. )

 
我很乐意接受任何帮助。非常感谢!!
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 12:25:10 | 显示全部楼层
轻微测试,仅在行下方拾取文本点
  1. (defun c:cc (/ ang c center ent la lb obj obj2 p1 p2 p3 p4 p5 pp r rot)
  2. (vl-load-com)
  3. (if (setq ent (entsel "\nSelecione o ARCO: "))
  4.   (progn
  5.      (setq obj (vlax-ename->vla-object (car ent)))
  6.      (setq r (vla-get-radius obj)
  7.     la (vla-get-arclength obj)
  8.     c (vla-get-center obj)
  9.     )
  10.      (setq center (vlax-safearray->list
  11.       (vlax-variant-value c)))
  12.      )
  13.    )
  14. (setq p1 (getpoint "\nSelecione ponto de insercao para o texto: "))
  15. (setq lb (entsel "\nSelecione Linha de alinhamento de texto: "))
  16. (setq obj2 (vlax-ename->vla-object (car lb)))
  17. (setq pp (vlax-curve-getclosestpointto obj2 p1))
  18. (setq ang (angle p1 pp)
  19.       rot (+ ang (/ pi 2))
  20.       ang (+ pi ang)
  21. )
  22. (if (and (> rot (* 0.5 pi))
  23. (< rot (* 1.5 pi))
  24. )
  25.     (setq rot (+ rot pi))
  26.    )
  27. (setq p2 (polar p1 ang 2.5))
  28. (setq p3  (polar p2 ang 2.5))
  29. (setq p4 (polar p3 ang 2.5))
  30. (setq p5 (polar p4 ang 2.5))
  31. ;;set all text alignment to left:
  32.    (entmake
  33.      (list
  34. (cons 0 "TEXT")
  35. (cons 1  "CC")
  36. (cons 71 0)
  37. (cons 72 0)
  38. (cons 73 0)
  39. (cons 50 rot)
  40. (cons 40 2.0)
  41. (cons 10 p1)
  42. (cons 11 (list 0 0 0))
  43.      )
  44.      )
  45.    (entmake
  46.      (list
  47. (cons 0 "TEXT")
  48. (cons 1 (strcat "N= " (rtos (car center) 2 3)))
  49. (cons 71 0)
  50. (cons 72 0)
  51. (cons 73 0)
  52. (cons 40 2.0)
  53. (cons 50 rot)
  54. (cons 10 p2)
  55. (cons 11 (list 0 0 0)))
  56.      )
  57.    (entmake
  58.      (list
  59. (cons 0 "TEXT")
  60. (cons 1 (strcat "E= " (rtos (cadr center) 2 3)))
  61. (cons 71 0)
  62. (cons 72 0)
  63. (cons 73 0)
  64. (cons 40 2.0)
  65. (cons 50 rot)
  66. (cons 10 p3)
  67. (cons 11 (list 0 0 0)))
  68.      )
  69.    (entmake
  70.      (list
  71. (cons 0 "TEXT")
  72. (cons 1 (strcat "R= " (rtos r)))
  73. (cons 71 0)
  74. (cons 72 0)
  75. (cons 73 0)
  76. (cons 40 2.0)
  77. (cons 50 rot)
  78. (cons 10 p4)
  79. (cons 11 (list 0 0 0)))
  80.      )
  81.    (entmake
  82.      (list
  83. (cons 0 "TEXT")
  84. (cons 1 (strcat "D= " (rtos la 2 3)))
  85. (cons 71 0)
  86. (cons 72 0)
  87. (cons 73 0)
  88. (cons 40 2.0)
  89. (cons 50 rot)
  90. (cons 10 p5)
  91. (cons 11 (list 0 0 0)))
  92. )
  93. (princ)
  94. )

 
HTH公司
 
~'J'~
回复

使用道具 举报

13

主题

75

帖子

62

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 12:45:24 | 显示全部楼层
线下工作很好。你能解释一下你是做什么的吗?
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 12:49:50 | 显示全部楼层
 
我从文本插入点计算角度‘ang’
文本将沿垂直角度向下对齐的线
文本“rot”的旋转角度(弧度)将小于角度“ang”的值(/pi 2)
根据平面上的线路布置,该角度可以是间隔角度
从>90到
这就是全部
 
~'J'~
回复

使用道具 举报

13

主题

75

帖子

62

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 13:04:13 | 显示全部楼层
理解。我很高兴,非常感谢你!
我花了半天的时间试图修复它。
 
非常感谢fixo。
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 13:15:36 | 显示全部楼层
 
很高兴有帮助
干杯
 
~'J'~
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 10:17 , Processed in 1.397783 second(s), 64 queries .

© 2020-2025 乐筑天下

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