图形复制并对齐【已修正】
本帖最后由 sammy 于 2024-5-29 23:29 编辑(defun c:Q1 (/ ss ssCopy basePoint1 basePoint2 angBase angTarget)
(princ "\n实体操作--复制并旋转")
(if (setq ss (ssget))
(progn
(setvar "Autosnap" 63)
(setvar "POLARMODE" 2)
(command "POLARANG" "45")
(if (and
(setq basePoint1 (getpoint "\n选择基点1: "))
(setq angBase (getangle basePoint1 "\n选择基点2确定原始角度: "))
)
(if (setq targetPoint1 (getpoint "\n选择目标点1: "))
(if (setq angTarget (getangle targetPoint1 "\n选择目标点2确定目标角度: "))
(progn
(command ".COPY" ss "" basePoint1 targetPoint1)
(setq ssCopy (ssget "P"))
(command "rotate" ssCopy "" targetPoint1(* (/ (- angTarget angBase) pi) 180))
(princ "\n选中图形已复制并旋转到目标位置。")
)
(progn
(command ".COPY" ss "" basePoint1 targetPoint1)
(setq ssCopy (ssget "P"))
(princ "\n选中图形已复制到目标位置,但未指定目标角度。")
)
)
(princ "\n未选择目标点。")
)
)
)
(princ "\n未选择任何图形。")
)
(princ)
)
抛砖引玉一下吧,到最后一部旋转新选择集好像有问题,但是看代码又没有问题。
希望大神帮忙修改一下。
代码参考了:
http://bbs.mjtd.com/forum.php?mo ... 743&fromuid=7330425
本帖最后由 sammy 于 2024-5-20 21:16 编辑
程序已经优化好了,现在可以正常使用。
不收币了,请大家帮忙投下免费的币。 ;简单的对复制并对齐
(defun c:tt (/ ss p1 p2 p3 p4)
(command "_.undo" "be")
(if(setq ss (ssget ":L"))
(progn
(setq p1 (getpoint "\n选择基点1: ")
p2 (getpoint p1 "\n选择基点2: "))
(command ".copy"ss "" "non"p1 "non"p1)
(setq p3 (getpoint "\n目标基点1: ")
p4 (getpoint p3 "\n目标基点2: "))
(command "_.ALIGN" ss "" "non"p1 "non"p3"non"p2 "non"p4 "" "" )
)
)
(command "_.undo" "_e")
(princ)
) 上午看到有人问如何对齐并复制,尝试写了一个代码,但是运行到最后一步对选择集的选取有错误,不知道该如何修改了,请高手路过帮忙解答一下 遍历每个图元再旋转,旋转时候用vla函数. (setq ssCopy (ssget "P"))=ss,要用entnext 函数取得copy后的新选集 本帖最后由 guosheyang 于 2024-5-20 18:00 编辑
@ sammy
看下这个能否满足你的要求
"geom3d"是什么? guosheyang 发表于 2024-5-20 18:03
17#楼 的
cq4920 贴出的,跟你的有点类似 水洗可口可乐 发表于 2024-5-21 10:54
17#楼 的
cq4920 贴出的,跟你的有点类似
不一样我那个是调用的对齐命令 他那个是个估计是grread
页:
[1]
2