strebor71 发表于 2016-10-3 08:11:52

文本不随块的其余部分旋转

嗨,我有一个lisp程序,可以将指北针旋转到视口中的任意位置。它已经工作了很多年。我在一家新公司开始工作,指北针块中有一些动态文本。例行程序仍然有效,但是发生了两件事。1块中的对象旋转,但是它们向左移动了大约16英寸,2块中的文本没有旋转,而是保持在原位。这个例程使用entsel和entmod来完成这个任务。有什么建议吗?
(defun c:rn()
(setq tw(entget(car(entsel " \ n select a Viewport:")))
(setq new(cdr(assoc 0 tw)))
(cond
(= new " Viewport))(setq rt(cdr(assoc 51 tw))))
(= new " lw polyline ")(setq temp(entget(cdr(assoc 330 tw))))(setq rt(cdr(cdr(cdr
**** Hidden Message *****

strebor71 发表于 2016-10-3 08:19:02

下面是一个替代方法,使用ActiveX旋转属性:(defun c:rn ( / blk sel )
    (and (princ "\nSelect viewport: ")
         (setq sel (ssget "_+.:E:S" '((0 . "VIEWPORT"))))
         (setq blk (car (entsel "\nSelect north arrow: ")))
         (= "INSERT" (cdr (assoc 0 (entget blk))))
         (vla-put-rotation (vlax-ename->vla-object blk) (cdr (assoc 51 (entget (ssname sel 0)))))
    )
    (princ)
)
(vl-load-com) (princ)

strebor71 发表于 2016-10-3 08:22:56

当块以意外的方式移动时,通常是因为插入点不在“应该”的位置,这意味着北点是围绕其插入点旋转的,可能距离为16英寸,而不是围绕其中心旋转。
注释性文本的一个功能是,与页面相比,它始终保持垂直,显然,这会让应用于它的任何旋转看起来都不起作用。可能值得检查的是,这里的情况并非如此(我想可以通过文本样式设置)。
dJE

strebor71 发表于 2016-10-3 09:06:27

太棒了,李,谢谢。现在,如果我想让文本自动翻转180度,这样它读起来就正确了,那会是什么呢?
页: [1]
查看完整版本: 文本不随块的其余部分旋转