lshpool 发表于 2012-4-7 15:43:08

求位置交换工具


我想图片中的两个选择集,分别以AB两个基点交换位置,有没有这样的插件程序可以实现?

Andyhon 发表于 2012-4-7 18:00:21

本帖最后由 Andyhon 于 2012-4-8 11:39 编辑

试试如此合用否?


(defun C:test ()
   (or
   (setq ss (cadr (ssgetfirst)))
   (prompt "\n全选要交换位置两个选择集: ")
   (setq ss (ssget))
   )

   (setqpts (acet-geom-ss-extents ss nil)
          pb (getpoint "\n 下方基点:")
          pa (getpoint "\n 上方基点:")
   )
   (command "move" ss "" pa pb)
   (command "move" ss "R" "w" pb(cadr pts) ""
      (polar pb (* pi 0.5) (- (cadr pb) (cadr pa)))
      pa
   )
)

lshpool 发表于 2012-4-8 10:08:33

谢谢楼上的,不能用,提示“no function definition: GETBOXSS”

Andyhon 发表于 2012-4-8 10:55:29

Sorry, 已订正
需 ET 支持

lshpool 发表于 2012-4-8 10:58:22

本帖最后由 lshpool 于 2012-4-8 11:38 编辑

Andyhon 发表于 2012-4-8 10:55 http://bbs.mjtd.com/static/image/common/back.gif
Sorry, 已订正
需 ET 支持

试过刚才更新的程序,可以运行,但执行的结果是不对的,交换后错位,我觉得,应该是先选择第一个选择集,然后指定基点,然后选择第二个选择集,然后指定基点,最后用move命令把两个选择集交换
上面的程序,只是适合两个基点位于同一个Y坐标方向

Andyhon 发表于 2012-4-8 11:27:20

原是依 图片中已有了选择集
已加入 选择集...

lshpool 发表于 2012-4-8 11:47:27

试过刚才更新的程序,可以运行,但执行的结果是不对的,交换后错位,我觉得,应该是先选择第一个选择集,然后指定基点,然后选择第二个选择集,然后指定基点,最后用move命令把两个选择集交换
上面的程序,只是适合两个基点位于同一个Y坐标方向

Andyhon 发表于 2012-4-8 11:54:28

请提供新的样例

lshpool 发表于 2012-4-8 12:16:01

本帖最后由 lshpool 于 2012-4-8 14:24 编辑

(defun C:jhwz ()
      (princ "\n选择第一个选择集: ")
      (setq sa (ssget))
   (setq pa (getpoint "\n 指定基点:"))
      (princ "\n选择第二个选择集: ")
      (setq sb (ssget))
   (setq pb (getpoint "\n 指定基点:"))
   (command "move" sa "" pa pb)
   (command "move" sb "" pb pa)
   )

lshpool 发表于 2012-4-8 12:18:05

多谢Andyhon我是菜鸟一个,不会编程,但我看了你写的程序,胡乱修改一下,居然可以使用了,再次感谢你,膜拜中
页: [1] 2
查看完整版本: 求位置交换工具