Sittingbull 发表于 2022-7-6 10:24:33

 
不是真的。图形中没有块。
在变量中使用它的值后,我想重置它是dwg本身的基础。

Tharwat 发表于 2022-7-6 10:28:33

 
这就是你的意思吗?
 
注意:在调用例程之前解锁并打开所有层,以确保取得丰硕成果。

(defun c:Test ( / pt ss)
; Tharwat 18. Feb 2011
(vl-load-com)
(if
   (and
   (setq pt (getpoint "\n Base point of Objects :"))
   (setq ss (ssget "_x" ))
    )
   ((lambda (i / ss1 o )
      (while
      (setq ss1 (ssname ss (setq i (1+ i))))
         (setq o (vlax-ename->vla-object ss1))
          (vla-move o
            (vlax-3d-point pt)
                (vlax-3d-point '(0.0 0.0 0.0)))
    )
      )
   -1
   )
   (princ)
   )
(princ)
)

 
塔瓦特

Sittingbull 发表于 2022-7-6 10:30:45

(setq pt (getpoint "\n Base point of Objects :"))

 
输入“base”命令后,该信息应由命令提示符返回。
 
 
某人

Lee Mac 发表于 2022-7-6 10:33:35

究竟为什么要更改INSBASE系统变量?我可能错了,但我一直认为不应该更改INSBASE变量,并使用原点(0,0,0)作为所有块的基点-我认为这是大多数公司的标准。

Sittingbull 发表于 2022-7-6 10:37:27

 
确切地
在图书馆工作的那个人有这些画。所以他把它做成了wbloks。
他没有将几何体移动到0,0,0点。他就这样离开了,定义了一个基点。
 
 
这就是为什么我想重置它们:wink:

Lee Mac 发表于 2022-7-6 10:41:49

这将修复图形:
 
(defun c:FixIns nil (vl-load-com) ;; © Lee Mac 2011
(
   (lambda ( p1 p2 / ss )
   (if (ssget "_X")
       (progn
         (vlax-for obj
         (setq ss
             (vla-get-activeselectionset
               (vla-get-activedocument (vlax-get-acad-object))
             )
         )
         (vla-move obj p1 p2)
         )
         (vla-delete ss) (setvar 'INSBASE '(0. 0. 0.))
       )
   )
   )
   (vlax-3D-point (trans (getvar 'INSBASE) 1 0)) (vlax-3D-point '(0. 0. 0.))
)
(princ)
)

Sittingbull 发表于 2022-7-6 10:45:58

像往常一样完美。
“insbase”就是这样。
非常感谢李!

Lee Mac 发表于 2022-7-6 10:48:18

不客气,坐吧。
页: 1 [2]
查看完整版本: “base”命令的“echo”