asos2000 发表于 2022-7-6 06:34:23

如何将外部参照移动到0,0 aut

大家好
 
我们在大多数项目中使用外部参照,并将其全部插入0,0,0点。
一些用户在工作时选择外部参照并移动它。
我想知道是否有办法避免这种情况。
Thnaks公司

pBe 发表于 2022-7-6 06:44:18

一种避免的方法是,将外部参照放置在锁定的图层上。但当然,你仍然无法“避免”用户解锁该层,除非你使用反应堆。

satishrajdev 发表于 2022-7-6 06:53:52

是否要在插入点插入外部参照对象文件,插入点可以是任何值,而不是0,0。。。。。。。对的

Lee Mac 发表于 2022-7-6 07:05:13

我同意pBe-您最好的选择是将外部参照放置在锁定的图层上,并进一步教育您的同事不要移动外部参照。
 
下面是一个简短的程序,用于将所有外部参照移动到原点:
 
(defun c:x2or ( / def enx inc lst sel )
   (while (setq def (tblnext "block" (null def)))
       (if (= 4 (logand 4 (cdr (assoc 70 def))))
         (setq lst (vl-list* "," (cdr (assoc 2 def)) lst))
       )
   )
   (if
       (and lst
         (setq sel
               (ssget "_X"
                   (list '(0 . "INSERT")
                     (cons 2 (apply 'strcat (cdr lst)))
                   )
               )
         )
       )
       (repeat (setq inc (sslength sel))
         (setq enx (entget (ssname sel (setq inc (1- inc)))))
         (entmod (subst '(10 0.0 0.0 0.0) (assoc 10 enx) enx))
       )
   )
   (princ)
)

asos2000 发表于 2022-7-6 07:16:47

thanx pBe
谢谢李
但是每次打开或关闭文件时,我都必须运行lisp

Lee Mac 发表于 2022-7-6 07:21:11

 
从ACADDOC加载并运行它。lsp

alanjt 发表于 2022-7-6 07:30:32

为外部参照选择一个专用的“锁定”图层,并将其保留在那里。我甚至会在启动时进行检查,以确保该层仍处于锁定状态。
 
外部参照移动并不总是一个糟糕的用户,我见过一个有许多外部参照的大型图形,挂起或暂时冻结,当试图查看程序是否再次响应时,您在屏幕上的单击会无意中选择并移动一点外部参照。当然,这是理所当然的假设,我不是一个坏用户。
 
代码不错,李。除非用户在一家将外部参照视为块(尤其是建筑块)的公司工作,否则这可能是一件好事。

irneb 发表于 2022-7-6 07:34:51

是的,这也是我的第一个想法。虽然这可能会有所帮助,但我确实不能经常使用它-我的外部参照很少实际放置在0,0,0上。大多数被多次放置在不同的位置(镜像和旋转):就像一个房间在平面上的不同位置重复放置一样。如果我运行这段代码,所有房间都会移动,在原点处彼此重叠。始终位于0,0上的唯一外部参照是网格线和剖面线-它们应相对于建筑保持在同一点上。 
我也倾向于用锁定层的方法,不得不,别无选择!
页: [1]
查看完整版本: 如何将外部参照移动到0,0 aut