乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 132|回复: 0

[编程交流] 在Y平面中单独移动块

[复制链接]

10

主题

46

帖子

36

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-10-6 00:43:29 | 显示全部楼层 |阅读模式
我正在尝试创建一个lisp来交叉选择多个块,并通过单击鼠标逐个更改它们的Y平面值,从选中的最上面的块开始,然后移动第二个最上面的,等等,直到所有块都按所需的间距堆叠(每个间距都可能不同,因此指定一个设置的堆叠空间是行不通的)。
这就是我所处的位置,我花了几个小时创建自己的代码,还将不同的代码混合在一起,但我甚至无法移动1。

  1. (defun c:test (/ blks blk )
  2.         (if (and (setq blks (ssget ":L" '((0 . "INSERT")))));create block list from selected blocks
  3.         (repeat (setq x (sslength blks));returns the number of blocks selected as an integer
  4.         (foreach blk (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex blks))));Not my forte, probably where I'm messing up the rest
  5.                 (setq p (getpoint "\Pick Y alignment point: "));get a point, only need y value
  6.                 ;here is where no matter what I add, I can't get anything to move. probably my list formation above is wrong
  7.         )
  8.         )
  9.         )


我尝试添加和修改代码,我相信我是从LeeMac那里得到的。
您可以选择一组块,它会根据X、Y或Z将它们对齐,但一次全部对齐。很有用,它是我今天最常用的Lisp例程之一。但它不适用于这种新情况,因为我只需要基于Y平面进行堆栈(或更改当前堆栈的间距)。


  1. (defun c:XYZ (/ a i k p s)
  2.   (or (setq k (getenv "AlignBlocks")) (setq k "X"))
  3.   (if (and (not (initget "X Y Z"))
  4.            (setq k (cond ((getkword (strcat "\nAlignment [X/Y/Z] <" k ">: ")))
  5.                          (k)
  6.                    )
  7.            )
  8.            (setq p (getpoint "\Pick an alignment point: "))
  9.            (setq s (ssget '((0 . "insert"))))
  10.       )
  11.     (progn
  12.       (setenv "AlignBlocks" k)
  13.       (setq i (vl-position k '("X" "Y" "Z")))
  14.       (setq a (nth i p))
  15.       (foreach b (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex s))))
  16.         (vlax-invoke b 'move (setq p (vlax-get b 'insertionpoint)) (subst a (nth i p) p))
  17.       )
  18.     )
  19.   )
  20.   (princ)
  21. )
  22. (vl-load-com)


回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 02:00 , Processed in 0.206994 second(s), 54 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表