chulse 发表于 2022-7-6 11:01:19

移动块Z值?

给定一个特定块,我如何检索它的X、Y和Z坐标,然后将其Z值移动到特定深度(同时保持X和Y相同)?
 
谢谢

fixo 发表于 2022-7-6 11:06:57

 
这样做有助于:
 

(command "._move" block_entity_selected "" '(0 0 0) (list 0 0 Z))

 
~'J'~

chulse 发表于 2022-7-6 11:13:55

谢谢Fixo,
也许我需要澄清一点-我需要将变量“深度”的值添加到当前Z值,并将其设置为新的Z值。我不认为我可以使用命令调用来实现。。。?

VVA 发表于 2022-7-6 11:16:49

那么是这样

(setq Z (getreal "\nEnter delta Z value: "))
(princ "\nSelect block")
(setq ss (ssget "_:L" '((0 . "INSERT"))))
(command "_.MOVE" ss "" "0,0,0" (strcat "@0,0," (rtos Z 2 15)))

fixo 发表于 2022-7-6 11:25:42

 
以下是Q&D示例
也试试吧

(defun C:MZ (/ elist en sset zv)
(setq zv (getreal "\nEnter a Z value to add to an existing Z value: "))
(princ "\n >>   Select block instance   >>")
(if
(setq sset (ssget "_:S:E:N" '((0 . "INSERT"))))
(progn
(setq en (ssname sset 0))
(setq elist (entget en)
ptlist (assoc 10 elist)
)
(entmod (subst
    (cons 10 (list (car (cdr ptlist))
   (cadr (cdr ptlist))
   (+ (last (cdr ptlist)) zv)))
    ptlist
    elist)
)
(entupd en)
)
)
(princ)
)

 
~'J'~

chulse 发表于 2022-7-6 11:30:29

谢谢你的帮助,菲索
 
我相信还有更好的方法,但在插入块之前,我就这样结束了:
 
(setq x (car pt))
               (setq y (cadr pt))
               (setq Z1 (caddr pt))
               (setq Z2 (+ depth Z1))
               (setq PT2 (list x y Z2))

fixo 发表于 2022-7-6 11:35:56

不客气
快乐计算
 
~'J'~

chulse 发表于 2022-7-6 11:39:28

 
 
哈,让我们称之为“快乐学习!”
 
谢谢

BIGAL 发表于 2022-7-6 11:42:36

如果在插入块之前知道所需的标高,则更容易,只需“标高”“标高”并设置值,但不要忘记将其设置回0.0

chulse 发表于 2022-7-6 11:51:06

 
在这种情况下我没有。我只知道地表以下的深度。高程从三维柱基线上的点开始,然后移动到其下方。
 
...我刚刚意识到我正在添加代码,在那里我需要减去。。。
页: [1] 2
查看完整版本: 移动块Z值?