编辑
啊,刚刚看到李的帖子
理由设置为ML&我从未注意到。将对正设置为“开始”&它可以工作 嗨,西蒙,
这里是对之前编写的相同程序的新修改,以包括各种理由。
(defun c:Test(/ sel int obj lst txt srt p c l e v lf rt)
;;====================================================;;
;; Author: Tharwat Al Shoufi. Date: 12.Apr.2016 ;;
;; move single text objects to nearest line with 1.0 ;;
;; unit away from Y Axe. ;;
;;====================================================;;
(if (setq sel (ssget "_:L" '((0 . "LINE,TEXT"))))
(repeat (setq int (sslength sel))
(if (eq "LINE" (cdr (assoc 0 (entget (setq obj (ssname sel (setq int (1- int))))))))
(setq lst (cons obj lst))
(setq txt (cons obj txt))
)
)
)
(if (and lst txt)
(mapcar
'(lambda (xt)
(setq l nil
e (entget xt)
v (vlax-ename->vla-object xt)
)
(vla-getboundingbox v 'lf 'rt)
(setq p (vlax-safearray->list lf))
(mapcar '(lambda (n)
(setq c (vlax-curve-getclosestpointto n p)
l (cons (list (distance c p) c) l)
)
)
lst
)
(vlax-invoke v 'move p (if (< (cadr (cadar (setq srt (vl-sort l '(lambda (j k) (< (car j) (car k))))))) (cadr p))
(polar (cadar srt) (* pi 0.5) 1.0)
(polar (cadar srt) (* pi 1.5) (1+ (cdr (assoc 40 e))))
)
)
)
txt
)
)
(princ)
)(vl-load-com)
关于你关于如何将文件附加到线程的问题,请看右手向下一点,看到按钮前进,点击按钮,然后从新页面上你可以看到许多选项,而不仅仅是附件。
祝你好运 太棒了,塔瓦
我必须提到,它也适用于多行文字!
非常感谢。
是的,你说得对-该程序现在也应该能够处理多行文字对象。 最棒的塔尔瓦!真的非常感谢
在我的脑海里,我想知道是否可以使用边界框方法,或者是否可以简单地将所有(普通)文本项设置为左对齐。但我还没有时间去想它。
我希望你不要生气,但我补充道:
thgt (cdr (assoc 40 (entget xt)))并替换:
4
真的是我的错,在编写原始lisp时,我没有整理更大的文本,这需要大于1个单位的偏移量才能合理显示
哦。”Go Advanced“我从没试过那个按钮谢谢你的信息
编辑:
我还没弄明白你是怎么找到哪条线最近的! 你是最受欢迎的西蒙,我很高兴,我的程序按预期工作。
毫无冒犯之意,请随意修改您希望从程序中获得的关于原始作者的部分,我们将不胜感激。
快乐的编码。
页:
1
[2]