Organic 发表于 2022-7-5 23:54:06

请求扩展exist

不久前,我修改了吉米·伯格马克的Lisp程序
 
;;; By Jimmy Bergmark
;;; Copyright (C) 1997-2006 JTB World, All Rights Reserved
;;; Website: www.jtbworld.com
;;; E-mail: info@jtbworld.com
;;; rotate selected text objects to specified angle

(defun c:txtrot (/ sset i ed ang)
(if (setq sset (ssget '((-4 . "<OR")
                         (0 . "MTEXT")
                         (0 . "TEXT")
                         (-4 . "OR>")
                        )
                )
   )
   (progn
   (setq ang (getangle "Specify rotation angle <0>: "))
   (if (null ang)
       (setq ang 0)
   )
   (repeat (setq i (sslength sset))
       (setq ed (entget (ssname sset (setq i (1- i)))))
       (entmod (subst (cons 50 ang)
                      (assoc 50 ed)
                      ed
               )
       )
   )
   )
)
(princ)
)
 
lisp旋转文本,使其具有与两个拾取之间的角度相同的旋转角度。我修复旋转并确保其始终正确旋转的技巧大约是我lisp技能的极限(或缺乏),因此我希望有人能帮助我完成第二个lisp的以下单独扩展:
 
扩展1:用户选择两个点(如法线)并旋转文字,但如果这些点是直线/多段线/圆弧的一部分,则lisp应获取实体的端点,并将文字放置在其上方(上方偏移0.1距离等)。
 
扩展2(单独的lisp):用户选择两个与法线类似的点,尽管文本不仅旋转,而且放置在所选点的中间,并略高于连接这两个点的假想线(在上面偏移0.1距离等)。
 
如果有人有时间并且想尝试扩展上面的第二个lisp以实现这些扩展,我们将不胜感激
 
干杯
有机的

Organic 发表于 2022-7-6 00:14:55

对于第一个:
 

 
我认为文本/多行文字的对齐方式需要先更改为中间或类似?那么X距离可以是从直线的垂线到文本的中心?文本沿图元放置一半(在本例中为一条线)。
 
对于第二个:
 

 
其中,Y是两个拾取点之间的距离(不一定捕捉到像图中所示的线这样的实体),然后将文本放置在两个拾取点之间的中间,同时仍然从两个拾取点之间的弦偏移X距离。

Organic 发表于 2022-7-6 00:39:57

可以在VBA中进行编码吗?还是只能在lisp中进行编码?我知道一点VBA,如果可行的话,可以试试

jvillarreal 发表于 2022-7-6 01:03:36

http://lee-mac.com/curvealignedtext.html
页: [1]
查看完整版本: 请求扩展exist