乐筑天下

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

[编程交流] 移动宏

[复制链接]

32

主题

98

帖子

73

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
197
发表于 2022-7-6 10:24:21 | 显示全部楼层 |阅读模式
我有数百件物品要搬。它们都将处于不同的角度和距离。如果没有宏,我会迷路,因为所有这些项目看起来都一样,可能会移动正确的距离,但移动错误的对象。我也会移动正确的物体,但移动的距离不对:(
 
我启动了一个宏。这更好地解释了我在追求什么
 
请帮忙
 
  1. ;
  2. ;   prompt for input
  3. ;
  4. (setq dist(getdist"\nEnter the distance to move: "))
  5. (setq angl(getreal"\nEnter the angle: "))
  6. (setq obj(getreal"\npick the object you want moved: "))
  7. ;
  8. ;
  9. ;
  10. (setq xvalue(     (cos angl)*dist    )
  11. (setq yvalue(     (sin angl)*dist    )
  12. ;
  13. (COMMAND "move"  obj 0,0 @xvalue,yvalue "")

移动宏。图纸
回复

使用道具 举报

10

主题

109

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-6 10:41:36 | 显示全部楼层
新手37,
根据你的想法,这是一个有点“颜色”的
 
  1. ; mvm.lsp - move selected objects to a specified distance at an angle
  2. ;           and color them green
  3. (defun dtr (a) ;Degrees to radians conversion
  4. (* pi (/ a 180.0))
  5. )
  6. (defun c:mvm (/ dis angl objset n en el bse vec)
  7. (setq dis (getdist"\n Enter the distance to move: "))
  8. (setq angl (getreal"\n Enter the angle: "))
  9. (princ "\n Pick the object(s) you want moved: ")
  10. (setq objset (ssget))
  11. (setq n (- (sslength objset) 1))
  12. (while (> n -1) ; make the moved objects green
  13. (setq en (ssname objset n))
  14. (setq el (entget en))
  15. (setq el (subst (cons 62 3) (assoc 62 el) el))
  16. (entmod el)
  17. (setq n (- n 1))
  18. )
  19. (setq angl (dtr angl))
  20. (setq bse (list 0 0 0)) ; set the base 0,0,0
  21. (setq vec (polar bse angl dis)) ; obtain vector
  22. (command "_.move" objset "" bse vec)
  23. (princ)
  24. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:56:51 | 显示全部楼层
另一种方法
 
  1. (defun c:mvm ( / _toColour ) (vl-load-com)
  2. (defun _toColour ( entity colour )
  3.    (entmod
  4.      (if (assoc 62 (entget entity))
  5.        (subst (cons 62 colour) (assoc 62 (entget entity)))
  6.        (append (entget entity) (list (cons 62 colour)))
  7.      )
  8.    )
  9. )
  10. (mapcar
  11.    (function
  12.      (lambda ( fun string symbol default )
  13.        (set symbol
  14.          (cond
  15.            (
  16.              (
  17.                (eval fun)
  18.                (strcat string " <"
  19.                  (rtos
  20.                    (set symbol
  21.                      (cond ( (eval symbol) ) ( default ))
  22.                    )
  23.                  )
  24.                  "> : "
  25.                )
  26.              )
  27.            )
  28.            ( (eval symbol) )
  29.          )
  30.        )
  31.      )
  32.    )
  33.    '(getdist getangle)
  34.    '("\nEnter Distance " "\nEnter Angle ") '(*dis* *ang*) '(1.0 0.0)
  35. )
  36. (
  37.    (lambda ( SelSet i / base disp )      
  38.      (setq base (vlax-3D-point '(0. 0. 0.))
  39.            disp (vlax-3D-point (polar '(0. 0. 0.) *ang* *dis*)))
  40.      
  41.      (if SelSet
  42.        (while (setq entity (ssname SelSet (setq i (1+ i))))
  43.          (_toColour entity 30)
  44.          (vla-move (vlax-ename->vla-object entity) base disp)
  45.        )
  46.      )
  47.    )
  48.    (ssget) -1
  49. )
  50. (princ)
  51. )
回复

使用道具 举报

32

主题

98

帖子

73

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
197
发表于 2022-7-6 11:05:41 | 显示全部楼层
这为我节省了很多工作,没有它几乎是可以撤销的。非常感谢。
 
我想对它进行修改。为了解释,我会告诉你我用它做什么。
 
我正在用autocad制作一部动画电影。在电影的一秒钟里,我画了24幅画。有一种比我现在做的更简单的方法。(Inventor、3DsMax和autocad可能已经可以做到这一点,但我不知道如何做到)我仍在研究其他方法,但与此同时,我正在这样做。
 
如果我想让一个对象在电影的一秒钟内移动30毫米,我将第1帧的距离输入为1.25毫米。然后在第2帧上输入2.5mm的距离。我一直这样做直到第24帧
 
我想第二个宏,将提示我的总距离,然后为需要达到这个距离的帧数。使用单独宏的原因是,它不会一直运行。然而,如果你能在不运行的情况下将其与此结合,除非我要求,那就更好了
 
然后在上面的宏上,而不是
 
(setq dis(getdist“\n输入要移动的距离:”)
 
改为put
 
不幸的是,每个帧上的角度仍然不同
 
无论你是否做出上述改变,我仍然非常感谢你的帮助。宏仍然可以节省大量时间。(也许还有理智的节约者)
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 11:18:36 | 显示全部楼层
对于我记得几年前在Autodesk上玩的一部电影,你可能会更好地使用其他软件,它内置了变形功能,只需拾取你的对象,将其移动到其他地方,更改其形状,软件就会自动添加所有中间步骤。将正方形改为圆形等
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 11:35:49 | 显示全部楼层
李提交的有趣转折。。。
 
  1. 5
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 21:27 , Processed in 0.449832 second(s), 75 queries .

© 2020-2025 乐筑天下

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